@kreiseck/kasseneck-api 0.16.0 → 0.18.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 +57 -0
- package/README.md +61 -0
- package/dist/cjs/client/aufrufe.d.ts +1 -1
- package/dist/cjs/client/aufrufe.js +2 -0
- package/dist/cjs/rechnung/api.d.ts +10 -3
- package/dist/cjs/rechnung/api.js +3 -1
- package/dist/cjs/rechnung/endpunkte.d.ts +23 -4
- package/dist/cjs/rechnung/endpunkte.js +41 -3
- package/dist/cjs/rechnung/index.d.ts +4 -3
- package/dist/cjs/rechnung/index.js +11 -1
- package/dist/cjs/rechnung/texte.d.ts +202 -0
- package/dist/cjs/rechnung/texte.js +377 -0
- package/dist/cjs/rechnung/typen.d.ts +70 -2
- package/dist/cjs/rechnung/vertrag.d.ts +47 -2
- package/dist/cjs/rechnung/vertrag.js +181 -2
- package/dist/esm/client/aufrufe.d.ts +1 -1
- package/dist/esm/client/aufrufe.js +2 -0
- package/dist/esm/rechnung/api.d.ts +10 -3
- package/dist/esm/rechnung/api.js +4 -2
- package/dist/esm/rechnung/endpunkte.d.ts +23 -4
- package/dist/esm/rechnung/endpunkte.js +39 -3
- package/dist/esm/rechnung/index.d.ts +4 -3
- package/dist/esm/rechnung/index.js +3 -2
- package/dist/esm/rechnung/texte.d.ts +202 -0
- package/dist/esm/rechnung/texte.js +373 -0
- package/dist/esm/rechnung/typen.d.ts +70 -2
- package/dist/esm/rechnung/vertrag.d.ts +47 -2
- package/dist/esm/rechnung/vertrag.js +180 -1
- package/fixtures/hobex-hps-codes.json +1 -1
- package/fixtures/kasse-texte.json +1 -1
- package/fixtures/oberflaeche.json +75 -3
- package/fixtures/rechnung-api-beispiele/brands-ok.json +8 -0
- package/fixtures/rechnung-api-beispiele/issue-bezahlt.json +32 -0
- package/fixtures/rechnung-api-beispiele/issue-englisch.json +30 -0
- package/fixtures/rechnung-api-beispiele/issue-fehler-einheit.json +26 -0
- package/fixtures/rechnung-api-beispiele/issue-fehler-sprache.json +26 -0
- package/fixtures/rechnung-api-beispiele/issue-fehler-zahlungsart.json +26 -0
- package/fixtures/rechnung-api-beispiele/issue-netto-20.json +1 -1
- package/fixtures/rechnung-api-beispiele/zahlung-fehler-ohne-schluessel.json +14 -0
- package/fixtures/rechnung-api-beispiele/zahlung-nachtrag.json +14 -0
- package/fixtures/rechnung-api.schema.json +222 -6
- package/fixtures/rechnung-texte.json +424 -0
- package/package.json +2 -1
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RECHNUNG_TEXTE = void 0;
|
|
4
|
+
exports.rechnungText = rechnungText;
|
|
5
|
+
const DE = {
|
|
6
|
+
'pdf.titel.rechnung': 'RECHNUNG',
|
|
7
|
+
'pdf.titel.gutschrift': 'GUTSCHRIFT',
|
|
8
|
+
'pdf.pille.bezahlt': 'BEZAHLT',
|
|
9
|
+
'pdf.pille.lastschrift': 'SEPA-LASTSCHRIFT',
|
|
10
|
+
'pdf.meta.nummer.rechnung': 'Rechnungsnr.',
|
|
11
|
+
'pdf.meta.nummer.gutschrift': 'Gutschriftsnr.',
|
|
12
|
+
'pdf.meta.datum.rechnung': 'Rechnungsdatum',
|
|
13
|
+
'pdf.meta.datum.gutschrift': 'Gutschriftsdatum',
|
|
14
|
+
'pdf.meta.leistungszeitraum': 'Leistungszeitraum',
|
|
15
|
+
'pdf.meta.faelligkeit': 'Fälligkeit',
|
|
16
|
+
'pdf.bezug.gutschrift': 'Gutschrift zu Rechnung {nummer}',
|
|
17
|
+
'pdf.bezug.vom': ' vom {datum}',
|
|
18
|
+
'pdf.bezeichnung.rechnung': 'Rechnung {nummer}',
|
|
19
|
+
'pdf.bezeichnung.gutschrift': 'Gutschrift {nummer}',
|
|
20
|
+
'pdf.uid': 'UID: {uid}',
|
|
21
|
+
'pdf.tabelle.pos': 'POS',
|
|
22
|
+
'pdf.tabelle.beschreibung': 'BESCHREIBUNG',
|
|
23
|
+
'pdf.tabelle.menge': 'MENGE',
|
|
24
|
+
'pdf.tabelle.ust': 'UST',
|
|
25
|
+
'pdf.tabelle.einzelNetto': 'EINZEL NETTO',
|
|
26
|
+
'pdf.tabelle.betragNetto': 'BETRAG NETTO',
|
|
27
|
+
'pdf.summe.zwischensumme': 'Zwischensumme netto',
|
|
28
|
+
'pdf.summe.umsatzsteuer': 'Umsatzsteuer {satz}%',
|
|
29
|
+
'pdf.summe.gesamt.rechnung': 'Gesamtbetrag',
|
|
30
|
+
'pdf.summe.gesamt.gutschrift': 'Gutschriftsbetrag',
|
|
31
|
+
'steuer.kleinunternehmer': 'Gemäß § 6 Abs. 1 Z 27 UStG wird keine Umsatzsteuer verrechnet (Kleinunternehmer).',
|
|
32
|
+
'steuer.igLieferung': 'Steuerfreie innergemeinschaftliche Lieferung (Art. 6 Abs. 1 UStG).',
|
|
33
|
+
'steuer.ausfuhr': 'Steuerfreie Ausfuhrlieferung (§ 6 Abs. 1 Z 1 UStG).',
|
|
34
|
+
'steuer.reverseCharge.titel': 'Steuerfreie Leistung – Reverse Charge. ',
|
|
35
|
+
'steuer.reverseCharge.text': 'Übergang der Steuerschuldnerschaft auf den Leistungsempfänger gem. Art. 196 MwSt-RL 2006/112/EG (innergemeinschaftliche Leistung). Die Umsatzsteuer ist vom Leistungsempfänger im Bestimmungsland abzuführen.',
|
|
36
|
+
'steuer.reverseCharge.uid': 'UID Leistungserbringer: {verkaeufer} · UID Leistungsempfänger: {kaeufer}',
|
|
37
|
+
'pdf.zahlung.titel': 'ZAHLUNGSINFORMATIONEN',
|
|
38
|
+
'pdf.zahlung.empfaenger': 'Empfänger',
|
|
39
|
+
'pdf.zahlung.iban': 'IBAN',
|
|
40
|
+
'pdf.zahlung.bic': 'BIC',
|
|
41
|
+
'pdf.zahlung.verwendungszweck': 'Verwendungszweck',
|
|
42
|
+
'pdf.zahlung.hinweisBis': 'Zahlbar ohne Abzug bis {datum}. Vielen Dank für Ihren Auftrag.',
|
|
43
|
+
'pdf.zahlung.hinweis': 'Zahlbar ohne Abzug. Vielen Dank für Ihren Auftrag.',
|
|
44
|
+
'pdf.zahlung.qr': 'Mit Banking-App scannen & zahlen',
|
|
45
|
+
'pdf.bezahlt.text': 'Diese Rechnung ist beglichen. Es ist nichts weiter zu tun.',
|
|
46
|
+
'pdf.bezahlt.am': 'Bezahlt am',
|
|
47
|
+
'pdf.bezahlt.zahlungsart': 'Zahlungsart',
|
|
48
|
+
'zahlungsart.cash': 'Bar',
|
|
49
|
+
'zahlungsart.transfer': 'Überweisung',
|
|
50
|
+
'zahlungsart.card': 'Karte',
|
|
51
|
+
'zahlungsart.online': 'Online',
|
|
52
|
+
'pdf.lastschrift.text': 'Der Betrag wird per SEPA-Lastschrift eingezogen. Sie müssen nichts veranlassen.',
|
|
53
|
+
'pdf.lastschrift.einzugAm': 'Einzug am',
|
|
54
|
+
'pdf.lastschrift.konto': 'Konto',
|
|
55
|
+
'pdf.lastschrift.mandatsreferenz': 'Mandatsreferenz',
|
|
56
|
+
'pdf.lastschrift.mandatVom': 'Mandat vom',
|
|
57
|
+
'pdf.lastschrift.warnung': 'Bitte für Deckung sorgen — die Kosten einer Rücklastschrift werden weiterverrechnet.',
|
|
58
|
+
'pdf.erstattung.text': 'Der Betrag wird auf dem ursprünglichen Zahlungsweg erstattet. Sie müssen nichts veranlassen.',
|
|
59
|
+
'pdf.erstattung.bezug': 'Bezug',
|
|
60
|
+
'pdf.erstattung.betrag': 'Erstattungsbetrag',
|
|
61
|
+
'pdf.status.titel': 'Zahlungsstatus online verfolgen',
|
|
62
|
+
'pdf.status.text': 'Zahlung bzw. Einzug prüfen und Benachrichtigungen aktivieren.',
|
|
63
|
+
'pdf.status.link': 'Link',
|
|
64
|
+
'pdf.status.passwort': 'Passwort',
|
|
65
|
+
'pdf.fuss.kontakt': 'Kontakt',
|
|
66
|
+
'pdf.fuss.register': 'Register & Steuer',
|
|
67
|
+
'pdf.fuss.sitz': 'Sitz: {ort}',
|
|
68
|
+
'pdf.fuss.hinweis': 'Erstellt mit Kasseneck — ein Produkt der Kreiseck',
|
|
69
|
+
'pdf.seite': 'Seite {nummer} / {gesamt}',
|
|
70
|
+
'land.AT': 'Österreich',
|
|
71
|
+
'land.DE': 'Deutschland',
|
|
72
|
+
'land.CH': 'Schweiz',
|
|
73
|
+
'land.IT': 'Italien',
|
|
74
|
+
'land.LI': 'Liechtenstein',
|
|
75
|
+
'kopie.rechnung': 'Übersetzung – keine eigene Rechnung · Original: Rechnung Nr. {nummer} vom {datum}',
|
|
76
|
+
'kopie.gutschrift': 'Übersetzung – keine eigene Gutschrift · Original: Gutschrift Nr. {nummer} vom {datum}',
|
|
77
|
+
'gutschrift.einleitung': 'Grund: {grund}',
|
|
78
|
+
'gutschrift.grund.cancellation': 'Stornierung',
|
|
79
|
+
'gutschrift.grund.price_reduction': 'Preisnachlass',
|
|
80
|
+
'gutschrift.grund.return': 'Rücksendung',
|
|
81
|
+
'gutschrift.grund.incorrect_invoice': 'Fehlerhafte Rechnung',
|
|
82
|
+
'gutschrift.grund.other': 'Sonstiges',
|
|
83
|
+
'einvoice.befreiung.reverseCharge': 'Steuerschuldnerschaft des Leistungsempfängers (Reverse Charge)',
|
|
84
|
+
'einvoice.befreiung.kleinunternehmer': 'Steuerbefreit — Kleinunternehmer gemäß §6 Abs. 1 Z 27 UStG',
|
|
85
|
+
'einvoice.befreiung.igLieferung': 'Steuerfreie innergemeinschaftliche Lieferung gemäß Art. 6 Abs. 1 UStG',
|
|
86
|
+
'einvoice.befreiung.ausfuhr': 'Steuerfreie Ausfuhrlieferung gemäß §6 Abs. 1 Z 1 UStG',
|
|
87
|
+
'einvoice.zahlbarBis': 'Zahlbar bis {datum}',
|
|
88
|
+
'einheit.piece': 'Stk',
|
|
89
|
+
'einheit.pair': 'Paar',
|
|
90
|
+
'einheit.set': 'Set',
|
|
91
|
+
'einheit.dozen': 'Dtzd.',
|
|
92
|
+
'einheit.second': 'Sek.',
|
|
93
|
+
'einheit.minute': 'Min.',
|
|
94
|
+
'einheit.hour': 'Std',
|
|
95
|
+
'einheit.day': 'Tag',
|
|
96
|
+
'einheit.night': 'Nacht',
|
|
97
|
+
'einheit.week': 'Woche',
|
|
98
|
+
'einheit.month': 'Monat',
|
|
99
|
+
'einheit.quarter': 'Quartal',
|
|
100
|
+
'einheit.half_year': 'Halbjahr',
|
|
101
|
+
'einheit.year': 'Jahr',
|
|
102
|
+
'einheit.milligram': 'mg',
|
|
103
|
+
'einheit.gram': 'g',
|
|
104
|
+
'einheit.kilogram': 'kg',
|
|
105
|
+
'einheit.tonne': 't',
|
|
106
|
+
'einheit.millimetre': 'mm',
|
|
107
|
+
'einheit.centimetre': 'cm',
|
|
108
|
+
'einheit.metre': 'm',
|
|
109
|
+
'einheit.running_metre': 'lfm',
|
|
110
|
+
'einheit.kilometre': 'km',
|
|
111
|
+
'einheit.square_metre': 'm²',
|
|
112
|
+
'einheit.hectare': 'ha',
|
|
113
|
+
'einheit.millilitre': 'ml',
|
|
114
|
+
'einheit.litre': 'l',
|
|
115
|
+
'einheit.cubic_metre': 'm³',
|
|
116
|
+
'einheit.kilowatt_hour': 'kWh',
|
|
117
|
+
'einheit.megawatt_hour': 'MWh',
|
|
118
|
+
'einheit.gigabyte': 'GB',
|
|
119
|
+
'einheit.terabyte': 'TB',
|
|
120
|
+
'einheit.flat_rate': 'Pauschal',
|
|
121
|
+
'einheit.person': 'Pers.',
|
|
122
|
+
'einheit.licence': 'Lizenz',
|
|
123
|
+
'einheit.user': 'Benutzer',
|
|
124
|
+
'einheit.device': 'Gerät',
|
|
125
|
+
'einheit.session': 'Sitzung',
|
|
126
|
+
'einheit.trip': 'Fahrt',
|
|
127
|
+
'einheit.page': 'Seite',
|
|
128
|
+
'einheit.sheet': 'Blatt',
|
|
129
|
+
'einheit.package': 'Pkg.',
|
|
130
|
+
'einheit.box': 'Box',
|
|
131
|
+
'einheit.carton': 'Karton',
|
|
132
|
+
'einheit.bottle': 'Fl.',
|
|
133
|
+
'einheit.can': 'Dose',
|
|
134
|
+
'einheit.roll': 'Rolle',
|
|
135
|
+
'einheit.bag': 'Sack',
|
|
136
|
+
'einheit.pallet': 'Palette',
|
|
137
|
+
'einheitName.piece': 'Stück',
|
|
138
|
+
'einheitName.pair': 'Paar',
|
|
139
|
+
'einheitName.set': 'Set',
|
|
140
|
+
'einheitName.dozen': 'Dutzend',
|
|
141
|
+
'einheitName.second': 'Sekunde',
|
|
142
|
+
'einheitName.minute': 'Minute',
|
|
143
|
+
'einheitName.hour': 'Stunde',
|
|
144
|
+
'einheitName.day': 'Tag',
|
|
145
|
+
'einheitName.night': 'Nacht',
|
|
146
|
+
'einheitName.week': 'Woche',
|
|
147
|
+
'einheitName.month': 'Monat',
|
|
148
|
+
'einheitName.quarter': 'Quartal',
|
|
149
|
+
'einheitName.half_year': 'Halbjahr',
|
|
150
|
+
'einheitName.year': 'Jahr',
|
|
151
|
+
'einheitName.milligram': 'Milligramm',
|
|
152
|
+
'einheitName.gram': 'Gramm',
|
|
153
|
+
'einheitName.kilogram': 'Kilogramm',
|
|
154
|
+
'einheitName.tonne': 'Tonne',
|
|
155
|
+
'einheitName.millimetre': 'Millimeter',
|
|
156
|
+
'einheitName.centimetre': 'Zentimeter',
|
|
157
|
+
'einheitName.metre': 'Meter',
|
|
158
|
+
'einheitName.running_metre': 'Laufmeter',
|
|
159
|
+
'einheitName.kilometre': 'Kilometer',
|
|
160
|
+
'einheitName.square_metre': 'Quadratmeter',
|
|
161
|
+
'einheitName.hectare': 'Hektar',
|
|
162
|
+
'einheitName.millilitre': 'Milliliter',
|
|
163
|
+
'einheitName.litre': 'Liter',
|
|
164
|
+
'einheitName.cubic_metre': 'Kubikmeter',
|
|
165
|
+
'einheitName.kilowatt_hour': 'Kilowattstunde',
|
|
166
|
+
'einheitName.megawatt_hour': 'Megawattstunde',
|
|
167
|
+
'einheitName.gigabyte': 'Gigabyte',
|
|
168
|
+
'einheitName.terabyte': 'Terabyte',
|
|
169
|
+
'einheitName.flat_rate': 'Pauschale',
|
|
170
|
+
'einheitName.person': 'Person',
|
|
171
|
+
'einheitName.licence': 'Lizenz',
|
|
172
|
+
'einheitName.user': 'Benutzer',
|
|
173
|
+
'einheitName.device': 'Gerät',
|
|
174
|
+
'einheitName.session': 'Sitzung',
|
|
175
|
+
'einheitName.trip': 'Fahrt',
|
|
176
|
+
'einheitName.page': 'Seite',
|
|
177
|
+
'einheitName.sheet': 'Blatt',
|
|
178
|
+
'einheitName.package': 'Packung',
|
|
179
|
+
'einheitName.box': 'Box',
|
|
180
|
+
'einheitName.carton': 'Karton',
|
|
181
|
+
'einheitName.bottle': 'Flasche',
|
|
182
|
+
'einheitName.can': 'Dose',
|
|
183
|
+
'einheitName.roll': 'Rolle',
|
|
184
|
+
'einheitName.bag': 'Sack',
|
|
185
|
+
'einheitName.pallet': 'Palette',
|
|
186
|
+
};
|
|
187
|
+
const EN = {
|
|
188
|
+
'pdf.titel.rechnung': 'INVOICE',
|
|
189
|
+
'pdf.titel.gutschrift': 'CREDIT NOTE',
|
|
190
|
+
'pdf.pille.bezahlt': 'PAID',
|
|
191
|
+
'pdf.pille.lastschrift': 'SEPA DIRECT DEBIT',
|
|
192
|
+
'pdf.meta.nummer.rechnung': 'Invoice no.',
|
|
193
|
+
'pdf.meta.nummer.gutschrift': 'Credit note no.',
|
|
194
|
+
'pdf.meta.datum.rechnung': 'Invoice date',
|
|
195
|
+
'pdf.meta.datum.gutschrift': 'Credit note date',
|
|
196
|
+
'pdf.meta.leistungszeitraum': 'Service period',
|
|
197
|
+
'pdf.meta.faelligkeit': 'Due date',
|
|
198
|
+
'pdf.bezug.gutschrift': 'Credit note for invoice {nummer}',
|
|
199
|
+
'pdf.bezug.vom': ' dated {datum}',
|
|
200
|
+
'pdf.bezeichnung.rechnung': 'Invoice {nummer}',
|
|
201
|
+
'pdf.bezeichnung.gutschrift': 'Credit note {nummer}',
|
|
202
|
+
'pdf.uid': 'VAT ID: {uid}',
|
|
203
|
+
'pdf.tabelle.pos': 'POS',
|
|
204
|
+
'pdf.tabelle.beschreibung': 'DESCRIPTION',
|
|
205
|
+
'pdf.tabelle.menge': 'QTY',
|
|
206
|
+
'pdf.tabelle.ust': 'VAT',
|
|
207
|
+
'pdf.tabelle.einzelNetto': 'UNIT NET',
|
|
208
|
+
'pdf.tabelle.betragNetto': 'AMOUNT NET',
|
|
209
|
+
'pdf.summe.zwischensumme': 'Subtotal net',
|
|
210
|
+
'pdf.summe.umsatzsteuer': 'VAT {satz}%',
|
|
211
|
+
'pdf.summe.gesamt.rechnung': 'Total',
|
|
212
|
+
'pdf.summe.gesamt.gutschrift': 'Credit total',
|
|
213
|
+
'steuer.kleinunternehmer': 'No VAT charged pursuant to § 6 (1) no. 27 UStG (small business exemption).',
|
|
214
|
+
'steuer.igLieferung': 'VAT-exempt intra-Community supply (Art. 6 (1) UStG).',
|
|
215
|
+
'steuer.ausfuhr': 'VAT-exempt export delivery (§ 6 (1) no. 1 UStG).',
|
|
216
|
+
'steuer.reverseCharge.titel': 'VAT-exempt service – reverse charge. ',
|
|
217
|
+
'steuer.reverseCharge.text': 'VAT liability transferred to the recipient pursuant to Art. 196 of VAT Directive 2006/112/EC (intra-Community service). VAT is to be accounted for by the recipient in the country of destination.',
|
|
218
|
+
'steuer.reverseCharge.uid': 'VAT ID supplier: {verkaeufer} · VAT ID recipient: {kaeufer}',
|
|
219
|
+
'pdf.zahlung.titel': 'PAYMENT DETAILS',
|
|
220
|
+
'pdf.zahlung.empfaenger': 'Payee',
|
|
221
|
+
'pdf.zahlung.iban': 'IBAN',
|
|
222
|
+
'pdf.zahlung.bic': 'BIC',
|
|
223
|
+
'pdf.zahlung.verwendungszweck': 'Payment reference',
|
|
224
|
+
'pdf.zahlung.hinweisBis': 'Payable without deduction by {datum}. Thank you for your business.',
|
|
225
|
+
'pdf.zahlung.hinweis': 'Payable without deduction. Thank you for your business.',
|
|
226
|
+
'pdf.zahlung.qr': 'Scan with your banking app to pay',
|
|
227
|
+
'pdf.bezahlt.text': 'This invoice has been paid. No further action is required.',
|
|
228
|
+
'pdf.bezahlt.am': 'Paid on',
|
|
229
|
+
'pdf.bezahlt.zahlungsart': 'Payment method',
|
|
230
|
+
'zahlungsart.cash': 'Cash',
|
|
231
|
+
'zahlungsart.transfer': 'Bank transfer',
|
|
232
|
+
'zahlungsart.card': 'Card',
|
|
233
|
+
'zahlungsart.online': 'Online',
|
|
234
|
+
'pdf.lastschrift.text': 'The amount will be collected by SEPA direct debit. No action is required on your part.',
|
|
235
|
+
'pdf.lastschrift.einzugAm': 'Collection date',
|
|
236
|
+
'pdf.lastschrift.konto': 'Account',
|
|
237
|
+
'pdf.lastschrift.mandatsreferenz': 'Mandate reference',
|
|
238
|
+
'pdf.lastschrift.mandatVom': 'Mandate date',
|
|
239
|
+
'pdf.lastschrift.warnung': 'Please ensure sufficient funds — the costs of a returned direct debit will be charged to you.',
|
|
240
|
+
'pdf.erstattung.text': 'The amount will be refunded via the original payment method. No action is required on your part.',
|
|
241
|
+
'pdf.erstattung.bezug': 'Reference',
|
|
242
|
+
'pdf.erstattung.betrag': 'Refund amount',
|
|
243
|
+
'pdf.status.titel': 'Track payment status online',
|
|
244
|
+
'pdf.status.text': 'Check payment or direct debit status and turn on notifications.',
|
|
245
|
+
'pdf.status.link': 'Link',
|
|
246
|
+
'pdf.status.passwort': 'Password',
|
|
247
|
+
'pdf.fuss.kontakt': 'Contact',
|
|
248
|
+
'pdf.fuss.register': 'Registration & tax',
|
|
249
|
+
'pdf.fuss.sitz': 'Registered office: {ort}',
|
|
250
|
+
'pdf.fuss.hinweis': 'Created with Kasseneck — a Kreiseck product',
|
|
251
|
+
'pdf.seite': 'Page {nummer} / {gesamt}',
|
|
252
|
+
'land.AT': 'Austria',
|
|
253
|
+
'land.DE': 'Germany',
|
|
254
|
+
'land.CH': 'Switzerland',
|
|
255
|
+
'land.IT': 'Italy',
|
|
256
|
+
'land.LI': 'Liechtenstein',
|
|
257
|
+
'kopie.rechnung': 'Translation – not a separate invoice · Original: Invoice No. {nummer} dated {datum}',
|
|
258
|
+
'kopie.gutschrift': 'Translation – not a separate credit note · Original: Credit note No. {nummer} dated {datum}',
|
|
259
|
+
'gutschrift.einleitung': 'Reason: {grund}',
|
|
260
|
+
'gutschrift.grund.cancellation': 'Cancellation',
|
|
261
|
+
'gutschrift.grund.price_reduction': 'Price reduction',
|
|
262
|
+
'gutschrift.grund.return': 'Return',
|
|
263
|
+
'gutschrift.grund.incorrect_invoice': 'Incorrect invoice',
|
|
264
|
+
'gutschrift.grund.other': 'Other',
|
|
265
|
+
'einvoice.befreiung.reverseCharge': 'Reverse charge – VAT liability of the recipient',
|
|
266
|
+
'einvoice.befreiung.kleinunternehmer': 'VAT exempt — small business pursuant to § 6 (1) no. 27 UStG',
|
|
267
|
+
'einvoice.befreiung.igLieferung': 'VAT-exempt intra-Community supply pursuant to Art. 6 (1) UStG',
|
|
268
|
+
'einvoice.befreiung.ausfuhr': 'VAT-exempt export delivery pursuant to § 6 (1) no. 1 UStG',
|
|
269
|
+
'einvoice.zahlbarBis': 'Payable by {datum}',
|
|
270
|
+
'einheit.piece': 'pcs',
|
|
271
|
+
'einheit.pair': 'pair',
|
|
272
|
+
'einheit.set': 'set',
|
|
273
|
+
'einheit.dozen': 'doz.',
|
|
274
|
+
'einheit.second': 'sec',
|
|
275
|
+
'einheit.minute': 'min',
|
|
276
|
+
'einheit.hour': 'h',
|
|
277
|
+
'einheit.day': 'day',
|
|
278
|
+
'einheit.night': 'night',
|
|
279
|
+
'einheit.week': 'wk',
|
|
280
|
+
'einheit.month': 'mo',
|
|
281
|
+
'einheit.quarter': 'qtr',
|
|
282
|
+
'einheit.half_year': 'half-yr',
|
|
283
|
+
'einheit.year': 'yr',
|
|
284
|
+
'einheit.milligram': 'mg',
|
|
285
|
+
'einheit.gram': 'g',
|
|
286
|
+
'einheit.kilogram': 'kg',
|
|
287
|
+
'einheit.tonne': 't',
|
|
288
|
+
'einheit.millimetre': 'mm',
|
|
289
|
+
'einheit.centimetre': 'cm',
|
|
290
|
+
'einheit.metre': 'm',
|
|
291
|
+
'einheit.running_metre': 'rm',
|
|
292
|
+
'einheit.kilometre': 'km',
|
|
293
|
+
'einheit.square_metre': 'm²',
|
|
294
|
+
'einheit.hectare': 'ha',
|
|
295
|
+
'einheit.millilitre': 'ml',
|
|
296
|
+
'einheit.litre': 'l',
|
|
297
|
+
'einheit.cubic_metre': 'm³',
|
|
298
|
+
'einheit.kilowatt_hour': 'kWh',
|
|
299
|
+
'einheit.megawatt_hour': 'MWh',
|
|
300
|
+
'einheit.gigabyte': 'GB',
|
|
301
|
+
'einheit.terabyte': 'TB',
|
|
302
|
+
'einheit.flat_rate': 'flat',
|
|
303
|
+
'einheit.person': 'pers.',
|
|
304
|
+
'einheit.licence': 'licence',
|
|
305
|
+
'einheit.user': 'user',
|
|
306
|
+
'einheit.device': 'device',
|
|
307
|
+
'einheit.session': 'session',
|
|
308
|
+
'einheit.trip': 'trip',
|
|
309
|
+
'einheit.page': 'page',
|
|
310
|
+
'einheit.sheet': 'sheet',
|
|
311
|
+
'einheit.package': 'pkg',
|
|
312
|
+
'einheit.box': 'box',
|
|
313
|
+
'einheit.carton': 'ctn',
|
|
314
|
+
'einheit.bottle': 'btl',
|
|
315
|
+
'einheit.can': 'can',
|
|
316
|
+
'einheit.roll': 'roll',
|
|
317
|
+
'einheit.bag': 'bag',
|
|
318
|
+
'einheit.pallet': 'plt',
|
|
319
|
+
'einheitName.piece': 'piece',
|
|
320
|
+
'einheitName.pair': 'pair',
|
|
321
|
+
'einheitName.set': 'set',
|
|
322
|
+
'einheitName.dozen': 'dozen',
|
|
323
|
+
'einheitName.second': 'second',
|
|
324
|
+
'einheitName.minute': 'minute',
|
|
325
|
+
'einheitName.hour': 'hour',
|
|
326
|
+
'einheitName.day': 'day',
|
|
327
|
+
'einheitName.night': 'night',
|
|
328
|
+
'einheitName.week': 'week',
|
|
329
|
+
'einheitName.month': 'month',
|
|
330
|
+
'einheitName.quarter': 'quarter',
|
|
331
|
+
'einheitName.half_year': 'half year',
|
|
332
|
+
'einheitName.year': 'year',
|
|
333
|
+
'einheitName.milligram': 'milligram',
|
|
334
|
+
'einheitName.gram': 'gram',
|
|
335
|
+
'einheitName.kilogram': 'kilogram',
|
|
336
|
+
'einheitName.tonne': 'tonne',
|
|
337
|
+
'einheitName.millimetre': 'millimetre',
|
|
338
|
+
'einheitName.centimetre': 'centimetre',
|
|
339
|
+
'einheitName.metre': 'metre',
|
|
340
|
+
'einheitName.running_metre': 'running metre',
|
|
341
|
+
'einheitName.kilometre': 'kilometre',
|
|
342
|
+
'einheitName.square_metre': 'square metre',
|
|
343
|
+
'einheitName.hectare': 'hectare',
|
|
344
|
+
'einheitName.millilitre': 'millilitre',
|
|
345
|
+
'einheitName.litre': 'litre',
|
|
346
|
+
'einheitName.cubic_metre': 'cubic metre',
|
|
347
|
+
'einheitName.kilowatt_hour': 'kilowatt hour',
|
|
348
|
+
'einheitName.megawatt_hour': 'megawatt hour',
|
|
349
|
+
'einheitName.gigabyte': 'gigabyte',
|
|
350
|
+
'einheitName.terabyte': 'terabyte',
|
|
351
|
+
'einheitName.flat_rate': 'flat rate',
|
|
352
|
+
'einheitName.person': 'person',
|
|
353
|
+
'einheitName.licence': 'licence',
|
|
354
|
+
'einheitName.user': 'user',
|
|
355
|
+
'einheitName.device': 'device',
|
|
356
|
+
'einheitName.session': 'session',
|
|
357
|
+
'einheitName.trip': 'trip',
|
|
358
|
+
'einheitName.page': 'page',
|
|
359
|
+
'einheitName.sheet': 'sheet',
|
|
360
|
+
'einheitName.package': 'package',
|
|
361
|
+
'einheitName.box': 'box',
|
|
362
|
+
'einheitName.carton': 'carton',
|
|
363
|
+
'einheitName.bottle': 'bottle',
|
|
364
|
+
'einheitName.can': 'can',
|
|
365
|
+
'einheitName.roll': 'roll',
|
|
366
|
+
'einheitName.bag': 'bag',
|
|
367
|
+
'einheitName.pallet': 'pallet',
|
|
368
|
+
};
|
|
369
|
+
exports.RECHNUNG_TEXTE = Object.freeze({ de: Object.freeze({ ...DE }), en: Object.freeze({ ...EN }) });
|
|
370
|
+
/** Ein Text der gewaehlten Sprache mit eingesetzten Werten; ein fehlender Wert ist ein Programmierfehler. */
|
|
371
|
+
function rechnungText(sprache, schluessel, werte = {}) {
|
|
372
|
+
return exports.RECHNUNG_TEXTE[sprache][schluessel].replace(/\{([a-zA-Z]+)\}/g, (_voll, name) => {
|
|
373
|
+
if (!(name in werte))
|
|
374
|
+
throw new Error(`rechnungText ${schluessel}: Wert {${name}} fehlt`);
|
|
375
|
+
return String(werte[name]);
|
|
376
|
+
});
|
|
377
|
+
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Betraege sind ueberall ganze Cent. Datumsangaben sind `YYYY-MM-DD` nach
|
|
6
6
|
* Wiener Kalender.
|
|
7
7
|
*/
|
|
8
|
-
import type { CreditNoteReason, CustomerType, DocType, InvoiceSetupRequirement, InvoiceListStatus, PriceMode, TaxScheme, VatRatePercent } from './vertrag.js';
|
|
8
|
+
import type { CreditNoteReason, CustomerType, DocType, InvoiceLanguage, InvoiceNoticeCode, InvoicePaymentMethod, InvoiceUnit, InvoiceSetupRequirement, InvoiceListStatus, PriceMode, TaxScheme, VatRatePercent } from './vertrag.js';
|
|
9
9
|
export interface CustomerInput {
|
|
10
10
|
type: CustomerType;
|
|
11
11
|
name: string;
|
|
@@ -27,6 +27,8 @@ export interface CustomerInput {
|
|
|
27
27
|
note?: string;
|
|
28
28
|
/** Kennung im eigenen System; je Konto eindeutig. */
|
|
29
29
|
externalId?: string;
|
|
30
|
+
/** Sprache der Rechnungen an diesen Kunden; fehlt = `de`. Behoerden immer `de`. */
|
|
31
|
+
language?: InvoiceLanguage;
|
|
30
32
|
}
|
|
31
33
|
export interface Customer {
|
|
32
34
|
id: string;
|
|
@@ -45,6 +47,7 @@ export interface Customer {
|
|
|
45
47
|
isAuthority: boolean;
|
|
46
48
|
note: string | null;
|
|
47
49
|
externalId: string | null;
|
|
50
|
+
language: InvoiceLanguage;
|
|
48
51
|
createdAt: string | null;
|
|
49
52
|
updatedAt: string | null;
|
|
50
53
|
}
|
|
@@ -66,7 +69,8 @@ export interface InvoiceItemInput {
|
|
|
66
69
|
subtitle?: string;
|
|
67
70
|
/** Hoechstens drei Nachkommastellen. */
|
|
68
71
|
quantity: number;
|
|
69
|
-
|
|
72
|
+
/** Einheit aus `INVOICE_UNITS`; ohne Angabe `piece`. */
|
|
73
|
+
unit?: InvoiceUnit;
|
|
70
74
|
/** Einzelpreis in ganzen Cent, im `priceMode` der Rechnung (netto oder brutto). */
|
|
71
75
|
unitPriceCents: number;
|
|
72
76
|
vatRate: VatRatePercent;
|
|
@@ -94,6 +98,53 @@ export interface IssueInvoiceRequest {
|
|
|
94
98
|
items: InvoiceItemInput[];
|
|
95
99
|
/** Eigene Merkmale (hoechstens 20), nie gedruckt. */
|
|
96
100
|
metadata?: Record<string, string>;
|
|
101
|
+
/** Sprache dieser Rechnung; sonst die des Kunden, sonst `de`. Eine Rechnung, eine Nummer, eine Sprache. */
|
|
102
|
+
language?: InvoiceLanguage;
|
|
103
|
+
/** Marke (Kennung aus `listBrands`); sonst die Standardmarke. Unbekannt = `brand_not_found`. */
|
|
104
|
+
brandId?: string;
|
|
105
|
+
/**
|
|
106
|
+
* Schon bezahlt (Shop kassiert online, Rechnung folgt). Die Zahlung entsteht
|
|
107
|
+
* in derselben Transaktion wie das Festschreiben: das PDF traegt dann keine
|
|
108
|
+
* Zahlungsinformationen und keinen Giro-QR.
|
|
109
|
+
*/
|
|
110
|
+
payment?: PaymentInput;
|
|
111
|
+
}
|
|
112
|
+
/** Eine Zahlung, wie das Fremdsystem sie meldet. */
|
|
113
|
+
export interface PaymentInput {
|
|
114
|
+
method: InvoicePaymentMethod;
|
|
115
|
+
/** Ohne Angabe der volle Bruttobetrag. */
|
|
116
|
+
amountCents?: number;
|
|
117
|
+
/** Ohne Angabe der heutige Wiener Tag; nie in der Zukunft. */
|
|
118
|
+
paidAt?: string;
|
|
119
|
+
/** Zahlungskennung des Fremdsystems — gespeichert, aber nicht gedruckt. */
|
|
120
|
+
reference?: string;
|
|
121
|
+
}
|
|
122
|
+
export interface RecordPaymentRequest extends PaymentInput {
|
|
123
|
+
/** Pflicht: ohne ihn bucht eine Wiederholung eine zweite Zahlung. */
|
|
124
|
+
idempotencyKey: string;
|
|
125
|
+
invoiceId: string;
|
|
126
|
+
}
|
|
127
|
+
/** Eine gebuchte Zahlung, wie die API sie zurueckgibt. */
|
|
128
|
+
export interface InvoicePayment {
|
|
129
|
+
id: string;
|
|
130
|
+
amountCents: number;
|
|
131
|
+
paidAt: string;
|
|
132
|
+
method: InvoicePaymentMethod;
|
|
133
|
+
reference: string | null;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Ein Hinweis zu einer erfolgreichen Antwort — kein Fehler, sondern etwas,
|
|
137
|
+
* das der Aufrufer wissen sollte (heute nur `cash_receipt_required`).
|
|
138
|
+
*/
|
|
139
|
+
export interface InvoiceNotice {
|
|
140
|
+
code: InvoiceNoticeCode;
|
|
141
|
+
message: string;
|
|
142
|
+
}
|
|
143
|
+
export interface RecordPaymentResult {
|
|
144
|
+
invoice: Invoice;
|
|
145
|
+
payment: InvoicePayment;
|
|
146
|
+
replayed: boolean;
|
|
147
|
+
notice?: InvoiceNotice;
|
|
97
148
|
}
|
|
98
149
|
export interface CancelInvoiceRequest {
|
|
99
150
|
idempotencyKey: string;
|
|
@@ -132,6 +183,23 @@ export interface Invoice {
|
|
|
132
183
|
statusUrl: string | null;
|
|
133
184
|
statusPassword: string | null;
|
|
134
185
|
metadata: Record<string, string>;
|
|
186
|
+
/** Beim Festschreiben eingefroren; aeltere Rechnungen `de`. */
|
|
187
|
+
language: InvoiceLanguage;
|
|
188
|
+
/** Die eingefrorene Marke; `id` ist `null` bei der Ersatzmarke ohne eigene Einrichtung. */
|
|
189
|
+
brand: {
|
|
190
|
+
id: string | null;
|
|
191
|
+
name: string | null;
|
|
192
|
+
} | null;
|
|
193
|
+
/** Summe der gebuchten Zahlungen. */
|
|
194
|
+
paidCents: number;
|
|
195
|
+
/** Was noch offen ist; `0` heisst bezahlt. */
|
|
196
|
+
openCents: number;
|
|
197
|
+
}
|
|
198
|
+
/** Eine Marke des Kontos (Logo, Farbe, Absender) — `id` geht als `brandId` in `issueInvoice`. */
|
|
199
|
+
export interface Brand {
|
|
200
|
+
id: string;
|
|
201
|
+
name: string;
|
|
202
|
+
isDefault: boolean;
|
|
135
203
|
}
|
|
136
204
|
export interface InvoiceRecipient {
|
|
137
205
|
name: string;
|
|
@@ -18,13 +18,13 @@
|
|
|
18
18
|
* Nummer, Summen — ist bewusst **nicht** setzbar.
|
|
19
19
|
*/
|
|
20
20
|
export declare const RECHNUNG_VERTRAG_VERSION = 1;
|
|
21
|
-
export declare const RECHNUNG_AUFRUFE: readonly ["createCustomer", "getCustomer", "updateCustomer", "searchCustomers", "issueInvoice", "cancelInvoice", "createCreditNote", "getInvoice", "listInvoices", "getInvoicePdf", "getInvoiceXml", "getInvoiceSetupStatus"];
|
|
21
|
+
export declare const RECHNUNG_AUFRUFE: readonly ["createCustomer", "getCustomer", "updateCustomer", "searchCustomers", "issueInvoice", "cancelInvoice", "createCreditNote", "getInvoice", "listInvoices", "getInvoicePdf", "getInvoiceXml", "getInvoiceSetupStatus", "listBrands", "recordInvoicePayment"];
|
|
22
22
|
export type RechnungAufruf = (typeof RECHNUNG_AUFRUFE)[number];
|
|
23
23
|
/**
|
|
24
24
|
* Stabile Fehlercodes. Das Fremdsystem verzweigt am Code, der Text darf sich
|
|
25
25
|
* aendern. `validation` traegt zusaetzlich `errors: [{ field, message }]`.
|
|
26
26
|
*/
|
|
27
|
-
export declare const INVOICE_ERROR_CODES: readonly ["validation", "idempotency_conflict", "module_inactive", "customer_not_found", "customer_exists", "short_code_taken", "short_code_immutable", "recipient_required", "invoice_requirements_missing", "invoice_not_found", "invoice_ambiguous", "not_cancellable", "partial_credit_exists", "credit_exceeds_invoice", "einvoice_incomplete", "invoice_api_not_enabled", "invoice_setup_incomplete"];
|
|
27
|
+
export declare const INVOICE_ERROR_CODES: readonly ["validation", "idempotency_conflict", "module_inactive", "customer_not_found", "customer_exists", "short_code_taken", "short_code_immutable", "recipient_required", "invoice_requirements_missing", "invoice_not_found", "invoice_ambiguous", "not_cancellable", "partial_credit_exists", "credit_exceeds_invoice", "einvoice_incomplete", "invoice_api_not_enabled", "invoice_setup_incomplete", "language_not_allowed", "brand_not_found", "not_payable", "payment_exceeds_invoice"];
|
|
28
28
|
export type InvoiceErrorCode = (typeof INVOICE_ERROR_CODES)[number];
|
|
29
29
|
/** Gruende einer Gutschrift. Der Server druckt den deutschen Anzeigetext. */
|
|
30
30
|
export declare const CREDIT_NOTE_REASONS: readonly ["cancellation", "price_reduction", "return", "incorrect_invoice", "other"];
|
|
@@ -43,6 +43,43 @@ export declare const DOC_TYPES: readonly ["RE", "GU"];
|
|
|
43
43
|
export type DocType = (typeof DOC_TYPES)[number];
|
|
44
44
|
export declare const EINVOICE_FORMATS: readonly ["ubl", "cii"];
|
|
45
45
|
export type EInvoiceFormat = (typeof EINVOICE_FORMATS)[number];
|
|
46
|
+
/**
|
|
47
|
+
* Sprachen einer Rechnung. Die Sprache wird beim Festschreiben eingefroren;
|
|
48
|
+
* fehlt sie an Kunde oder Rechnung, gilt `de`. Behoerden bekommen immer `de`
|
|
49
|
+
* (`language_not_allowed`). Datum und Betraege bleiben in jeder Sprache
|
|
50
|
+
* oesterreichisch formatiert.
|
|
51
|
+
*/
|
|
52
|
+
export declare const INVOICE_LANGUAGES: readonly ["de", "en"];
|
|
53
|
+
export type InvoiceLanguage = (typeof INVOICE_LANGUAGES)[number];
|
|
54
|
+
/**
|
|
55
|
+
* Wie eine Rechnung bezahlt wurde. Der Vermerk ist Buchhaltung, kein Beleg:
|
|
56
|
+
* `cash` wird gebucht, die Antwort traegt dann zusaetzlich den Hinweis
|
|
57
|
+
* `cash_receipt_required` — eine Barzahlung ist ein Barumsatz und braucht
|
|
58
|
+
* einen Beleg (§ 132a BAO), bei Registrierkassenpflicht ueber die Kasse.
|
|
59
|
+
*/
|
|
60
|
+
export declare const INVOICE_PAYMENT_METHODS: readonly ["transfer", "card", "online", "cash"];
|
|
61
|
+
export type InvoicePaymentMethod = (typeof INVOICE_PAYMENT_METHODS)[number];
|
|
62
|
+
/**
|
|
63
|
+
* Hinweise, die eine erfolgreiche Antwort zusaetzlich tragen kann (`data.notice`).
|
|
64
|
+
* Sie sind keine Fehler: der Aufruf hat gewirkt, es gibt nur etwas zu wissen.
|
|
65
|
+
*/
|
|
66
|
+
export declare const INVOICE_NOTICE_CODES: readonly ["cash_receipt_required"];
|
|
67
|
+
export type InvoiceNoticeCode = (typeof INVOICE_NOTICE_CODES)[number];
|
|
68
|
+
/**
|
|
69
|
+
* Einheiten einer Position. Die API nimmt nur diese Schluessel an; gedruckt
|
|
70
|
+
* wird das Kuerzel in der Sprache der Rechnung (`RECHNUNG_TEXTE`,
|
|
71
|
+
* `einheit.<schluessel>`), die E-Rechnung fuehrt den UN/ECE-Code
|
|
72
|
+
* (`RECHNUNG_EINHEITEN_CODES`). Ohne Angabe gilt `piece`.
|
|
73
|
+
*/
|
|
74
|
+
export declare const INVOICE_UNITS: readonly ["piece", "pair", "set", "dozen", "second", "minute", "hour", "day", "night", "week", "month", "quarter", "half_year", "year", "milligram", "gram", "kilogram", "tonne", "millimetre", "centimetre", "metre", "running_metre", "kilometre", "square_metre", "hectare", "millilitre", "litre", "cubic_metre", "kilowatt_hour", "megawatt_hour", "gigabyte", "terabyte", "flat_rate", "person", "licence", "user", "device", "session", "trip", "page", "sheet", "package", "box", "carton", "bottle", "can", "roll", "bag", "pallet"];
|
|
75
|
+
export type InvoiceUnit = (typeof INVOICE_UNITS)[number];
|
|
76
|
+
/**
|
|
77
|
+
* UN/ECE-Code je Einheit (Recommendation 20, Verpackungen aus Recommendation 21
|
|
78
|
+
* mit `X`). Mehrere Einheiten duerfen denselben Code tragen (Meter und
|
|
79
|
+
* Laufmeter; Lizenz, Benutzer, Geraet als Stueck). Die Validatoren der
|
|
80
|
+
* E-Rechnung pruefen jeden Code im Backend (Beispiel `api-einheiten`).
|
|
81
|
+
*/
|
|
82
|
+
export declare const RECHNUNG_EINHEITEN_CODES: Readonly<Record<InvoiceUnit, string>>;
|
|
46
83
|
/**
|
|
47
84
|
* Was erfuellt sein muss, bevor ueber die API ausgestellt werden darf — in
|
|
48
85
|
* dieser Reihenfolge meldet `getInvoiceSetupStatus`, was fehlt, und dieselben
|
|
@@ -106,6 +143,14 @@ export type Feld = {
|
|
|
106
143
|
export declare const KUNDE_FELDER: Readonly<Record<string, Feld>>;
|
|
107
144
|
/** Eine Rechnungs- oder Gutschriftsposition. Preise in ganzen Cent. */
|
|
108
145
|
export declare const POSITION_FELDER: Readonly<Record<string, Feld>>;
|
|
146
|
+
/**
|
|
147
|
+
* Eine Zahlung zu einer Rechnung. Ohne `amountCents` gilt der volle
|
|
148
|
+
* Bruttobetrag, ohne `paidAt` der heutige Wiener Tag. `reference` ist die
|
|
149
|
+
* Zahlungskennung des Fremdsystems (z. B. `pi_3Q...`) — sie wird gespeichert,
|
|
150
|
+
* aber **nicht gedruckt**: die Rechnung wird aufbewahrt und vervielfaeltigt,
|
|
151
|
+
* und dem Empfaenger nuetzt sie nichts.
|
|
152
|
+
*/
|
|
153
|
+
export declare const PAYMENT_FELDER: Readonly<Record<string, Feld>>;
|
|
109
154
|
export declare const RECHNUNG_ANFRAGEN: Readonly<Record<RechnungAufruf, Readonly<Record<string, Feld>>>>;
|
|
110
155
|
/** Genau eines dieser Felder muss gesetzt sein (je Aufruf, je Gruppe). */
|
|
111
156
|
export declare const RECHNUNG_GENAU_EINS: Readonly<Partial<Record<RechnungAufruf, readonly (readonly string[])[]>>>;
|