64 lines
1.4 KiB
Markdown
64 lines
1.4 KiB
Markdown
# `GET /misc/getSteuer`
|
|
|
|
Protected. Requires a valid session cookie (`credentials: 'include'`).
|
|
|
|
Returns tax classes and their rates from JTL-Wawi (`tSteuerklasse` + `tSteuersatz`, domestic zone `kSteuerzone = 1`).
|
|
|
|
## Response `200`
|
|
|
|
```json
|
|
{
|
|
"steuerklassen": [
|
|
{
|
|
"kSteuerklasse": 1,
|
|
"cName": "Normaler Steuersatz",
|
|
"nStandard": 1,
|
|
"fSteuersatz": 19
|
|
},
|
|
{
|
|
"kSteuerklasse": 2,
|
|
"cName": "Ermäßigter Steuersatz",
|
|
"nStandard": 0,
|
|
"fSteuersatz": 7
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
| Field | Description |
|
|
|-------|-------------|
|
|
| `kSteuerklasse` | Tax class ID (used on articles as `kSteuerklasse`) |
|
|
| `cName` | Display name |
|
|
| `nStandard` | `1` if this is the default tax class |
|
|
| `fSteuersatz` | VAT rate in percent |
|
|
|
|
### Brutto calculation
|
|
|
|
Look up the article's `kSteuerklasse` in `steuerklassen`, then:
|
|
|
|
```js
|
|
function getBrutto(netto, kSteuerklasse, steuerklassen) {
|
|
const row = steuerklassen.find((s) => s.kSteuerklasse === kSteuerklasse);
|
|
if (!row) return null;
|
|
return netto * (1 + row.fSteuersatz / 100);
|
|
}
|
|
```
|
|
|
|
Load once on app init and reuse for search results and article detail.
|
|
|
|
## Errors
|
|
|
|
| Status | Body |
|
|
|--------|------|
|
|
| 401 | `{ "error": "Unauthorized" }` |
|
|
| 500 | `{ "error": "..." }` |
|
|
|
|
## Example
|
|
|
|
```js
|
|
const res = await fetch('http://localhost:4208/api/misc/getSteuer', {
|
|
credentials: 'include',
|
|
});
|
|
const { steuerklassen } = await res.json();
|
|
```
|