@kreiseck/kasseneck-api 0.19.0 → 0.20.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 +25 -0
- package/README.md +17 -4
- package/dist/cjs/rechnung/texte.d.ts +5 -4
- package/dist/cjs/rechnung/texte.js +16 -8
- package/dist/cjs/rechnung/typen.d.ts +7 -0
- package/dist/cjs/rechnung/vertrag.d.ts +7 -4
- package/dist/cjs/rechnung/vertrag.js +14 -4
- package/dist/esm/rechnung/texte.d.ts +5 -4
- package/dist/esm/rechnung/texte.js +16 -8
- package/dist/esm/rechnung/typen.d.ts +7 -0
- package/dist/esm/rechnung/vertrag.d.ts +7 -4
- package/dist/esm/rechnung/vertrag.js +14 -4
- package/fixtures/hobex-hps-codes.json +1 -1
- package/fixtures/kasse-texte.json +1 -1
- package/fixtures/oberflaeche.json +1 -1
- package/fixtures/rechnung-api-beispiele/zahlung-fehler-vor-ort.json +15 -0
- package/fixtures/rechnung-api.schema.json +7 -1
- package/fixtures/rechnung-texte.json +11 -9
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,31 @@ Was vor 0.7.0 geschah, steht in der Commit-Historie (`git log`); ab hier wird
|
|
|
4
4
|
es hier geführt. Ein Eintrag nennt die Änderung **und ihren Grund** —
|
|
5
5
|
nur der Grund überlebt den nächsten Umbau.
|
|
6
6
|
|
|
7
|
+
## 0.20.0
|
|
8
|
+
|
|
9
|
+
### Rechnung: richtige Steuerhinweise, Barumsatz auch mit Karte
|
|
10
|
+
|
|
11
|
+
**Anlass:** drei Befunde aus einer Durchsicht an den Primärquellen.
|
|
12
|
+
|
|
13
|
+
- **Reverse Charge ist keine Steuerbefreiung.** Der Aufdruck hiess
|
|
14
|
+
„Steuerfreie Leistung – Reverse Charge" und behauptete damit eine Befreiung,
|
|
15
|
+
die es nicht gibt: der Umsatz bleibt steuerpflichtig, nur die Steuer schuldet
|
|
16
|
+
der Empfänger. Das Gesetz trennt beides (§ 11 Abs. 1 Z 3 lit. e = Hinweis auf
|
|
17
|
+
eine Befreiung, § 11 Abs. 1a = Hinweis auf die Steuerschuldnerschaft); Art. 226
|
|
18
|
+
Nr. 11a MwSt-RL nennt den Begriff wörtlich. Jetzt:
|
|
19
|
+
„Steuerschuldnerschaft des Leistungsempfängers."
|
|
20
|
+
- **Ig. Lieferung** bekommt denselben Kasten wie Reverse Charge, mit **beiden**
|
|
21
|
+
UID-Nummern — Art. 11 Abs. 2 UStG verlangt sie auf der Rechnung. Der
|
|
22
|
+
Textschlüssel `steuer.reverseCharge.uid` heisst darum jetzt `steuer.uidZeile`,
|
|
23
|
+
neu sind `steuer.igLieferung.titel` und `steuer.igLieferung.text`
|
|
24
|
+
(`steuer.igLieferung` entfällt).
|
|
25
|
+
- **`onSite` an der Zahlung.** Ein Barumsatz ist nicht nur Bargeld: als
|
|
26
|
+
Barzahlung gilt auch die Karte **vor Ort** (§ 131b Abs. 1 Z 3 UStG), nicht
|
|
27
|
+
aber dieselbe Karte im Internet. Weil `card`/`online` beides sein können,
|
|
28
|
+
sagt es das Fremdsystem jetzt selbst — der Hinweis `cash_receipt_required`
|
|
29
|
+
kommt bei `cash` immer und sonst nur mit `onSite: true`. `transfer` mit
|
|
30
|
+
`onSite` wird abgewiesen.
|
|
31
|
+
|
|
7
32
|
## 0.19.0
|
|
8
33
|
|
|
9
34
|
### hobex HPS: TECS-Antwortcodes eingeordnet, Storno nach ausbleibender Host-Antwort
|
package/README.md
CHANGED
|
@@ -545,10 +545,23 @@ await rechnungen.recordInvoicePayment({
|
|
|
545
545
|
```
|
|
546
546
|
|
|
547
547
|
`reference` wird gespeichert, aber **nicht gedruckt**; Kartendaten gehören
|
|
548
|
-
ohnehin nicht auf eine Rechnung.
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
548
|
+
ohnehin nicht auf eine Rechnung.
|
|
549
|
+
|
|
550
|
+
**Barumsatz ist nicht nur Bargeld.** Als Barzahlung gilt auch die Karte **vor
|
|
551
|
+
Ort** an der Kasse (§ 131b Abs. 1 Z 3 UStG) — dieselbe Karte im Internet
|
|
552
|
+
dagegen nicht. Weil `card` und `online` beides sein können, sagt es das
|
|
553
|
+
Fremdsystem selbst:
|
|
554
|
+
|
|
555
|
+
```ts
|
|
556
|
+
payment: { method: 'card', onSite: true } // Terminal an der Kasse
|
|
557
|
+
payment: { method: 'card' } // Kartenzahlung im Shop
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
Bei `cash` (immer) und bei `onSite: true` trägt die Antwort
|
|
561
|
+
`notice.code = 'cash_receipt_required'`: ein Barumsatz braucht einen Beleg
|
|
562
|
+
(§ 132a BAO), bei Registrierkassenpflicht über die Registrierkasse — der
|
|
563
|
+
Vermerk an der Rechnung ersetzt ihn nicht. `transfer` mit `onSite` ist ein
|
|
564
|
+
Feldfehler, eine Überweisung erfolgt nicht vor Ort.
|
|
552
565
|
|
|
553
566
|
**Nach einem Zeitlimit mit demselben `idempotencyKey` wiederholen**, nie mit
|
|
554
567
|
einem neuen: dann kommt die schon ausgestellte Rechnung zurück
|
|
@@ -40,11 +40,12 @@ declare const DE: {
|
|
|
40
40
|
readonly 'pdf.summe.gesamt.rechnung': "Gesamtbetrag";
|
|
41
41
|
readonly 'pdf.summe.gesamt.gutschrift': "Gutschriftsbetrag";
|
|
42
42
|
readonly 'steuer.kleinunternehmer': "Gemäß § 6 Abs. 1 Z 27 UStG wird keine Umsatzsteuer verrechnet (Kleinunternehmer).";
|
|
43
|
-
readonly 'steuer.igLieferung': "Steuerfreie innergemeinschaftliche Lieferung
|
|
43
|
+
readonly 'steuer.igLieferung.titel': "Steuerfreie innergemeinschaftliche Lieferung. ";
|
|
44
|
+
readonly 'steuer.igLieferung.text': "Gemäß Art. 6 Abs. 1 UStG (Art. 138 MwSt-RL 2006/112/EG). Die Erwerbsbesteuerung erfolgt durch den Abnehmer im Bestimmungsland.";
|
|
44
45
|
readonly 'steuer.ausfuhr': "Steuerfreie Ausfuhrlieferung (§ 6 Abs. 1 Z 1 UStG).";
|
|
45
|
-
readonly 'steuer.reverseCharge.titel': "
|
|
46
|
-
readonly 'steuer.reverseCharge.text': "Übergang der
|
|
47
|
-
readonly 'steuer.
|
|
46
|
+
readonly 'steuer.reverseCharge.titel': "Steuerschuldnerschaft des Leistungsempfängers. ";
|
|
47
|
+
readonly '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.";
|
|
48
|
+
readonly 'steuer.uidZeile': "UID Leistungserbringer: {verkaeufer} · UID Leistungsempfänger: {kaeufer}";
|
|
48
49
|
readonly 'pdf.zahlung.titel': "ZAHLUNGSINFORMATIONEN";
|
|
49
50
|
readonly 'pdf.zahlung.empfaenger': "Empfänger";
|
|
50
51
|
readonly 'pdf.zahlung.iban': "IBAN";
|
|
@@ -29,11 +29,18 @@ const DE = {
|
|
|
29
29
|
'pdf.summe.gesamt.rechnung': 'Gesamtbetrag',
|
|
30
30
|
'pdf.summe.gesamt.gutschrift': 'Gutschriftsbetrag',
|
|
31
31
|
'steuer.kleinunternehmer': 'Gemäß § 6 Abs. 1 Z 27 UStG wird keine Umsatzsteuer verrechnet (Kleinunternehmer).',
|
|
32
|
-
'steuer.igLieferung': 'Steuerfreie innergemeinschaftliche Lieferung
|
|
32
|
+
'steuer.igLieferung.titel': 'Steuerfreie innergemeinschaftliche Lieferung. ',
|
|
33
|
+
'steuer.igLieferung.text': 'Gemäß Art. 6 Abs. 1 UStG (Art. 138 MwSt-RL 2006/112/EG). Die Erwerbsbesteuerung erfolgt durch den Abnehmer im Bestimmungsland.',
|
|
33
34
|
'steuer.ausfuhr': 'Steuerfreie Ausfuhrlieferung (§ 6 Abs. 1 Z 1 UStG).',
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
// Reverse Charge ist KEINE Steuerbefreiung: der Umsatz bleibt steuerpflichtig,
|
|
36
|
+
// nur die Steuer schuldet der Empfaenger (§ 11 Abs. 1a UStG; der Begriff steht
|
|
37
|
+
// wortgleich in Art. 226 Nr. 11a MwSt-RL). „Steuerfrei" waere sachlich falsch
|
|
38
|
+
// und erbraechte den vorgeschriebenen Hinweis nicht.
|
|
39
|
+
'steuer.reverseCharge.titel': 'Steuerschuldnerschaft des Leistungsempfängers. ',
|
|
40
|
+
'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.',
|
|
41
|
+
// Beide UID-Nummern: bei Reverse Charge § 11 Abs. 1a, bei der ig. Lieferung
|
|
42
|
+
// Art. 11 Abs. 2 UStG.
|
|
43
|
+
'steuer.uidZeile': 'UID Leistungserbringer: {verkaeufer} · UID Leistungsempfänger: {kaeufer}',
|
|
37
44
|
'pdf.zahlung.titel': 'ZAHLUNGSINFORMATIONEN',
|
|
38
45
|
'pdf.zahlung.empfaenger': 'Empfänger',
|
|
39
46
|
'pdf.zahlung.iban': 'IBAN',
|
|
@@ -211,11 +218,12 @@ const EN = {
|
|
|
211
218
|
'pdf.summe.gesamt.rechnung': 'Total',
|
|
212
219
|
'pdf.summe.gesamt.gutschrift': 'Credit total',
|
|
213
220
|
'steuer.kleinunternehmer': 'No VAT charged pursuant to § 6 (1) no. 27 UStG (small business exemption).',
|
|
214
|
-
'steuer.igLieferung': 'VAT-exempt intra-Community supply
|
|
221
|
+
'steuer.igLieferung.titel': 'VAT-exempt intra-Community supply. ',
|
|
222
|
+
'steuer.igLieferung.text': 'Pursuant to Art. 6 (1) UStG (Art. 138 of VAT Directive 2006/112/EC). The acquisition is taxed by the customer in the country of destination.',
|
|
215
223
|
'steuer.ausfuhr': 'VAT-exempt export delivery (§ 6 (1) no. 1 UStG).',
|
|
216
|
-
'steuer.reverseCharge.titel': '
|
|
217
|
-
'steuer.reverseCharge.text': 'VAT liability transferred
|
|
218
|
-
'steuer.
|
|
224
|
+
'steuer.reverseCharge.titel': 'Reverse charge – VAT liability of the recipient. ',
|
|
225
|
+
'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.',
|
|
226
|
+
'steuer.uidZeile': 'VAT ID supplier: {verkaeufer} · VAT ID recipient: {kaeufer}',
|
|
219
227
|
'pdf.zahlung.titel': 'PAYMENT DETAILS',
|
|
220
228
|
'pdf.zahlung.empfaenger': 'Payee',
|
|
221
229
|
'pdf.zahlung.iban': 'IBAN',
|
|
@@ -118,6 +118,13 @@ export interface PaymentInput {
|
|
|
118
118
|
paidAt?: string;
|
|
119
119
|
/** Zahlungskennung des Fremdsystems — gespeichert, aber nicht gedruckt. */
|
|
120
120
|
reference?: string;
|
|
121
|
+
/**
|
|
122
|
+
* Die Zahlung erfolgte vor Ort beim Unternehmer (Terminal an der Kasse).
|
|
123
|
+
* Dann ist sie ein Barumsatz — auch mit Karte (§ 131b Abs. 1 Z 3 UStG) — und
|
|
124
|
+
* die Antwort traegt den Hinweis `cash_receipt_required`. Zu `transfer`
|
|
125
|
+
* passt das Kennzeichen nicht und wird abgewiesen.
|
|
126
|
+
*/
|
|
127
|
+
onSite?: boolean;
|
|
121
128
|
}
|
|
122
129
|
export interface RecordPaymentRequest extends PaymentInput {
|
|
123
130
|
/** Pflicht: ohne ihn bucht eine Wiederholung eine zweite Zahlung. */
|
|
@@ -52,10 +52,13 @@ export type EInvoiceFormat = (typeof EINVOICE_FORMATS)[number];
|
|
|
52
52
|
export declare const INVOICE_LANGUAGES: readonly ["de", "en"];
|
|
53
53
|
export type InvoiceLanguage = (typeof INVOICE_LANGUAGES)[number];
|
|
54
54
|
/**
|
|
55
|
-
* Wie eine Rechnung bezahlt wurde. Der Vermerk ist Buchhaltung, kein Beleg
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
55
|
+
* Wie eine Rechnung bezahlt wurde. Der Vermerk ist Buchhaltung, kein Beleg.
|
|
56
|
+
*
|
|
57
|
+
* Ein **Barumsatz** ist nicht nur Bargeld: als Barzahlung gilt auch die Zahlung
|
|
58
|
+
* mit Bankomat- oder Kreditkarte **vor Ort** (§ 131b Abs. 1 Z 3 UStG), nicht
|
|
59
|
+
* aber dieselbe Karte im Internet. Weil `card` und `online` beides sein
|
|
60
|
+
* koennen, sagt das Feld `onSite` es dem Server — und nur dann traegt die
|
|
61
|
+
* Antwort den Hinweis `cash_receipt_required` (bei `cash` immer).
|
|
59
62
|
*/
|
|
60
63
|
export declare const INVOICE_PAYMENT_METHODS: readonly ["transfer", "card", "online", "cash"];
|
|
61
64
|
export type InvoicePaymentMethod = (typeof INVOICE_PAYMENT_METHODS)[number];
|
|
@@ -87,10 +87,13 @@ exports.EINVOICE_FORMATS = ['ubl', 'cii'];
|
|
|
87
87
|
*/
|
|
88
88
|
exports.INVOICE_LANGUAGES = ['de', 'en'];
|
|
89
89
|
/**
|
|
90
|
-
* Wie eine Rechnung bezahlt wurde. Der Vermerk ist Buchhaltung, kein Beleg
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
90
|
+
* Wie eine Rechnung bezahlt wurde. Der Vermerk ist Buchhaltung, kein Beleg.
|
|
91
|
+
*
|
|
92
|
+
* Ein **Barumsatz** ist nicht nur Bargeld: als Barzahlung gilt auch die Zahlung
|
|
93
|
+
* mit Bankomat- oder Kreditkarte **vor Ort** (§ 131b Abs. 1 Z 3 UStG), nicht
|
|
94
|
+
* aber dieselbe Karte im Internet. Weil `card` und `online` beides sein
|
|
95
|
+
* koennen, sagt das Feld `onSite` es dem Server — und nur dann traegt die
|
|
96
|
+
* Antwort den Hinweis `cash_receipt_required` (bei `cash` immer).
|
|
94
97
|
*/
|
|
95
98
|
exports.INVOICE_PAYMENT_METHODS = ['transfer', 'card', 'online', 'cash'];
|
|
96
99
|
/**
|
|
@@ -291,6 +294,12 @@ exports.PAYMENT_FELDER = Object.freeze({
|
|
|
291
294
|
amountCents: { typ: 'integer', pflicht: false, min: 1, max: 100_000_000 },
|
|
292
295
|
paidAt: datum(),
|
|
293
296
|
reference: text(100),
|
|
297
|
+
/**
|
|
298
|
+
* Die Zahlung erfolgte **vor Ort** beim Unternehmer (Terminal an der Kasse,
|
|
299
|
+
* Zahlung per App am Tresen). Dann ist sie ein Barumsatz. Zu `transfer` passt
|
|
300
|
+
* das nicht — eine Ueberweisung erfolgt nie vor Ort — und wird abgewiesen.
|
|
301
|
+
*/
|
|
302
|
+
onSite: { typ: 'boolean', pflicht: false },
|
|
294
303
|
});
|
|
295
304
|
exports.RECHNUNG_ANFRAGEN = Object.freeze({
|
|
296
305
|
createCustomer: {
|
|
@@ -384,6 +393,7 @@ exports.RECHNUNG_ANFRAGEN = Object.freeze({
|
|
|
384
393
|
amountCents: { typ: 'integer', pflicht: false, min: 1, max: 100_000_000 },
|
|
385
394
|
paidAt: datum(),
|
|
386
395
|
reference: text(100),
|
|
396
|
+
onSite: { typ: 'boolean', pflicht: false },
|
|
387
397
|
},
|
|
388
398
|
});
|
|
389
399
|
/** Genau eines dieser Felder muss gesetzt sein (je Aufruf, je Gruppe). */
|
|
@@ -40,11 +40,12 @@ declare const DE: {
|
|
|
40
40
|
readonly 'pdf.summe.gesamt.rechnung': "Gesamtbetrag";
|
|
41
41
|
readonly 'pdf.summe.gesamt.gutschrift': "Gutschriftsbetrag";
|
|
42
42
|
readonly 'steuer.kleinunternehmer': "Gemäß § 6 Abs. 1 Z 27 UStG wird keine Umsatzsteuer verrechnet (Kleinunternehmer).";
|
|
43
|
-
readonly 'steuer.igLieferung': "Steuerfreie innergemeinschaftliche Lieferung
|
|
43
|
+
readonly 'steuer.igLieferung.titel': "Steuerfreie innergemeinschaftliche Lieferung. ";
|
|
44
|
+
readonly 'steuer.igLieferung.text': "Gemäß Art. 6 Abs. 1 UStG (Art. 138 MwSt-RL 2006/112/EG). Die Erwerbsbesteuerung erfolgt durch den Abnehmer im Bestimmungsland.";
|
|
44
45
|
readonly 'steuer.ausfuhr': "Steuerfreie Ausfuhrlieferung (§ 6 Abs. 1 Z 1 UStG).";
|
|
45
|
-
readonly 'steuer.reverseCharge.titel': "
|
|
46
|
-
readonly 'steuer.reverseCharge.text': "Übergang der
|
|
47
|
-
readonly 'steuer.
|
|
46
|
+
readonly 'steuer.reverseCharge.titel': "Steuerschuldnerschaft des Leistungsempfängers. ";
|
|
47
|
+
readonly '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.";
|
|
48
|
+
readonly 'steuer.uidZeile': "UID Leistungserbringer: {verkaeufer} · UID Leistungsempfänger: {kaeufer}";
|
|
48
49
|
readonly 'pdf.zahlung.titel': "ZAHLUNGSINFORMATIONEN";
|
|
49
50
|
readonly 'pdf.zahlung.empfaenger': "Empfänger";
|
|
50
51
|
readonly 'pdf.zahlung.iban': "IBAN";
|
|
@@ -25,11 +25,18 @@ const DE = {
|
|
|
25
25
|
'pdf.summe.gesamt.rechnung': 'Gesamtbetrag',
|
|
26
26
|
'pdf.summe.gesamt.gutschrift': 'Gutschriftsbetrag',
|
|
27
27
|
'steuer.kleinunternehmer': 'Gemäß § 6 Abs. 1 Z 27 UStG wird keine Umsatzsteuer verrechnet (Kleinunternehmer).',
|
|
28
|
-
'steuer.igLieferung': 'Steuerfreie innergemeinschaftliche Lieferung
|
|
28
|
+
'steuer.igLieferung.titel': 'Steuerfreie innergemeinschaftliche Lieferung. ',
|
|
29
|
+
'steuer.igLieferung.text': 'Gemäß Art. 6 Abs. 1 UStG (Art. 138 MwSt-RL 2006/112/EG). Die Erwerbsbesteuerung erfolgt durch den Abnehmer im Bestimmungsland.',
|
|
29
30
|
'steuer.ausfuhr': 'Steuerfreie Ausfuhrlieferung (§ 6 Abs. 1 Z 1 UStG).',
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
// Reverse Charge ist KEINE Steuerbefreiung: der Umsatz bleibt steuerpflichtig,
|
|
32
|
+
// nur die Steuer schuldet der Empfaenger (§ 11 Abs. 1a UStG; der Begriff steht
|
|
33
|
+
// wortgleich in Art. 226 Nr. 11a MwSt-RL). „Steuerfrei" waere sachlich falsch
|
|
34
|
+
// und erbraechte den vorgeschriebenen Hinweis nicht.
|
|
35
|
+
'steuer.reverseCharge.titel': 'Steuerschuldnerschaft des Leistungsempfängers. ',
|
|
36
|
+
'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.',
|
|
37
|
+
// Beide UID-Nummern: bei Reverse Charge § 11 Abs. 1a, bei der ig. Lieferung
|
|
38
|
+
// Art. 11 Abs. 2 UStG.
|
|
39
|
+
'steuer.uidZeile': 'UID Leistungserbringer: {verkaeufer} · UID Leistungsempfänger: {kaeufer}',
|
|
33
40
|
'pdf.zahlung.titel': 'ZAHLUNGSINFORMATIONEN',
|
|
34
41
|
'pdf.zahlung.empfaenger': 'Empfänger',
|
|
35
42
|
'pdf.zahlung.iban': 'IBAN',
|
|
@@ -207,11 +214,12 @@ const EN = {
|
|
|
207
214
|
'pdf.summe.gesamt.rechnung': 'Total',
|
|
208
215
|
'pdf.summe.gesamt.gutschrift': 'Credit total',
|
|
209
216
|
'steuer.kleinunternehmer': 'No VAT charged pursuant to § 6 (1) no. 27 UStG (small business exemption).',
|
|
210
|
-
'steuer.igLieferung': 'VAT-exempt intra-Community supply
|
|
217
|
+
'steuer.igLieferung.titel': 'VAT-exempt intra-Community supply. ',
|
|
218
|
+
'steuer.igLieferung.text': 'Pursuant to Art. 6 (1) UStG (Art. 138 of VAT Directive 2006/112/EC). The acquisition is taxed by the customer in the country of destination.',
|
|
211
219
|
'steuer.ausfuhr': 'VAT-exempt export delivery (§ 6 (1) no. 1 UStG).',
|
|
212
|
-
'steuer.reverseCharge.titel': '
|
|
213
|
-
'steuer.reverseCharge.text': 'VAT liability transferred
|
|
214
|
-
'steuer.
|
|
220
|
+
'steuer.reverseCharge.titel': 'Reverse charge – VAT liability of the recipient. ',
|
|
221
|
+
'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.',
|
|
222
|
+
'steuer.uidZeile': 'VAT ID supplier: {verkaeufer} · VAT ID recipient: {kaeufer}',
|
|
215
223
|
'pdf.zahlung.titel': 'PAYMENT DETAILS',
|
|
216
224
|
'pdf.zahlung.empfaenger': 'Payee',
|
|
217
225
|
'pdf.zahlung.iban': 'IBAN',
|
|
@@ -118,6 +118,13 @@ export interface PaymentInput {
|
|
|
118
118
|
paidAt?: string;
|
|
119
119
|
/** Zahlungskennung des Fremdsystems — gespeichert, aber nicht gedruckt. */
|
|
120
120
|
reference?: string;
|
|
121
|
+
/**
|
|
122
|
+
* Die Zahlung erfolgte vor Ort beim Unternehmer (Terminal an der Kasse).
|
|
123
|
+
* Dann ist sie ein Barumsatz — auch mit Karte (§ 131b Abs. 1 Z 3 UStG) — und
|
|
124
|
+
* die Antwort traegt den Hinweis `cash_receipt_required`. Zu `transfer`
|
|
125
|
+
* passt das Kennzeichen nicht und wird abgewiesen.
|
|
126
|
+
*/
|
|
127
|
+
onSite?: boolean;
|
|
121
128
|
}
|
|
122
129
|
export interface RecordPaymentRequest extends PaymentInput {
|
|
123
130
|
/** Pflicht: ohne ihn bucht eine Wiederholung eine zweite Zahlung. */
|
|
@@ -52,10 +52,13 @@ export type EInvoiceFormat = (typeof EINVOICE_FORMATS)[number];
|
|
|
52
52
|
export declare const INVOICE_LANGUAGES: readonly ["de", "en"];
|
|
53
53
|
export type InvoiceLanguage = (typeof INVOICE_LANGUAGES)[number];
|
|
54
54
|
/**
|
|
55
|
-
* Wie eine Rechnung bezahlt wurde. Der Vermerk ist Buchhaltung, kein Beleg
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
55
|
+
* Wie eine Rechnung bezahlt wurde. Der Vermerk ist Buchhaltung, kein Beleg.
|
|
56
|
+
*
|
|
57
|
+
* Ein **Barumsatz** ist nicht nur Bargeld: als Barzahlung gilt auch die Zahlung
|
|
58
|
+
* mit Bankomat- oder Kreditkarte **vor Ort** (§ 131b Abs. 1 Z 3 UStG), nicht
|
|
59
|
+
* aber dieselbe Karte im Internet. Weil `card` und `online` beides sein
|
|
60
|
+
* koennen, sagt das Feld `onSite` es dem Server — und nur dann traegt die
|
|
61
|
+
* Antwort den Hinweis `cash_receipt_required` (bei `cash` immer).
|
|
59
62
|
*/
|
|
60
63
|
export declare const INVOICE_PAYMENT_METHODS: readonly ["transfer", "card", "online", "cash"];
|
|
61
64
|
export type InvoicePaymentMethod = (typeof INVOICE_PAYMENT_METHODS)[number];
|
|
@@ -84,10 +84,13 @@ export const EINVOICE_FORMATS = ['ubl', 'cii'];
|
|
|
84
84
|
*/
|
|
85
85
|
export const INVOICE_LANGUAGES = ['de', 'en'];
|
|
86
86
|
/**
|
|
87
|
-
* Wie eine Rechnung bezahlt wurde. Der Vermerk ist Buchhaltung, kein Beleg
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
87
|
+
* Wie eine Rechnung bezahlt wurde. Der Vermerk ist Buchhaltung, kein Beleg.
|
|
88
|
+
*
|
|
89
|
+
* Ein **Barumsatz** ist nicht nur Bargeld: als Barzahlung gilt auch die Zahlung
|
|
90
|
+
* mit Bankomat- oder Kreditkarte **vor Ort** (§ 131b Abs. 1 Z 3 UStG), nicht
|
|
91
|
+
* aber dieselbe Karte im Internet. Weil `card` und `online` beides sein
|
|
92
|
+
* koennen, sagt das Feld `onSite` es dem Server — und nur dann traegt die
|
|
93
|
+
* Antwort den Hinweis `cash_receipt_required` (bei `cash` immer).
|
|
91
94
|
*/
|
|
92
95
|
export const INVOICE_PAYMENT_METHODS = ['transfer', 'card', 'online', 'cash'];
|
|
93
96
|
/**
|
|
@@ -288,6 +291,12 @@ export const PAYMENT_FELDER = Object.freeze({
|
|
|
288
291
|
amountCents: { typ: 'integer', pflicht: false, min: 1, max: 100_000_000 },
|
|
289
292
|
paidAt: datum(),
|
|
290
293
|
reference: text(100),
|
|
294
|
+
/**
|
|
295
|
+
* Die Zahlung erfolgte **vor Ort** beim Unternehmer (Terminal an der Kasse,
|
|
296
|
+
* Zahlung per App am Tresen). Dann ist sie ein Barumsatz. Zu `transfer` passt
|
|
297
|
+
* das nicht — eine Ueberweisung erfolgt nie vor Ort — und wird abgewiesen.
|
|
298
|
+
*/
|
|
299
|
+
onSite: { typ: 'boolean', pflicht: false },
|
|
291
300
|
});
|
|
292
301
|
export const RECHNUNG_ANFRAGEN = Object.freeze({
|
|
293
302
|
createCustomer: {
|
|
@@ -381,6 +390,7 @@ export const RECHNUNG_ANFRAGEN = Object.freeze({
|
|
|
381
390
|
amountCents: { typ: 'integer', pflicht: false, min: 1, max: 100_000_000 },
|
|
382
391
|
paidAt: datum(),
|
|
383
392
|
reference: text(100),
|
|
393
|
+
onSite: { typ: 'boolean', pflicht: false },
|
|
384
394
|
},
|
|
385
395
|
});
|
|
386
396
|
/** Genau eines dieser Felder muss gesetzt sein (je Aufruf, je Gruppe). */
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"aufruf": "recordInvoicePayment",
|
|
3
|
+
"beschreibung": "Ueberweisung kann nicht vor Ort erfolgen",
|
|
4
|
+
"anfrage": {
|
|
5
|
+
"idempotencyKey": "bsp-vor-ort",
|
|
6
|
+
"invoiceId": "rechnung_beispiel",
|
|
7
|
+
"method": "transfer",
|
|
8
|
+
"onSite": true
|
|
9
|
+
},
|
|
10
|
+
"erwartet": {
|
|
11
|
+
"ok": false,
|
|
12
|
+
"code": "validation",
|
|
13
|
+
"fields": ["onSite"]
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -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.20.0",
|
|
6
6
|
"aufrufe": {
|
|
7
7
|
"createCustomer": {
|
|
8
8
|
"anfrage": {
|
|
@@ -490,6 +490,9 @@
|
|
|
490
490
|
"reference": {
|
|
491
491
|
"type": "string",
|
|
492
492
|
"maxLength": 100
|
|
493
|
+
},
|
|
494
|
+
"onSite": {
|
|
495
|
+
"type": "boolean"
|
|
493
496
|
}
|
|
494
497
|
},
|
|
495
498
|
"required": [
|
|
@@ -853,6 +856,9 @@
|
|
|
853
856
|
"reference": {
|
|
854
857
|
"type": "string",
|
|
855
858
|
"maxLength": 100
|
|
859
|
+
},
|
|
860
|
+
"onSite": {
|
|
861
|
+
"type": "boolean"
|
|
856
862
|
}
|
|
857
863
|
},
|
|
858
864
|
"required": [
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
2
|
+
"version": "0.20.0",
|
|
3
3
|
"sprachen": [
|
|
4
4
|
"de",
|
|
5
5
|
"en"
|
|
@@ -32,11 +32,12 @@
|
|
|
32
32
|
"pdf.summe.gesamt.rechnung": "Gesamtbetrag",
|
|
33
33
|
"pdf.summe.gesamt.gutschrift": "Gutschriftsbetrag",
|
|
34
34
|
"steuer.kleinunternehmer": "Gemäß § 6 Abs. 1 Z 27 UStG wird keine Umsatzsteuer verrechnet (Kleinunternehmer).",
|
|
35
|
-
"steuer.igLieferung": "Steuerfreie innergemeinschaftliche Lieferung
|
|
35
|
+
"steuer.igLieferung.titel": "Steuerfreie innergemeinschaftliche Lieferung. ",
|
|
36
|
+
"steuer.igLieferung.text": "Gemäß Art. 6 Abs. 1 UStG (Art. 138 MwSt-RL 2006/112/EG). Die Erwerbsbesteuerung erfolgt durch den Abnehmer im Bestimmungsland.",
|
|
36
37
|
"steuer.ausfuhr": "Steuerfreie Ausfuhrlieferung (§ 6 Abs. 1 Z 1 UStG).",
|
|
37
|
-
"steuer.reverseCharge.titel": "
|
|
38
|
-
"steuer.reverseCharge.text": "Übergang der
|
|
39
|
-
"steuer.
|
|
38
|
+
"steuer.reverseCharge.titel": "Steuerschuldnerschaft des Leistungsempfängers. ",
|
|
39
|
+
"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
|
+
"steuer.uidZeile": "UID Leistungserbringer: {verkaeufer} · UID Leistungsempfänger: {kaeufer}",
|
|
40
41
|
"pdf.zahlung.titel": "ZAHLUNGSINFORMATIONEN",
|
|
41
42
|
"pdf.zahlung.empfaenger": "Empfänger",
|
|
42
43
|
"pdf.zahlung.iban": "IBAN",
|
|
@@ -214,11 +215,12 @@
|
|
|
214
215
|
"pdf.summe.gesamt.rechnung": "Total",
|
|
215
216
|
"pdf.summe.gesamt.gutschrift": "Credit total",
|
|
216
217
|
"steuer.kleinunternehmer": "No VAT charged pursuant to § 6 (1) no. 27 UStG (small business exemption).",
|
|
217
|
-
"steuer.igLieferung": "VAT-exempt intra-Community supply
|
|
218
|
+
"steuer.igLieferung.titel": "VAT-exempt intra-Community supply. ",
|
|
219
|
+
"steuer.igLieferung.text": "Pursuant to Art. 6 (1) UStG (Art. 138 of VAT Directive 2006/112/EC). The acquisition is taxed by the customer in the country of destination.",
|
|
218
220
|
"steuer.ausfuhr": "VAT-exempt export delivery (§ 6 (1) no. 1 UStG).",
|
|
219
|
-
"steuer.reverseCharge.titel": "
|
|
220
|
-
"steuer.reverseCharge.text": "VAT liability transferred
|
|
221
|
-
"steuer.
|
|
221
|
+
"steuer.reverseCharge.titel": "Reverse charge – VAT liability of the recipient. ",
|
|
222
|
+
"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
|
+
"steuer.uidZeile": "VAT ID supplier: {verkaeufer} · VAT ID recipient: {kaeufer}",
|
|
222
224
|
"pdf.zahlung.titel": "PAYMENT DETAILS",
|
|
223
225
|
"pdf.zahlung.empfaenger": "Payee",
|
|
224
226
|
"pdf.zahlung.iban": "IBAN",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kreiseck/kasseneck-api",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.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",
|