@kreiseck/kasseneck-api 0.30.0 → 0.32.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.
Files changed (48) hide show
  1. package/CHANGELOG.md +146 -0
  2. package/dist/cjs/kasse/index.d.ts +1 -1
  3. package/dist/cjs/kasse/index.js +5 -1
  4. package/dist/cjs/kasse/settings.d.ts +4 -2
  5. package/dist/cjs/kasse/settings.js +5 -2
  6. package/dist/cjs/kasse/texte.d.ts +444 -34
  7. package/dist/cjs/kasse/texte.js +265 -35
  8. package/dist/cjs/models/cancellation.d.ts +18 -5
  9. package/dist/cjs/models/cancellation.js +9 -4
  10. package/dist/cjs/models/payment-errors.js +1 -1
  11. package/dist/cjs/models/receipt-payment.d.ts +2 -1
  12. package/dist/cjs/models/receipt.js +16 -0
  13. package/dist/cjs/payments/hobex-hps/transaction-response.js +28 -28
  14. package/dist/cjs/rechnung/index.d.ts +2 -2
  15. package/dist/cjs/rechnung/index.js +3 -1
  16. package/dist/cjs/rechnung/typen.d.ts +13 -2
  17. package/dist/cjs/rechnung/vertrag.d.ts +5 -0
  18. package/dist/cjs/rechnung/vertrag.js +27 -2
  19. package/dist/esm/kasse/index.d.ts +1 -1
  20. package/dist/esm/kasse/index.js +1 -1
  21. package/dist/esm/kasse/settings.d.ts +4 -2
  22. package/dist/esm/kasse/settings.js +5 -2
  23. package/dist/esm/kasse/texte.d.ts +444 -34
  24. package/dist/esm/kasse/texte.js +262 -34
  25. package/dist/esm/models/cancellation.d.ts +18 -5
  26. package/dist/esm/models/cancellation.js +9 -4
  27. package/dist/esm/models/payment-errors.js +1 -1
  28. package/dist/esm/models/receipt-payment.d.ts +2 -1
  29. package/dist/esm/models/receipt.js +16 -0
  30. package/dist/esm/payments/hobex-hps/transaction-response.js +28 -28
  31. package/dist/esm/rechnung/index.d.ts +2 -2
  32. package/dist/esm/rechnung/index.js +1 -1
  33. package/dist/esm/rechnung/typen.d.ts +13 -2
  34. package/dist/esm/rechnung/vertrag.d.ts +5 -0
  35. package/dist/esm/rechnung/vertrag.js +26 -1
  36. package/fixtures/hobex-hps-codes.json +29 -29
  37. package/fixtures/kasse-settings-standard.json +4 -2
  38. package/fixtures/kasse-texte.json +479 -35
  39. package/fixtures/oberflaeche.json +8 -2
  40. package/fixtures/rechnung-api-beispiele/credit-fehler-rueckgabe.json +26 -0
  41. package/fixtures/rechnung-api-beispiele/credit-rueckgabe.json +23 -0
  42. package/fixtures/rechnung-api-beispiele/issue-fehler-lagerkennung.json +27 -0
  43. package/fixtures/rechnung-api-beispiele/issue-fehler-rueckgabe.json +25 -0
  44. package/fixtures/rechnung-api-beispiele/issue-lager.json +22 -0
  45. package/fixtures/rechnung-api-beispiele/storno-fehler-rueckgabe.json +17 -0
  46. package/fixtures/rechnung-api.schema.json +37 -1
  47. package/fixtures/rechnung-texte.json +1 -1
  48. package/package.json +1 -1
@@ -59,40 +59,40 @@ const tecs_codes_js_1 = require("./tecs-codes.js");
59
59
  /** Der Satz fuer den Bediener je Grund, deutsch. */
