@kreiseck/kasseneck-api 0.20.0 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +59 -0
- package/README.md +37 -2
- package/dist/cjs/client/errors.d.ts +0 -1
- package/dist/cjs/client/errors.js +24 -1
- package/dist/cjs/rechnung/api.d.ts +3 -1
- package/dist/cjs/rechnung/api.js +1 -0
- package/dist/cjs/rechnung/endpunkte.d.ts +12 -1
- package/dist/cjs/rechnung/endpunkte.js +56 -3
- package/dist/cjs/rechnung/index.d.ts +4 -3
- package/dist/cjs/rechnung/index.js +7 -1
- package/dist/cjs/rechnung/summen.d.ts +41 -0
- package/dist/cjs/rechnung/summen.js +81 -0
- package/dist/cjs/rechnung/texte.d.ts +19 -0
- package/dist/cjs/rechnung/texte.js +40 -0
- package/dist/cjs/rechnung/typen.d.ts +71 -9
- package/dist/cjs/rechnung/vertrag.d.ts +78 -3
- package/dist/cjs/rechnung/vertrag.js +82 -4
- package/dist/esm/client/errors.d.ts +0 -1
- package/dist/esm/client/errors.js +24 -1
- package/dist/esm/rechnung/api.d.ts +3 -1
- package/dist/esm/rechnung/api.js +2 -1
- package/dist/esm/rechnung/endpunkte.d.ts +12 -1
- package/dist/esm/rechnung/endpunkte.js +55 -3
- package/dist/esm/rechnung/index.d.ts +4 -3
- package/dist/esm/rechnung/index.js +3 -2
- package/dist/esm/rechnung/summen.d.ts +41 -0
- package/dist/esm/rechnung/summen.js +77 -0
- package/dist/esm/rechnung/texte.d.ts +19 -0
- package/dist/esm/rechnung/texte.js +40 -0
- package/dist/esm/rechnung/typen.d.ts +71 -9
- package/dist/esm/rechnung/vertrag.d.ts +78 -3
- package/dist/esm/rechnung/vertrag.js +81 -3
- package/fixtures/hobex-hps-codes.json +1 -1
- package/fixtures/kasse-texte.json +1 -1
- package/fixtures/oberflaeche.json +27 -4
- package/fixtures/rechnung-api.schema.json +42 -4
- package/fixtures/rechnung-summen.json +154 -0
- package/fixtures/rechnung-texte.json +39 -1
- package/package.json +1 -1
|
@@ -60,6 +60,12 @@ export const INVOICE_ERROR_CODES = [
|
|
|
60
60
|
'brand_not_found',
|
|
61
61
|
'not_payable',
|
|
62
62
|
'payment_exceeds_invoice',
|
|
63
|
+
'tax_scheme_mismatch',
|
|
64
|
+
'vat_rate_not_in_country',
|
|
65
|
+
'reverse_charge_reason_required',
|
|
66
|
+
'reverse_charge_threshold',
|
|
67
|
+
'mixed_supply_not_allowed',
|
|
68
|
+
'oss_not_enabled',
|
|
63
69
|
];
|
|
64
70
|
/** Gruende einer Gutschrift. Der Server druckt den deutschen Anzeigetext. */
|
|
65
71
|
export const CREDIT_NOTE_REASONS = [
|
|
@@ -69,7 +75,56 @@ export const CREDIT_NOTE_REASONS = [
|
|
|
69
75
|
'incorrect_invoice',
|
|
70
76
|
'other',
|
|
71
77
|
];
|
|
72
|
-
|
|
78
|
+
/**
|
|
79
|
+
* Der Steuerfall einer Rechnung. Er wird vom Server **abgeleitet** (Kundenland,
|
|
80
|
+
* Kundenart, UID, Ware oder Leistung); eine mitgeschickte Angabe muss dazu
|
|
81
|
+
* passen, sonst `tax_scheme_mismatch`. Neue Faelle stehen hinten, damit
|
|
82
|
+
* gespeicherte Reihenfolgen gueltig bleiben.
|
|
83
|
+
*
|
|
84
|
+
* - `normal` oesterreichische Umsatzsteuer
|
|
85
|
+
* - `smallBusiness` Kleinunternehmer (§ 6 Abs. 1 Z 27 UStG)
|
|
86
|
+
* - `reverseCharge` Leistung an ein Unternehmen in der EU (Art. 196 MwSt-RL)
|
|
87
|
+
* - `igLieferung` Ware an ein Unternehmen in der EU (Art. 6 Abs. 1 UStG)
|
|
88
|
+
* - `exportThirdCountry` Ware ins Drittland (§ 6 Abs. 1 Z 1 UStG)
|
|
89
|
+
* - `domesticReverseCharge` Uebergang der Steuerschuld im Inland, Grund aus `REVERSE_CHARGE_REASONS`
|
|
90
|
+
* - `oss` B2C in der EU ueber den One-Stop-Shop, Satz des Ziellandes
|
|
91
|
+
* - `outsideScope` Leistung an ein Drittlandsunternehmen — in Oesterreich nicht steuerbar
|
|
92
|
+
*/
|
|
93
|
+
export const TAX_SCHEMES = [
|
|
94
|
+
'normal',
|
|
95
|
+
'smallBusiness',
|
|
96
|
+
'reverseCharge',
|
|
97
|
+
'igLieferung',
|
|
98
|
+
'exportThirdCountry',
|
|
99
|
+
'domesticReverseCharge',
|
|
100
|
+
'oss',
|
|
101
|
+
'outsideScope',
|
|
102
|
+
];
|
|
103
|
+
/**
|
|
104
|
+
* Gruende fuer den Uebergang der Steuerschuld **im Inland**. Ohne Grund gibt es
|
|
105
|
+
* kein `domesticReverseCharge`: die Bedingungen sind je Fall verschieden, und
|
|
106
|
+
* keine davon laesst sich aus Betrag und Land erraten.
|
|
107
|
+
*
|
|
108
|
+
* `schwelleCents` ist das Entgelt, ab dem der Fall greift — maßgeblich ist das
|
|
109
|
+
* **in der Rechnung ausgewiesene** Entgelt, nicht der Einzelpreis; ein
|
|
110
|
+
* einheitlicher Liefervorgang darf dafuer nicht auf mehrere Rechnungen
|
|
111
|
+
* aufgeteilt werden (UStR Rz 2605d).
|
|
112
|
+
*/
|
|
113
|
+
export const REVERSE_CHARGE_REASONS = Object.freeze({
|
|
114
|
+
construction: { stelle: '§ 19 Abs. 1a UStG', schwelleCents: null },
|
|
115
|
+
scrap: { stelle: 'Schrott-UStV, BGBl. II Nr. 129/2007', schwelleCents: null },
|
|
116
|
+
mobile_devices: { stelle: '§ 19 Abs. 1e lit. b UStG', schwelleCents: 500_000 },
|
|
117
|
+
it_devices: { stelle: '§ 2 Z 1 UStBBKV, BGBl. II Nr. 369/2013', schwelleCents: 500_000 },
|
|
118
|
+
metals: { stelle: '§ 2 Z 4 UStBBKV', schwelleCents: null },
|
|
119
|
+
emission_certificates: { stelle: '§ 19 Abs. 1e lit. a UStG', schwelleCents: null },
|
|
120
|
+
gas_electricity: { stelle: '§ 2 Z 2 UStBBKV', schwelleCents: null },
|
|
121
|
+
energy_certificates: { stelle: '§ 2 Z 3 UStBBKV', schwelleCents: null },
|
|
122
|
+
investment_gold: { stelle: '§ 2 Z 5 UStBBKV', schwelleCents: null },
|
|
123
|
+
security_transfer: { stelle: '§ 19 Abs. 1b UStG', schwelleCents: null },
|
|
124
|
+
foreign_supplier: { stelle: '§ 19 Abs. 1 zweiter Satz UStG', schwelleCents: null },
|
|
125
|
+
});
|
|
126
|
+
/** Ware oder Leistung — ohne das laesst sich ig. Lieferung nicht von Reverse Charge trennen. */
|
|
127
|
+
export const ITEM_KINDS = ['goods', 'service'];
|
|
73
128
|
export const PRICE_MODES = ['net', 'gross'];
|
|
74
129
|
export const VAT_RATES = [0, 10, 13, 20];
|
|
75
130
|
export const CUSTOMER_TYPES = ['private', 'company'];
|
|
@@ -97,7 +152,15 @@ export const INVOICE_PAYMENT_METHODS = ['transfer', 'card', 'online', 'cash'];
|
|
|
97
152
|
* Hinweise, die eine erfolgreiche Antwort zusaetzlich tragen kann (`data.notice`).
|
|
98
153
|
* Sie sind keine Fehler: der Aufruf hat gewirkt, es gibt nur etwas zu wissen.
|
|
99
154
|
*/
|
|
100
|
-
export const INVOICE_NOTICE_CODES = [
|
|
155
|
+
export const INVOICE_NOTICE_CODES = [
|
|
156
|
+
'cash_receipt_required',
|
|
157
|
+
/** Ig. Lieferung und grenzueberschreitendes Reverse Charge: die Zusammenfassende
|
|
158
|
+
* Meldung ist materielle Voraussetzung (Art. 7 Abs. 1 Z 5 UStG). */
|
|
159
|
+
'recapitulative_statement_due',
|
|
160
|
+
/** Leistung an eine Privatperson im Drittland: der Leistungsort haengt von der
|
|
161
|
+
* Art der Leistung ab — wir nehmen den oesterreichischen Fall an. */
|
|
162
|
+
'place_of_supply_check',
|
|
163
|
+
];
|
|
101
164
|
/**
|
|
102
165
|
* Einheiten einer Position. Die API nimmt nur diese Schluessel an; gedruckt
|
|
103
166
|
* wird das Kuerzel in der Sprache der Rechnung (`RECHNUNG_TEXTE`,
|
|
@@ -274,6 +337,8 @@ export const POSITION_FELDER = Object.freeze({
|
|
|
274
337
|
quantity: { typ: 'number', pflicht: true, min: 0, exklusivMin: true, max: 1_000_000, nachkomma: 3 },
|
|
275
338
|
/** Einheit aus `INVOICE_UNITS`; ohne Angabe `piece`. */
|
|
276
339
|
unit: { typ: 'enum', pflicht: false, werte: INVOICE_UNITS },
|
|
340
|
+
/** Ware oder Leistung; ohne Angabe `goods`. Entscheidet ueber den Steuerfall. */
|
|
341
|
+
kind: { typ: 'enum', pflicht: false, werte: ITEM_KINDS },
|
|
277
342
|
unitPriceCents: { typ: 'integer', pflicht: true, min: 0, max: 100_000_000 },
|
|
278
343
|
vatRate: { typ: 'enum', pflicht: true, werte: VAT_RATES },
|
|
279
344
|
discountPct: { typ: 'number', pflicht: false, min: 0, max: 100, nachkomma: 2 },
|
|
@@ -322,7 +387,14 @@ export const RECHNUNG_ANFRAGEN = Object.freeze({
|
|
|
322
387
|
issueInvoice: {
|
|
323
388
|
idempotencyKey: idempotencyKey(true),
|
|
324
389
|
customerId: id,
|
|
325
|
-
|
|
390
|
+
/**
|
|
391
|
+
* Optional: der Server leitet den Fall ab. Eine Angabe wird geprueft und
|
|
392
|
+
* muss passen (`tax_scheme_mismatch`) — so faellt eine falsche Zuordnung
|
|
393
|
+
* im Fremdsystem auf, statt eine falsche Rechnung zu erzeugen.
|
|
394
|
+
*/
|
|
395
|
+
taxScheme: { typ: 'enum', pflicht: false, werte: TAX_SCHEMES },
|
|
396
|
+
/** Pflicht bei `domesticReverseCharge`, sonst nicht erlaubt. */
|
|
397
|
+
reverseChargeReason: { typ: 'enum', pflicht: false, werte: Object.keys(REVERSE_CHARGE_REASONS) },
|
|
326
398
|
priceMode: { typ: 'enum', pflicht: true, werte: PRICE_MODES },
|
|
327
399
|
serviceStart: datum(true),
|
|
328
400
|
serviceEnd: datum(),
|
|
@@ -345,6 +417,12 @@ export const RECHNUNG_ANFRAGEN = Object.freeze({
|
|
|
345
417
|
* und ein sofort geholtes PDF Zahlungsinformationen traegt.
|
|
346
418
|
*/
|
|
347
419
|
payment: { typ: 'object', pflicht: false, felder: PAYMENT_FELDER },
|
|
420
|
+
/**
|
|
421
|
+
* Probelauf: alles pruefen und rechnen wie beim Ausstellen, aber nichts
|
|
422
|
+
* festschreiben — keine Nummer, kein Dokument, keine Zahlung, kein
|
|
423
|
+
* Idempotenz-Eintrag. Die Antwort traegt `preview` statt `invoice`.
|
|
424
|
+
*/
|
|
425
|
+
dryRun: { typ: 'boolean', pflicht: false },
|
|
348
426
|
},
|
|
349
427
|
cancelInvoice: {
|
|
350
428
|
idempotencyKey: idempotencyKey(true),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
2
|
+
"version": "0.22.0",
|
|
3
3
|
"aufrufe": [
|
|
4
4
|
"activateCashregister",
|
|
5
5
|
"cancelInvoice",
|
|
@@ -404,7 +404,13 @@
|
|
|
404
404
|
"language_not_allowed",
|
|
405
405
|
"brand_not_found",
|
|
406
406
|
"not_payable",
|
|
407
|
-
"payment_exceeds_invoice"
|
|
407
|
+
"payment_exceeds_invoice",
|
|
408
|
+
"tax_scheme_mismatch",
|
|
409
|
+
"vat_rate_not_in_country",
|
|
410
|
+
"reverse_charge_reason_required",
|
|
411
|
+
"reverse_charge_threshold",
|
|
412
|
+
"mixed_supply_not_allowed",
|
|
413
|
+
"oss_not_enabled"
|
|
408
414
|
],
|
|
409
415
|
"invoiceLanguages": [
|
|
410
416
|
"de",
|
|
@@ -418,7 +424,9 @@
|
|
|
418
424
|
"overdue"
|
|
419
425
|
],
|
|
420
426
|
"invoiceNoticeCodes": [
|
|
421
|
-
"cash_receipt_required"
|
|
427
|
+
"cash_receipt_required",
|
|
428
|
+
"recapitulative_statement_due",
|
|
429
|
+
"place_of_supply_check"
|
|
422
430
|
],
|
|
423
431
|
"invoicePaymentMethods": [
|
|
424
432
|
"transfer",
|
|
@@ -487,6 +495,10 @@
|
|
|
487
495
|
"bag",
|
|
488
496
|
"pallet"
|
|
489
497
|
],
|
|
498
|
+
"itemKinds": [
|
|
499
|
+
"goods",
|
|
500
|
+
"service"
|
|
501
|
+
],
|
|
490
502
|
"priceModes": [
|
|
491
503
|
"net",
|
|
492
504
|
"gross"
|
|
@@ -507,12 +519,23 @@
|
|
|
507
519
|
"listBrands",
|
|
508
520
|
"recordInvoicePayment"
|
|
509
521
|
],
|
|
522
|
+
"steuerfreieFaelle": [
|
|
523
|
+
"smallBusiness",
|
|
524
|
+
"reverseCharge",
|
|
525
|
+
"igLieferung",
|
|
526
|
+
"exportThirdCountry",
|
|
527
|
+
"domesticReverseCharge",
|
|
528
|
+
"outsideScope"
|
|
529
|
+
],
|
|
510
530
|
"taxSchemes": [
|
|
511
531
|
"normal",
|
|
512
532
|
"smallBusiness",
|
|
513
533
|
"reverseCharge",
|
|
514
534
|
"igLieferung",
|
|
515
|
-
"exportThirdCountry"
|
|
535
|
+
"exportThirdCountry",
|
|
536
|
+
"domesticReverseCharge",
|
|
537
|
+
"oss",
|
|
538
|
+
"outsideScope"
|
|
516
539
|
],
|
|
517
540
|
"vatRates": [
|
|
518
541
|
0,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"title": "Kasseneck Rechnungs-API",
|
|
4
4
|
"version": 1,
|
|
5
|
-
"paket": "0.
|
|
5
|
+
"paket": "0.22.0",
|
|
6
6
|
"aufrufe": {
|
|
7
7
|
"createCustomer": {
|
|
8
8
|
"anfrage": {
|
|
@@ -291,7 +291,25 @@
|
|
|
291
291
|
"smallBusiness",
|
|
292
292
|
"reverseCharge",
|
|
293
293
|
"igLieferung",
|
|
294
|
-
"exportThirdCountry"
|
|
294
|
+
"exportThirdCountry",
|
|
295
|
+
"domesticReverseCharge",
|
|
296
|
+
"oss",
|
|
297
|
+
"outsideScope"
|
|
298
|
+
]
|
|
299
|
+
},
|
|
300
|
+
"reverseChargeReason": {
|
|
301
|
+
"enum": [
|
|
302
|
+
"construction",
|
|
303
|
+
"scrap",
|
|
304
|
+
"mobile_devices",
|
|
305
|
+
"it_devices",
|
|
306
|
+
"metals",
|
|
307
|
+
"emission_certificates",
|
|
308
|
+
"gas_electricity",
|
|
309
|
+
"energy_certificates",
|
|
310
|
+
"investment_gold",
|
|
311
|
+
"security_transfer",
|
|
312
|
+
"foreign_supplier"
|
|
295
313
|
]
|
|
296
314
|
},
|
|
297
315
|
"priceMode": {
|
|
@@ -414,6 +432,12 @@
|
|
|
414
432
|
"pallet"
|
|
415
433
|
]
|
|
416
434
|
},
|
|
435
|
+
"kind": {
|
|
436
|
+
"enum": [
|
|
437
|
+
"goods",
|
|
438
|
+
"service"
|
|
439
|
+
]
|
|
440
|
+
},
|
|
417
441
|
"unitPriceCents": {
|
|
418
442
|
"type": "integer",
|
|
419
443
|
"minimum": 0,
|
|
@@ -499,11 +523,13 @@
|
|
|
499
523
|
"method"
|
|
500
524
|
],
|
|
501
525
|
"additionalProperties": false
|
|
526
|
+
},
|
|
527
|
+
"dryRun": {
|
|
528
|
+
"type": "boolean"
|
|
502
529
|
}
|
|
503
530
|
},
|
|
504
531
|
"required": [
|
|
505
532
|
"idempotencyKey",
|
|
506
|
-
"taxScheme",
|
|
507
533
|
"priceMode",
|
|
508
534
|
"serviceStart",
|
|
509
535
|
"items"
|
|
@@ -649,6 +675,12 @@
|
|
|
649
675
|
"pallet"
|
|
650
676
|
]
|
|
651
677
|
},
|
|
678
|
+
"kind": {
|
|
679
|
+
"enum": [
|
|
680
|
+
"goods",
|
|
681
|
+
"service"
|
|
682
|
+
]
|
|
683
|
+
},
|
|
652
684
|
"unitPriceCents": {
|
|
653
685
|
"type": "integer",
|
|
654
686
|
"minimum": 0,
|
|
@@ -891,7 +923,13 @@
|
|
|
891
923
|
"language_not_allowed",
|
|
892
924
|
"brand_not_found",
|
|
893
925
|
"not_payable",
|
|
894
|
-
"payment_exceeds_invoice"
|
|
926
|
+
"payment_exceeds_invoice",
|
|
927
|
+
"tax_scheme_mismatch",
|
|
928
|
+
"vat_rate_not_in_country",
|
|
929
|
+
"reverse_charge_reason_required",
|
|
930
|
+
"reverse_charge_threshold",
|
|
931
|
+
"mixed_supply_not_allowed",
|
|
932
|
+
"oss_not_enabled"
|
|
895
933
|
],
|
|
896
934
|
"gruende": [
|
|
897
935
|
"cancellation",
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
{
|
|
2
|
+
"beschreibung": "Prueffaelle fuer die Summen einer Rechnung. Von Hand gerechnet, nicht erzeugt: rechnungSummen (npm), der Dart-Zwilling und der Server (summenJeSatz) muessen jeden Fall genau so treffen. Betraege in Cent, Positionen in der Form der Rechnungs-API.",
|
|
3
|
+
"regel": {
|
|
4
|
+
"zeile": "Einzelpreis × Menge × (1 − Rabatt/100), ungerundet",
|
|
5
|
+
"net": "Netto = round(Σ Zeilen); USt = round(Σ Zeilen × Satz/100); Brutto = Netto + USt",
|
|
6
|
+
"gross": "Brutto B = round(Σ Zeilen); Netto = round(B × 100 / (100 + Satz)); USt = B − Netto",
|
|
7
|
+
"steuerfrei": "smallBusiness, reverseCharge, igLieferung, exportThirdCountry, domesticReverseCharge, outsideScope: jede Zeile zu 0 %",
|
|
8
|
+
"rundung": "kaufmaennisch, halber Cent vom Nullpunkt weg; je Satz, dann summiert"
|
|
9
|
+
},
|
|
10
|
+
"faelle": [
|
|
11
|
+
{
|
|
12
|
+
"name": "Shop: 0,03 € brutto zu 20 %",
|
|
13
|
+
"priceMode": "gross",
|
|
14
|
+
"items": [{ "quantity": 1, "unitPriceCents": 3, "vatRate": 20 }],
|
|
15
|
+
"erwartet": { "netCents": 3, "vatCents": 0, "grossCents": 3, "byRate": [{ "rate": 20, "netCents": 3, "vatCents": 0, "grossCents": 3 }] }
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "Shop: 14,79 € + 15,00 € brutto zu 20 % ergeben 29,79 €",
|
|
19
|
+
"priceMode": "gross",
|
|
20
|
+
"items": [
|
|
21
|
+
{ "quantity": 1, "unitPriceCents": 1479, "vatRate": 20 },
|
|
22
|
+
{ "quantity": 1, "unitPriceCents": 1500, "vatRate": 20 }
|
|
23
|
+
],
|
|
24
|
+
"erwartet": { "netCents": 2483, "vatCents": 496, "grossCents": 2979, "byRate": [{ "rate": 20, "netCents": 2483, "vatCents": 496, "grossCents": 2979 }] }
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "Shop: 46,46 € brutto",
|
|
28
|
+
"priceMode": "gross",
|
|
29
|
+
"items": [{ "quantity": 1, "unitPriceCents": 4646, "vatRate": 20 }],
|
|
30
|
+
"erwartet": { "netCents": 3872, "vatCents": 774, "grossCents": 4646, "byRate": [{ "rate": 20, "netCents": 3872, "vatCents": 774, "grossCents": 4646 }] }
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"name": "Shop: 12,90 € brutto",
|
|
34
|
+
"priceMode": "gross",
|
|
35
|
+
"items": [{ "quantity": 1, "unitPriceCents": 1290, "vatRate": 20 }],
|
|
36
|
+
"erwartet": { "netCents": 1075, "vatCents": 215, "grossCents": 1290, "byRate": [{ "rate": 20, "netCents": 1075, "vatCents": 215, "grossCents": 1290 }] }
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "Brutto, zwei Saetze: je Satz eigenes Brutto, absteigend",
|
|
40
|
+
"priceMode": "gross",
|
|
41
|
+
"items": [
|
|
42
|
+
{ "quantity": 1, "unitPriceCents": 1479, "vatRate": 20 },
|
|
43
|
+
{ "quantity": 1, "unitPriceCents": 555, "vatRate": 10 },
|
|
44
|
+
{ "quantity": 1, "unitPriceCents": 1500, "vatRate": 20 }
|
|
45
|
+
],
|
|
46
|
+
"erwartet": {
|
|
47
|
+
"netCents": 2988, "vatCents": 546, "grossCents": 3534,
|
|
48
|
+
"byRate": [
|
|
49
|
+
{ "rate": 20, "netCents": 2483, "vatCents": 496, "grossCents": 2979 },
|
|
50
|
+
{ "rate": 10, "netCents": 505, "vatCents": 50, "grossCents": 555 }
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"name": "Brutto mit Menge und Rabatt: 3 × 9,99 € − 10 % = 26,97 €",
|
|
56
|
+
"priceMode": "gross",
|
|
57
|
+
"items": [{ "quantity": 3, "unitPriceCents": 999, "vatRate": 20, "discountPct": 10 }],
|
|
58
|
+
"erwartet": { "netCents": 2248, "vatCents": 449, "grossCents": 2697, "byRate": [{ "rate": 20, "netCents": 2248, "vatCents": 449, "grossCents": 2697 }] }
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"name": "Brutto zu 13 %: glatt",
|
|
62
|
+
"priceMode": "gross",
|
|
63
|
+
"items": [{ "quantity": 1, "unitPriceCents": 1695, "vatRate": 13 }],
|
|
64
|
+
"erwartet": { "netCents": 1500, "vatCents": 195, "grossCents": 1695, "byRate": [{ "rate": 13, "netCents": 1500, "vatCents": 195, "grossCents": 1695 }] }
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"name": "Brutto zu 10 %: 0,11 €",
|
|
68
|
+
"priceMode": "gross",
|
|
69
|
+
"items": [{ "quantity": 1, "unitPriceCents": 11, "vatRate": 10 }],
|
|
70
|
+
"erwartet": { "netCents": 10, "vatCents": 1, "grossCents": 11, "byRate": [{ "rate": 10, "netCents": 10, "vatCents": 1, "grossCents": 11 }] }
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"name": "Brutto: drei Zeilen zu 0,05 € sind 0,15 €, nicht dreimal gerundet",
|
|
74
|
+
"priceMode": "gross",
|
|
75
|
+
"items": [
|
|
76
|
+
{ "quantity": 1, "unitPriceCents": 5, "vatRate": 20 },
|
|
77
|
+
{ "quantity": 1, "unitPriceCents": 5, "vatRate": 20 },
|
|
78
|
+
{ "quantity": 1, "unitPriceCents": 5, "vatRate": 20 }
|
|
79
|
+
],
|
|
80
|
+
"erwartet": { "netCents": 13, "vatCents": 2, "grossCents": 15, "byRate": [{ "rate": 20, "netCents": 13, "vatCents": 2, "grossCents": 15 }] }
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"name": "Brutto: Rabatt-Bruchteile erst in der Satzsumme runden (2 × 0,045 € = 0,09 €)",
|
|
84
|
+
"priceMode": "gross",
|
|
85
|
+
"items": [
|
|
86
|
+
{ "quantity": 1, "unitPriceCents": 5, "vatRate": 20, "discountPct": 10 },
|
|
87
|
+
{ "quantity": 1, "unitPriceCents": 5, "vatRate": 20, "discountPct": 10 }
|
|
88
|
+
],
|
|
89
|
+
"erwartet": { "netCents": 8, "vatCents": 1, "grossCents": 9, "byRate": [{ "rate": 20, "netCents": 8, "vatCents": 1, "grossCents": 9 }] }
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"name": "Brutto: ein Cent",
|
|
93
|
+
"priceMode": "gross",
|
|
94
|
+
"items": [{ "quantity": 1, "unitPriceCents": 1, "vatRate": 20 }],
|
|
95
|
+
"erwartet": { "netCents": 1, "vatCents": 0, "grossCents": 1, "byRate": [{ "rate": 20, "netCents": 1, "vatCents": 0, "grossCents": 1 }] }
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"name": "Brutto, aber steuerfrei (ig. Lieferung): alles zu 0 %",
|
|
99
|
+
"priceMode": "gross",
|
|
100
|
+
"taxScheme": "igLieferung",
|
|
101
|
+
"items": [
|
|
102
|
+
{ "quantity": 1, "unitPriceCents": 1479, "vatRate": 20 },
|
|
103
|
+
{ "quantity": 1, "unitPriceCents": 1500, "vatRate": 0 }
|
|
104
|
+
],
|
|
105
|
+
"erwartet": { "netCents": 2979, "vatCents": 0, "grossCents": 2979, "byRate": [{ "rate": 0, "netCents": 2979, "vatCents": 0, "grossCents": 2979 }] }
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"name": "Netto: 2 × 50,00 € zu 20 %",
|
|
109
|
+
"priceMode": "net",
|
|
110
|
+
"items": [{ "quantity": 2, "unitPriceCents": 5000, "vatRate": 20 }],
|
|
111
|
+
"erwartet": { "netCents": 10000, "vatCents": 2000, "grossCents": 12000, "byRate": [{ "rate": 20, "netCents": 10000, "vatCents": 2000, "grossCents": 12000 }] }
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"name": "Netto, zwei Saetze getrennt gerundet",
|
|
115
|
+
"priceMode": "net",
|
|
116
|
+
"items": [
|
|
117
|
+
{ "quantity": 1, "unitPriceCents": 1000, "vatRate": 20 },
|
|
118
|
+
{ "quantity": 1, "unitPriceCents": 1000, "vatRate": 10 }
|
|
119
|
+
],
|
|
120
|
+
"erwartet": {
|
|
121
|
+
"netCents": 2000, "vatCents": 300, "grossCents": 2300,
|
|
122
|
+
"byRate": [
|
|
123
|
+
{ "rate": 20, "netCents": 1000, "vatCents": 200, "grossCents": 1200 },
|
|
124
|
+
{ "rate": 10, "netCents": 1000, "vatCents": 100, "grossCents": 1100 }
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"name": "Netto: USt aus der ungerundeten Nettosumme (1,5 × 33,33 € = 49,995 €)",
|
|
130
|
+
"priceMode": "net",
|
|
131
|
+
"items": [{ "quantity": 1.5, "unitPriceCents": 3333, "vatRate": 20 }],
|
|
132
|
+
"erwartet": { "netCents": 5000, "vatCents": 1000, "grossCents": 6000, "byRate": [{ "rate": 20, "netCents": 5000, "vatCents": 1000, "grossCents": 6000 }] }
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"name": "Netto mit Rabatt: 3 × 9,99 € − 12,5 % = 26,22375 €",
|
|
136
|
+
"priceMode": "net",
|
|
137
|
+
"items": [{ "quantity": 3, "unitPriceCents": 999, "vatRate": 20, "discountPct": 12.5 }],
|
|
138
|
+
"erwartet": { "netCents": 2622, "vatCents": 524, "grossCents": 3146, "byRate": [{ "rate": 20, "netCents": 2622, "vatCents": 524, "grossCents": 3146 }] }
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"name": "Kleinunternehmer: keine Steuer",
|
|
142
|
+
"priceMode": "net",
|
|
143
|
+
"taxScheme": "smallBusiness",
|
|
144
|
+
"items": [{ "quantity": 1, "unitPriceCents": 10000, "vatRate": 20 }],
|
|
145
|
+
"erwartet": { "netCents": 10000, "vatCents": 0, "grossCents": 10000, "byRate": [{ "rate": 0, "netCents": 10000, "vatCents": 0, "grossCents": 10000 }] }
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"name": "Keine Positionen",
|
|
149
|
+
"priceMode": "gross",
|
|
150
|
+
"items": [],
|
|
151
|
+
"erwartet": { "netCents": 0, "vatCents": 0, "grossCents": 0, "byRate": [] }
|
|
152
|
+
}
|
|
153
|
+
]
|
|
154
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
2
|
+
"version": "0.22.0",
|
|
3
3
|
"sprachen": [
|
|
4
4
|
"de",
|
|
5
5
|
"en"
|
|
@@ -27,8 +27,12 @@
|
|
|
27
27
|
"pdf.tabelle.ust": "UST",
|
|
28
28
|
"pdf.tabelle.einzelNetto": "EINZEL NETTO",
|
|
29
29
|
"pdf.tabelle.betragNetto": "BETRAG NETTO",
|
|
30
|
+
"pdf.tabelle.einzelBrutto": "EINZEL BRUTTO",
|
|
31
|
+
"pdf.tabelle.betragBrutto": "BETRAG BRUTTO",
|
|
32
|
+
"pdf.position.rabatt": "abzüglich {prozent} % Rabatt",
|
|
30
33
|
"pdf.summe.zwischensumme": "Zwischensumme netto",
|
|
31
34
|
"pdf.summe.umsatzsteuer": "Umsatzsteuer {satz}%",
|
|
35
|
+
"pdf.summe.darinUst": "darin {satz}% USt von {netto} netto",
|
|
32
36
|
"pdf.summe.gesamt.rechnung": "Gesamtbetrag",
|
|
33
37
|
"pdf.summe.gesamt.gutschrift": "Gutschriftsbetrag",
|
|
34
38
|
"steuer.kleinunternehmer": "Gemäß § 6 Abs. 1 Z 27 UStG wird keine Umsatzsteuer verrechnet (Kleinunternehmer).",
|
|
@@ -38,6 +42,20 @@
|
|
|
38
42
|
"steuer.reverseCharge.titel": "Steuerschuldnerschaft des Leistungsempfängers. ",
|
|
39
43
|
"steuer.reverseCharge.text": "Übergang der Steuerschuld gem. Art. 196 MwSt-RL 2006/112/EG (innergemeinschaftliche Leistung). Die Leistung ist nicht steuerfrei — die Umsatzsteuer schuldet und entrichtet der Leistungsempfänger in seinem Land.",
|
|
40
44
|
"steuer.uidZeile": "UID Leistungserbringer: {verkaeufer} · UID Leistungsempfänger: {kaeufer}",
|
|
45
|
+
"steuer.rcGrund.construction": "Bauleistung gemäß § 19 Abs. 1a UStG.",
|
|
46
|
+
"steuer.rcGrund.scrap": "Schrott und Abfallstoffe gemäß Schrott-Umsatzsteuerverordnung (BGBl. II Nr. 129/2007).",
|
|
47
|
+
"steuer.rcGrund.mobile_devices": "Mobilfunkgeräte bzw. integrierte Schaltkreise gemäß § 19 Abs. 1e lit. b UStG.",
|
|
48
|
+
"steuer.rcGrund.it_devices": "Laptops, Tablets bzw. Videospielkonsolen gemäß § 2 Z 1 Umsatzsteuerbetrugsbekämpfungsverordnung (BGBl. II Nr. 369/2013).",
|
|
49
|
+
"steuer.rcGrund.metals": "Metalle gemäß § 2 Z 4 Umsatzsteuerbetrugsbekämpfungsverordnung.",
|
|
50
|
+
"steuer.rcGrund.emission_certificates": "Treibhausgasemissionszertifikate gemäß § 19 Abs. 1e lit. a UStG.",
|
|
51
|
+
"steuer.rcGrund.gas_electricity": "Lieferung von Gas oder Elektrizität an einen Wiederverkäufer gemäß § 2 Z 2 Umsatzsteuerbetrugsbekämpfungsverordnung.",
|
|
52
|
+
"steuer.rcGrund.energy_certificates": "Gas- und Elektrizitätszertifikate gemäß § 2 Z 3 Umsatzsteuerbetrugsbekämpfungsverordnung.",
|
|
53
|
+
"steuer.rcGrund.investment_gold": "Steuerpflichtige Lieferung von Anlagegold gemäß § 2 Z 5 Umsatzsteuerbetrugsbekämpfungsverordnung.",
|
|
54
|
+
"steuer.rcGrund.security_transfer": "Lieferung von Sicherungs- bzw. Vorbehaltseigentum gemäß § 19 Abs. 1b UStG.",
|
|
55
|
+
"steuer.rcGrund.foreign_supplier": "Leistung eines nicht im Inland ansässigen Unternehmers gemäß § 19 Abs. 1 zweiter Satz UStG.",
|
|
56
|
+
"steuer.domestic.text": "Die Umsatzsteuer schuldet und entrichtet der Leistungsempfänger. Die Leistung ist nicht steuerfrei.",
|
|
57
|
+
"steuer.outsideScope.titel": "Nicht steuerbarer Umsatz. ",
|
|
58
|
+
"steuer.outsideScope.text": "Der Leistungsort liegt gemäß § 3a Abs. 6 UStG im Ansässigkeitsstaat des Leistungsempfängers; in Österreich fällt keine Umsatzsteuer an.",
|
|
41
59
|
"pdf.zahlung.titel": "ZAHLUNGSINFORMATIONEN",
|
|
42
60
|
"pdf.zahlung.empfaenger": "Empfänger",
|
|
43
61
|
"pdf.zahlung.iban": "IBAN",
|
|
@@ -87,6 +105,7 @@
|
|
|
87
105
|
"einvoice.befreiung.reverseCharge": "Steuerschuldnerschaft des Leistungsempfängers (Reverse Charge)",
|
|
88
106
|
"einvoice.befreiung.kleinunternehmer": "Steuerbefreit — Kleinunternehmer gemäß §6 Abs. 1 Z 27 UStG",
|
|
89
107
|
"einvoice.befreiung.igLieferung": "Steuerfreie innergemeinschaftliche Lieferung gemäß Art. 6 Abs. 1 UStG",
|
|
108
|
+
"einvoice.befreiung.outsideScope": "Nicht steuerbarer Umsatz — Leistungsort im Ausland (§ 3a Abs. 6 UStG)",
|
|
90
109
|
"einvoice.befreiung.ausfuhr": "Steuerfreie Ausfuhrlieferung gemäß §6 Abs. 1 Z 1 UStG",
|
|
91
110
|
"einvoice.zahlbarBis": "Zahlbar bis {datum}",
|
|
92
111
|
"einheit.piece": "Stk",
|
|
@@ -210,8 +229,12 @@
|
|
|
210
229
|
"pdf.tabelle.ust": "VAT",
|
|
211
230
|
"pdf.tabelle.einzelNetto": "UNIT NET",
|
|
212
231
|
"pdf.tabelle.betragNetto": "AMOUNT NET",
|
|
232
|
+
"pdf.tabelle.einzelBrutto": "UNIT GROSS",
|
|
233
|
+
"pdf.tabelle.betragBrutto": "AMOUNT GROSS",
|
|
234
|
+
"pdf.position.rabatt": "less {prozent}% discount",
|
|
213
235
|
"pdf.summe.zwischensumme": "Subtotal net",
|
|
214
236
|
"pdf.summe.umsatzsteuer": "VAT {satz}%",
|
|
237
|
+
"pdf.summe.darinUst": "incl. {satz}% VAT on {netto} net",
|
|
215
238
|
"pdf.summe.gesamt.rechnung": "Total",
|
|
216
239
|
"pdf.summe.gesamt.gutschrift": "Credit total",
|
|
217
240
|
"steuer.kleinunternehmer": "No VAT charged pursuant to § 6 (1) no. 27 UStG (small business exemption).",
|
|
@@ -221,6 +244,20 @@
|
|
|
221
244
|
"steuer.reverseCharge.titel": "Reverse charge – VAT liability of the recipient. ",
|
|
222
245
|
"steuer.reverseCharge.text": "VAT liability transferred pursuant to Art. 196 of VAT Directive 2006/112/EC (intra-Community service). The service is not VAT-exempt — the recipient owes and accounts for the VAT in their country.",
|
|
223
246
|
"steuer.uidZeile": "VAT ID supplier: {verkaeufer} · VAT ID recipient: {kaeufer}",
|
|
247
|
+
"steuer.rcGrund.construction": "Construction work pursuant to § 19 (1a) UStG.",
|
|
248
|
+
"steuer.rcGrund.scrap": "Scrap and waste materials pursuant to the Austrian scrap VAT regulation (BGBl. II No. 129/2007).",
|
|
249
|
+
"steuer.rcGrund.mobile_devices": "Mobile phones or integrated circuits pursuant to § 19 (1e) (b) UStG.",
|
|
250
|
+
"steuer.rcGrund.it_devices": "Laptops, tablets or games consoles pursuant to § 2 no. 1 of the Austrian VAT anti-fraud regulation (BGBl. II No. 369/2013).",
|
|
251
|
+
"steuer.rcGrund.metals": "Metals pursuant to § 2 no. 4 of the Austrian VAT anti-fraud regulation.",
|
|
252
|
+
"steuer.rcGrund.emission_certificates": "Greenhouse gas emission allowances pursuant to § 19 (1e) (a) UStG.",
|
|
253
|
+
"steuer.rcGrund.gas_electricity": "Supply of gas or electricity to a reseller pursuant to § 2 no. 2 of the Austrian VAT anti-fraud regulation.",
|
|
254
|
+
"steuer.rcGrund.energy_certificates": "Gas and electricity certificates pursuant to § 2 no. 3 of the Austrian VAT anti-fraud regulation.",
|
|
255
|
+
"steuer.rcGrund.investment_gold": "Taxable supply of investment gold pursuant to § 2 no. 5 of the Austrian VAT anti-fraud regulation.",
|
|
256
|
+
"steuer.rcGrund.security_transfer": "Supply of goods under a security or retention of title arrangement pursuant to § 19 (1b) UStG.",
|
|
257
|
+
"steuer.rcGrund.foreign_supplier": "Supply by a business not established in Austria pursuant to § 19 (1) second sentence UStG.",
|
|
258
|
+
"steuer.domestic.text": "The recipient owes and accounts for the VAT. The supply is not VAT-exempt.",
|
|
259
|
+
"steuer.outsideScope.titel": "Outside the scope of Austrian VAT. ",
|
|
260
|
+
"steuer.outsideScope.text": "The place of supply is the recipient's country pursuant to § 3a (6) UStG; no Austrian VAT applies.",
|
|
224
261
|
"pdf.zahlung.titel": "PAYMENT DETAILS",
|
|
225
262
|
"pdf.zahlung.empfaenger": "Payee",
|
|
226
263
|
"pdf.zahlung.iban": "IBAN",
|
|
@@ -270,6 +307,7 @@
|
|
|
270
307
|
"einvoice.befreiung.reverseCharge": "Reverse charge – VAT liability of the recipient",
|
|
271
308
|
"einvoice.befreiung.kleinunternehmer": "VAT exempt — small business pursuant to § 6 (1) no. 27 UStG",
|
|
272
309
|
"einvoice.befreiung.igLieferung": "VAT-exempt intra-Community supply pursuant to Art. 6 (1) UStG",
|
|
310
|
+
"einvoice.befreiung.outsideScope": "Outside the scope of VAT — place of supply abroad (§ 3a (6) UStG)",
|
|
273
311
|
"einvoice.befreiung.ausfuhr": "VAT-exempt export delivery pursuant to § 6 (1) no. 1 UStG",
|
|
274
312
|
"einvoice.zahlbarBis": "Payable by {datum}",
|
|
275
313
|
"einheit.piece": "pcs",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kreiseck/kasseneck-api",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"description": "RKSV-Registrierkasse fuer JavaScript und TypeScript: signierte Belege, Storno, Kartenzahlung, Bondruck. Austrian fiscal cash register (RKSV) API client.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Kreiseck",
|