@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
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,63 @@ 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.18.0
|
|
8
|
+
|
|
9
|
+
### Rechnungs-API: bezahlte Rechnung und Zahlungen nachtragen
|
|
10
|
+
|
|
11
|
+
**Anlass:** Die API wird vor allem von Online-Shops benutzt, die **vor** der
|
|
12
|
+
Rechnung kassieren. Bisher entstand immer eine offene Rechnung — mit Giro-QR
|
|
13
|
+
und Fälligkeit auf dem Blatt, obwohl das Geld längst da war.
|
|
14
|
+
|
|
15
|
+
- `issueInvoice` nimmt `payment` (`method`, optional `amountCents`, `paidAt`,
|
|
16
|
+
`reference`). Die Zahlung entsteht in **derselben** Transaktion wie das
|
|
17
|
+
Festschreiben; ohne `amountCents` gilt der volle Bruttobetrag.
|
|
18
|
+
- Neuer Aufruf `recordInvoicePayment` für später eintreffende Zahlungen, mit
|
|
19
|
+
**pflichtigem** `idempotencyKey` — ohne ihn bucht ein Wiederholungslauf nach
|
|
20
|
+
einem Zeitlimit eine zweite Zahlung.
|
|
21
|
+
- `INVOICE_PAYMENT_METHODS` (`transfer`, `card`, `online`, `cash`);
|
|
22
|
+
`Invoice.paidCents` und `Invoice.openCents`.
|
|
23
|
+
- Neue Fehlercodes `not_payable` (storniert oder Gutschrift) und
|
|
24
|
+
`payment_exceeds_invoice` (mit `remainingCents`).
|
|
25
|
+
- Neu: **Hinweise** an einer erfolgreichen Antwort (`INVOICE_NOTICE_CODES`,
|
|
26
|
+
`data.notice`). Bisheriger Fall: `cash_receipt_required`. Grund: eine
|
|
27
|
+
Barzahlung ist ein Barumsatz und braucht einen Beleg (§ 132a BAO), bei
|
|
28
|
+
Registrierkassenpflicht über die Registrierkasse — der Bezahlt-Vermerk ist
|
|
29
|
+
Buchhaltung und ersetzt ihn nicht. Die Rechnung selbst ist bei jeder
|
|
30
|
+
Zahlungsart erlaubt (§ 11 UStG), deshalb wird `cash` gebucht und nicht
|
|
31
|
+
abgewiesen.
|
|
32
|
+
|
|
33
|
+
`reference` wird gespeichert, aber nicht gedruckt: die Rechnung wird sieben
|
|
34
|
+
Jahre aufbewahrt und vervielfältigt, und dem Empfänger nützt die Zahlungs-ID
|
|
35
|
+
des Shops nichts.
|
|
36
|
+
|
|
37
|
+
## 0.17.0
|
|
38
|
+
|
|
39
|
+
### Rechnungs-API: Sprache (de/en) und Marke je Rechnung
|
|
40
|
+
|
|
41
|
+
**Anlass:** Rechnungen waren fest Deutsch und trugen immer die Standardmarke.
|
|
42
|
+
Internationale Kunden bekamen deutsche Rechnungen, und wer mehrere Marken
|
|
43
|
+
führt, konnte sie über die API nicht wählen. Eine übersetzte Zweitrechnung mit
|
|
44
|
+
eigener Nummer wäre umsatzsteuerlich falsch (UStR Rz 1527) — deshalb eine
|
|
45
|
+
Sprache je Rechnung und die andere nur als gekennzeichnete Kopie (Rz 1528).
|
|
46
|
+
|
|
47
|
+
- `INVOICE_LANGUAGES` (`de`, `en`); Feld `language` am Kunden und an
|
|
48
|
+
`issueInvoice`, `brandId` an `issueInvoice`; `Invoice.language` und
|
|
49
|
+
`Invoice.brand`.
|
|
50
|
+
- Neuer Aufruf `listBrands()` → `[{ id, name, isDefault }]`.
|
|
51
|
+
- `getInvoicePdf(id, { language })`: in der anderen Sprache eine
|
|
52
|
+
Übersetzungskopie (gleiche Nummer, Vermerk auf jeder Seite, ohne
|
|
53
|
+
eingebettete E-Rechnung).
|
|
54
|
+
- Neue Fehlercodes `language_not_allowed` (Behörden nur Deutsch) und
|
|
55
|
+
`brand_not_found` (angegebene Marke gibt es nicht — kein stiller Rückfall).
|
|
56
|
+
- **Einheiten als Katalog:** `INVOICE_UNITS` (49 Einheiten) mit UN/ECE-Code in
|
|
57
|
+
`RECHNUNG_EINHEITEN_CODES`; `items[].unit` nimmt nur noch diese Schlüssel.
|
|
58
|
+
Gedruckt wird das Kürzel in der Sprache der Rechnung; freier Text wie `"Std"`
|
|
59
|
+
ist `validation`. Grund: „Stk" stand sonst auch auf englischen Rechnungen.
|
|
60
|
+
- Textkatalog `RECHNUNG_TEXTE` / `rechnungText()` und
|
|
61
|
+
`fixtures/rechnung-texte.json`: alle Texte von Rechnung, Gutschrift und
|
|
62
|
+
E-Rechnung in Deutsch und Englisch, Steuerhinweise mit Gesetzesstelle.
|
|
63
|
+
|
|
7
64
|
## 0.16.0
|
|
8
65
|
|
|
9
66
|
### Rechnungs-API: Freigabe und Einrichtung vor dem ersten Ausstellen
|
package/README.md
CHANGED
|
@@ -489,6 +489,67 @@ const status = await rechnungen.getInvoiceSetupStatus();
|
|
|
489
489
|
if (!status.ready) console.warn(status.missing.map((m) => m.message).join('\n'));
|
|
490
490
|
```
|
|
491
491
|
|
|
492
|
+
**Sprache und Marke.** Eine Rechnung hat eine Nummer und **eine** Sprache (`de`
|
|
493
|
+
oder `en`, `INVOICE_LANGUAGES`): die der Anfrage, sonst die des Kunden
|
|
494
|
+
(`customer.language`), sonst Deutsch. Sie wird beim Ausstellen eingefroren;
|
|
495
|
+
Gutschriften übernehmen Sprache und Marke ihrer Rechnung. Behörden bekommen
|
|
496
|
+
immer Deutsch (`language_not_allowed`). Datum und Beträge bleiben in jeder
|
|
497
|
+
Sprache österreichisch formatiert.
|
|
498
|
+
|
|
499
|
+
```ts
|
|
500
|
+
const [marke] = await rechnungen.listBrands(); // [{ id, name, isDefault }]
|
|
501
|
+
const { invoice } = await rechnungen.issueInvoice({
|
|
502
|
+
idempotencyKey: `bestellung-${bestellnummer}`,
|
|
503
|
+
customerId: kunde.id,
|
|
504
|
+
taxScheme: 'normal', priceMode: 'net', serviceStart: '2026-09-15',
|
|
505
|
+
language: 'en', // sonst die Sprache des Kunden
|
|
506
|
+
brandId: marke.id, // sonst die Standardmarke
|
|
507
|
+
items: [{ description: 'Consulting', quantity: 2, unitPriceCents: 5000, vatRate: 20 }],
|
|
508
|
+
});
|
|
509
|
+
// Dieselbe Rechnung als deutsche Übersetzung — KEINE zweite Rechnung:
|
|
510
|
+
const kopie = await rechnungen.getInvoicePdf(invoice.id, { language: 'de' });
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
Die Übersetzungskopie trägt dieselbe Nummer, ist auf jeder Seite als
|
|
514
|
+
„Übersetzung – keine eigene Rechnung" gekennzeichnet und hat keine eingebettete
|
|
515
|
+
E-Rechnung. Eine zweite Rechnung mit eigener Nummer für dieselbe Leistung
|
|
516
|
+
wäre umsatzsteuerlich ein Problem (UStR Rz 1527); die Kopie ist das nicht (Rz 1528).
|
|
517
|
+
Die Texte beider Sprachen liegen als `RECHNUNG_TEXTE` bzw.
|
|
518
|
+
`fixtures/rechnung-texte.json` im Paket.
|
|
519
|
+
|
|
520
|
+
**Einheiten sind Schlüssel, kein freier Text.** `items[].unit` nimmt einen Wert aus
|
|
521
|
+
`INVOICE_UNITS` (`piece`, `hour`, `day`, `flat_rate`, `kilogram`, `square_metre`, …;
|
|
522
|
+
ohne Angabe `piece`). Gedruckt wird das Kürzel in der Sprache der Rechnung — `Stk`
|
|
523
|
+
bzw. `pcs` —, und die E-Rechnung trägt den UN/ECE-Code aus
|
|
524
|
+
`RECHNUNG_EINHEITEN_CODES` (`C62`, `HUR`, …). Freier Text wie `"Std"` ist
|
|
525
|
+
`validation` mit Feld `items[0].unit`.
|
|
526
|
+
|
|
527
|
+
**Schon bezahlt?** Wer online kassiert und danach die Rechnung stellt, gibt die
|
|
528
|
+
Zahlung gleich mit: sie entsteht in derselben Transaktion wie das Festschreiben,
|
|
529
|
+
und das PDF trägt dann keinen Zahlungskasten und keinen Giro-QR.
|
|
530
|
+
|
|
531
|
+
```ts
|
|
532
|
+
const { invoice } = await rechnungen.issueInvoice({
|
|
533
|
+
idempotencyKey: `bestellung-${bestellnummer}`,
|
|
534
|
+
customerId: kunde.id,
|
|
535
|
+
taxScheme: 'normal', priceMode: 'net', serviceStart: '2026-09-16',
|
|
536
|
+
items: [{ description: 'Beratung', quantity: 2, unitPriceCents: 5000, vatRate: 20, unit: 'hour' }],
|
|
537
|
+
payment: { method: 'card', reference: zahlung.id }, // ohne amountCents: voll bezahlt
|
|
538
|
+
}); // invoice.openCents === 0
|
|
539
|
+
|
|
540
|
+
// Trifft das Geld erst später ein (Überweisung, Teilzahlung):
|
|
541
|
+
await rechnungen.recordInvoicePayment({
|
|
542
|
+
idempotencyKey: `zahlung-${zahlung.id}`, // Pflicht: sonst bucht eine Wiederholung zweimal
|
|
543
|
+
invoiceId: invoice.id, method: 'transfer', amountCents: 12000, paidAt: '2026-09-20',
|
|
544
|
+
});
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
`reference` wird gespeichert, aber **nicht gedruckt**; Kartendaten gehören
|
|
548
|
+
ohnehin nicht auf eine Rechnung. Bei `method: 'cash'` wird die Zahlung gebucht
|
|
549
|
+
und die Antwort trägt zusätzlich `notice.code = 'cash_receipt_required'`: eine
|
|
550
|
+
Barzahlung ist ein Barumsatz und braucht einen Beleg (§ 132a BAO), bei
|
|
551
|
+
Registrierkassenpflicht über die Kasse — der Vermerk hier ersetzt ihn nicht.
|
|
552
|
+
|
|
492
553
|
**Nach einem Zeitlimit mit demselben `idempotencyKey` wiederholen**, nie mit
|
|
493
554
|
einem neuen: dann kommt die schon ausgestellte Rechnung zurück
|
|
494
555
|
(`replayed: true`). Derselbe Schlüssel mit anderen Daten ergibt
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* umhuellt, muss ihn weiterhin absetzen koennen.
|
|
14
14
|
*/
|
|
15
15
|
import type { TransportBodyFields } from './transport.js';
|
|
16
|
-
export declare const AUFRUFE: readonly ["activateCashregister", "cancelInvoice", "cancelReceipt", "createCreditNote", "createCustomer", "createCustomerCashregister", "createPartnerCustomer", "checkPartnerCustomerEmail", "createPartnerWebhook", "createPaymentLinkStripe", "createPrintJob", "createReceipt", "deletePartnerWebhook", "downloadDailyReport", "downloadReport", "endRegisterSession", "financeWebService", "generateFullReceiptId", "getCustomer", "getCustomerCredentials", "getCustomerSignatureStatus", "getFirstReceiptDate", "getInvoice", "getInvoicePdf", "getInvoiceSetupStatus", "getInvoiceXml", "getKasseSettings", "getPartnerCustomer", "getPartnerInfo", "getPrintJob", "getReceipt", "hobexPayApi", "hobexRefundApi", "issueInvoice", "listCustomerCashregisters", "listInvoices", "listMyArticleGroups", "listMyArticles", "listMyCashregisters", "listMyPrinters", "listMyReceipts", "listMyTipRecipients", "listPartnerCustomers", "listPartnerWebhookDeliveries", "listPartnerWebhooks", "listRegisterUsersForDevice", "listRegisterSessionsForDevice", "pairRegisterDevice", "registerPinLogin", "registerUserLogin", "renewRegisterSession", "requestCustomerSignature", "searchCustomers", "sendPartnerCustomerFonLink", "sendPartnerWebhookTest", "sendReceiptEmail", "setMyKasseSettings", "setMyRegisterDeviceSettings", "stripeCaptureIntent", "unpairRegisterDevice", "rotatePartnerWebhookSecret", "updateCustomer", "updatePartnerWebhook"];
|
|
16
|
+
export declare const AUFRUFE: readonly ["activateCashregister", "cancelInvoice", "cancelReceipt", "createCreditNote", "createCustomer", "createCustomerCashregister", "createPartnerCustomer", "checkPartnerCustomerEmail", "createPartnerWebhook", "createPaymentLinkStripe", "createPrintJob", "createReceipt", "deletePartnerWebhook", "downloadDailyReport", "downloadReport", "endRegisterSession", "financeWebService", "generateFullReceiptId", "getCustomer", "getCustomerCredentials", "getCustomerSignatureStatus", "getFirstReceiptDate", "getInvoice", "getInvoicePdf", "getInvoiceSetupStatus", "getInvoiceXml", "getKasseSettings", "getPartnerCustomer", "getPartnerInfo", "getPrintJob", "getReceipt", "hobexPayApi", "hobexRefundApi", "issueInvoice", "listCustomerCashregisters", "listInvoices", "listBrands", "listMyArticleGroups", "listMyArticles", "listMyCashregisters", "listMyPrinters", "listMyReceipts", "listMyTipRecipients", "listPartnerCustomers", "listPartnerWebhookDeliveries", "listPartnerWebhooks", "listRegisterUsersForDevice", "listRegisterSessionsForDevice", "pairRegisterDevice", "recordInvoicePayment", "registerPinLogin", "registerUserLogin", "renewRegisterSession", "requestCustomerSignature", "searchCustomers", "sendPartnerCustomerFonLink", "sendPartnerWebhookTest", "sendReceiptEmail", "setMyKasseSettings", "setMyRegisterDeviceSettings", "stripeCaptureIntent", "unpairRegisterDevice", "rotatePartnerWebhookSecret", "updateCustomer", "updatePartnerWebhook"];
|
|
17
17
|
export type Aufruf = typeof AUFRUFE[number];
|
|
18
18
|
/** Wie [KasseneckTransport], nur mit bekanntem Aufrufnamen. Nicht exportiert nach aussen. */
|
|
19
19
|
export type InternerTransport = <T = unknown>(functionName: Aufruf, params?: Record<string, unknown>, extraBodyFields?: TransportBodyFields, secretParams?: readonly string[]) => Promise<T>;
|
|
@@ -38,6 +38,7 @@ exports.AUFRUFE = [
|
|
|
38
38
|
'issueInvoice',
|
|
39
39
|
'listCustomerCashregisters',
|
|
40
40
|
'listInvoices',
|
|
41
|
+
'listBrands',
|
|
41
42
|
'listMyArticleGroups',
|
|
42
43
|
'listMyArticles',
|
|
43
44
|
'listMyCashregisters',
|
|
@@ -50,6 +51,7 @@ exports.AUFRUFE = [
|
|
|
50
51
|
'listRegisterUsersForDevice',
|
|
51
52
|
'listRegisterSessionsForDevice',
|
|
52
53
|
'pairRegisterDevice',
|
|
54
|
+
'recordInvoicePayment',
|
|
53
55
|
'registerPinLogin',
|
|
54
56
|
'registerUserLogin',
|
|
55
57
|
'renewRegisterSession',
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* Funktionen (endpunkte.ts) und bleiben einzeln importierbar.
|
|
6
6
|
*/
|
|
7
7
|
import { type FetchLike } from '../client/transport.js';
|
|
8
|
-
import type { EInvoiceFormat } from './vertrag.js';
|
|
9
|
-
import type { CancelInvoiceRequest, CancelResult, CreditNoteRequest, CreditNoteResult, Customer, CustomerInput, CustomerPage, CustomerSearch, InvoiceDetail, InvoiceListQuery, InvoicePage, InvoiceSetupStatus, IssueInvoiceRequest, IssueResult } from './typen.js';
|
|
8
|
+
import type { EInvoiceFormat, InvoiceLanguage } from './vertrag.js';
|
|
9
|
+
import type { Brand, CancelInvoiceRequest, CancelResult, CreditNoteRequest, CreditNoteResult, Customer, CustomerInput, CustomerPage, CustomerSearch, InvoiceDetail, InvoiceListQuery, InvoicePage, InvoiceSetupStatus, IssueInvoiceRequest, IssueResult, RecordPaymentRequest, RecordPaymentResult } from './typen.js';
|
|
10
10
|
export interface RechnungApiOptions {
|
|
11
11
|
/** `api_key` des Kontos (`kr_live_…` / `kr_test_…`). Gehoert auf einen Server. */
|
|
12
12
|
apiKey: string;
|
|
@@ -37,9 +37,16 @@ export interface RechnungApi {
|
|
|
37
37
|
number: string;
|
|
38
38
|
}): Promise<InvoiceDetail>;
|
|
39
39
|
listInvoices(abfrage?: InvoiceListQuery): Promise<InvoicePage>;
|
|
40
|
-
|
|
40
|
+
/** Eine spaeter eingetroffene Zahlung nachtragen; `idempotencyKey` ist Pflicht. */
|
|
41
|
+
recordInvoicePayment(anfrage: RecordPaymentRequest): Promise<RecordPaymentResult>;
|
|
42
|
+
/** Mit `language` ungleich der Rechnungssprache: gekennzeichnete Uebersetzungskopie. */
|
|
43
|
+
getInvoicePdf(invoiceId: string, optionen?: {
|
|
44
|
+
language?: InvoiceLanguage;
|
|
45
|
+
}): Promise<Uint8Array>;
|
|
41
46
|
getInvoiceXml(invoiceId: string, format?: EInvoiceFormat): Promise<string>;
|
|
42
47
|
/** Darf dieses Konto ausstellen, und was fehlt noch? Laeuft auch ohne Freigabe. */
|
|
43
48
|
getInvoiceSetupStatus(): Promise<InvoiceSetupStatus>;
|
|
49
|
+
/** Die Marken des Kontos; `id` geht als `brandId` in `issueInvoice`. */
|
|
50
|
+
listBrands(): Promise<Brand[]>;
|
|
44
51
|
}
|
|
45
52
|
export declare function createRechnungApi(optionen: RechnungApiOptions): RechnungApi;
|
package/dist/cjs/rechnung/api.js
CHANGED
|
@@ -29,8 +29,10 @@ function createRechnungApi(optionen) {
|
|
|
29
29
|
createCreditNote: (anfrage) => (0, endpunkte_js_1.createCreditNote)(rufen, anfrage),
|
|
30
30
|
getInvoice: (kennung) => (0, endpunkte_js_1.getInvoice)(rufen, kennung),
|
|
31
31
|
listInvoices: (abfrage) => (0, endpunkte_js_1.listInvoices)(rufen, abfrage),
|
|
32
|
-
getInvoicePdf: (id) => (0, endpunkte_js_1.getInvoicePdf)(rufenBinaer, id),
|
|
32
|
+
getInvoicePdf: (id, o) => (0, endpunkte_js_1.getInvoicePdf)(rufenBinaer, id, o),
|
|
33
33
|
getInvoiceXml: (id, format) => (0, endpunkte_js_1.getInvoiceXml)(rufen, id, format),
|
|
34
34
|
getInvoiceSetupStatus: () => (0, endpunkte_js_1.getInvoiceSetupStatus)(rufen),
|
|
35
|
+
recordInvoicePayment: (anfrage) => (0, endpunkte_js_1.recordInvoicePayment)(rufen, anfrage),
|
|
36
|
+
listBrands: () => (0, endpunkte_js_1.listBrands)(rufen),
|
|
35
37
|
};
|
|
36
38
|
}
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
* der Aufruf `KasseneckValidationError` mit `scope:'response'`.
|
|
18
18
|
*/
|
|
19
19
|
import type { InternerBinaerTransport, InternerTransport } from '../client/aufrufe.js';
|
|
20
|
-
import type { EInvoiceFormat } from './vertrag.js';
|
|
21
|
-
import type { CancelInvoiceRequest, CancelResult, CreditNoteRequest, CreditNoteResult, Customer, CustomerInput, CustomerPage, CustomerSearch, InvoiceDetail, InvoiceListQuery, InvoicePage, InvoiceSetupStatus, IssueInvoiceRequest, IssueResult } from './typen.js';
|
|
20
|
+
import type { EInvoiceFormat, InvoiceLanguage } from './vertrag.js';
|
|
21
|
+
import type { Brand, CancelInvoiceRequest, CancelResult, CreditNoteRequest, CreditNoteResult, Customer, CustomerInput, CustomerPage, CustomerSearch, InvoiceDetail, InvoiceListQuery, InvoicePage, InvoiceSetupStatus, IssueInvoiceRequest, IssueResult, RecordPaymentRequest, RecordPaymentResult } from './typen.js';
|
|
22
22
|
export declare function createCustomer(rufen: InternerTransport, customer: CustomerInput, optionen?: {
|
|
23
23
|
idempotencyKey?: string;
|
|
24
24
|
}): Promise<Customer>;
|
|
@@ -44,8 +44,27 @@ export declare function listInvoices(rufen: InternerTransport, abfrage?: Invoice
|
|
|
44
44
|
* Antwort. Vor dem ersten `issueInvoice` aufrufen und `missing` anzeigen.
|
|
45
45
|
*/
|
|
46
46
|
export declare function getInvoiceSetupStatus(rufen: InternerTransport): Promise<InvoiceSetupStatus>;
|
|
47
|
-
/**
|
|
48
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Das PDF der Rechnung (bei Gutschriften: der Gutschrift), mit eingebetteter
|
|
49
|
+
* Factur-X-Datei. Mit `language` in der anderen Sprache als der Rechnung kommt
|
|
50
|
+
* eine **Uebersetzungskopie**: dieselbe Nummer, auf jeder Seite als Uebersetzung
|
|
51
|
+
* gekennzeichnet, ohne eingebettete E-Rechnung — keine eigene Rechnung.
|
|
52
|
+
*/
|
|
53
|
+
export declare function getInvoicePdf(rufenBinaer: InternerBinaerTransport, invoiceId: string, optionen?: {
|
|
54
|
+
language?: InvoiceLanguage;
|
|
55
|
+
}): Promise<Uint8Array>;
|
|
56
|
+
/**
|
|
57
|
+
* Eine Zahlung nachtragen, die nach dem Ausstellen eingetroffen ist
|
|
58
|
+
* (Ueberweisung, Teilzahlung). Der `idempotencyKey` ist Pflicht: ohne ihn
|
|
59
|
+
* bucht ein Wiederholungslauf nach einem Zeitlimit eine zweite Zahlung.
|
|
60
|
+
*
|
|
61
|
+
* Bei `method: 'cash'` wird die Zahlung gebucht und die Antwort traegt
|
|
62
|
+
* zusaetzlich `notice` — eine Barzahlung ist ein Barumsatz und braucht einen
|
|
63
|
+
* Beleg (§ 132a BAO), den dieser Vermerk nicht ersetzt.
|
|
64
|
+
*/
|
|
65
|
+
export declare function recordInvoicePayment(rufen: InternerTransport, anfrage: RecordPaymentRequest): Promise<RecordPaymentResult>;
|
|
66
|
+
/** Die Marken des Kontos — die Kennung geht als `brandId` in `issueInvoice`. */
|
|
67
|
+
export declare function listBrands(rufen: InternerTransport): Promise<Brand[]>;
|
|
49
68
|
/**
|
|
50
69
|
* Die E-Rechnung als XML-Text. Sie kommt im gewohnten Umschlag (`data.xml`)
|
|
51
70
|
* und nicht als rohe Datei: so bleibt ein fachlicher Fehler
|
|
@@ -29,6 +29,8 @@ exports.getInvoice = getInvoice;
|
|
|
29
29
|
exports.listInvoices = listInvoices;
|
|
30
30
|
exports.getInvoiceSetupStatus = getInvoiceSetupStatus;
|
|
31
31
|
exports.getInvoicePdf = getInvoicePdf;
|
|
32
|
+
exports.recordInvoicePayment = recordInvoicePayment;
|
|
33
|
+
exports.listBrands = listBrands;
|
|
32
34
|
exports.getInvoiceXml = getInvoiceXml;
|
|
33
35
|
const errors_js_1 = require("../client/errors.js");
|
|
34
36
|
function objekt(wert) {
|
|
@@ -128,9 +130,45 @@ async function getInvoiceSetupStatus(rufen) {
|
|
|
128
130
|
};
|
|
129
131
|
}
|
|
130
132
|
// ---- Dateien ----------------------------------------------------------------
|
|
131
|
-
/**
|
|
132
|
-
|
|
133
|
-
|
|
133
|
+
/**
|
|
134
|
+
* Das PDF der Rechnung (bei Gutschriften: der Gutschrift), mit eingebetteter
|
|
135
|
+
* Factur-X-Datei. Mit `language` in der anderen Sprache als der Rechnung kommt
|
|
136
|
+
* eine **Uebersetzungskopie**: dieselbe Nummer, auf jeder Seite als Uebersetzung
|
|
137
|
+
* gekennzeichnet, ohne eingebettete E-Rechnung — keine eigene Rechnung.
|
|
138
|
+
*/
|
|
139
|
+
function getInvoicePdf(rufenBinaer, invoiceId, optionen = {}) {
|
|
140
|
+
const params = { invoiceId };
|
|
141
|
+
if (optionen.language)
|
|
142
|
+
params['language'] = optionen.language;
|
|
143
|
+
return rufenBinaer('getInvoicePdf', params);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Eine Zahlung nachtragen, die nach dem Ausstellen eingetroffen ist
|
|
147
|
+
* (Ueberweisung, Teilzahlung). Der `idempotencyKey` ist Pflicht: ohne ihn
|
|
148
|
+
* bucht ein Wiederholungslauf nach einem Zeitlimit eine zweite Zahlung.
|
|
149
|
+
*
|
|
150
|
+
* Bei `method: 'cash'` wird die Zahlung gebucht und die Antwort traegt
|
|
151
|
+
* zusaetzlich `notice` — eine Barzahlung ist ein Barumsatz und braucht einen
|
|
152
|
+
* Beleg (§ 132a BAO), den dieser Vermerk nicht ersetzt.
|
|
153
|
+
*/
|
|
154
|
+
async function recordInvoicePayment(rufen, anfrage) {
|
|
155
|
+
const daten = await rufen('recordInvoicePayment', nutzlast(anfrage));
|
|
156
|
+
const roh = objekt(daten);
|
|
157
|
+
const ergebnis = {
|
|
158
|
+
invoice: pflichtObjekt('recordInvoicePayment', daten, 'invoice'),
|
|
159
|
+
payment: pflichtObjekt('recordInvoicePayment', daten, 'payment'),
|
|
160
|
+
replayed: roh['replayed'] === true,
|
|
161
|
+
};
|
|
162
|
+
if (roh['notice'])
|
|
163
|
+
ergebnis.notice = roh['notice'];
|
|
164
|
+
return ergebnis;
|
|
165
|
+
}
|
|
166
|
+
/** Die Marken des Kontos — die Kennung geht als `brandId` in `issueInvoice`. */
|
|
167
|
+
async function listBrands(rufen) {
|
|
168
|
+
const brands = objekt(await rufen('listBrands', {}))['brands'];
|
|
169
|
+
if (!Array.isArray(brands))
|
|
170
|
+
throw new errors_js_1.KasseneckValidationError('listBrands', 'Antwort ohne brands', 'response');
|
|
171
|
+
return brands;
|
|
134
172
|
}
|
|
135
173
|
/**
|
|
136
174
|
* Die E-Rechnung als XML-Text. Sie kommt im gewohnten Umschlag (`data.xml`)
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
export { createRechnungApi, type RechnungApi, type RechnungApiOptions } from './api.js';
|
|
14
14
|
export { rechnungKeyAuth, type RechnungKeyAuthOptions } from './auth.js';
|
|
15
15
|
export { istRechnungFehler, rechnungFehlerCode, rechnungFeldFehler, type RechnungFeldFehler, } from './fehler.js';
|
|
16
|
-
export { cancelInvoice, createCreditNote, createCustomer, getCustomer, getInvoice, getInvoicePdf, getInvoiceSetupStatus, getInvoiceXml, issueInvoice, listInvoices, searchCustomers, updateCustomer, } from './endpunkte.js';
|
|
17
|
-
export type { CancelInvoiceRequest, CancelResult, CreditNoteRequest, CreditNoteResult, Customer, CustomerInput, CustomerPage, CustomerSearch, EInvoiceStatus, Invoice, InvoiceDetail, InvoiceItem, InvoiceItemInput, InvoiceListQuery, InvoicePage, InvoiceRecipient, InvoiceSetupGap, InvoiceSetupStatus, InvoiceTotals, IssueInvoiceRequest, IssueResult, } from './typen.js';
|
|
18
|
-
export {
|
|
16
|
+
export { cancelInvoice, createCreditNote, createCustomer, getCustomer, getInvoice, getInvoicePdf, getInvoiceSetupStatus, getInvoiceXml, issueInvoice, listBrands, listInvoices, recordInvoicePayment, searchCustomers, updateCustomer, } from './endpunkte.js';
|
|
17
|
+
export type { Brand, CancelInvoiceRequest, CancelResult, CreditNoteRequest, CreditNoteResult, Customer, CustomerInput, CustomerPage, CustomerSearch, EInvoiceStatus, Invoice, InvoiceDetail, InvoiceItem, InvoiceItemInput, InvoiceListQuery, InvoicePage, InvoiceRecipient, InvoiceSetupGap, InvoiceSetupStatus, InvoiceTotals, InvoiceNotice, InvoicePayment, IssueInvoiceRequest, IssueResult, PaymentInput, RecordPaymentRequest, RecordPaymentResult, } from './typen.js';
|
|
18
|
+
export { RECHNUNG_TEXTE, rechnungText, type RechnungTextSchluessel } from './texte.js';
|
|
19
|
+
export { RECHNUNG_VERTRAG_VERSION, RECHNUNG_AUFRUFE, INVOICE_ERROR_CODES, CREDIT_NOTE_REASONS, TAX_SCHEMES, PRICE_MODES, VAT_RATES, CUSTOMER_TYPES, INVOICE_LIST_STATUS, DOC_TYPES, EINVOICE_FORMATS, INVOICE_LANGUAGES, INVOICE_PAYMENT_METHODS, INVOICE_NOTICE_CODES, INVOICE_UNITS, RECHNUNG_EINHEITEN_CODES, INVOICE_SETUP_REQUIREMENTS, KUNDE_FELDER, POSITION_FELDER, RECHNUNG_ANFRAGEN, RECHNUNG_GENAU_EINS, RECHNUNG_MINDESTENS_EINS, type RechnungAufruf, type InvoiceErrorCode, type CreditNoteReason, type TaxScheme, type PriceMode, type VatRatePercent, type CustomerType, type InvoiceListStatus, type DocType, type EInvoiceFormat, type InvoiceLanguage, type InvoicePaymentMethod, type InvoiceNoticeCode, type InvoiceUnit, type InvoiceSetupRequirement, type Format, type Feld, } from './vertrag.js';
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* Benutzung des Clients.
|
|
13
13
|
*/
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.RECHNUNG_MINDESTENS_EINS = exports.RECHNUNG_GENAU_EINS = exports.RECHNUNG_ANFRAGEN = exports.POSITION_FELDER = exports.KUNDE_FELDER = exports.INVOICE_SETUP_REQUIREMENTS = exports.EINVOICE_FORMATS = exports.DOC_TYPES = exports.INVOICE_LIST_STATUS = exports.CUSTOMER_TYPES = exports.VAT_RATES = exports.PRICE_MODES = exports.TAX_SCHEMES = exports.CREDIT_NOTE_REASONS = exports.INVOICE_ERROR_CODES = exports.RECHNUNG_AUFRUFE = exports.RECHNUNG_VERTRAG_VERSION = exports.updateCustomer = exports.searchCustomers = exports.listInvoices = exports.issueInvoice = exports.getInvoiceXml = exports.getInvoiceSetupStatus = exports.getInvoicePdf = exports.getInvoice = exports.getCustomer = exports.createCustomer = exports.createCreditNote = exports.cancelInvoice = exports.rechnungFeldFehler = exports.rechnungFehlerCode = exports.istRechnungFehler = exports.rechnungKeyAuth = exports.createRechnungApi = void 0;
|
|
15
|
+
exports.RECHNUNG_MINDESTENS_EINS = exports.RECHNUNG_GENAU_EINS = exports.RECHNUNG_ANFRAGEN = exports.POSITION_FELDER = exports.KUNDE_FELDER = exports.INVOICE_SETUP_REQUIREMENTS = exports.RECHNUNG_EINHEITEN_CODES = exports.INVOICE_UNITS = exports.INVOICE_NOTICE_CODES = exports.INVOICE_PAYMENT_METHODS = exports.INVOICE_LANGUAGES = exports.EINVOICE_FORMATS = exports.DOC_TYPES = exports.INVOICE_LIST_STATUS = exports.CUSTOMER_TYPES = exports.VAT_RATES = exports.PRICE_MODES = exports.TAX_SCHEMES = exports.CREDIT_NOTE_REASONS = exports.INVOICE_ERROR_CODES = exports.RECHNUNG_AUFRUFE = exports.RECHNUNG_VERTRAG_VERSION = exports.rechnungText = exports.RECHNUNG_TEXTE = exports.updateCustomer = exports.searchCustomers = exports.recordInvoicePayment = exports.listInvoices = exports.listBrands = exports.issueInvoice = exports.getInvoiceXml = exports.getInvoiceSetupStatus = exports.getInvoicePdf = exports.getInvoice = exports.getCustomer = exports.createCustomer = exports.createCreditNote = exports.cancelInvoice = exports.rechnungFeldFehler = exports.rechnungFehlerCode = exports.istRechnungFehler = exports.rechnungKeyAuth = exports.createRechnungApi = void 0;
|
|
16
16
|
var api_js_1 = require("./api.js");
|
|
17
17
|
Object.defineProperty(exports, "createRechnungApi", { enumerable: true, get: function () { return api_js_1.createRechnungApi; } });
|
|
18
18
|
var auth_js_1 = require("./auth.js");
|
|
@@ -31,9 +31,14 @@ Object.defineProperty(exports, "getInvoicePdf", { enumerable: true, get: functio
|
|
|
31
31
|
Object.defineProperty(exports, "getInvoiceSetupStatus", { enumerable: true, get: function () { return endpunkte_js_1.getInvoiceSetupStatus; } });
|
|
32
32
|
Object.defineProperty(exports, "getInvoiceXml", { enumerable: true, get: function () { return endpunkte_js_1.getInvoiceXml; } });
|
|
33
33
|
Object.defineProperty(exports, "issueInvoice", { enumerable: true, get: function () { return endpunkte_js_1.issueInvoice; } });
|
|
34
|
+
Object.defineProperty(exports, "listBrands", { enumerable: true, get: function () { return endpunkte_js_1.listBrands; } });
|
|
34
35
|
Object.defineProperty(exports, "listInvoices", { enumerable: true, get: function () { return endpunkte_js_1.listInvoices; } });
|
|
36
|
+
Object.defineProperty(exports, "recordInvoicePayment", { enumerable: true, get: function () { return endpunkte_js_1.recordInvoicePayment; } });
|
|
35
37
|
Object.defineProperty(exports, "searchCustomers", { enumerable: true, get: function () { return endpunkte_js_1.searchCustomers; } });
|
|
36
38
|
Object.defineProperty(exports, "updateCustomer", { enumerable: true, get: function () { return endpunkte_js_1.updateCustomer; } });
|
|
39
|
+
var texte_js_1 = require("./texte.js");
|
|
40
|
+
Object.defineProperty(exports, "RECHNUNG_TEXTE", { enumerable: true, get: function () { return texte_js_1.RECHNUNG_TEXTE; } });
|
|
41
|
+
Object.defineProperty(exports, "rechnungText", { enumerable: true, get: function () { return texte_js_1.rechnungText; } });
|
|
37
42
|
var vertrag_js_1 = require("./vertrag.js");
|
|
38
43
|
Object.defineProperty(exports, "RECHNUNG_VERTRAG_VERSION", { enumerable: true, get: function () { return vertrag_js_1.RECHNUNG_VERTRAG_VERSION; } });
|
|
39
44
|
Object.defineProperty(exports, "RECHNUNG_AUFRUFE", { enumerable: true, get: function () { return vertrag_js_1.RECHNUNG_AUFRUFE; } });
|
|
@@ -46,6 +51,11 @@ Object.defineProperty(exports, "CUSTOMER_TYPES", { enumerable: true, get: functi
|
|
|
46
51
|
Object.defineProperty(exports, "INVOICE_LIST_STATUS", { enumerable: true, get: function () { return vertrag_js_1.INVOICE_LIST_STATUS; } });
|
|
47
52
|
Object.defineProperty(exports, "DOC_TYPES", { enumerable: true, get: function () { return vertrag_js_1.DOC_TYPES; } });
|
|
48
53
|
Object.defineProperty(exports, "EINVOICE_FORMATS", { enumerable: true, get: function () { return vertrag_js_1.EINVOICE_FORMATS; } });
|
|
54
|
+
Object.defineProperty(exports, "INVOICE_LANGUAGES", { enumerable: true, get: function () { return vertrag_js_1.INVOICE_LANGUAGES; } });
|
|
55
|
+
Object.defineProperty(exports, "INVOICE_PAYMENT_METHODS", { enumerable: true, get: function () { return vertrag_js_1.INVOICE_PAYMENT_METHODS; } });
|
|
56
|
+
Object.defineProperty(exports, "INVOICE_NOTICE_CODES", { enumerable: true, get: function () { return vertrag_js_1.INVOICE_NOTICE_CODES; } });
|
|
57
|
+
Object.defineProperty(exports, "INVOICE_UNITS", { enumerable: true, get: function () { return vertrag_js_1.INVOICE_UNITS; } });
|
|
58
|
+
Object.defineProperty(exports, "RECHNUNG_EINHEITEN_CODES", { enumerable: true, get: function () { return vertrag_js_1.RECHNUNG_EINHEITEN_CODES; } });
|
|
49
59
|
Object.defineProperty(exports, "INVOICE_SETUP_REQUIREMENTS", { enumerable: true, get: function () { return vertrag_js_1.INVOICE_SETUP_REQUIREMENTS; } });
|
|
50
60
|
Object.defineProperty(exports, "KUNDE_FELDER", { enumerable: true, get: function () { return vertrag_js_1.KUNDE_FELDER; } });
|
|
51
61
|
Object.defineProperty(exports, "POSITION_FELDER", { enumerable: true, get: function () { return vertrag_js_1.POSITION_FELDER; } });
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Texte von Rechnung und Gutschrift in jeder Sprache der Rechnungs-API — eine
|
|
3
|
+
* Quelle fuer das Backend (PDF, E-Rechnung, Mail) und das Web (Statusseite).
|
|
4
|
+
* Das Backend liest sie aus `fixtures/rechnung-texte.json` (`npm run
|
|
5
|
+
* fixtures:rechnungstexte`).
|
|
6
|
+
*
|
|
7
|
+
* Datum und Betraege stehen NICHT hier: sie bleiben in jeder Sprache
|
|
8
|
+
* oesterreichisch formatiert (15.09.2026, € 1.234,56) und werden vom Aufrufer
|
|
9
|
+
* eingesetzt. Platzhalter in {geschweiften} Klammern; jede Sprache hat dieselben
|
|
10
|
+
* Schluessel und je Schluessel dieselben Platzhalter (test/rechnung-texte.test.ts).
|
|
11
|
+
*
|
|
12
|
+
* Steuerhinweise nennen in jeder Sprache die Gesetzesstelle — § 11 UStG verlangt
|
|
13
|
+
* einen Hinweis, keinen Wortlaut; die Fundstelle macht ihn eindeutig.
|
|
14
|
+
*/
|
|
15
|
+
import type { InvoiceLanguage } from './vertrag.js';
|
|
16
|
+
declare const DE: {
|
|
17
|
+
readonly 'pdf.titel.rechnung': "RECHNUNG";
|
|
18
|
+
readonly 'pdf.titel.gutschrift': "GUTSCHRIFT";
|
|
19
|
+
readonly 'pdf.pille.bezahlt': "BEZAHLT";
|
|
20
|
+
readonly 'pdf.pille.lastschrift': "SEPA-LASTSCHRIFT";
|
|
21
|
+
readonly 'pdf.meta.nummer.rechnung': "Rechnungsnr.";
|
|
22
|
+
readonly 'pdf.meta.nummer.gutschrift': "Gutschriftsnr.";
|
|
23
|
+
readonly 'pdf.meta.datum.rechnung': "Rechnungsdatum";
|
|
24
|
+
readonly 'pdf.meta.datum.gutschrift': "Gutschriftsdatum";
|
|
25
|
+
readonly 'pdf.meta.leistungszeitraum': "Leistungszeitraum";
|
|
26
|
+
readonly 'pdf.meta.faelligkeit': "Fälligkeit";
|
|
27
|
+
readonly 'pdf.bezug.gutschrift': "Gutschrift zu Rechnung {nummer}";
|
|
28
|
+
readonly 'pdf.bezug.vom': " vom {datum}";
|
|
29
|
+
readonly 'pdf.bezeichnung.rechnung': "Rechnung {nummer}";
|
|
30
|
+
readonly 'pdf.bezeichnung.gutschrift': "Gutschrift {nummer}";
|
|
31
|
+
readonly 'pdf.uid': "UID: {uid}";
|
|
32
|
+
readonly 'pdf.tabelle.pos': "POS";
|
|
33
|
+
readonly 'pdf.tabelle.beschreibung': "BESCHREIBUNG";
|
|
34
|
+
readonly 'pdf.tabelle.menge': "MENGE";
|
|
35
|
+
readonly 'pdf.tabelle.ust': "UST";
|
|
36
|
+
readonly 'pdf.tabelle.einzelNetto': "EINZEL NETTO";
|
|
37
|
+
readonly 'pdf.tabelle.betragNetto': "BETRAG NETTO";
|
|
38
|
+
readonly 'pdf.summe.zwischensumme': "Zwischensumme netto";
|
|
39
|
+
readonly 'pdf.summe.umsatzsteuer': "Umsatzsteuer {satz}%";
|
|
40
|
+
readonly 'pdf.summe.gesamt.rechnung': "Gesamtbetrag";
|
|
41
|
+
readonly 'pdf.summe.gesamt.gutschrift': "Gutschriftsbetrag";
|
|
42
|
+
readonly 'steuer.kleinunternehmer': "Gemäß § 6 Abs. 1 Z 27 UStG wird keine Umsatzsteuer verrechnet (Kleinunternehmer).";
|
|
43
|
+
readonly 'steuer.igLieferung': "Steuerfreie innergemeinschaftliche Lieferung (Art. 6 Abs. 1 UStG).";
|
|
44
|
+
readonly 'steuer.ausfuhr': "Steuerfreie Ausfuhrlieferung (§ 6 Abs. 1 Z 1 UStG).";
|
|
45
|
+
readonly 'steuer.reverseCharge.titel': "Steuerfreie Leistung – Reverse Charge. ";
|
|
46
|
+
readonly '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.";
|
|
47
|
+
readonly 'steuer.reverseCharge.uid': "UID Leistungserbringer: {verkaeufer} · UID Leistungsempfänger: {kaeufer}";
|
|
48
|
+
readonly 'pdf.zahlung.titel': "ZAHLUNGSINFORMATIONEN";
|
|
49
|
+
readonly 'pdf.zahlung.empfaenger': "Empfänger";
|
|
50
|
+
readonly 'pdf.zahlung.iban': "IBAN";
|
|
51
|
+
readonly 'pdf.zahlung.bic': "BIC";
|
|
52
|
+
readonly 'pdf.zahlung.verwendungszweck': "Verwendungszweck";
|
|
53
|
+
readonly 'pdf.zahlung.hinweisBis': "Zahlbar ohne Abzug bis {datum}. Vielen Dank für Ihren Auftrag.";
|
|
54
|
+
readonly 'pdf.zahlung.hinweis': "Zahlbar ohne Abzug. Vielen Dank für Ihren Auftrag.";
|
|
55
|
+
readonly 'pdf.zahlung.qr': "Mit Banking-App scannen & zahlen";
|
|
56
|
+
readonly 'pdf.bezahlt.text': "Diese Rechnung ist beglichen. Es ist nichts weiter zu tun.";
|
|
57
|
+
readonly 'pdf.bezahlt.am': "Bezahlt am";
|
|
58
|
+
readonly 'pdf.bezahlt.zahlungsart': "Zahlungsart";
|
|
59
|
+
readonly 'zahlungsart.cash': "Bar";
|
|
60
|
+
readonly 'zahlungsart.transfer': "Überweisung";
|
|
61
|
+
readonly 'zahlungsart.card': "Karte";
|
|
62
|
+
readonly 'zahlungsart.online': "Online";
|
|
63
|
+
readonly 'pdf.lastschrift.text': "Der Betrag wird per SEPA-Lastschrift eingezogen. Sie müssen nichts veranlassen.";
|
|
64
|
+
readonly 'pdf.lastschrift.einzugAm': "Einzug am";
|
|
65
|
+
readonly 'pdf.lastschrift.konto': "Konto";
|
|
66
|
+
readonly 'pdf.lastschrift.mandatsreferenz': "Mandatsreferenz";
|
|
67
|
+
readonly 'pdf.lastschrift.mandatVom': "Mandat vom";
|
|
68
|
+
readonly 'pdf.lastschrift.warnung': "Bitte für Deckung sorgen — die Kosten einer Rücklastschrift werden weiterverrechnet.";
|
|
69
|
+
readonly 'pdf.erstattung.text': "Der Betrag wird auf dem ursprünglichen Zahlungsweg erstattet. Sie müssen nichts veranlassen.";
|
|
70
|
+
readonly 'pdf.erstattung.bezug': "Bezug";
|
|
71
|
+
readonly 'pdf.erstattung.betrag': "Erstattungsbetrag";
|
|
72
|
+
readonly 'pdf.status.titel': "Zahlungsstatus online verfolgen";
|
|
73
|
+
readonly 'pdf.status.text': "Zahlung bzw. Einzug prüfen und Benachrichtigungen aktivieren.";
|
|
74
|
+
readonly 'pdf.status.link': "Link";
|
|
75
|
+
readonly 'pdf.status.passwort': "Passwort";
|
|
76
|
+
readonly 'pdf.fuss.kontakt': "Kontakt";
|
|
77
|
+
readonly 'pdf.fuss.register': "Register & Steuer";
|
|
78
|
+
readonly 'pdf.fuss.sitz': "Sitz: {ort}";
|
|
79
|
+
readonly 'pdf.fuss.hinweis': "Erstellt mit Kasseneck — ein Produkt der Kreiseck";
|
|
80
|
+
readonly 'pdf.seite': "Seite {nummer} / {gesamt}";
|
|
81
|
+
readonly 'land.AT': "Österreich";
|
|
82
|
+
readonly 'land.DE': "Deutschland";
|
|
83
|
+
readonly 'land.CH': "Schweiz";
|
|
84
|
+
readonly 'land.IT': "Italien";
|
|
85
|
+
readonly 'land.LI': "Liechtenstein";
|
|
86
|
+
readonly 'kopie.rechnung': "Übersetzung – keine eigene Rechnung · Original: Rechnung Nr. {nummer} vom {datum}";
|
|
87
|
+
readonly 'kopie.gutschrift': "Übersetzung – keine eigene Gutschrift · Original: Gutschrift Nr. {nummer} vom {datum}";
|
|
88
|
+
readonly 'gutschrift.einleitung': "Grund: {grund}";
|
|
89
|
+
readonly 'gutschrift.grund.cancellation': "Stornierung";
|
|
90
|
+
readonly 'gutschrift.grund.price_reduction': "Preisnachlass";
|
|
91
|
+
readonly 'gutschrift.grund.return': "Rücksendung";
|
|
92
|
+
readonly 'gutschrift.grund.incorrect_invoice': "Fehlerhafte Rechnung";
|
|
93
|
+
readonly 'gutschrift.grund.other': "Sonstiges";
|
|
94
|
+
readonly 'einvoice.befreiung.reverseCharge': "Steuerschuldnerschaft des Leistungsempfängers (Reverse Charge)";
|
|
95
|
+
readonly 'einvoice.befreiung.kleinunternehmer': "Steuerbefreit — Kleinunternehmer gemäß §6 Abs. 1 Z 27 UStG";
|
|
96
|
+
readonly 'einvoice.befreiung.igLieferung': "Steuerfreie innergemeinschaftliche Lieferung gemäß Art. 6 Abs. 1 UStG";
|
|
97
|
+
readonly 'einvoice.befreiung.ausfuhr': "Steuerfreie Ausfuhrlieferung gemäß §6 Abs. 1 Z 1 UStG";
|
|
98
|
+
readonly 'einvoice.zahlbarBis': "Zahlbar bis {datum}";
|
|
99
|
+
readonly 'einheit.piece': "Stk";
|
|
100
|
+
readonly 'einheit.pair': "Paar";
|
|
101
|
+
readonly 'einheit.set': "Set";
|
|
102
|
+
readonly 'einheit.dozen': "Dtzd.";
|
|
103
|
+
readonly 'einheit.second': "Sek.";
|
|
104
|
+
readonly 'einheit.minute': "Min.";
|
|
105
|
+
readonly 'einheit.hour': "Std";
|
|
106
|
+
readonly 'einheit.day': "Tag";
|
|
107
|
+
readonly 'einheit.night': "Nacht";
|
|
108
|
+
readonly 'einheit.week': "Woche";
|
|
109
|
+
readonly 'einheit.month': "Monat";
|
|
110
|
+
readonly 'einheit.quarter': "Quartal";
|
|
111
|
+
readonly 'einheit.half_year': "Halbjahr";
|
|
112
|
+
readonly 'einheit.year': "Jahr";
|
|
113
|
+
readonly 'einheit.milligram': "mg";
|
|
114
|
+
readonly 'einheit.gram': "g";
|
|
115
|
+
readonly 'einheit.kilogram': "kg";
|
|
116
|
+
readonly 'einheit.tonne': "t";
|
|
117
|
+
readonly 'einheit.millimetre': "mm";
|
|
118
|
+
readonly 'einheit.centimetre': "cm";
|
|
119
|
+
readonly 'einheit.metre': "m";
|
|
120
|
+
readonly 'einheit.running_metre': "lfm";
|
|
121
|
+
readonly 'einheit.kilometre': "km";
|
|
122
|
+
readonly 'einheit.square_metre': "m²";
|
|
123
|
+
readonly 'einheit.hectare': "ha";
|
|
124
|
+
readonly 'einheit.millilitre': "ml";
|
|
125
|
+
readonly 'einheit.litre': "l";
|
|
126
|
+
readonly 'einheit.cubic_metre': "m³";
|
|
127
|
+
readonly 'einheit.kilowatt_hour': "kWh";
|
|
128
|
+
readonly 'einheit.megawatt_hour': "MWh";
|
|
129
|
+
readonly 'einheit.gigabyte': "GB";
|
|
130
|
+
readonly 'einheit.terabyte': "TB";
|
|
131
|
+
readonly 'einheit.flat_rate': "Pauschal";
|
|
132
|
+
readonly 'einheit.person': "Pers.";
|
|
133
|
+
readonly 'einheit.licence': "Lizenz";
|
|
134
|
+
readonly 'einheit.user': "Benutzer";
|
|
135
|
+
readonly 'einheit.device': "Gerät";
|
|
136
|
+
readonly 'einheit.session': "Sitzung";
|
|
137
|
+
readonly 'einheit.trip': "Fahrt";
|
|
138
|
+
readonly 'einheit.page': "Seite";
|
|
139
|
+
readonly 'einheit.sheet': "Blatt";
|
|
140
|
+
readonly 'einheit.package': "Pkg.";
|
|
141
|
+
readonly 'einheit.box': "Box";
|
|
142
|
+
readonly 'einheit.carton': "Karton";
|
|
143
|
+
readonly 'einheit.bottle': "Fl.";
|
|
144
|
+
readonly 'einheit.can': "Dose";
|
|
145
|
+
readonly 'einheit.roll': "Rolle";
|
|
146
|
+
readonly 'einheit.bag': "Sack";
|
|
147
|
+
readonly 'einheit.pallet': "Palette";
|
|
148
|
+
readonly 'einheitName.piece': "Stück";
|
|
149
|
+
readonly 'einheitName.pair': "Paar";
|
|
150
|
+
readonly 'einheitName.set': "Set";
|
|
151
|
+
readonly 'einheitName.dozen': "Dutzend";
|
|
152
|
+
readonly 'einheitName.second': "Sekunde";
|
|
153
|
+
readonly 'einheitName.minute': "Minute";
|
|
154
|
+
readonly 'einheitName.hour': "Stunde";
|
|
155
|
+
readonly 'einheitName.day': "Tag";
|
|
156
|
+
readonly 'einheitName.night': "Nacht";
|
|
157
|
+
readonly 'einheitName.week': "Woche";
|
|
158
|
+
readonly 'einheitName.month': "Monat";
|
|
159
|
+
readonly 'einheitName.quarter': "Quartal";
|
|
160
|
+
readonly 'einheitName.half_year': "Halbjahr";
|
|
161
|
+
readonly 'einheitName.year': "Jahr";
|
|
162
|
+
readonly 'einheitName.milligram': "Milligramm";
|
|
163
|
+
readonly 'einheitName.gram': "Gramm";
|
|
164
|
+
readonly 'einheitName.kilogram': "Kilogramm";
|
|
165
|
+
readonly 'einheitName.tonne': "Tonne";
|
|
166
|
+
readonly 'einheitName.millimetre': "Millimeter";
|
|
167
|
+
readonly 'einheitName.centimetre': "Zentimeter";
|
|
168
|
+
readonly 'einheitName.metre': "Meter";
|
|
169
|
+
readonly 'einheitName.running_metre': "Laufmeter";
|
|
170
|
+
readonly 'einheitName.kilometre': "Kilometer";
|
|
171
|
+
readonly 'einheitName.square_metre': "Quadratmeter";
|
|
172
|
+
readonly 'einheitName.hectare': "Hektar";
|
|
173
|
+
readonly 'einheitName.millilitre': "Milliliter";
|
|
174
|
+
readonly 'einheitName.litre': "Liter";
|
|
175
|
+
readonly 'einheitName.cubic_metre': "Kubikmeter";
|
|
176
|
+
readonly 'einheitName.kilowatt_hour': "Kilowattstunde";
|
|
177
|
+
readonly 'einheitName.megawatt_hour': "Megawattstunde";
|
|
178
|
+
readonly 'einheitName.gigabyte': "Gigabyte";
|
|
179
|
+
readonly 'einheitName.terabyte': "Terabyte";
|
|
180
|
+
readonly 'einheitName.flat_rate': "Pauschale";
|
|
181
|
+
readonly 'einheitName.person': "Person";
|
|
182
|
+
readonly 'einheitName.licence': "Lizenz";
|
|
183
|
+
readonly 'einheitName.user': "Benutzer";
|
|
184
|
+
readonly 'einheitName.device': "Gerät";
|
|
185
|
+
readonly 'einheitName.session': "Sitzung";
|
|
186
|
+
readonly 'einheitName.trip': "Fahrt";
|
|
187
|
+
readonly 'einheitName.page': "Seite";
|
|
188
|
+
readonly 'einheitName.sheet': "Blatt";
|
|
189
|
+
readonly 'einheitName.package': "Packung";
|
|
190
|
+
readonly 'einheitName.box': "Box";
|
|
191
|
+
readonly 'einheitName.carton': "Karton";
|
|
192
|
+
readonly 'einheitName.bottle': "Flasche";
|
|
193
|
+
readonly 'einheitName.can': "Dose";
|
|
194
|
+
readonly 'einheitName.roll': "Rolle";
|
|
195
|
+
readonly 'einheitName.bag': "Sack";
|
|
196
|
+
readonly 'einheitName.pallet': "Palette";
|
|
197
|
+
};
|
|
198
|
+
export type RechnungTextSchluessel = keyof typeof DE;
|
|
199
|
+
export declare const RECHNUNG_TEXTE: Readonly<Record<InvoiceLanguage, Readonly<Record<RechnungTextSchluessel, string>>>>;
|
|
200
|
+
/** Ein Text der gewaehlten Sprache mit eingesetzten Werten; ein fehlender Wert ist ein Programmierfehler. */
|
|
201
|
+
export declare function rechnungText(sprache: InvoiceLanguage, schluessel: RechnungTextSchluessel, werte?: Readonly<Record<string, string | number>>): string;
|
|
202
|
+
export {};
|