60
60
  exports.HPS_REASON_HINTS = {
61
61
  approved: 'Vom Terminal genehmigt.',
62
- approvedWithCondition: 'Das Terminal meldet eine Genehmigung mit Vorbehalt (etwa nur über einen Teilbetrag). Ob und in welcher Höhe belastet wurde, bitte am Terminalbeleg prüfen — nicht erneut kassieren, bevor es geklärt ist.',
62
+ approvedWithCondition: 'Das Terminal meldet eine Genehmigung mit Vorbehalt (etwa nur über einen Teilbetrag). Ob und in welcher Höhe belastet wurde, bitte am Terminalbeleg prüfen – nicht erneut kassieren, bevor es geklärt ist.',
63
63
  aborted: 'Der Vorgang wurde abgebrochen. Es wurde kein Geld bewegt.',
64
- noCard: 'Es wurde keine Karte vorgehalten. Es wurde kein Geld bewegt — bitte erneut versuchen.',
65
- cardReadFailed: 'Die Karte konnte nicht gelesen werden. Es wurde kein Geld bewegt — bitte erneut versuchen, notfalls die Karte stecken statt auflegen.',
66
- cardDeclined: 'Die Karte wurde vom Terminal abgelehnt. Es wurde kein Geld bewegt — bitte eine andere Karte oder Zahlungsart verwenden.',
67
- issuerDeclined: 'Die Zahlung wurde von der Bank abgelehnt. Es wurde kein Geld bewegt — bitte eine andere Karte oder Zahlungsart verwenden.',
68
- cardBlocked: 'Die Karte ist gesperrt. Es wurde kein Geld bewegt — bitte eine andere Karte oder Zahlungsart verwenden.',
69
- cardExpired: 'Die Karte ist abgelaufen. Es wurde kein Geld bewegt — bitte eine andere Karte oder Zahlungsart verwenden.',
70
- insufficientFunds: 'Das Konto ist nicht gedeckt oder das Kartenlimit ist erreicht. Es wurde kein Geld bewegt — bitte eine andere Karte oder Zahlungsart verwenden.',
71
- wrongPin: 'Die PIN war falsch. Es wurde kein Geld bewegt — bitte erneut versuchen.',
72
- pinTriesExceeded: 'Die PIN wurde zu oft falsch eingegeben. Es wurde kein Geld bewegt — bitte eine andere Karte oder Zahlungsart verwenden.',
73
- pinRequired: 'Die Bank verlangt die PIN. Es wurde kein Geld bewegt — bitte erneut versuchen, die Karte stecken und die PIN eingeben.',
64
+ noCard: 'Es wurde keine Karte vorgehalten. Es wurde kein Geld bewegt – bitte erneut versuchen.',
65
+ cardReadFailed: 'Die Karte konnte nicht gelesen werden. Es wurde kein Geld bewegt – bitte erneut versuchen, notfalls die Karte stecken statt auflegen.',
66
+ cardDeclined: 'Die Karte wurde vom Terminal abgelehnt. Es wurde kein Geld bewegt – bitte eine andere Karte oder Zahlungsart verwenden.',
67
+ issuerDeclined: 'Die Zahlung wurde von der Bank abgelehnt. Es wurde kein Geld bewegt – bitte eine andere Karte oder Zahlungsart verwenden.',
68
+ cardBlocked: 'Die Karte ist gesperrt. Es wurde kein Geld bewegt – bitte eine andere Karte oder Zahlungsart verwenden.',
69
+ cardExpired: 'Die Karte ist abgelaufen. Es wurde kein Geld bewegt – bitte eine andere Karte oder Zahlungsart verwenden.',
70
+ insufficientFunds: 'Das Konto ist nicht gedeckt oder das Kartenlimit ist erreicht. Es wurde kein Geld bewegt – bitte eine andere Karte oder Zahlungsart verwenden.',
71
+ wrongPin: 'Die PIN war falsch. Es wurde kein Geld bewegt – bitte erneut versuchen.',
72
+ pinTriesExceeded: 'Die PIN wurde zu oft falsch eingegeben. Es wurde kein Geld bewegt – bitte eine andere Karte oder Zahlungsart verwenden.',
73
+ pinRequired: 'Die Bank verlangt die PIN. Es wurde kein Geld bewegt – bitte erneut versuchen, die Karte stecken und die PIN eingeben.',
74
74
  amountInvalid: 'Das Terminal nimmt diesen Betrag nicht an. Es wurde kein Geld bewegt.',
75
- tipNotSelected: 'Das Trinkgeld wurde nicht rechtzeitig gewählt. Es wurde kein Geld bewegt — bitte erneut versuchen.',
76
- terminalBusy: 'Das Terminal ist noch mit einem anderen Vorgang beschäftigt. Es wurde kein Geld bewegt — kurz warten und erneut versuchen.',
77
- terminalBlocked: 'Das Terminal ist gesperrt. Es wurde kein Geld bewegt — bitte hobex kontaktieren.',
78
- terminalSetup: 'Das Terminal ist nicht richtig eingerichtet. Es wurde kein Geld bewegt — bitte die Terminal-ID in den Einstellungen prüfen, sonst hobex kontaktieren.',
79
- acquirerSetup: 'hobex nimmt dieses Terminal oder diesen Händler so nicht an. Es wurde kein Geld bewegt — bitte hobex kontaktieren.',
80
- terminalFault: 'Das Terminal meldet eine Störung. Es wurde kein Geld bewegt — bitte das Terminal neu starten und erneut versuchen.',
81
- requestRejected: 'Das Terminal hat die Anfrage abgewiesen. Es wurde kein Geld bewegt — tritt das wieder auf, bitte den Support kontaktieren.',
82
- hostRejected: 'hobex hat die Zahlung abgewiesen. Es wurde kein Geld bewegt — bitte erneut versuchen; tritt das wieder auf, hobex kontaktieren.',
83
- hostUnavailable: 'Die Bank oder hobex ist gerade nicht erreichbar. Es wurde kein Geld bewegt — bitte später erneut versuchen oder eine andere Zahlungsart verwenden.',
75
+ tipNotSelected: 'Das Trinkgeld wurde nicht rechtzeitig gewählt. Es wurde kein Geld bewegt – bitte erneut versuchen.',
76
+ terminalBusy: 'Das Terminal ist noch mit einem anderen Vorgang beschäftigt. Es wurde kein Geld bewegt – kurz warten und erneut versuchen.',
77
+ terminalBlocked: 'Das Terminal ist gesperrt. Es wurde kein Geld bewegt – bitte hobex kontaktieren.',
78
+ terminalSetup: 'Das Terminal ist nicht richtig eingerichtet. Es wurde kein Geld bewegt – bitte die Terminal-ID in den Einstellungen prüfen, sonst hobex kontaktieren.',
79
+ acquirerSetup: 'hobex nimmt dieses Terminal oder diesen Händler so nicht an. Es wurde kein Geld bewegt – bitte hobex kontaktieren.',
80
+ terminalFault: 'Das Terminal meldet eine Störung. Es wurde kein Geld bewegt – bitte das Terminal neu starten und erneut versuchen.',
81
+ requestRejected: 'Das Terminal hat die Anfrage abgewiesen. Es wurde kein Geld bewegt – tritt das wieder auf, bitte den Support kontaktieren.',
82
+ hostRejected: 'hobex hat die Zahlung abgewiesen. Es wurde kein Geld bewegt – bitte erneut versuchen; tritt das wieder auf, hobex kontaktieren.',
83
+ hostUnavailable: 'Die Bank oder hobex ist gerade nicht erreichbar. Es wurde kein Geld bewegt – bitte später erneut versuchen oder eine andere Zahlungsart verwenden.',
84
84
  invalidTransaction: 'Das Terminal kennt die ursprüngliche Zahlung nicht. Es wurde kein Geld bewegt.',
85
85
  refundPassword: 'Das Passwort für die Gutschrift war falsch oder wurde nicht eingegeben. Es wurde nichts ausgezahlt.',
86
- refundDisabled: 'Gutschriften sind an diesem Terminal abgeschaltet. Es wurde nichts ausgezahlt — bitte hobex kontaktieren.',
86
+ refundDisabled: 'Gutschriften sind an diesem Terminal abgeschaltet. Es wurde nichts ausgezahlt – bitte hobex kontaktieren.',
87
87
  refundRejected: 'Die Gutschrift wurde abgewiesen (Betrag zu hoch, bereits erstattet oder zu viele Versuche). Es wurde nichts ausgezahlt.',
88
- hostTimeoutReversed: 'hobex hat nicht rechtzeitig geantwortet, das Terminal hat den Vorgang selbst storniert. Es wird kein Geld bewegt — bitte erneut versuchen.',
89
- reversedByHost: 'Die Zahlung wurde wegen einer Störung automatisch storniert. Es wurde kein Geld bewegt — bitte erneut versuchen.',
90
- voidedAfterHostFault: 'hobex hat nicht sauber geantwortet, die Zahlung wurde deshalb sicherheitshalber storniert. Es wurde kein Geld bewegt — bitte erneut versuchen.',
91
- hostFault: 'Die Verbindung zwischen Terminal und hobex ist gestört. Ob die Karte belastet wurde, weiß das Terminal nicht — bitte nicht erneut kassieren, bevor es geklärt ist.',
92
- hostTimeout: 'hobex hat nicht rechtzeitig geantwortet. Ob die Karte belastet wurde, weiß das Terminal nicht — bitte nicht erneut kassieren, bevor es geklärt ist.',
93
- internalError: 'Das Terminal meldet einen internen Fehler. Ob die Karte belastet wurde, ist unklar — bitte nicht erneut kassieren, bevor es geklärt ist.',
88
+ hostTimeoutReversed: 'hobex hat nicht rechtzeitig geantwortet, das Terminal hat den Vorgang selbst storniert. Es wird kein Geld bewegt – bitte erneut versuchen.',
89
+ reversedByHost: 'Die Zahlung wurde wegen einer Störung automatisch storniert. Es wurde kein Geld bewegt – bitte erneut versuchen.',
90
+ voidedAfterHostFault: 'hobex hat nicht sauber geantwortet, die Zahlung wurde deshalb sicherheitshalber storniert. Es wurde kein Geld bewegt – bitte erneut versuchen.',
91
+ hostFault: 'Die Verbindung zwischen Terminal und hobex ist gestört. Ob die Karte belastet wurde, weiß das Terminal nicht – bitte nicht erneut kassieren, bevor es geklärt ist.',
92
+ hostTimeout: 'hobex hat nicht rechtzeitig geantwortet. Ob die Karte belastet wurde, weiß das Terminal nicht – bitte nicht erneut kassieren, bevor es geklärt ist.',
93
+ internalError: 'Das Terminal meldet einen internen Fehler. Ob die Karte belastet wurde, ist unklar – bitte nicht erneut kassieren, bevor es geklärt ist.',
94
94
  canceled: 'Die Zahlung ist aufgehoben.',
95
- cancelDenied: 'Die Zahlung lässt sich nicht mehr aufheben und bleibt belastet — bitte stattdessen eine Gutschrift ausführen.',
95
+ cancelDenied: 'Die Zahlung lässt sich nicht mehr aufheben und bleibt belastet – bitte stattdessen eine Gutschrift ausführen.',
96
96
  originalDeclined: 'Die ursprüngliche Zahlung war abgelehnt; es gibt nichts aufzuheben.',
97
97
  notAbortable: 'Der Vorgang ist bereits abgeschlossen und lässt sich nicht mehr abbrechen.',
98
98
  noStatement: 'Das Terminal hat zu diesem Vorgang keine Auskunft.',
@@ -14,8 +14,8 @@ export { createRechnungApi, type RechnungApi, type RechnungApiOptions } from './
14
14
  export { rechnungKeyAuth, type RechnungKeyAuthOptions } from './auth.js';
15
15
  export { istRechnungFehler, rechnungFehlerCode, rechnungFeldFehler, type RechnungFeldFehler, } from './fehler.js';
16
16
  export { cancelInvoice, createCreditNote, createCustomer, getCustomer, getInvoice, getInvoicePdf, getInvoiceSetupStatus, getInvoiceXml, issueInvoice, listBrands, listInvoices, previewInvoice, 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, InvoicePreview, InvoiceRateTotals, IssueInvoiceRequest, IssueResult, PaymentInput, PreviewResult, RecordPaymentRequest, RecordPaymentResult, } from './typen.js';
17
+ export type { Brand, CancelInvoiceRequest, CancelResult, CreditNoteItemInput, CreditNoteRequest, CreditNoteResult, Customer, CustomerInput, CustomerPage, CustomerSearch, EInvoiceStatus, Invoice, InvoiceDetail, InvoiceItem, InvoiceItemInput, InvoiceListQuery, InvoicePage, InvoiceRecipient, InvoiceSetupGap, InvoiceSetupStatus, InvoiceTotals, InvoiceNotice, InvoicePayment, InvoicePreview, InvoiceRateTotals, IssueInvoiceRequest, IssueResult, PaymentInput, PreviewResult, RecordPaymentRequest, RecordPaymentResult, } from './typen.js';
18
18
  export { RECHNUNG_TEXTE, rechnungText, type RechnungTextSchluessel } from './texte.js';
19
19
  export { rechnungSummen, STEUERFREIE_FAELLE, type SummenPosition } from './summen.js';
20
20
  export { anteiligerPreis, BETRAG_GRENZE_CENTS, positionAusEuro, preisText, RechenFehler, rechnungRechnen, rund, satzSchluessel, satzText, type RechenErgebnis, type RechenFehlerCode, type RechenOptionen, type RechenPosition, type SatzSumme, type Umwandlung, type UmwandlungsGrund, type ZeilenBetrag, } from './rechnen.js';
21
- 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, ITEM_KINDS, REVERSE_CHARGE_REASONS, INVOICE_NOTICE_CODES, INVOICE_UNITS, RECHNUNG_EINHEITEN_CODES, INVOICE_SETUP_REQUIREMENTS, KUNDE_FELDER, POSITION_FELDER, POSITION_PREIS_GENAU_EINS, 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 ItemKind, type ReverseChargeReason, type InvoiceNoticeCode, type InvoiceUnit, type InvoiceSetupRequirement, type Format, type Feld, } from './vertrag.js';
21
+ 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, ITEM_KINDS, REVERSE_CHARGE_REASONS, INVOICE_NOTICE_CODES, INVOICE_UNITS, RECHNUNG_EINHEITEN_CODES, INVOICE_SETUP_REQUIREMENTS, KUNDE_FELDER, POSITION_FELDER, GUTSCHRIFT_POSITION_FELDER, RETURN_DISPOSITIONS, POSITION_PREIS_GENAU_EINS, 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 ItemKind, type ReverseChargeReason, type InvoiceNoticeCode, type InvoiceUnit, type ReturnDisposition, type InvoiceSetupRequirement, type Format, type Feld, } from './vertrag.js';
@@ -13,7 +13,7 @@
13
13
  */
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.INVOICE_UNITS = exports.INVOICE_NOTICE_CODES = exports.REVERSE_CHARGE_REASONS = exports.ITEM_KINDS = 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.satzText = exports.satzSchluessel = exports.rund = exports.rechnungRechnen = exports.RechenFehler = exports.preisText = exports.positionAusEuro = exports.BETRAG_GRENZE_CENTS = exports.anteiligerPreis = exports.STEUERFREIE_FAELLE = exports.rechnungSummen = exports.rechnungText = exports.RECHNUNG_TEXTE = exports.updateCustomer = exports.searchCustomers = exports.recordInvoicePayment = exports.previewInvoice = 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
- exports.RECHNUNG_MINDESTENS_EINS = exports.RECHNUNG_GENAU_EINS = exports.RECHNUNG_ANFRAGEN = exports.POSITION_PREIS_GENAU_EINS = exports.POSITION_FELDER = exports.KUNDE_FELDER = exports.INVOICE_SETUP_REQUIREMENTS = exports.RECHNUNG_EINHEITEN_CODES = void 0;
16
+ exports.RECHNUNG_MINDESTENS_EINS = exports.RECHNUNG_GENAU_EINS = exports.RECHNUNG_ANFRAGEN = exports.POSITION_PREIS_GENAU_EINS = exports.RETURN_DISPOSITIONS = exports.GUTSCHRIFT_POSITION_FELDER = exports.POSITION_FELDER = exports.KUNDE_FELDER = exports.INVOICE_SETUP_REQUIREMENTS = exports.RECHNUNG_EINHEITEN_CODES = void 0;
17
17
  var api_js_1 = require("./api.js");
18
18
  Object.defineProperty(exports, "createRechnungApi", { enumerable: true, get: function () { return api_js_1.createRechnungApi; } });
19
19
  var auth_js_1 = require("./auth.js");
@@ -76,6 +76,8 @@ Object.defineProperty(exports, "RECHNUNG_EINHEITEN_CODES", { enumerable: true, g
76
76
  Object.defineProperty(exports, "INVOICE_SETUP_REQUIREMENTS", { enumerable: true, get: function () { return vertrag_js_1.INVOICE_SETUP_REQUIREMENTS; } });
77
77
  Object.defineProperty(exports, "KUNDE_FELDER", { enumerable: true, get: function () { return vertrag_js_1.KUNDE_FELDER; } });
78
78
  Object.defineProperty(exports, "POSITION_FELDER", { enumerable: true, get: function () { return vertrag_js_1.POSITION_FELDER; } });
79
+ Object.defineProperty(exports, "GUTSCHRIFT_POSITION_FELDER", { enumerable: true, get: function () { return vertrag_js_1.GUTSCHRIFT_POSITION_FELDER; } });
80
+ Object.defineProperty(exports, "RETURN_DISPOSITIONS", { enumerable: true, get: function () { return vertrag_js_1.RETURN_DISPOSITIONS; } });
79
81
  Object.defineProperty(exports, "POSITION_PREIS_GENAU_EINS", { enumerable: true, get: function () { return vertrag_js_1.POSITION_PREIS_GENAU_EINS; } });
80
82
  Object.defineProperty(exports, "RECHNUNG_ANFRAGEN", { enumerable: true, get: function () { return vertrag_js_1.RECHNUNG_ANFRAGEN; } });
81
83
  Object.defineProperty(exports, "RECHNUNG_GENAU_EINS", { enumerable: true, get: function () { return vertrag_js_1.RECHNUNG_GENAU_EINS; } });
@@ -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, InvoiceLanguage, InvoiceNoticeCode, ItemKind, ReverseChargeReason, InvoicePaymentMethod, InvoiceUnit, InvoiceSetupRequirement, InvoiceListStatus, PriceMode, TaxScheme, VatRatePercent } from './vertrag.js';
8
+ import type { CreditNoteReason, CustomerType, DocType, InvoiceLanguage, InvoiceNoticeCode, ItemKind, ReverseChargeReason, InvoicePaymentMethod, InvoiceUnit, ReturnDisposition, InvoiceSetupRequirement, InvoiceListStatus, PriceMode, TaxScheme, VatRatePercent } from './vertrag.js';
9
9
  export interface CustomerInput {
10
10
  type: CustomerType;
11
11
  name: string;
@@ -86,6 +86,13 @@ export interface InvoiceItemInput {
86
86
  vatRate: VatRatePercent;
87
87
  /** Zeilenrabatt in Prozent, hoechstens zwei Nachkommastellen. */
88
88
  discountPct?: number;
89
+ /** Artikel aus dem Artikelstamm; bestandsgefuehrt bucht das Ausstellen ihn vom Lager ab. */
90
+ articleId?: string;
91
+ }
92
+ /** Eine Gutschriftsposition: wie eine Rechnungsposition, dazu die Rueckgabe-Wahl. */
93
+ export interface CreditNoteItemInput extends InvoiceItemInput {
94
+ /** Wohin die Ware dieser Position geht; fehlt = Vorgabe des Aufrufs bzw. `restock`. */
95
+ returnDisposition?: ReturnDisposition;
89
96
  }
90
97
  export interface IssueInvoiceRequest {
91
98
  /** Pflicht: dieselbe Anfrage mit demselben Schluessel erzeugt nie eine zweite Rechnung. */
@@ -115,6 +122,8 @@ export interface IssueInvoiceRequest {
115
122
  language?: InvoiceLanguage;
116
123
  /** Marke (Kennung aus `listBrands`); sonst die Standardmarke. Unbekannt = `brand_not_found`. */
117
124
  brandId?: string;
125
+ /** Lager-Standort fuer bestandsgefuehrte Positionen; sonst der Standard-Standort. */
126
+ stockLocationId?: string;
118
127
  /**
119
128
  * Schon bezahlt (Shop kassiert online, Rechnung folgt). Die Zahlung entsteht
120
129
  * in derselben Transaktion wie das Festschreiben: das PDF traegt dann keine
@@ -175,9 +184,11 @@ export interface CancelInvoiceRequest {
175
184
  invoiceId: string;
176
185
  reason: CreditNoteReason;
177
186
  note?: string;
187
+ /** Wohin die Ware bestandsgefuehrter Positionen geht; fehlt = `restock`. */
188
+ returnDisposition?: ReturnDisposition;
178
189
  }
179
190
  export interface CreditNoteRequest extends CancelInvoiceRequest {
180
- items: InvoiceItemInput[];
191
+ items: CreditNoteItemInput[];
181
192
  }
182
193
  /**
183
194
  * Summen einer Rechnung in Cent, **immer positiv** — auch bei einer Gutschrift
@@ -228,6 +228,9 @@ export type Feld = {
228
228
  schluesselMuster: string;
229
229
  wertMax: number;
230
230
  };
231
+ /** Rueckgabe-Wahl einer Gutschrift (Lager-Kern Stufe 2), wie im Backend RUECKGABE_API. */
232
+ export declare const RETURN_DISPOSITIONS: readonly ["restock", "defective", "disposed"];
233
+ export type ReturnDisposition = (typeof RETURN_DISPOSITIONS)[number];
231
234
  /** Kunde, wie das Fremdsystem ihn schickt. `vatId` ist die UID-Nummer. */
232
235
  export declare const KUNDE_FELDER: Readonly<Record<string, Feld>>;
233
236
  /**
@@ -243,6 +246,8 @@ export declare const KUNDE_FELDER: Readonly<Record<string, Feld>>;
243
246
  export declare const POSITION_FELDER: Readonly<Record<string, Feld>>;
244
247
  /** Genau einer der beiden Preise je Position (§ 9.1). */
245
248
  export declare const POSITION_PREIS_GENAU_EINS: readonly (readonly string[])[];
249
+ /** Gutschriftsposition: Rechnungsposition plus Rueckgabe-Wahl (an der Rechnung weist der Server sie ab). */
250
+ export declare const GUTSCHRIFT_POSITION_FELDER: Readonly<Record<string, Feld>>;
246
251
  /**
247
252
  * Eine Zahlung zu einer Rechnung. Ohne `amountCents` gilt der volle
248
253
  * Bruttobetrag, ohne `paidAt` der heutige Wiener Tag. `reference` ist die
@@ -19,7 +19,7 @@
19
19
  * Nummer, Summen — ist bewusst **nicht** setzbar.
20
20
  */
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.RECHNUNG_MINDESTENS_EINS = exports.RECHNUNG_GENAU_EINS = exports.RECHNUNG_ANFRAGEN = exports.PAYMENT_FELDER = exports.POSITION_PREIS_GENAU_EINS = 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.ITEM_KINDS = exports.REVERSE_CHARGE_REASONS = exports.TAX_SCHEMES = exports.CREDIT_NOTE_REASONS = exports.INVOICE_ERROR_CODES = exports.RECHNUNG_AUFRUFE = exports.RECHNUNG_VERTRAG_VERSION = void 0;
22
+ exports.RECHNUNG_MINDESTENS_EINS = exports.RECHNUNG_GENAU_EINS = exports.RECHNUNG_ANFRAGEN = exports.PAYMENT_FELDER = exports.GUTSCHRIFT_POSITION_FELDER = exports.POSITION_PREIS_GENAU_EINS = exports.POSITION_FELDER = exports.KUNDE_FELDER = exports.RETURN_DISPOSITIONS = 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.ITEM_KINDS = exports.REVERSE_CHARGE_REASONS = exports.TAX_SCHEMES = exports.CREDIT_NOTE_REASONS = exports.INVOICE_ERROR_CODES = exports.RECHNUNG_AUFRUFE = exports.RECHNUNG_VERTRAG_VERSION = void 0;
23
23
  exports.RECHNUNG_VERTRAG_VERSION = 1;
24
24
  exports.RECHNUNG_AUFRUFE = [
25
25
  'createCustomer',
@@ -309,6 +309,9 @@ exports.INVOICE_SETUP_REQUIREMENTS = [
309
309
  const text = (max, pflicht = false, extra = {}) => ({ typ: 'string', pflicht, max, ...(pflicht && extra.min === undefined ? { min: 1 } : {}), ...extra });
310
310
  const idempotencyKey = (pflicht) => ({ typ: 'string', pflicht, min: 1, max: 120 });
311
311
  const id = { typ: 'string', pflicht: false, min: 1, max: 128 };
312
+ /** Rueckgabe-Wahl einer Gutschrift (Lager-Kern Stufe 2), wie im Backend RUECKGABE_API. */
313
+ exports.RETURN_DISPOSITIONS = ['restock', 'defective', 'disposed'];
314
+ const rueckgabe = { typ: 'enum', pflicht: false, werte: exports.RETURN_DISPOSITIONS };
312
315
  const idPflicht = { typ: 'string', pflicht: true, min: 1, max: 128 };
313
316
  const datum = (pflicht = false) => ({ typ: 'string', pflicht, min: 10, max: 10, format: 'date' });
314
317
  const limit = { typ: 'integer', pflicht: false, min: 1, max: 100 };
@@ -359,6 +362,13 @@ exports.POSITION_FELDER = Object.freeze({
359
362
  unitPriceMicros: { typ: 'integer', pflicht: false, min: 0, max: 1_000_000_000_000 },
360
363
  vatRate: { typ: 'enum', pflicht: true, werte: exports.VAT_RATES },
361
364
  discountPct: { typ: 'number', pflicht: false, min: 0, max: 100, nachkomma: 2 },
365
+ /**
366
+ * Artikel aus dem Artikelstamm (Lager-Kern Stufe 2): ist er bestandsgefuehrt
367
+ * und das Modul Lager aktiv, bucht das Ausstellen ihn ab -- danach, die
368
+ * Rechnung scheitert nie am Lager. Kein „/“, nicht „.“, „..“ oder „__…__“
369
+ * (prueft der Server, `validation`).
370
+ */
371
+ articleId: id,
362
372
  });
363
373
  /** Genau einer der beiden Preise je Position (§ 9.1). */
364
374
  exports.POSITION_PREIS_GENAU_EINS = Object.freeze([
@@ -374,6 +384,17 @@ const positionen = {
374
384
  typ: 'object', pflicht: true, felder: exports.POSITION_FELDER, genauEins: exports.POSITION_PREIS_GENAU_EINS,
375
385
  },
376
386
  };
387
+ /** Gutschriftsposition: Rechnungsposition plus Rueckgabe-Wahl (an der Rechnung weist der Server sie ab). */
388
+ exports.GUTSCHRIFT_POSITION_FELDER = Object.freeze({ ...exports.POSITION_FELDER, returnDisposition: rueckgabe });
389
+ const gutschriftPositionen = {
390
+ typ: 'list',
391
+ pflicht: true,
392
+ min: 1,
393
+ max: 500,
394
+ eintrag: {
395
+ typ: 'object', pflicht: true, felder: exports.GUTSCHRIFT_POSITION_FELDER, genauEins: exports.POSITION_PREIS_GENAU_EINS,
396
+ },
397
+ };
377
398
  /**
378
399
  * Eine Zahlung zu einer Rechnung. Ohne `amountCents` gilt der volle
379
400
  * Bruttobetrag, ohne `paidAt` der heutige Wiener Tag. `reference` ist die
@@ -441,6 +462,8 @@ exports.RECHNUNG_ANFRAGEN = Object.freeze({
441
462
  language: { typ: 'enum', pflicht: false, werte: exports.INVOICE_LANGUAGES },
442
463
  /** Marke (Kennung aus `listBrands`); sonst die Standardmarke. */
443
464
  brandId: id,
465
+ /** Lagerstandort (Kennung), von dem bestandsgefuehrte Positionen abbuchen. */
466
+ stockLocationId: id,
444
467
  /**
445
468
  * Schon bezahlt: die Zahlung entsteht in **derselben** Transaktion wie das
446
469
  * Festschreiben. Sonst gaebe es einen Moment, in dem die Rechnung offen ist
@@ -459,13 +482,15 @@ exports.RECHNUNG_ANFRAGEN = Object.freeze({
459
482
  invoiceId: idPflicht,
460
483
  reason: { typ: 'enum', pflicht: true, werte: exports.CREDIT_NOTE_REASONS },
461
484
  note: text(2000),
485
+ returnDisposition: rueckgabe,
462
486
  },
463
487
  createCreditNote: {
464
488
  idempotencyKey: idempotencyKey(true),
465
489
  invoiceId: idPflicht,
466
490
  reason: { typ: 'enum', pflicht: true, werte: exports.CREDIT_NOTE_REASONS },
467
491
  note: text(2000),
468
- items: positionen,
492
+ returnDisposition: rueckgabe,
493
+ items: gutschriftPositionen,
469
494
  },
470
495
  getInvoice: {
471
496
  invoiceId: id,
@@ -10,4 +10,4 @@ export { verteileRabatt } from '../receipt/discount.js';
10
10
  export { cancelScopeOf, receiptsScopeOf, type RegisterScope, type RegisterUserPerms } from '../register/pairing.js';
11
11
  export { type NetzDrucker, type DruckJob, type DruckJobStatus, type CreatePrintJobOptions, listMyPrinters, createPrintJob, getPrintJob } from './drucker.js';
12
12
  export { listMyTipRecipients } from './trinkgeld.js';
13
- export { MELDUNGEN, FEHLERREGELN, meldung, meldungGiltFuer, BELEG_MAIL_FEHLER, belegMailFehler, type Meldung, type MeldungsSchluessel, type Fehlerart, type Seite, type BelegMailFehlercode, } from './texte.js';
13
+ export { MELDUNGEN, FEHLERREGELN, meldung, meldungGiltFuer, BELEG_MAIL_FEHLER, belegMailFehler, STORNO_ZAHLUNG_FEHLER, stornoZahlungFehler, BESCHRIFTUNGEN, beschriftung, type Meldung, type MeldungsSchluessel, type Fehlerart, type Seite, type BelegMailFehlercode, type StornoZahlungFehlercode, type BeschriftungsSchluessel, } from './texte.js';
@@ -15,4 +15,4 @@ export { cancelScopeOf, receiptsScopeOf } from '../register/pairing.js';
15
15
  export { listMyPrinters, createPrintJob, getPrintJob } from './drucker.js';
16
16
  export { listMyTipRecipients } from './trinkgeld.js';
17
17
  // Was die Kasse selbst sagt — ein Katalog fuer Browser-Kasse und App.
18
- export { MELDUNGEN, FEHLERREGELN, meldung, meldungGiltFuer, BELEG_MAIL_FEHLER, belegMailFehler, } from './texte.js';
18
+ export { MELDUNGEN, FEHLERREGELN, meldung, meldungGiltFuer, BELEG_MAIL_FEHLER, belegMailFehler, STORNO_ZAHLUNG_FEHLER, stornoZahlungFehler, BESCHRIFTUNGEN, beschriftung, } from './texte.js';
@@ -156,6 +156,8 @@ export interface KasseSettingsBetrieb {
156
156
  rueckgeld: boolean;
157
157
  schnellbar: boolean;
158
158
  kassierenModus: KasseKassierenModus;
159
+ /** Getrennt zahlen: dritter Knopf neben Bar und Karte, ein Beleg mit mehreren Zahlungen. */
160
+ zahlGetrennt: boolean;
159
161
  /** Trinkgeld-Chips in Prozent (eine Nachkommastelle, max 5, eindeutig, Reihenfolge des Chefs). */
160
162
  tgChips: number[];
161
163
  /** Rabatt-Chips in Prozent — dieselben Regeln wie tgChips, vom Chef einstellbar. */
@@ -168,10 +170,10 @@ export interface KasseSettingsBetrieb {
168
170
  hinweise: boolean;
169
171
  }
170
172
  /** Aktionen der Kasse, die eine Taste bekommen koennen. */
171
- export declare const KASSE_TASTEN_AKTIONEN: readonly ["kassieren", "abschliessen", "abbrechen", "frei", "bar", "karte", "passend", "belege", "letzteZurueck", "einstellungen", "abmelden", "trinkgeld", "vollbild", "gegebenLeeren", "korbLeeren"];
173
+ export declare const KASSE_TASTEN_AKTIONEN: readonly ["kassieren", "abschliessen", "abbrechen", "frei", "bar", "karte", "passend", "belege", "letzteZurueck", "einstellungen", "abmelden", "trinkgeld", "vollbild", "gegebenLeeren", "korbLeeren", "getrennt"];
172
174
  export type KasseTastenAktion = typeof KASSE_TASTEN_AKTIONEN[number];
173
175
  /** Kurzer Name, damit alle Enum-Listen gleich heissen; der alte bleibt gueltig. */
174
- export declare const TASTEN_AKTIONEN: readonly ["kassieren", "abschliessen", "abbrechen", "frei", "bar", "karte", "passend", "belege", "letzteZurueck", "einstellungen", "abmelden", "trinkgeld", "vollbild", "gegebenLeeren", "korbLeeren"];
176
+ export declare const TASTEN_AKTIONEN: readonly ["kassieren", "abschliessen", "abbrechen", "frei", "bar", "karte", "passend", "belege", "letzteZurueck", "einstellungen", "abmelden", "trinkgeld", "vollbild", "gegebenLeeren", "korbLeeren", "getrennt"];
175
177
  /** Tastenkarte: Aktion -> Tasten (`Mod+F`, `Enter`, `Escape`, `F5` ...; `Mod` = ⌘ auf dem Mac, Strg sonst). */
176
178
  export type KasseTastenkarte = Record<KasseTastenAktion, string[]>;
177
179
  export declare const KASSE_TASTEN_STANDARD: Readonly<KasseTastenkarte>;
@@ -88,7 +88,7 @@ export const WZ_SKALA = ['S', 'M', 'L', 'XL'];
88
88
  /** Wie lange die Fertig-Seite stehen bleibt, in Sekunden; 0 = bis zum Tippen. */
89
89
  export const FERTIG_SEKUNDEN = [0, 3, 5, 10, 15, 30, 60];
90
90
  /** Aktionen der Kasse, die eine Taste bekommen koennen. */
91
- export const KASSE_TASTEN_AKTIONEN = ['kassieren', 'abschliessen', 'abbrechen', 'frei', 'bar', 'karte', 'passend', 'belege', 'letzteZurueck', 'einstellungen', 'abmelden', 'trinkgeld', 'vollbild', 'gegebenLeeren', 'korbLeeren'];
91
+ export const KASSE_TASTEN_AKTIONEN = ['kassieren', 'abschliessen', 'abbrechen', 'frei', 'bar', 'karte', 'passend', 'belege', 'letzteZurueck', 'einstellungen', 'abmelden', 'trinkgeld', 'vollbild', 'gegebenLeeren', 'korbLeeren', 'getrennt'];
92
92
  /** Kurzer Name, damit alle Enum-Listen gleich heissen; der alte bleibt gueltig. */
93
93
  export const TASTEN_AKTIONEN = KASSE_TASTEN_AKTIONEN;
94
94
  export const KASSE_TASTEN_STANDARD = Object.freeze({
@@ -110,6 +110,9 @@ export const KASSE_TASTEN_STANDARD = Object.freeze({
110
110
  // verschiedenen Momenten (Korb vor dem Kassieren, Gegeben-Feld darin) —
111
111
  // der Verteiler laesst die nicht zustaendige Aktion durchfallen.
112
112
  korbLeeren: ['Mod+C'],
113
+ // Bewusst ohne Vorgabe: jede freie Mod-Taste ist in irgendeinem Browser
114
+ // belegt oder am Geraet unerprobt. Der Chef vergibt sie, wenn er sie braucht.
115
+ getrennt: [],
113
116
  });
114
117
  export const KASSE_BETRIEB_STANDARD = Object.freeze({
115
118
  // Das Petrol der Marke: die Aktionsfarbe des Design-Systems (Rolle `brand`).
@@ -124,7 +127,7 @@ export const KASSE_BETRIEB_STANDARD = Object.freeze({
124
127
  menge: 'x', notiz: false, suche: false, rabatt: 'aus',
125
128
  zahlBar: true, zahlKarte: false, kartenanbieter: 'keiner', trinkgeld: false, tgModus: 'beides',
126
129
  tgStufen: { 5: true, 10: true, 15: false, 20: false }, tgChips: [5, 10], tgSplit: true, rueckgeld: true,
127
- schnellbar: false, kassierenModus: 'seite',
130
+ schnellbar: false, kassierenModus: 'panel', zahlGetrennt: false,
128
131
  // 'fragen' = Fertig-Seite bietet QR und Bon an — sicherster Standard.
129
132
  logoBild: '', wzSeite: 'mitte', wzPos: 50, wzPosV: 50, wzStaerke: 6, logoSkala: 'M', wzSkala: 'M',
130
133
  glas: true, hinweise: true,