@kreiseck/kasseneck-api 0.30.0 → 1.0.0-rc.1
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 +433 -0
- package/README.de.md +11 -7
- package/README.md +486 -126
- package/dist/cjs/client/api.d.ts +7 -6
- package/dist/cjs/client/api.js +2 -2
- package/dist/cjs/client/aufrufe.d.ts +29 -5
- package/dist/cjs/client/aufrufe.js +114 -2
- package/dist/cjs/client/auth.d.ts +2 -0
- package/dist/cjs/client/auth.js +17 -1
- package/dist/cjs/client/cashregisters.d.ts +1 -1
- package/dist/cjs/client/cashregisters.js +2 -2
- package/dist/cjs/client/errors.d.ts +78 -19
- package/dist/cjs/client/errors.js +107 -28
- package/dist/cjs/client/fehlercodes.d.ts +9 -0
- package/dist/cjs/client/fehlercodes.js +36 -0
- package/dist/cjs/client/index.d.ts +5 -5
- package/dist/cjs/client/index.js +11 -3
- package/dist/cjs/client/receipts.d.ts +131 -124
- package/dist/cjs/client/receipts.js +214 -137
- package/dist/cjs/client/reports.d.ts +26 -4
- package/dist/cjs/client/reports.js +37 -4
- package/dist/cjs/client/status.d.ts +3 -3
- package/dist/cjs/client/status.js +7 -7
- package/dist/cjs/client/transport.d.ts +56 -4
- package/dist/cjs/client/transport.js +222 -25
- package/dist/cjs/enums/vat-rate.d.ts +2 -2
- package/dist/cjs/enums/vat-rate.js +1 -1
- package/dist/cjs/index.d.ts +4 -3
- package/dist/cjs/index.js +42 -13
- package/dist/{esm/rechnung → cjs/invoice}/api.d.ts +18 -17
- package/dist/cjs/{rechnung → invoice}/api.js +6 -6
- package/dist/{esm/rechnung → cjs/invoice}/auth.d.ts +2 -2
- package/dist/cjs/{rechnung → invoice}/auth.js +5 -5
- package/dist/{esm/rechnung/rechnen.d.ts → cjs/invoice/calc.d.ts} +27 -27
- package/dist/cjs/{rechnung/rechnen.js → invoice/calc.js} +54 -54
- package/dist/{esm/rechnung → cjs/invoice}/endpunkte.d.ts +23 -21
- package/dist/cjs/{rechnung → invoice}/endpunkte.js +52 -42
- package/dist/cjs/invoice/fehler.d.ts +31 -0
- package/dist/cjs/invoice/fehler.js +39 -0
- package/dist/cjs/invoice/index.d.ts +21 -0
- package/dist/cjs/invoice/index.js +86 -0
- package/dist/cjs/{rechnung → invoice}/summen.d.ts +12 -12
- package/dist/cjs/{rechnung → invoice}/summen.js +14 -14
- package/dist/cjs/invoice/texte.d.ts +224 -0
- package/dist/cjs/invoice/texte.js +425 -0
- package/dist/{esm/rechnung → cjs/invoice}/typen.d.ts +32 -11
- package/dist/{esm/rechnung → cjs/invoice}/vertrag.d.ts +97 -71
- package/dist/cjs/{rechnung → invoice}/vertrag.js +144 -82
- package/dist/cjs/models/cancellation.d.ts +53 -21
- package/dist/cjs/models/cancellation.js +94 -42
- package/dist/cjs/models/hobex-receipt.d.ts +3 -3
- package/dist/cjs/models/hobex-receipt.js +35 -35
- package/dist/cjs/models/index.d.ts +6 -5
- package/dist/cjs/models/index.js +22 -2
- package/dist/cjs/models/payment-errors.d.ts +32 -15
- package/dist/cjs/models/payment-errors.js +80 -32
- package/dist/cjs/models/receipt-company.d.ts +6 -5
- package/dist/cjs/models/receipt-company.js +4 -4
- package/dist/cjs/models/receipt-email.d.ts +32 -18
- package/dist/cjs/models/receipt-email.js +69 -24
- package/dist/cjs/models/receipt-errors.d.ts +39 -0
- package/dist/cjs/models/receipt-errors.js +94 -0
- package/dist/cjs/models/receipt-item.d.ts +9 -1
- package/dist/cjs/models/receipt-item.js +3 -0
- package/dist/cjs/models/receipt-payment.d.ts +2 -1
- package/dist/cjs/models/receipt-summary.d.ts +10 -4
- package/dist/cjs/models/receipt-summary.js +10 -4
- package/dist/cjs/models/receipt.d.ts +31 -2
- package/dist/cjs/models/receipt.js +28 -1
- package/dist/cjs/models/voucher.d.ts +7 -6
- package/dist/cjs/models/voucher.js +2 -7
- package/dist/cjs/partner/ablauf.d.ts +10 -10
- package/dist/cjs/partner/ablauf.js +29 -29
- package/dist/cjs/partner/api.d.ts +26 -23
- package/dist/cjs/partner/api.js +11 -13
- package/dist/cjs/partner/auth.d.ts +1 -1
- package/dist/cjs/partner/auth.js +2 -2
- package/dist/cjs/partner/betrieb.d.ts +7 -7
- package/dist/cjs/partner/betrieb.js +10 -10
- package/dist/cjs/partner/endpunkte.d.ts +27 -14
- package/dist/cjs/partner/endpunkte.js +80 -39
- package/dist/cjs/partner/fehler.d.ts +60 -30
- package/dist/cjs/partner/fehler.js +99 -43
- package/dist/cjs/partner/index.d.ts +13 -12
- package/dist/cjs/partner/index.js +35 -22
- package/dist/cjs/partner/secret.d.ts +3 -3
- package/dist/cjs/partner/secret.js +6 -6
- package/dist/cjs/partner/typen.d.ts +129 -71
- package/dist/cjs/partner/typen.js +76 -3
- package/dist/cjs/partner/webhook-signatur.d.ts +2 -2
- package/dist/cjs/partner/webhook-signatur.js +12 -12
- package/dist/cjs/partner/webhooks.d.ts +60 -32
- package/dist/cjs/partner/webhooks.js +40 -34
- package/dist/cjs/payments/hobex-hps/transaction-response.js +28 -28
- package/dist/cjs/payments/hobex.d.ts +2 -2
- package/dist/cjs/payments/hobex.js +4 -4
- package/dist/cjs/payments/stripe.d.ts +2 -2
- package/dist/cjs/payments/stripe.js +4 -4
- package/dist/cjs/pos/artikel.d.ts +90 -0
- package/dist/cjs/pos/artikel.js +89 -0
- package/dist/cjs/pos/client.d.ts +27 -0
- package/dist/cjs/pos/client.js +144 -0
- package/dist/cjs/pos/drucker.d.ts +86 -0
- package/dist/cjs/pos/drucker.js +78 -0
- package/dist/cjs/pos/errors.d.ts +36 -0
- package/dist/cjs/pos/errors.js +95 -0
- package/dist/cjs/pos/index.d.ts +15 -0
- package/dist/cjs/pos/index.js +102 -0
- package/dist/cjs/pos/settings.d.ts +313 -0
- package/dist/cjs/pos/settings.js +376 -0
- package/dist/cjs/pos/texte.d.ts +883 -0
- package/dist/cjs/pos/texte.js +489 -0
- package/dist/cjs/{kasse → pos}/trinkgeld.d.ts +1 -1
- package/dist/cjs/{kasse → pos}/trinkgeld.js +2 -2
- package/dist/cjs/printing/escpos.d.ts +29 -29
- package/dist/cjs/printing/escpos.js +61 -61
- package/dist/cjs/printing/index.d.ts +2 -2
- package/dist/cjs/printing/index.js +17 -17
- package/dist/cjs/printing/qr-groesse.d.ts +38 -38
- package/dist/cjs/printing/qr-groesse.js +47 -47
- package/dist/cjs/printing/webusb.d.ts +2 -2
- package/dist/cjs/printing/webusb.js +4 -4
- package/dist/cjs/react/index.d.ts +21 -21
- package/dist/cjs/react/index.js +40 -30
- package/dist/cjs/receipt/bild.d.ts +4 -4
- package/dist/cjs/receipt/bild.js +11 -11
- package/dist/cjs/receipt/blatt.d.ts +46 -46
- package/dist/cjs/receipt/blatt.js +59 -59
- package/dist/cjs/receipt/discount.d.ts +1 -1
- package/dist/cjs/receipt/discount.js +8 -8
- package/dist/cjs/receipt/due.d.ts +86 -0
- package/dist/cjs/receipt/due.js +261 -0
- package/dist/cjs/receipt/epos.d.ts +22 -22
- package/dist/cjs/receipt/epos.js +45 -45
- package/dist/cjs/receipt/grid.d.ts +10 -10
- package/dist/cjs/receipt/grid.js +20 -20
- package/dist/cjs/receipt/index.d.ts +9 -8
- package/dist/cjs/receipt/index.js +26 -23
- package/dist/cjs/receipt/layout-escpos.d.ts +24 -24
- package/dist/cjs/receipt/layout-escpos.js +49 -49
- package/dist/cjs/receipt/layout.d.ts +28 -23
- package/dist/cjs/receipt/layout.js +45 -21
- package/dist/cjs/receipt/marke-daten.d.ts +8 -8
- package/dist/cjs/receipt/marke-daten.js +8 -8
- package/dist/cjs/receipt/marke.d.ts +7 -7
- package/dist/cjs/receipt/marke.js +10 -10
- package/dist/cjs/register/errors.d.ts +61 -0
- package/dist/cjs/register/errors.js +112 -0
- package/dist/cjs/register/index.d.ts +14 -1
- package/dist/cjs/register/index.js +20 -1
- package/dist/cjs/register/pairing.d.ts +55 -36
- package/dist/cjs/register/pairing.js +33 -29
- package/dist/cjs/register/session.d.ts +5 -5
- package/dist/cjs/register/session.js +7 -7
- package/dist/cjs/stored/draht.d.ts +45 -0
- package/dist/cjs/stored/draht.js +220 -0
- package/dist/cjs/stored/einstellungen.d.ts +23 -0
- package/dist/cjs/stored/einstellungen.js +200 -0
- package/dist/cjs/stored/index.d.ts +109 -0
- package/dist/cjs/stored/index.js +225 -0
- package/dist/cjs/stored/vokabular.d.ts +18 -0
- package/dist/cjs/stored/vokabular.js +389 -0
- package/dist/cjs/version.d.ts +7 -0
- package/dist/cjs/version.js +10 -0
- package/dist/cjs/vienna-time.d.ts +1 -1
- package/dist/cjs/vienna-time.js +2 -2
- package/dist/esm/client/api.d.ts +7 -6
- package/dist/esm/client/api.js +4 -4
- package/dist/esm/client/aufrufe.d.ts +29 -5
- package/dist/esm/client/aufrufe.js +111 -1
- package/dist/esm/client/auth.d.ts +2 -0
- package/dist/esm/client/auth.js +16 -1
- package/dist/esm/client/cashregisters.d.ts +1 -1
- package/dist/esm/client/cashregisters.js +2 -2
- package/dist/esm/client/errors.d.ts +78 -19
- package/dist/esm/client/errors.js +105 -27
- package/dist/esm/client/fehlercodes.d.ts +9 -0
- package/dist/esm/client/fehlercodes.js +32 -0
- package/dist/esm/client/index.d.ts +5 -5
- package/dist/esm/client/index.js +5 -5
- package/dist/esm/client/receipts.d.ts +131 -124
- package/dist/esm/client/receipts.js +213 -140
- package/dist/esm/client/reports.d.ts +26 -4
- package/dist/esm/client/reports.js +36 -4
- package/dist/esm/client/status.d.ts +3 -3
- package/dist/esm/client/status.js +7 -7
- package/dist/esm/client/transport.d.ts +56 -4
- package/dist/esm/client/transport.js +221 -24
- package/dist/esm/enums/vat-rate.d.ts +2 -2
- package/dist/esm/enums/vat-rate.js +1 -1
- package/dist/esm/index.d.ts +4 -3
- package/dist/esm/index.js +4 -3
- package/dist/{cjs/rechnung → esm/invoice}/api.d.ts +18 -17
- package/dist/esm/{rechnung → invoice}/api.js +6 -6
- package/dist/{cjs/rechnung → esm/invoice}/auth.d.ts +2 -2
- package/dist/esm/{rechnung → invoice}/auth.js +4 -4
- package/dist/{cjs/rechnung/rechnen.d.ts → esm/invoice/calc.d.ts} +27 -27
- package/dist/esm/{rechnung/rechnen.js → invoice/calc.js} +45 -45
- package/dist/{cjs/rechnung → esm/invoice}/endpunkte.d.ts +23 -21
- package/dist/esm/{rechnung → invoice}/endpunkte.js +52 -42
- package/dist/esm/invoice/fehler.d.ts +31 -0
- package/dist/esm/invoice/fehler.js +33 -0
- package/dist/esm/invoice/index.d.ts +21 -0
- package/dist/esm/invoice/index.js +20 -0
- package/dist/esm/{rechnung → invoice}/summen.d.ts +12 -12
- package/dist/esm/{rechnung → invoice}/summen.js +12 -12
- package/dist/esm/invoice/texte.d.ts +224 -0
- package/dist/esm/invoice/texte.js +421 -0
- package/dist/{cjs/rechnung → esm/invoice}/typen.d.ts +32 -11
- package/dist/{cjs/rechnung → esm/invoice}/vertrag.d.ts +97 -71
- package/dist/esm/{rechnung → invoice}/vertrag.js +143 -81
- package/dist/esm/models/cancellation.d.ts +53 -21
- package/dist/esm/models/cancellation.js +90 -41
- package/dist/esm/models/hobex-receipt.d.ts +3 -3
- package/dist/esm/models/hobex-receipt.js +35 -35
- package/dist/esm/models/index.d.ts +6 -5
- package/dist/esm/models/index.js +6 -5
- package/dist/esm/models/payment-errors.d.ts +32 -15
- package/dist/esm/models/payment-errors.js +77 -32
- package/dist/esm/models/receipt-company.d.ts +6 -5
- package/dist/esm/models/receipt-company.js +4 -4
- package/dist/esm/models/receipt-email.d.ts +32 -18
- package/dist/esm/models/receipt-email.js +65 -23
- package/dist/esm/models/receipt-errors.d.ts +39 -0
- package/dist/esm/models/receipt-errors.js +87 -0
- package/dist/esm/models/receipt-item.d.ts +9 -1
- package/dist/esm/models/receipt-item.js +3 -0
- package/dist/esm/models/receipt-payment.d.ts +2 -1
- package/dist/esm/models/receipt-summary.d.ts +10 -4
- package/dist/esm/models/receipt-summary.js +9 -3
- package/dist/esm/models/receipt.d.ts +31 -2
- package/dist/esm/models/receipt.js +28 -2
- package/dist/esm/models/voucher.d.ts +7 -6
- package/dist/esm/models/voucher.js +2 -7
- package/dist/esm/partner/ablauf.d.ts +10 -10
- package/dist/esm/partner/ablauf.js +27 -27
- package/dist/esm/partner/api.d.ts +26 -23
- package/dist/esm/partner/api.js +13 -15
- package/dist/esm/partner/auth.d.ts +1 -1
- package/dist/esm/partner/auth.js +2 -2
- package/dist/esm/partner/betrieb.d.ts +7 -7
- package/dist/esm/partner/betrieb.js +8 -8
- package/dist/esm/partner/endpunkte.d.ts +27 -14
- package/dist/esm/partner/endpunkte.js +79 -39
- package/dist/esm/partner/fehler.d.ts +60 -30
- package/dist/esm/partner/fehler.js +91 -35
- package/dist/esm/partner/index.d.ts +13 -12
- package/dist/esm/partner/index.js +12 -11
- package/dist/esm/partner/secret.d.ts +3 -3
- package/dist/esm/partner/secret.js +5 -5
- package/dist/esm/partner/typen.d.ts +129 -71
- package/dist/esm/partner/typen.js +75 -2
- package/dist/esm/partner/webhook-signatur.d.ts +2 -2
- package/dist/esm/partner/webhook-signatur.js +12 -12
- package/dist/esm/partner/webhooks.d.ts +60 -32
- package/dist/esm/partner/webhooks.js +38 -32
- package/dist/esm/payments/hobex-hps/transaction-response.js +28 -28
- package/dist/esm/payments/hobex.d.ts +2 -2
- package/dist/esm/payments/hobex.js +4 -4
- package/dist/esm/payments/stripe.d.ts +2 -2
- package/dist/esm/payments/stripe.js +4 -4
- package/dist/esm/pos/artikel.d.ts +90 -0
- package/dist/esm/pos/artikel.js +79 -0
- package/dist/esm/pos/client.d.ts +27 -0
- package/dist/esm/pos/client.js +137 -0
- package/dist/esm/pos/drucker.d.ts +86 -0
- package/dist/esm/pos/drucker.js +71 -0
- package/dist/esm/pos/errors.d.ts +36 -0
- package/dist/esm/pos/errors.js +88 -0
- package/dist/esm/pos/index.d.ts +15 -0
- package/dist/esm/pos/index.js +20 -0
- package/dist/esm/pos/settings.d.ts +313 -0
- package/dist/esm/pos/settings.js +367 -0
- package/dist/esm/pos/texte.d.ts +883 -0
- package/dist/esm/pos/texte.js +481 -0
- package/dist/esm/{kasse → pos}/trinkgeld.d.ts +1 -1
- package/dist/esm/{kasse → pos}/trinkgeld.js +2 -2
- package/dist/esm/printing/escpos.d.ts +29 -29
- package/dist/esm/printing/escpos.js +56 -56
- package/dist/esm/printing/index.d.ts +2 -2
- package/dist/esm/printing/index.js +2 -2
- package/dist/esm/printing/qr-groesse.d.ts +38 -38
- package/dist/esm/printing/qr-groesse.js +42 -42
- package/dist/esm/printing/webusb.d.ts +2 -2
- package/dist/esm/printing/webusb.js +4 -4
- package/dist/esm/react/index.d.ts +21 -21
- package/dist/esm/react/index.js +39 -29
- package/dist/esm/receipt/bild.d.ts +4 -4
- package/dist/esm/receipt/bild.js +11 -11
- package/dist/esm/receipt/blatt.d.ts +46 -46
- package/dist/esm/receipt/blatt.js +55 -55
- package/dist/esm/receipt/discount.d.ts +1 -1
- package/dist/esm/receipt/discount.js +7 -7
- package/dist/esm/receipt/due.d.ts +86 -0
- package/dist/esm/receipt/due.js +257 -0
- package/dist/esm/receipt/epos.d.ts +22 -22
- package/dist/esm/receipt/epos.js +47 -47
- package/dist/esm/receipt/grid.d.ts +10 -10
- package/dist/esm/receipt/grid.js +18 -18
- package/dist/esm/receipt/index.d.ts +9 -8
- package/dist/esm/receipt/index.js +9 -8
- package/dist/esm/receipt/layout-escpos.d.ts +24 -24
- package/dist/esm/receipt/layout-escpos.js +51 -51
- package/dist/esm/receipt/layout.d.ts +28 -23
- package/dist/esm/receipt/layout.js +44 -20
- package/dist/esm/receipt/marke-daten.d.ts +8 -8
- package/dist/esm/receipt/marke-daten.js +7 -7
- package/dist/esm/receipt/marke.d.ts +7 -7
- package/dist/esm/receipt/marke.js +10 -10
- package/dist/esm/register/errors.d.ts +61 -0
- package/dist/esm/register/errors.js +104 -0
- package/dist/esm/register/index.d.ts +14 -1
- package/dist/esm/register/index.js +13 -0
- package/dist/esm/register/pairing.d.ts +55 -36
- package/dist/esm/register/pairing.js +33 -29
- package/dist/esm/register/session.d.ts +5 -5
- package/dist/esm/register/session.js +7 -7
- package/dist/esm/stored/draht.d.ts +45 -0
- package/dist/esm/stored/draht.js +208 -0
- package/dist/esm/stored/einstellungen.d.ts +23 -0
- package/dist/esm/stored/einstellungen.js +196 -0
- package/dist/esm/stored/index.d.ts +109 -0
- package/dist/esm/stored/index.js +217 -0
- package/dist/esm/stored/vokabular.d.ts +18 -0
- package/dist/esm/stored/vokabular.js +386 -0
- package/dist/esm/version.d.ts +7 -0
- package/dist/esm/version.js +7 -0
- package/dist/esm/vienna-time.d.ts +1 -1
- package/dist/esm/vienna-time.js +2 -2
- package/fixtures/{erwartet/storno-rabatt.lines.json → expected/cancellation-discount.lines.json} +2 -2
- package/fixtures/expected/cancellation-discount.sheet32.json +248 -0
- package/fixtures/{erwartet/storno-rabatt.blatt48.json → expected/cancellation-discount.sheet48.json} +119 -119
- package/fixtures/{erwartet/storno-voll.lines.json → expected/cancellation-full.lines.json} +2 -2
- package/fixtures/expected/cancellation-full.sheet32.json +218 -0
- package/fixtures/{erwartet/storno-voll.blatt48.json → expected/cancellation-full.sheet48.json} +107 -107
- package/fixtures/{erwartet/storno-teil.lines.json → expected/cancellation-partial.lines.json} +2 -2
- package/fixtures/expected/cancellation-partial.sheet32.json +206 -0
- package/fixtures/{erwartet/storno-teil.blatt48.json → expected/cancellation-partial.sheet48.json} +101 -101
- package/fixtures/{erwartet/storno-split-voll.lines.json → expected/cancellation-split-full.lines.json} +2 -2
- package/fixtures/expected/cancellation-split-full.sheet32.json +320 -0
- package/fixtures/{erwartet/storno-split-voll.blatt48.json → expected/cancellation-split-full.sheet48.json} +158 -158
- package/fixtures/{erwartet/storno-split-teil.lines.json → expected/cancellation-split-partial.lines.json} +2 -2
- package/fixtures/expected/cancellation-split-partial.sheet32.json +230 -0
- package/fixtures/{erwartet/storno-split-teil.blatt48.json → expected/cancellation-split-partial.sheet48.json} +113 -113
- package/fixtures/{erwartet/karte-eigener.lines.json → expected/card-custom.lines.json} +1 -1
- package/fixtures/expected/card-custom.sheet32.json +158 -0
- package/fixtures/{erwartet/karte-eigener.blatt48.json → expected/card-custom.sheet48.json} +80 -80
- package/fixtures/{erwartet/karte-gptom-ios.lines.json → expected/card-gptom-ios.lines.json} +1 -1
- package/fixtures/expected/card-gptom-ios.sheet32.json +230 -0
- package/fixtures/{erwartet/karte-gptom-ios.blatt48.json → expected/card-gptom-ios.sheet48.json} +116 -116
- package/fixtures/{erwartet/karte-gptom.lines.json → expected/card-gptom.lines.json} +1 -1
- package/fixtures/expected/card-gptom.sheet32.json +230 -0
- package/fixtures/{erwartet/karte-gptom.blatt48.json → expected/card-gptom.sheet48.json} +116 -116
- package/fixtures/{erwartet/karte-hobex-cloud.lines.json → expected/card-hobex-cloud.lines.json} +1 -1
- package/fixtures/expected/card-hobex-cloud.sheet32.json +200 -0
- package/fixtures/{erwartet/karte-hobex-cloud.blatt48.json → expected/card-hobex-cloud.sheet48.json} +101 -101
- package/fixtures/{erwartet/karte-hobex-hps.lines.json → expected/card-hobex-hps.lines.json} +1 -1
- package/fixtures/expected/card-hobex-hps.sheet32.json +224 -0
- package/fixtures/{erwartet/karte-hobex-hps.blatt48.json → expected/card-hobex-hps.sheet48.json} +113 -113
- package/fixtures/{erwartet/karte-mypos.lines.json → expected/card-mypos.lines.json} +1 -1
- package/fixtures/expected/card-mypos.sheet32.json +254 -0
- package/fixtures/{erwartet/karte-mypos.blatt48.json → expected/card-mypos.sheet48.json} +122 -122
- package/fixtures/{erwartet/karte-stripe-eps.lines.json → expected/card-stripe-eps.lines.json} +1 -1
- package/fixtures/expected/card-stripe-eps.sheet32.json +194 -0
- package/fixtures/{erwartet/karte-stripe-eps.blatt48.json → expected/card-stripe-eps.sheet48.json} +98 -98
- package/fixtures/{erwartet/karte-stripe.lines.json → expected/card-stripe.lines.json} +1 -1
- package/fixtures/expected/card-stripe.sheet32.json +212 -0
- package/fixtures/{erwartet/karte-stripe.blatt48.json → expected/card-stripe.sheet48.json} +107 -107
- package/fixtures/{erwartet/karte-sumup.lines.json → expected/card-sumup.lines.json} +1 -1
- package/fixtures/expected/card-sumup.sheet32.json +218 -0
- package/fixtures/{erwartet/karte-sumup.blatt48.json → expected/card-sumup.sheet48.json} +104 -104
- package/fixtures/{erwartet/rabattzeilen.lines.json → expected/discount-lines.lines.json} +1 -1
- package/fixtures/expected/discount-lines.sheet32.json +200 -0
- package/fixtures/{erwartet/rabattzeilen.blatt48.json → expected/discount-lines.sheet48.json} +98 -98
- package/fixtures/{erwartet/rabatt-chef-trinkgeld.lines.json → expected/discount-owner-tip.lines.json} +1 -1
- package/fixtures/expected/discount-owner-tip.sheet32.json +212 -0
- package/fixtures/{erwartet/rabatt-chef-trinkgeld.blatt48.json → expected/discount-owner-tip.sheet48.json} +104 -104
- package/fixtures/{erwartet/rabatt-einfach.lines.json → expected/discount-simple.lines.json} +1 -1
- package/fixtures/expected/discount-simple.sheet32.json +182 -0
- package/fixtures/{erwartet/rabatt-einfach.blatt48.json → expected/discount-simple.sheet48.json} +89 -89
- package/fixtures/{erwartet/rabatt-trinkgeld.lines.json → expected/discount-tip.lines.json} +1 -1
- package/fixtures/expected/discount-tip.sheet32.json +212 -0
- package/fixtures/{erwartet/rabatt-trinkgeld.blatt48.json → expected/discount-tip.sheet48.json} +104 -104
- package/fixtures/{erwartet/rabatt-wertgutschein.lines.json → expected/discount-value-voucher.lines.json} +1 -1
- package/fixtures/expected/discount-value-voucher.sheet32.json +218 -0
- package/fixtures/{erwartet/rabatt-wertgutschein.blatt48.json → expected/discount-value-voucher.sheet48.json} +107 -107
- package/fixtures/{erwartet/langer-artikelname.lines.json → expected/long-item-name.lines.json} +1 -1
- package/fixtures/expected/long-item-name.sheet32.json +176 -0
- package/fixtures/{erwartet/langer-artikelname.blatt48.json → expected/long-item-name.sheet48.json} +86 -86
- package/fixtures/{erwartet/verkauf-karte.lines.json → expected/sale-card.lines.json} +1 -1
- package/fixtures/expected/sale-card.sheet32.json +176 -0
- package/fixtures/{erwartet/verkauf-karte.blatt48.json → expected/sale-card.sheet48.json} +86 -86
- package/fixtures/{erwartet/verkauf-bar.lines.json → expected/sale-cash.lines.json} +1 -1
- package/fixtures/expected/sale-cash.sheet32.json +176 -0
- package/fixtures/{erwartet/verkauf-bar.blatt48.json → expected/sale-cash.sheet48.json} +86 -86
- package/fixtures/{erwartet/verkauf-kleinunternehmer.lines.json → expected/sale-small-business.lines.json} +1 -1
- package/fixtures/expected/sale-small-business.sheet32.json +182 -0
- package/fixtures/{erwartet/verkauf-kleinunternehmer.blatt48.json → expected/sale-small-business.sheet48.json} +89 -89
- package/fixtures/{erwartet/signaturausfall-verkauf.lines.json → expected/signature-outage-sale.lines.json} +1 -1
- package/fixtures/expected/signature-outage-sale.sheet32.json +194 -0
- package/fixtures/{erwartet/signaturausfall-verkauf.blatt48.json → expected/signature-outage-sale.sheet48.json} +92 -92
- package/fixtures/{erwartet/split-karte-karte-bar.lines.json → expected/split-card-card-cash.lines.json} +1 -1
- package/fixtures/expected/split-card-card-cash.sheet32.json +356 -0
- package/fixtures/{erwartet/split-karte-karte-bar.blatt48.json → expected/split-card-card-cash.sheet48.json} +170 -170
- package/fixtures/{erwartet/split-bar-rueckgeld.lines.json → expected/split-cash-change.lines.json} +1 -1
- package/fixtures/expected/split-cash-change.sheet32.json +194 -0
- package/fixtures/{erwartet/split-bar-rueckgeld.blatt48.json → expected/split-cash-change.sheet48.json} +92 -92
- package/fixtures/{erwartet/split-langer-betrag.lines.json → expected/split-long-amount.lines.json} +1 -1
- package/fixtures/expected/split-long-amount.sheet32.json +266 -0
- package/fixtures/{erwartet/split-langer-betrag.blatt48.json → expected/split-long-amount.sheet48.json} +131 -131
- package/fixtures/{erwartet/split-eine-karte-trinkgeld.lines.json → expected/split-one-card-tip.lines.json} +1 -1
- package/fixtures/expected/split-one-card-tip.sheet32.json +242 -0
- package/fixtures/{erwartet/split-eine-karte-trinkgeld.blatt48.json → expected/split-one-card-tip.sheet48.json} +113 -113
- package/fixtures/{erwartet/split-tischrunde-trinkgeld.lines.json → expected/split-table-round-tip.lines.json} +1 -1
- package/fixtures/expected/split-table-round-tip.sheet32.json +470 -0
- package/fixtures/{erwartet/split-tischrunde-trinkgeld.blatt48.json → expected/split-table-round-tip.sheet48.json} +218 -218
- package/fixtures/{erwartet/split-trinkgeld-karte.lines.json → expected/split-tip-card.lines.json} +1 -1
- package/fixtures/expected/split-tip-card.sheet32.json +272 -0
- package/fixtures/{erwartet/split-trinkgeld-karte.blatt48.json → expected/split-tip-card.sheet48.json} +128 -128
- package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.lines.json → expected/split-two-cards-same-provider.lines.json} +1 -1
- package/fixtures/expected/split-two-cards-same-provider.sheet32.json +326 -0
- package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.blatt48.json → expected/split-two-cards-same-provider.sheet48.json} +149 -149
- package/fixtures/{erwartet/testkasse-verkauf.lines.json → expected/test-cashregister-sale.lines.json} +3 -3
- package/fixtures/expected/test-cashregister-sale.sheet32.json +224 -0
- package/fixtures/{erwartet/testkasse-verkauf.blatt48.json → expected/test-cashregister-sale.sheet48.json} +110 -110
- package/fixtures/{erwartet/testsignatur-verkauf.lines.json → expected/test-signature-sale.lines.json} +3 -3
- package/fixtures/expected/test-signature-sale.sheet32.json +236 -0
- package/fixtures/{erwartet/testsignatur-verkauf.blatt48.json → expected/test-signature-sale.sheet48.json} +110 -110
- package/fixtures/{erwartet → expected}/training.lines.json +2 -2
- package/fixtures/expected/training.sheet32.json +236 -0
- package/fixtures/{erwartet/training.blatt48.json → expected/training.sheet48.json} +110 -110
- package/fixtures/{erwartet/null-jahr.lines.json → expected/zero-annual.lines.json} +2 -2
- package/fixtures/expected/zero-annual.sheet32.json +212 -0
- package/fixtures/{erwartet/null-jahr.blatt48.json → expected/zero-annual.sheet48.json} +95 -95
- package/fixtures/{erwartet/null-schluss.lines.json → expected/zero-final.lines.json} +2 -2
- package/fixtures/expected/zero-final.sheet32.json +206 -0
- package/fixtures/{erwartet/null-schluss.blatt48.json → expected/zero-final.sheet48.json} +95 -95
- package/fixtures/{erwartet/null-pruef.lines.json → expected/zero-manual.lines.json} +2 -2
- package/fixtures/expected/zero-manual.sheet32.json +206 -0
- package/fixtures/{erwartet/null-pruef.blatt48.json → expected/zero-manual.sheet48.json} +95 -95
- package/fixtures/{erwartet/null-monat.lines.json → expected/zero-monthly.lines.json} +2 -2
- package/fixtures/expected/zero-monthly.sheet32.json +206 -0
- package/fixtures/{erwartet/null-monat.blatt48.json → expected/zero-monthly.sheet48.json} +95 -95
- package/fixtures/{erwartet/null-ausfall.lines.json → expected/zero-outage-end.lines.json} +2 -2
- package/fixtures/expected/zero-outage-end.sheet32.json +206 -0
- package/fixtures/{erwartet/null-ausfall.blatt48.json → expected/zero-outage-end.sheet48.json} +95 -95
- package/fixtures/{erwartet/null-start.lines.json → expected/zero-start.lines.json} +2 -2
- package/fixtures/expected/zero-start.sheet32.json +206 -0
- package/fixtures/{erwartet/null-start.blatt48.json → expected/zero-start.sheet48.json} +95 -95
- package/fixtures/hobex-hps-codes.json +40 -40
- package/fixtures/invoice-api-examples/brands-ok.json +8 -0
- package/fixtures/{rechnung-api-beispiele/credit-fehler-grund.json → invoice-api-examples/credit-error-reason.json} +6 -6
- package/fixtures/{rechnung-api-beispiele → invoice-api-examples}/credit-ok.json +6 -6
- package/fixtures/{rechnung-api-beispiele/customer-fehler-uid.json → invoice-api-examples/customer-error-vat-id.json} +4 -4
- package/fixtures/invoice-api-examples/customer-get-error-both.json +15 -0
- package/fixtures/{rechnung-api-beispiele → invoice-api-examples}/customer-ok.json +4 -4
- package/fixtures/{rechnung-api-beispiele/customer-search-fehler-leer.json → invoice-api-examples/customer-search-error-empty.json} +4 -4
- package/fixtures/{rechnung-api-beispiele/issue-rabatt.json → invoice-api-examples/issue-discount.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-englisch.json → invoice-api-examples/issue-english.json} +7 -7
- package/fixtures/{rechnung-api-beispiele/issue-fehler-cent.json → invoice-api-examples/issue-error-cent.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-fehler-sprache.json → invoice-api-examples/issue-error-language.json} +5 -5
- package/fixtures/{rechnung-api-beispiele/issue-fehler-negativ.json → invoice-api-examples/issue-error-negative.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-fehler-zahlungsart.json → invoice-api-examples/issue-error-payment-method.json} +8 -6
- package/fixtures/{rechnung-api-beispiele/issue-fehler-preis-beide.json → invoice-api-examples/issue-error-price-both.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-fehler-preis-fehlt.json → invoice-api-examples/issue-error-price-missing.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-fehler-menge.json → invoice-api-examples/issue-error-quantity.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-fehler-satz.json → invoice-api-examples/issue-error-rate.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-fehler-einheit.json → invoice-api-examples/issue-error-unit.json} +5 -5
- package/fixtures/{rechnung-api-beispiele/issue-fehler-unbekannt.json → invoice-api-examples/issue-error-unknown.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-brutto-20.json → invoice-api-examples/issue-gross-20.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-mikropreis.json → invoice-api-examples/issue-micro-price.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-gemischt.json → invoice-api-examples/issue-mixed.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-netto-20.json → invoice-api-examples/issue-net-20.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-bezahlt.json → invoice-api-examples/issue-paid.json} +7 -7
- package/fixtures/{rechnung-api-beispiele/issue-kleinunternehmer.json → invoice-api-examples/issue-small-business.json} +6 -6
- package/fixtures/invoice-api-examples/payment-error-on-site.json +17 -0
- package/fixtures/invoice-api-examples/payment-error-without-key.json +16 -0
- package/fixtures/invoice-api-examples/payment-recorded-later.json +14 -0
- package/fixtures/{rechnung-api-beispiele/setup-status-fehler-feld.json → invoice-api-examples/setup-status-error-field.json} +4 -4
- package/fixtures/invoice-api-examples/setup-status-ok.json +8 -0
- package/fixtures/{rechnung-api.schema.json → invoice-api.schema.json} +24 -24
- package/fixtures/{rechnung-rechnen-zufall.json → invoice-calc-random.json} +828 -828
- package/fixtures/{rechnung-rechnen.json → invoice-calc.json} +47 -47
- package/fixtures/invoice-texts.json +464 -0
- package/fixtures/{rechnung-summen.json → invoice-totals.json} +25 -25
- package/fixtures/{position-aus-euro.json → item-from-euro.json} +26 -26
- package/fixtures/manifest.json +252 -252
- package/fixtures/pos-message-cases.json +32 -0
- package/fixtures/pos-settings-defaults.json +149 -0
- package/fixtures/pos-texts.json +957 -0
- package/fixtures/receipt-due-generated.json +1218 -0
- package/fixtures/{belege/storno-rabatt.json → receipts/cancellation-discount.json} +3 -3
- package/fixtures/{belege/storno-voll.json → receipts/cancellation-full.json} +3 -3
- package/fixtures/{belege/storno-teil.json → receipts/cancellation-partial.json} +3 -3
- package/fixtures/{belege/storno-split-voll.json → receipts/cancellation-split-full.json} +3 -3
- package/fixtures/{belege/storno-split-teil.json → receipts/cancellation-split-partial.json} +3 -3
- package/fixtures/{belege/karte-eigener.json → receipts/card-custom.json} +2 -2
- package/fixtures/{belege/karte-gptom-ios.json → receipts/card-gptom-ios.json} +2 -2
- package/fixtures/{belege/karte-gptom.json → receipts/card-gptom.json} +2 -2
- package/fixtures/{belege/karte-hobex-cloud.json → receipts/card-hobex-cloud.json} +2 -2
- package/fixtures/{belege/karte-hobex-hps.json → receipts/card-hobex-hps.json} +2 -2
- package/fixtures/{belege/karte-mypos.json → receipts/card-mypos.json} +2 -2
- package/fixtures/{belege/karte-stripe-eps.json → receipts/card-stripe-eps.json} +2 -2
- package/fixtures/{belege/karte-stripe.json → receipts/card-stripe.json} +2 -2
- package/fixtures/{belege/karte-sumup.json → receipts/card-sumup.json} +2 -2
- package/fixtures/{belege/rabattzeilen.json → receipts/discount-lines.json} +2 -2
- package/fixtures/{belege/rabatt-chef-trinkgeld.json → receipts/discount-owner-tip.json} +2 -2
- package/fixtures/{belege/rabatt-einfach.json → receipts/discount-simple.json} +2 -2
- package/fixtures/{belege/rabatt-trinkgeld.json → receipts/discount-tip.json} +2 -2
- package/fixtures/{belege/rabatt-wertgutschein.json → receipts/discount-value-voucher.json} +2 -2
- package/fixtures/{belege/langer-artikelname.json → receipts/long-item-name.json} +2 -2
- package/fixtures/{belege/verkauf-karte.json → receipts/sale-card.json} +2 -2
- package/fixtures/{belege/verkauf-bar.json → receipts/sale-cash.json} +2 -2
- package/fixtures/{belege/verkauf-kleinunternehmer.json → receipts/sale-small-business.json} +1 -1
- package/fixtures/{belege/signaturausfall-verkauf.json → receipts/signature-outage-sale.json} +2 -2
- package/fixtures/{belege/split-karte-karte-bar.json → receipts/split-card-card-cash.json} +2 -2
- package/fixtures/{belege/split-bar-rueckgeld.json → receipts/split-cash-change.json} +2 -2
- package/fixtures/{belege/split-langer-betrag.json → receipts/split-long-amount.json} +2 -2
- package/fixtures/{belege/split-eine-karte-trinkgeld.json → receipts/split-one-card-tip.json} +2 -2
- package/fixtures/{belege/split-tischrunde-trinkgeld.json → receipts/split-table-round-tip.json} +2 -2
- package/fixtures/{belege/split-trinkgeld-karte.json → receipts/split-tip-card.json} +2 -2
- package/fixtures/{belege/split-zwei-karten-gleicher-anbieter.json → receipts/split-two-cards-same-provider.json} +2 -2
- package/fixtures/{belege/testsignatur-verkauf.json → receipts/test-cashregister-sale.json} +3 -3
- package/fixtures/{belege/testkasse-verkauf.json → receipts/test-signature-sale.json} +3 -3
- package/fixtures/{belege → receipts}/training.json +2 -2
- package/fixtures/{belege/null-jahr.json → receipts/zero-annual.json} +5 -5
- package/fixtures/{belege/null-schluss.json → receipts/zero-final.json} +5 -5
- package/fixtures/{belege/null-pruef.json → receipts/zero-manual.json} +5 -5
- package/fixtures/{belege/null-monat.json → receipts/zero-monthly.json} +5 -5
- package/fixtures/{belege/null-ausfall.json → receipts/zero-outage-end.json} +5 -5
- package/fixtures/{belege/null-start.json → receipts/zero-start.json} +5 -5
- package/fixtures/renames-1.0.json +1490 -0
- package/fixtures/{kasse-settings-standard.json → stored/pos-settings-defaults.json} +10 -8
- package/fixtures/surface.json +877 -0
- package/fixtures/v3/README.md +125 -0
- package/fixtures/v3/antworten/belege.json +4738 -0
- package/fixtures/v3/antworten/belegmail.json +154 -0
- package/fixtures/v3/antworten/kasse-belege.json +4304 -0
- package/fixtures/v3/antworten/kasse.json +12716 -0
- package/fixtures/v3/antworten/rechnungen.json +1712 -0
- package/fixtures/v3/antworten/storno.json +737 -0
- package/fixtures/v3/stored/belege.json +502 -0
- package/fixtures/v3/stored/kasse.json +3461 -0
- package/fixtures/v3/stored/rechnungen.json +750 -0
- package/fixtures/v3/v3-vokabular.json +3375 -0
- package/fixtures/v3/zahlbetrag-faelle.json +794 -0
- package/package.json +32 -18
- package/dist/cjs/kasse/artikel.d.ts +0 -83
- package/dist/cjs/kasse/artikel.js +0 -79
- package/dist/cjs/kasse/client.d.ts +0 -10
- package/dist/cjs/kasse/client.js +0 -38
- package/dist/cjs/kasse/drucker.d.ts +0 -59
- package/dist/cjs/kasse/drucker.js +0 -50
- package/dist/cjs/kasse/index.d.ts +0 -13
- package/dist/cjs/kasse/index.js +0 -79
- package/dist/cjs/kasse/settings.d.ts +0 -227
- package/dist/cjs/kasse/settings.js +0 -169
- package/dist/cjs/kasse/texte.d.ts +0 -458
- package/dist/cjs/kasse/texte.js +0 -244
- package/dist/cjs/rechnung/fehler.d.ts +0 -21
- package/dist/cjs/rechnung/fehler.js +0 -44
- package/dist/cjs/rechnung/index.d.ts +0 -21
- package/dist/cjs/rechnung/index.js +0 -82
- package/dist/cjs/rechnung/texte.d.ts +0 -222
- package/dist/cjs/rechnung/texte.js +0 -425
- package/dist/esm/kasse/artikel.d.ts +0 -83
- package/dist/esm/kasse/artikel.js +0 -70
- package/dist/esm/kasse/client.d.ts +0 -10
- package/dist/esm/kasse/client.js +0 -33
- package/dist/esm/kasse/drucker.d.ts +0 -59
- package/dist/esm/kasse/drucker.js +0 -45
- package/dist/esm/kasse/index.d.ts +0 -13
- package/dist/esm/kasse/index.js +0 -18
- package/dist/esm/kasse/settings.d.ts +0 -227
- package/dist/esm/kasse/settings.js +0 -165
- package/dist/esm/kasse/texte.d.ts +0 -458
- package/dist/esm/kasse/texte.js +0 -238
- package/dist/esm/rechnung/fehler.d.ts +0 -21
- package/dist/esm/rechnung/fehler.js +0 -39
- package/dist/esm/rechnung/index.d.ts +0 -21
- package/dist/esm/rechnung/index.js +0 -20
- package/dist/esm/rechnung/texte.d.ts +0 -222
- package/dist/esm/rechnung/texte.js +0 -421
- package/fixtures/erwartet/karte-eigener.blatt32.json +0 -158
- package/fixtures/erwartet/karte-gptom-ios.blatt32.json +0 -230
- package/fixtures/erwartet/karte-gptom.blatt32.json +0 -230
- package/fixtures/erwartet/karte-hobex-cloud.blatt32.json +0 -200
- package/fixtures/erwartet/karte-hobex-hps.blatt32.json +0 -224
- package/fixtures/erwartet/karte-mypos.blatt32.json +0 -254
- package/fixtures/erwartet/karte-stripe-eps.blatt32.json +0 -194
- package/fixtures/erwartet/karte-stripe.blatt32.json +0 -212
- package/fixtures/erwartet/karte-sumup.blatt32.json +0 -218
- package/fixtures/erwartet/langer-artikelname.blatt32.json +0 -176
- package/fixtures/erwartet/null-ausfall.blatt32.json +0 -206
- package/fixtures/erwartet/null-jahr.blatt32.json +0 -212
- package/fixtures/erwartet/null-monat.blatt32.json +0 -206
- package/fixtures/erwartet/null-pruef.blatt32.json +0 -206
- package/fixtures/erwartet/null-schluss.blatt32.json +0 -206
- package/fixtures/erwartet/null-start.blatt32.json +0 -206
- package/fixtures/erwartet/rabatt-chef-trinkgeld.blatt32.json +0 -212
- package/fixtures/erwartet/rabatt-einfach.blatt32.json +0 -182
- package/fixtures/erwartet/rabatt-trinkgeld.blatt32.json +0 -212
- package/fixtures/erwartet/rabatt-wertgutschein.blatt32.json +0 -218
- package/fixtures/erwartet/rabattzeilen.blatt32.json +0 -200
- package/fixtures/erwartet/signaturausfall-verkauf.blatt32.json +0 -194
- package/fixtures/erwartet/split-bar-rueckgeld.blatt32.json +0 -194
- package/fixtures/erwartet/split-eine-karte-trinkgeld.blatt32.json +0 -242
- package/fixtures/erwartet/split-karte-karte-bar.blatt32.json +0 -356
- package/fixtures/erwartet/split-langer-betrag.blatt32.json +0 -266
- package/fixtures/erwartet/split-tischrunde-trinkgeld.blatt32.json +0 -470
- package/fixtures/erwartet/split-trinkgeld-karte.blatt32.json +0 -272
- package/fixtures/erwartet/split-zwei-karten-gleicher-anbieter.blatt32.json +0 -326
- package/fixtures/erwartet/storno-rabatt.blatt32.json +0 -248
- package/fixtures/erwartet/storno-split-teil.blatt32.json +0 -230
- package/fixtures/erwartet/storno-split-voll.blatt32.json +0 -320
- package/fixtures/erwartet/storno-teil.blatt32.json +0 -206
- package/fixtures/erwartet/storno-voll.blatt32.json +0 -218
- package/fixtures/erwartet/testkasse-verkauf.blatt32.json +0 -224
- package/fixtures/erwartet/testsignatur-verkauf.blatt32.json +0 -236
- package/fixtures/erwartet/training.blatt32.json +0 -236
- package/fixtures/erwartet/verkauf-bar.blatt32.json +0 -176
- package/fixtures/erwartet/verkauf-karte.blatt32.json +0 -176
- package/fixtures/erwartet/verkauf-kleinunternehmer.blatt32.json +0 -182
- package/fixtures/kasse-meldungen-faelle.json +0 -32
- package/fixtures/kasse-texte.json +0 -513
- package/fixtures/oberflaeche.json +0 -557
- package/fixtures/rechnung-api-beispiele/brands-ok.json +0 -8
- package/fixtures/rechnung-api-beispiele/customer-get-fehler-beide.json +0 -15
- package/fixtures/rechnung-api-beispiele/setup-status-ok.json +0 -8
- package/fixtures/rechnung-api-beispiele/zahlung-fehler-ohne-schluessel.json +0 -14
- package/fixtures/rechnung-api-beispiele/zahlung-fehler-vor-ort.json +0 -15
- package/fixtures/rechnung-api-beispiele/zahlung-nachtrag.json +0 -14
- package/fixtures/rechnung-texte.json +0 -464
- /package/dist/cjs/{rechnung → invoice}/typen.js +0 -0
- /package/dist/esm/{rechnung → invoice}/typen.js +0 -0
- /package/fixtures/{erwartet/storno-rabatt.grid32.txt → expected/cancellation-discount.grid32.txt} +0 -0
- /package/fixtures/{erwartet/storno-rabatt.grid48.txt → expected/cancellation-discount.grid48.txt} +0 -0
- /package/fixtures/{erwartet/storno-voll.grid32.txt → expected/cancellation-full.grid32.txt} +0 -0
- /package/fixtures/{erwartet/storno-voll.grid48.txt → expected/cancellation-full.grid48.txt} +0 -0
- /package/fixtures/{erwartet/storno-teil.grid32.txt → expected/cancellation-partial.grid32.txt} +0 -0
- /package/fixtures/{erwartet/storno-teil.grid48.txt → expected/cancellation-partial.grid48.txt} +0 -0
- /package/fixtures/{erwartet/storno-split-voll.grid32.txt → expected/cancellation-split-full.grid32.txt} +0 -0
- /package/fixtures/{erwartet/storno-split-voll.grid48.txt → expected/cancellation-split-full.grid48.txt} +0 -0
- /package/fixtures/{erwartet/storno-split-teil.grid32.txt → expected/cancellation-split-partial.grid32.txt} +0 -0
- /package/fixtures/{erwartet/storno-split-teil.grid48.txt → expected/cancellation-split-partial.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-eigener.grid32.txt → expected/card-custom.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-eigener.grid48.txt → expected/card-custom.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-gptom-ios.grid32.txt → expected/card-gptom-ios.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-gptom-ios.grid48.txt → expected/card-gptom-ios.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-gptom.grid32.txt → expected/card-gptom.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-gptom.grid48.txt → expected/card-gptom.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-hobex-cloud.grid32.txt → expected/card-hobex-cloud.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-hobex-cloud.grid48.txt → expected/card-hobex-cloud.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-hobex-hps.grid32.txt → expected/card-hobex-hps.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-hobex-hps.grid48.txt → expected/card-hobex-hps.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-mypos.grid32.txt → expected/card-mypos.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-mypos.grid48.txt → expected/card-mypos.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-stripe-eps.grid32.txt → expected/card-stripe-eps.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-stripe-eps.grid48.txt → expected/card-stripe-eps.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-stripe.grid32.txt → expected/card-stripe.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-stripe.grid48.txt → expected/card-stripe.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-sumup.grid32.txt → expected/card-sumup.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-sumup.grid48.txt → expected/card-sumup.grid48.txt} +0 -0
- /package/fixtures/{erwartet/rabattzeilen.grid32.txt → expected/discount-lines.grid32.txt} +0 -0
- /package/fixtures/{erwartet/rabattzeilen.grid48.txt → expected/discount-lines.grid48.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-chef-trinkgeld.grid32.txt → expected/discount-owner-tip.grid32.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-chef-trinkgeld.grid48.txt → expected/discount-owner-tip.grid48.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-einfach.grid32.txt → expected/discount-simple.grid32.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-einfach.grid48.txt → expected/discount-simple.grid48.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-trinkgeld.grid32.txt → expected/discount-tip.grid32.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-trinkgeld.grid48.txt → expected/discount-tip.grid48.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-wertgutschein.grid32.txt → expected/discount-value-voucher.grid32.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-wertgutschein.grid48.txt → expected/discount-value-voucher.grid48.txt} +0 -0
- /package/fixtures/{erwartet/logo-probe-hoch.raster32.txt → expected/logo-sample-tall.raster32.txt} +0 -0
- /package/fixtures/{erwartet/logo-probe.raster32.txt → expected/logo-sample.raster32.txt} +0 -0
- /package/fixtures/{erwartet/langer-artikelname.grid32.txt → expected/long-item-name.grid32.txt} +0 -0
- /package/fixtures/{erwartet/langer-artikelname.grid48.txt → expected/long-item-name.grid48.txt} +0 -0
- /package/fixtures/{erwartet/verkauf-karte.grid32.txt → expected/sale-card.grid32.txt} +0 -0
- /package/fixtures/{erwartet/verkauf-karte.grid48.txt → expected/sale-card.grid48.txt} +0 -0
- /package/fixtures/{erwartet/verkauf-bar.grid32.txt → expected/sale-cash.grid32.txt} +0 -0
- /package/fixtures/{erwartet/verkauf-bar.grid48.txt → expected/sale-cash.grid48.txt} +0 -0
- /package/fixtures/{erwartet/verkauf-kleinunternehmer.grid32.txt → expected/sale-small-business.grid32.txt} +0 -0
- /package/fixtures/{erwartet/verkauf-kleinunternehmer.grid48.txt → expected/sale-small-business.grid48.txt} +0 -0
- /package/fixtures/{erwartet/signaturausfall-verkauf.grid32.txt → expected/signature-outage-sale.grid32.txt} +0 -0
- /package/fixtures/{erwartet/signaturausfall-verkauf.grid48.txt → expected/signature-outage-sale.grid48.txt} +0 -0
- /package/fixtures/{erwartet/split-karte-karte-bar.grid32.txt → expected/split-card-card-cash.grid32.txt} +0 -0
- /package/fixtures/{erwartet/split-karte-karte-bar.grid48.txt → expected/split-card-card-cash.grid48.txt} +0 -0
- /package/fixtures/{erwartet/split-bar-rueckgeld.grid32.txt → expected/split-cash-change.grid32.txt} +0 -0
- /package/fixtures/{erwartet/split-bar-rueckgeld.grid48.txt → expected/split-cash-change.grid48.txt} +0 -0
- /package/fixtures/{erwartet/split-langer-betrag.grid32.txt → expected/split-long-amount.grid32.txt} +0 -0
- /package/fixtures/{erwartet/split-langer-betrag.grid48.txt → expected/split-long-amount.grid48.txt} +0 -0
- /package/fixtures/{erwartet/split-eine-karte-trinkgeld.grid32.txt → expected/split-one-card-tip.grid32.txt} +0 -0
- /package/fixtures/{erwartet/split-eine-karte-trinkgeld.grid48.txt → expected/split-one-card-tip.grid48.txt} +0 -0
- /package/fixtures/{erwartet/split-tischrunde-trinkgeld.grid32.txt → expected/split-table-round-tip.grid32.txt} +0 -0
- /package/fixtures/{erwartet/split-tischrunde-trinkgeld.grid48.txt → expected/split-table-round-tip.grid48.txt} +0 -0
- /package/fixtures/{erwartet/split-trinkgeld-karte.grid32.txt → expected/split-tip-card.grid32.txt} +0 -0
- /package/fixtures/{erwartet/split-trinkgeld-karte.grid48.txt → expected/split-tip-card.grid48.txt} +0 -0
- /package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.grid32.txt → expected/split-two-cards-same-provider.grid32.txt} +0 -0
- /package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.grid48.txt → expected/split-two-cards-same-provider.grid48.txt} +0 -0
- /package/fixtures/{erwartet/testkasse-verkauf.grid32.txt → expected/test-cashregister-sale.grid32.txt} +0 -0
- /package/fixtures/{erwartet/testkasse-verkauf.grid48.txt → expected/test-cashregister-sale.grid48.txt} +0 -0
- /package/fixtures/{erwartet/testsignatur-verkauf.grid32.txt → expected/test-signature-sale.grid32.txt} +0 -0
- /package/fixtures/{erwartet/testsignatur-verkauf.grid48.txt → expected/test-signature-sale.grid48.txt} +0 -0
- /package/fixtures/{erwartet → expected}/training.grid32.txt +0 -0
- /package/fixtures/{erwartet → expected}/training.grid48.txt +0 -0
- /package/fixtures/{erwartet/null-jahr.grid32.txt → expected/zero-annual.grid32.txt} +0 -0
- /package/fixtures/{erwartet/null-jahr.grid48.txt → expected/zero-annual.grid48.txt} +0 -0
- /package/fixtures/{erwartet/null-schluss.grid32.txt → expected/zero-final.grid32.txt} +0 -0
- /package/fixtures/{erwartet/null-schluss.grid48.txt → expected/zero-final.grid48.txt} +0 -0
- /package/fixtures/{erwartet/null-pruef.grid32.txt → expected/zero-manual.grid32.txt} +0 -0
- /package/fixtures/{erwartet/null-pruef.grid48.txt → expected/zero-manual.grid48.txt} +0 -0
- /package/fixtures/{erwartet/null-monat.grid32.txt → expected/zero-monthly.grid32.txt} +0 -0
- /package/fixtures/{erwartet/null-monat.grid48.txt → expected/zero-monthly.grid48.txt} +0 -0
- /package/fixtures/{erwartet/null-ausfall.grid32.txt → expected/zero-outage-end.grid32.txt} +0 -0
- /package/fixtures/{erwartet/null-ausfall.grid48.txt → expected/zero-outage-end.grid48.txt} +0 -0
- /package/fixtures/{erwartet/null-start.grid32.txt → expected/zero-start.grid32.txt} +0 -0
- /package/fixtures/{erwartet/null-start.grid48.txt → expected/zero-start.grid48.txt} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,439 @@ 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
|
+
## 1.0.0
|
|
8
|
+
|
|
9
|
+
The package speaks the English API `/v3` and nothing else, and its own
|
|
10
|
+
surface is English as well: exported names, fields, values, error codes,
|
|
11
|
+
subpaths, text catalogue keys, placeholders and the contract files in
|
|
12
|
+
`fixtures/`. Reason: the backend now runs `/v3` for every endpoint
|
|
13
|
+
group, `/v1` is deprecated, and a half-German client on an English wire would
|
|
14
|
+
translate twice and drift. One breaking release instead of several: every
|
|
15
|
+
consumer migrates once. Rendered texts (messages, labels, printed receipts,
|
|
16
|
+
invoice PDFs) are byte for byte the same as in 0.31.0, and so are the printed
|
|
17
|
+
bytes of every golden receipt.
|
|
18
|
+
|
|
19
|
+
This entry is written in English, like the developer documentation from here
|
|
20
|
+
on.
|
|
21
|
+
|
|
22
|
+
### Migrating from 0.x
|
|
23
|
+
|
|
24
|
+
#### The 0.x line
|
|
25
|
+
|
|
26
|
+
0.x keeps talking to `/v1` and gets fixes only. Before 1.0.0 becomes
|
|
27
|
+
`latest`, the last 0.x release is to be tagged with the npm dist-tag `legacy`, so
|
|
28
|
+
that `npm install @kreiseck/kasseneck-api@legacy` keeps installing it; until then,
|
|
29
|
+
pin the 0.x version you use (`@kreiseck/kasseneck-api@^0.31.0`). Nothing forces
|
|
30
|
+
an upgrade as long as `/v1` is served.
|
|
31
|
+
|
|
32
|
+
#### Wire: `/v3` only
|
|
33
|
+
|
|
34
|
+
- **Base URLs.** Public calls go to `https://api.kasseneck.at/v3`
|
|
35
|
+
(`DEFAULT_BASE_URL`, option `baseUrl`), the register calls to
|
|
36
|
+
`https://kasse.kasseneck.at/api/v3` (`POS_BASE_URL`, new option
|
|
37
|
+
`posBaseUrl`). The browser register on its own origin passes
|
|
38
|
+
`posBaseUrl: '/api/v3'`. The package routes each call itself: the 19
|
|
39
|
+
register-only calls (pairing, sign-in, settings, articles, printers, …)
|
|
40
|
+
always take the register path, and with `registerUserAuth` so do the six
|
|
41
|
+
calls both paths serve (`createReceipt`, `getReceipt`,
|
|
42
|
+
`generateFullReceiptId`, `cancelReceipt`, `sendReceiptEmail`,
|
|
43
|
+
`listMyTipRecipients`). `PUBLIC_CALLS` and `POS_CALLS` list them. Reason:
|
|
44
|
+
the register path and the public API are different hosts with different
|
|
45
|
+
authentication; a single base could not serve both.
|
|
46
|
+
- **`baseUrl` now covers public calls only.** Whoever passed `baseUrl` to
|
|
47
|
+
pairing, sign-in or the register calls (the browser register used `/api`)
|
|
48
|
+
switches to `posBaseUrl: '/api/v3'`. Every base must end in `/v3` once
|
|
49
|
+
trailing slashes are removed; `/v1` or a bare `/api` throws a
|
|
50
|
+
`KasseneckValidationError` when the client is created. Reason: a 1.x client
|
|
51
|
+
must never speak `/v1` by accident.
|
|
52
|
+
- **Marker, fail closed.** Requests to a Kasseneck base carry
|
|
53
|
+
`Kasseneck-Api-Version: v3` and `Kasseneck-Client: kasseneck-api/<version>`
|
|
54
|
+
(new option `clientHeader` for apps that name themselves). Each response is
|
|
55
|
+
checked before its body is read: HTTP 200 with HTML is `route_missing`, a
|
|
56
|
+
response without `Kasseneck-Api-Version: v3` is `dialect_mismatch`, HTTP 404
|
|
57
|
+
with marker and error envelope is `not_found`. All three are
|
|
58
|
+
`KasseneckApiError`s. In 0.x an HTML page at HTTP 200 was a
|
|
59
|
+
`KasseneckHttpError`. Reason: an answer from an edge without `/v3` may still
|
|
60
|
+
have signed a receipt, and reading it as a 0.x answer would hide that.
|
|
61
|
+
- **Browser on another origin.** Until the backend allows the two headers in
|
|
62
|
+
the `/v3` CORS preflight, a browser that calls `api.kasseneck.at/v3` from a
|
|
63
|
+
foreign origin sets the new option `omitKasseneckHeaders: true`. The
|
|
64
|
+
response check stays. Same-origin clients and Node need nothing.
|
|
65
|
+
- **English keys, values and codes on the wire.** Error codes are English,
|
|
66
|
+
lower case, `snake_case`: `bereits_storniert` is `already_cancelled`,
|
|
67
|
+
`STORNO_REFUND_REFERENCE_UNKNOWN` is `cancellation_refund_reference_unknown`,
|
|
68
|
+
`PAYMENTS_SUM_MISMATCH` is `payments_sum_mismatch`, `adresse_ungueltig` is
|
|
69
|
+
`invalid_address`, `zu_oft` is `too_many_requests`. Cancellation reasons are
|
|
70
|
+
`input_error`, `customer_cancelled`, `wrong_payment_method`, `duplicate`,
|
|
71
|
+
`other` (the German display text stays in `CANCELLATION_REASONS`). Register
|
|
72
|
+
settings are `{ business, device }` with English keys and values
|
|
73
|
+
(`stil: 'nacht'` is `theme: 'night'`). `listMyReceipts` sends
|
|
74
|
+
`cashregisterId`, `sendReceiptEmail` takes `language` (was `sprache`) and
|
|
75
|
+
reports `via` as `own`, `platform` or `platform_fallback`. The invoice API
|
|
76
|
+
uses `docType` `invoice`/`credit_note` (was `RE`/`GU`) and `taxScheme`
|
|
77
|
+
`intraCommunitySupply` (was `igLieferung`). Texts for people (`message`,
|
|
78
|
+
`serverMessage`, `nextSteps`) and the terms of the BMF and FinanzOnline stay
|
|
79
|
+
German.
|
|
80
|
+
|
|
81
|
+
#### Behaviour changes
|
|
82
|
+
|
|
83
|
+
- **`payments[]` is mandatory** on every sale (`sellReceipt`,
|
|
84
|
+
`sellReceiptWithCompany`, `createReceipt` with `standard` or `training`),
|
|
85
|
+
empty only when the amount due is 0. The new `receiptDueCents(items,
|
|
86
|
+
vouchers, receiptType, { tip, tipRecipient })` computes that amount exactly
|
|
87
|
+
as the backend does, including its rounding (checked against 1206 cases
|
|
88
|
+
computed by the backend's own code, `fixtures/receipt-due-generated.json`);
|
|
89
|
+
`receiptDueBreakdown` adds the buckets. `paymentsExpectedCents(error)` reads
|
|
90
|
+
the expected amount of a `payments_sum_mismatch`. Reason: `/v3` knows no
|
|
91
|
+
single payment method; a table that pays with two cards and cash is one
|
|
92
|
+
receipt.
|
|
93
|
+
- **`tipRecipient` is required** in `receiptDueCents` (`'owner'` or
|
|
94
|
+
`'staff'`) for a tip without `recipients`, and each `recipients[].owner` is
|
|
95
|
+
required. Reason: an owner's tip is turnover, spread over the goods' VAT
|
|
96
|
+
rates and discounted with them, a staff tip is not; only the register knows
|
|
97
|
+
who is signed in, and a guess would give a wrong amount due. The helper also
|
|
98
|
+
refuses `tip` together with `payments[].tipCents` (`tip_conflict`, as the
|
|
99
|
+
server does). On the sale itself `tip.sofortErhalten` is
|
|
100
|
+
`tip.receivedImmediately`, and unknown tip keys throw.
|
|
101
|
+
- **`outcome` on errors.** `KasseneckApiError`, `KasseneckHttpError` and
|
|
102
|
+
`KasseneckNetworkError` carry `outcome: 'unknown' | 'rejected'`
|
|
103
|
+
(`ErrorOutcome`), and `isOutcomeUnknown(error)` covers all three. Unknown
|
|
104
|
+
means the operation may have happened: `dialect_mismatch`,
|
|
105
|
+
`receipt_outcome_unknown`, `cancellation_outcome_unknown`,
|
|
106
|
+
`response_translation_failed` (unless `details.handled === false`),
|
|
107
|
+
`response_unreadable` (a signing call reported success but the response
|
|
108
|
+
lacks the receipt, the reference or the remaining quantities), and on
|
|
109
|
+
`createReceipt`, `cancelReceipt` and `financeWebService` a network error,
|
|
110
|
+
timeout or HTTP 5xx after sending as well as HTTP 200 with the `/v3` marker
|
|
111
|
+
but an empty, non-JSON or status-less body. Never retry those; read the
|
|
112
|
+
result back. Reason: a retried receipt is a second signed receipt in the
|
|
113
|
+
chain.
|
|
114
|
+
- **Strict validation before sending.** The 0.x payment fields
|
|
115
|
+
(`paymentMethod`, `paymentMethodFromServer`, `creditCardProvider`,
|
|
116
|
+
`cardPaymentId`, `cardPaymentData`) throw, also from plain JavaScript.
|
|
117
|
+
Unknown keys in tips, layout options, register settings and
|
|
118
|
+
`sendReceiptEmail` throw; for the layout options of 0.x (`testKasse`,
|
|
119
|
+
`testSignatur`, `pruefangaben`, `regelwerk`) the message names the English
|
|
120
|
+
successor. Settings values outside a field's list, a `vatRates` map without
|
|
121
|
+
any rate switched on, unknown shortcut actions and a key bound twice are
|
|
122
|
+
rejected. A card refund through a provider without its own
|
|
123
|
+
`providerPaymentId` and without the original payment's id throws before
|
|
124
|
+
sending. Reason: under 0.x an unknown German option was ignored, and a test
|
|
125
|
+
receipt could silently lose its TESTKASSE banner.
|
|
126
|
+
- **Register settings: send only what changed.** Values the package does not
|
|
127
|
+
know are kept as read (`PosOpen<T>`, `unknownPosSettingValues`) and never
|
|
128
|
+
replaced by a default; `posSettingsChanges(before, after)` produces the
|
|
129
|
+
patch, with `vatRates` and `shortcuts` as whole maps. `mergePosSettings`
|
|
130
|
+
always drops the German values of 0.x; `sanitizePosSettings` does the same
|
|
131
|
+
for a state you stored yourself. Reason: the server merges deeply, and a
|
|
132
|
+
whole block would overwrite values a newer server knows.
|
|
133
|
+
- **Unknown values stay visible.** `ReceiptSummary.cancellationStatus`
|
|
134
|
+
(was `stornoStand` `offen`/`teil`/`voll`) is `none`/`partial`/`full`, or
|
|
135
|
+
`'unknown'` for a value this version does not know; a missing field stays
|
|
136
|
+
missing and never becomes `none`. `PrintJobStatus` gains `'unknown'`, and
|
|
137
|
+
`isPrintJobFinished` treats it as final.
|
|
138
|
+
- **Server layout first.** `receiptLayoutFromResult(result, {
|
|
139
|
+
fallbackPaperSize })` returns the server's `layout` (80 mm) whenever the
|
|
140
|
+
response carries one and only builds one otherwise (default `mm58`, as in
|
|
141
|
+
0.x). Print width is chosen by the print path. Reason: on the public
|
|
142
|
+
channel only the server's layout carries the card block.
|
|
143
|
+
- **Error catalogues per endpoint group, one shape everywhere.**
|
|
144
|
+
`RECEIPT_ERROR_CODES` (new), `CANCELLATION_ERROR_CODES`,
|
|
145
|
+
`PAYMENT_ERROR_CODES`, `RECEIPT_EMAIL_ERROR_CODES`, `REGISTER_ERROR_CODES`
|
|
146
|
+
(new) and `POS_ERROR_CODES` (new) list the group's own codes, then the
|
|
147
|
+
sign-in and edge codes that can reach it, then the codes the package sets
|
|
148
|
+
itself (`CLIENT_ERROR_CODES`: `route_missing` everywhere,
|
|
149
|
+
`response_unreadable` for receipts and cancellations), so the derived types
|
|
150
|
+
are wider. The `payments[]` codes of a sale or cancellation
|
|
151
|
+
(`payments_sum_mismatch`, `payment_method_not_supported`, …) are in
|
|
152
|
+
`PAYMENT_ERROR_CODES`: a sale can answer with a code from
|
|
153
|
+
`RECEIPT_ERROR_CODES` or `PAYMENT_ERROR_CODES`, a cancellation with one from
|
|
154
|
+
`CANCELLATION_ERROR_CODES` or `PAYMENT_ERROR_CODES`.
|
|
155
|
+
`RECEIPT_EMAIL_SEND_ERROR_CODES` holds the four sending codes.
|
|
156
|
+
`INVOICE_ERROR_CODES` and `PARTNER_ERROR_CODES` stay the server's catalogues;
|
|
157
|
+
`INVOICE_REQUEST_ERROR_CODES` (new) and `PARTNER_REQUEST_ERROR_CODES` add
|
|
158
|
+
the sign-in, edge and package codes. Every group offers
|
|
159
|
+
`is…ErrorCode(value)`, `…ErrorCode(error)`, `is…Error(error, code?)` (a type
|
|
160
|
+
guard, code optional) and `…FieldErrors(error)`; new are `isReceiptError`,
|
|
161
|
+
`isCancellationError`, `isPaymentError`, `isReceiptEmailError`,
|
|
162
|
+
`isInvoiceErrorCode`, `receiptFieldErrors`, `cancellationFieldErrors`,
|
|
163
|
+
`paymentFieldErrors`, `receiptEmailFieldErrors` and `registerFieldErrors`, and
|
|
164
|
+
`isInvoiceError` takes the code as optional.
|
|
165
|
+
- **Partner.** `partnerErrorAdvice` (was `partnerFehlerRat`) always returns a
|
|
166
|
+
sentence, with a fallback for unknown codes; `isPartnerError` accepts
|
|
167
|
+
unknown codes. `reportCustomerContract` is offered now.
|
|
168
|
+
- **Tree shaking.** `package.json` declares `"sideEffects": false`, so a
|
|
169
|
+
bundler drops every module whose exports are unused (esbuild, one import of
|
|
170
|
+
`isOutcomeUnknown` from the root: 13 kB before, 2 kB after). No module
|
|
171
|
+
changes anything outside itself when imported, and the package ships no
|
|
172
|
+
CSS; the build checks both (`scripts/check-build-exports.mjs`). Parameter
|
|
173
|
+
names of exported functions and methods are English now as well (for
|
|
174
|
+
example `rasterizeLogo(rgba, pxWidth, pxHeight, dimensions, chars)`); that
|
|
175
|
+
changes nothing at runtime.
|
|
176
|
+
|
|
177
|
+
#### Exported names
|
|
178
|
+
|
|
179
|
+
Every German export name has an English successor; there are no aliases, so
|
|
180
|
+
the compiler finds every place to change. The most common ones:
|
|
181
|
+
|
|
182
|
+
| Area | 0.x | 1.0 |
|
|
183
|
+
|---|---|---|
|
|
184
|
+
| root | `AUFRUFE`, `Aufruf` | `ALL_CALLS`, `ApiCall` |
|
|
185
|
+
| root | `KASSE_BETRIEB_STANDARD`, `KASSE_GERAET_STANDARD`, `mergeKasseSettings`, `fromKasseArtikelPayload` | `POS_BUSINESS_DEFAULTS`, `POS_DEVICE_DEFAULTS`, `mergePosSettings`, `fromPosArticlePayload` |
|
|
186
|
+
| root | `KasseSettings`, `KasseSettingsBetrieb`, `KasseSettingsGeraet`, `KasseArtikel` | `PosSettings`, `PosBusinessSettings`, `PosDeviceSettings`, `PosArticle` |
|
|
187
|
+
| layout | `AKTUELLES_REGELWERK`, `LayoutRegelwerk`, `Pruefangaben` | `CURRENT_LAYOUT_RULESET`, `LayoutRuleset`, `RegistrationInfo` |
|
|
188
|
+
| layout options | `testKasse`, `testSignatur`, `pruefangaben`, `regelwerk` | `testCashregister`, `testSignature`, `registrationInfo`, `ruleset` |
|
|
189
|
+
| `ReceiptWithCompany` | `testKasse`, `testSignatur`, `kopfId`, `pruefangaben`, `logoStufe` | `testCashregister`, `testSignature`, `headerVersionId`, `registrationInfo`, `logoScale` |
|
|
190
|
+
| `ReceiptCompany` | `taxnr`, `uid` | `taxNumber`, `vatId` |
|
|
191
|
+
| layout lines | `regelwerk`, `ton` (`belegart`, `warnung`) | `ruleset`, `tone` (`receipt_type`, `warning`) |
|
|
192
|
+
| receipt sheet | `belegBlatt`, `BelegBlatt`, `BlattBlock`, `LogoStufe`, `logoRaster`, `logoMass` | `receiptSheet`, `ReceiptSheet`, `SheetBlock`, `SheetLogoSize`, `rasterizeLogo`, `logoDimensions` |
|
|
193
|
+
| sheet fields | `zeichen`, `bloecke`, `art`, `fett`, `marke`, `stufe`, `pxBreite`, `pxHoehe` | `charsPerLine`, `blocks`, `kind`, `bold`, `brandMark`, `size`, `pixelWidth`, `pixelHeight` |
|
|
194
|
+
| printing | `qrGroesseFuer`, `QR_DRUCK_PUNKTE`, `QrModulGroesse` (`klein`/`mittel`/`gross`) | `qrSizingFor`, `QR_PRINT_WIDTH_DOTS`, `QrModuleSize` (`small`/`medium`/`large`) |
|
|
195
|
+
| printing options | `qrGroesse`, `qrModus`, `qrAusweich`, `qrFehler`, `marke` | `qrModuleSize`, `qrMode`, `qrFallback`, `qrError`, `brandMark` |
|
|
196
|
+
| React | `BelegBlattView`, `BelegBlattZeilen`, `qrVerdeckt` | `ReceiptSheetView`, `ReceiptSheetLines`, `qrHidden` |
|
|
197
|
+
| `./pos` | `getKasseSettings`, `setMyKasseSettings`, `KASSE_TASTEN_AKTIONEN`, `TASTEN_AKTIONEN` | `getPosSettings`, `setMyPosSettings`, `POS_SHORTCUT_ACTIONS` |
|
|
198
|
+
| `./pos` value lists | `STIL`, `SCHRIFT`, `DRUCKER_ART`, `PAPIER`, `KASSIEREN_MODUS`, … | `THEME`, `FONT_SIZE`, `PRINTER_TYPE`, `PAPER_SIZE`, `CHECKOUT_MODE`, … |
|
|
199
|
+
| `./pos` texts | `MELDUNGEN`, `BESCHRIFTUNGEN`, `meldung`, `beschriftung`, `BELEG_MAIL_FEHLER`, `belegMailFehler` | `MESSAGES`, `LABELS`, `messageText`, `labelText`, `RECEIPT_EMAIL_ERROR_MESSAGES`, `receiptEmailErrorMessage` |
|
|
200
|
+
| `./pos` printers | `NetzDrucker`, `DruckJob`, `druckerId`, `titel`, `quelle`, `marke` | `NetworkPrinter`, `PrintJob`, `printerId`, `title`, `source`, `brandMark` |
|
|
201
|
+
| `./register` | `RegisterGeraeteAngaben`, `RegisterSessionsStand`, `altbestand`, `selbst` | `RegisterDeviceInfo`, `RegisterSessionOverview`, `pinPolicyOutdated`, `own` |
|
|
202
|
+
| `./invoice` | `createRechnungApi`, `rechnungKeyAuth`, `istRechnungFehler`, `rechnungFeldFehler`, `RECHNUNG_TEXTE` | `createInvoiceApi`, `invoiceKeyAuth`, `isInvoiceError`, `invoiceFieldErrors`, `INVOICE_TEXTS` |
|
|
203
|
+
| `./invoice` | `rechnungSummen`, `RECHNUNG_AUFRUFE`, `RECHNUNG_VERTRAG_VERSION` (1) | `computeInvoiceTotals`, `INVOICE_ENDPOINTS`, `INVOICE_CONTRACT_VERSION` (2) |
|
|
204
|
+
| `./invoice/calc` | `rechnungRechnen`, `positionAusEuro`, `RechenFehler`, `STEUERFREIE_FAELLE`, `BETRAG_GRENZE_CENTS` | `calculateInvoice`, `itemFromEuro`, `CalcError`, `ZERO_RATED_TAX_SCHEMES`, `MAX_AMOUNT_CENTS` |
|
|
205
|
+
| `./invoice/calc` codes | `kein_ganzzahlwert`, `ausserhalb`, `kein_zahlwert`, `nachkommastellen` | `not_integer`, `out_of_range`, `not_a_number`, `too_many_decimals` |
|
|
206
|
+
| `./partner` | `PARTNER_ABLAUF`, `PARTNER_FEHLER_CODES`, `istPartnerFehler`, `partnerFehlerRat`, `partnerFeldFehler` | `PARTNER_FLOW`, `PARTNER_ERROR_CODES`, `isPartnerError`, `partnerErrorAdvice`, `partnerFieldErrors` |
|
|
207
|
+
| `./partner` types | `Betrieb`, `Kunde`, `Kasse`, `SignaturStand`, `WebhookZustellung` | `Business`, `PartnerCustomer`, `CustomerCashregister`, `CustomerSignatureStatus`, `WebhookDelivery` |
|
|
208
|
+
| enums | `VatRate.vat4komma9` | `VatRate.vat4_9` |
|
|
209
|
+
| misc | `KasseneckSecret.vorhanden`, `UsbTimeoutError.schritt`, `istZeroKind`, `verteileRabatt` | `hasValue`, `step`, `isZeroKind`, `distributeDiscount` |
|
|
210
|
+
|
|
211
|
+
The register settings fields follow the `/v3` vocabulary (`logoAn` is
|
|
212
|
+
`logoEnabled`, `zahlGetrennt` is `paySplit`, `kassierenModus` is
|
|
213
|
+
`checkoutMode`, `druckerArt` is `printerType`, `tasten` is `shortcuts`, the
|
|
214
|
+
shortcut action `kassieren` is `checkout`, `getrennt` is `splitPayment`, …).
|
|
215
|
+
The complete list of settings keys and values, like every other renamed
|
|
216
|
+
key in the contract files, is in `fixtures/renames-1.0.json` (`structure`,
|
|
217
|
+
`values`). For export names the TSDoc of each 1.0 export and the compiler are
|
|
218
|
+
the reference: an old name no longer resolves.
|
|
219
|
+
|
|
220
|
+
#### Subpaths
|
|
221
|
+
|
|
222
|
+
| 0.x | 1.0 |
|
|
223
|
+
|---|---|
|
|
224
|
+
| `@kreiseck/kasseneck-api/kasse` | `@kreiseck/kasseneck-api/pos` |
|
|
225
|
+
| `@kreiseck/kasseneck-api/rechnung` | `@kreiseck/kasseneck-api/invoice` |
|
|
226
|
+
| `@kreiseck/kasseneck-api/rechnung/rechnen` | `@kreiseck/kasseneck-api/invoice/calc` |
|
|
227
|
+
| (none) | `@kreiseck/kasseneck-api/stored` |
|
|
228
|
+
|
|
229
|
+
The old subpaths are gone, not aliased.
|
|
230
|
+
|
|
231
|
+
#### Text keys and placeholders
|
|
232
|
+
|
|
233
|
+
The keys of the register catalogue (`MESSAGES`, `LABELS`) and of the invoice
|
|
234
|
+
texts are English: `storno.ergebnis_unklar` is `cancellation.outcome_unknown`,
|
|
235
|
+
`getrennt.*` is `split.*`, `kartenzahlung.*` is `card_payment.*`,
|
|
236
|
+
`abschluss.*` is `completion.*`, `steuer.igLieferung.titel` is
|
|
237
|
+
`tax.intra_community_supply.title`. Every part is lower case with underscores,
|
|
238
|
+
only country codes stay upper case (`country.AT`). Placeholders are English
|
|
239
|
+
too: `{betrag}` is `{amount}`, `{grund}` is `{reason}`, `{sekunden}` is
|
|
240
|
+
`{seconds}`, `{uid}` is `{vatId}`, and so on for 23 of 30 names; pass the
|
|
241
|
+
values under the new names (`messageText('checkout.locked', { reason })`). An
|
|
242
|
+
old name throws as a missing value. `ERROR_RULES` entries use
|
|
243
|
+
`kind`/`behavior`/`key` with the kinds `api`, `plain_text`, `timeout`,
|
|
244
|
+
`network`, `unexpected`, `other`. Every rendered text is unchanged; a test
|
|
245
|
+
fills each text of both catalogues old and new with the same values and
|
|
246
|
+
compares them character for character. The full key and placeholder tables
|
|
247
|
+
are `texts` and `placeholders` in `fixtures/renames-1.0.json`.
|
|
248
|
+
|
|
249
|
+
#### Contract files
|
|
250
|
+
|
|
251
|
+
The files in `fixtures/` have English paths and keys: `kasse-texte.json` is
|
|
252
|
+
`pos-texts.json`, `oberflaeche.json` is `surface.json`,
|
|
253
|
+
`kasse-settings-standard.json` is `pos-settings-defaults.json`,
|
|
254
|
+
`rechnung-texte.json` is `invoice-texts.json`, `belege/` is `receipts/`,
|
|
255
|
+
`erwartet/` is `expected/` (`.blatt32.json` is `.sheet32.json`), golden
|
|
256
|
+
receipts are renamed (`verkauf-bar` is `sale-cash`, `storno-voll` is
|
|
257
|
+
`cancellation-full`), and the manifest uses `ruleset`, `receipts`, `input`,
|
|
258
|
+
`expected`. `surface.json` replaces `aufrufe` with `baseUrls`, `calls` and
|
|
259
|
+
`routes`. `fixtures/renames-1.0.json` lists every path and key that changed
|
|
260
|
+
from 0.30.0/0.31.0, the renamed machine values and the shape changes; a test
|
|
261
|
+
checks it against the frozen 0.x inventory, so no old key is missing. New: `fixtures/v3/` (the backend's `/v3` contract, copied byte for
|
|
262
|
+
byte), `receipt-due-generated.json`, `stored/pos-settings-defaults.json`.
|
|
263
|
+
|
|
264
|
+
#### Removed
|
|
265
|
+
|
|
266
|
+
- `createCancelReceipt`, `CreateCancelReceiptOptions` and cancelling through
|
|
267
|
+
`createReceipt` with `receiptType: 'cancellation'`: use `cancelReceipt`.
|
|
268
|
+
- The single-payment path: `paymentMethod`, `paymentMethodFromServer`,
|
|
269
|
+
`creditCardProvider`, `cardPaymentId`, `cardPaymentData` on sales and
|
|
270
|
+
cancellations, and `SellReceiptWithPaymentsOptions` (there is only one way
|
|
271
|
+
to sell now).
|
|
272
|
+
- The deprecated aliases of 0.28: `Rechtsform`, `Bundesland`, `KontaktRolle`
|
|
273
|
+
(use `LegalForm`, `AustrianState`, `ContactRole`).
|
|
274
|
+
- `KASSE_TASTEN_AKTIONEN` and `TASTEN_AKTIONEN` as two names for one list:
|
|
275
|
+
there is only `POS_SHORTCUT_ACTIONS`.
|
|
276
|
+
|
|
277
|
+
#### New
|
|
278
|
+
|
|
279
|
+
- `…/stored`: `fromStoredReceipt`, `fromStoredReceiptWithCompany`,
|
|
280
|
+
`fromStoredCompany`, `fromStoredPosSettings`, `invalidStoredPosSettings`,
|
|
281
|
+
`fromStoredArticle` turn stored Firestore documents into the `/v3` models,
|
|
282
|
+
following the server's rules. For clients that read Firestore directly.
|
|
283
|
+
- Receipts: `receiptDueCents`, `receiptDueBreakdown`, `paymentsExpectedCents`,
|
|
284
|
+
`cardRefundReference`, `receiptLayoutFromResult`, `getReportV2`,
|
|
285
|
+
`RECEIPT_ERROR_CODES`/`isReceiptErrorCode`, `CANCELLATION_STATUSES`,
|
|
286
|
+
`RECEIPT_EMAIL_VIAS`, `RECEIPT_EMAIL_SEND_ERROR_CODES`.
|
|
287
|
+
- Transport: `POS_BASE_URL`, `PUBLIC_CALLS`, `POS_CALLS`, options
|
|
288
|
+
`posBaseUrl`, `clientHeader`, `omitKasseneckHeaders`; `ErrorOutcome`,
|
|
289
|
+
`isOutcomeUnknown`.
|
|
290
|
+
- `…/register`: `REGISTER_ERROR_CODES`, `isRegisterErrorCode`,
|
|
291
|
+
`registerErrorCode`, `isRegisterError`, `registerErrorDetails`; the pairing
|
|
292
|
+
result carries `companyName`, `cashregisterLabel` and `testEnvironment`.
|
|
293
|
+
- `…/pos`: `posSettingsChanges`, `sanitizePosSettings`,
|
|
294
|
+
`unknownPosSettingValues`, `posSettingsFromWire`, `POS_BUSINESS_VALUES`,
|
|
295
|
+
`POS_DEVICE_VALUES`, `POS_SHORTCUT_SHARED_PAIRS`, `posShortcutConflict`,
|
|
296
|
+
`setMyPosLogo`, `isPrintJobFinished`, `POS_ERROR_CODES`, `isPosError`,
|
|
297
|
+
`posFieldErrors`, `QUANTITY_RULES`, `PRINT_JOB_STATUSES`,
|
|
298
|
+
`PRINT_JOB_SOURCES`.
|
|
299
|
+
- `…/partner`: `reportCustomerContract`, `PARTNER_REQUEST_ERROR_CODES`, the
|
|
300
|
+
value lists `LEGAL_FORMS`, `AUSTRIAN_STATES`, `CONTACT_ROLES`, `AVV_MODES`,
|
|
301
|
+
`FEE_INTERVALS`, `CONTRACT_KINDS`, `CONTRACT_SOURCES`,
|
|
302
|
+
`SIGNATURE_HISTORY_REASONS`, `SIGNATURE_ERROR_CODES`,
|
|
303
|
+
`WEBHOOK_DELIVERY_STATUSES`, and the events `customer.avv_accepted` and
|
|
304
|
+
`customer.terms_accepted` in `PARTNER_WEBHOOK_EVENTS`.
|
|
305
|
+
- `…/invoice`: `WRITE_OFF_REASON_CODES`, `EINVOICE_MISSING_CODES`;
|
|
306
|
+
`getInvoiceXml` returns `{ xml, format, filename }` instead of the bare XML
|
|
307
|
+
text; `InvoiceDetail.payments[]` carries `id` and `reference`.
|
|
308
|
+
|
|
309
|
+
## 0.31.0
|
|
310
|
+
|
|
311
|
+
Texte und Einstellung für „Getrennt zahlen" an der Kasse (ein Tisch zahlt in Teilen, ein Beleg mit
|
|
312
|
+
mehreren Zahlungen). Nur Texte, eine Einstellung und eine Tasten-Aktion; kein Aufruf und kein
|
|
313
|
+
Rechenweg ändert sich.
|
|
314
|
+
|
|
315
|
+
- **`tenderedCents` an jeder Barzahlung**: die Doku an `ReceiptPaymentInput` und
|
|
316
|
+
`PAYMENT_TENDERED_INVALID` sagte „höchstens an einer Zahlung“. Das Backend erlaubt jetzt jeder
|
|
317
|
+
Barzahlung ihren eigenen gegebenen Betrag. Grund: beim getrennten Zahlen gibt jeder Gast selbst,
|
|
318
|
+
der Bon zeigte Gegeben/Rückgeld aber nur beim letzten. Der Bon druckte schon je Zahlung; ein Test
|
|
319
|
+
hält drei Barzahlungen mit je eigenem Rückgeld fest.
|
|
320
|
+
- **Neue Sätze in `MELDUNGEN`** unter `getrennt.*` (Hinweis zur Einstellung, Prüfungen der
|
|
321
|
+
Teilzahlung, gesperrter Warenkorb, Rückbuchung bar/Terminal/Karte ohne Anbindung, angefangene
|
|
322
|
+
Sitzung nach dem Neuladen) und unter `storno.*` (Rückgabe je Zahlung, Karten nach dem Storno von Hand gutschreiben).
|
|
323
|
+
Grund: Browser-Kasse und Kassen-App sollen am Tresen dieselben Worte sagen; eine schon belastete
|
|
324
|
+
Karte nennt in jedem Satz den Betrag, und keiner rät zum zweiten Kassieren.
|
|
325
|
+
- **`STORNO_ZAHLUNG_FEHLER`**: Zuordnung der Backend-Codes `STORNO_PAYMENTS_REQUIRED`,
|
|
326
|
+
`STORNO_REFUND_EXCEEDS_PAYMENT`, `STORNO_REFUND_REFERENCE_REQUIRED`,
|
|
327
|
+
`STORNO_REFUND_REFERENCE_UNKNOWN` und `PAYMENTS_SUM_MISMATCH` zu ihrem Satz, auch in
|
|
328
|
+
`fixtures/kasse-texte.json` (`stornoZahlungFehler`). Grund: beide Kassen entscheiden am Code,
|
|
329
|
+
nie am Wortlaut des Backends. `stornoZahlungFehler(code)` liefert den Schlüssel dazu, ein
|
|
330
|
+
unbekannter Code fällt auf `storno.fehlgeschlagen` (wie `belegMailFehler`).
|
|
331
|
+
- **Neuer Storno-Code `STORNO_OUTCOME_UNKNOWN`** am Ende von `CANCELLATION_ERROR_CODES` (Zwilling
|
|
332
|
+
von `STORNO_FEHLERCODES` in `functions/gemeinsam/storno-core.js`; unter `/v3`
|
|
333
|
+
`cancellation_outcome_unknown`, `isCancellationErrorCode` prüft weiter exakt) mit dem Satz
|
|
334
|
+
`storno.ergebnis_unklar`. Grund: der Storno-Beleg kann schon signiert sein, obwohl der Ausgang
|
|
335
|
+
offen ist; wer dann noch einmal storniert, storniert womöglich doppelt. Der Satz rät darum,
|
|
336
|
+
nicht zu wiederholen und die Belegliste später neu zu laden.
|
|
337
|
+
- **Aufteilung als eigener Schritt**: neue Beschriftungen `getrennt.weiter` („Weiter · {betrag}
|
|
338
|
+
getrennt“), `getrennt.aufteilung`, `getrennt.zurueck_zahlart`, `getrennt.tab_positionen`,
|
|
339
|
+
`getrennt.tab_betrag`, `getrennt.stueck_mehr`/`_weniger`,
|
|
340
|
+
`getrennt.gegeben`, `getrennt.gegeben_rueckgeld` und die Sätze
|
|
341
|
+
`getrennt.positionen_gesperrt` und `getrennt.positionen_waehlen`. Grund: Nutzertest – erst
|
|
342
|
+
„Weiter“, dann je Zahlung nach Positionen (stückweise) oder als Betrag. Nach einer Zahlung als
|
|
343
|
+
Betrag ist „Nach Positionen“ gesperrt, weil sich Beträge keinen Stücken zuordnen lassen; der
|
|
344
|
+
Satz sagt das.
|
|
345
|
+
- **Zahlart je Zahlung, ein Knopf zum Hinzufügen**: `getrennt.zahlart` („Zahlart“),
|
|
346
|
+
`getrennt.art_bar`/`getrennt.art_karte` („Bar“/„Karte“) als Umschalter oben in der Zahlung,
|
|
347
|
+
`getrennt.zahlung_hinzufuegen` („Zahlung hinzufügen · {betrag}“) für den einen Knopf unten
|
|
348
|
+
rechts und der Satz `getrennt.gegeben_fehlt` (Barzahlung ohne „Gegeben“ bei eingeschaltetem
|
|
349
|
+
Rückgeld-Rechner, Wortlaut wie beim Abschluss). `getrennt.bar_kassieren`/`getrennt.karte_kassieren`
|
|
350
|
+
und `getrennt.kassieren` („Zahlung {n} kassieren“) entfallen (noch nie veröffentlicht). Grund: Nutzertest – zwei Knöpfe, die sofort kassieren,
|
|
351
|
+
lagen zu nah beieinander; jetzt wählt der Kassier die Zahlart wie jede andere Eingabe, und nur
|
|
352
|
+
ein Knopf löst die Zahlung aus. Offen 0 macht aus demselben Knopf „Abschließen“.
|
|
353
|
+
- **Nach Positionen als Kacheln**: `getrennt.offene_positionen`, `getrennt.stueck_offen`
|
|
354
|
+
(„{n} offen“), `getrennt.stueck_gewaehlt` („{n} von {offen}“), `getrennt.nichts_gewaehlt` und
|
|
355
|
+
`getrennt.alles_bezahlt`. `getrennt.stueck_bezahlt` entfällt (noch nie veröffentlicht): bezahlte
|
|
356
|
+
Stück verschwinden aus der Auswahl. Grund: Nutzertest – in der großen Fläche stehen nur noch die
|
|
357
|
+
offenen Produkte als Kacheln, der Kassier tippt dort an, was dieser Gast zahlt.
|
|
358
|
+
- **`BESCHRIFTUNGEN` und `beschriftung()`**: ein zweiter Katalog für Knöpfe und Zeilennamen
|
|
359
|
+
(„Getrennt", „Zahlung {n}", „Offen", „Rest", „÷ {n}", „davon Trinkgeld {betrag}", „Wie
|
|
360
|
+
zurückgeben?", „Alles bar", „Mehrere" …), in `fixtures/kasse-texte.json` unter `beschriftungen`.
|
|
361
|
+
Grund: `MELDUNGEN` führt nur Sätze (die Wächter beider Kassen erkennen Sätze daran), „Rest" ist
|
|
362
|
+
keiner – muss aber in beiden Kassen gleich heißen. Die Zahlarten folgen dem Bon
|
|
363
|
+
(„Kartenzahlung", „Barzahlung").
|
|
364
|
+
- **Vier weitere Sätze unter `getrennt.*`**: `sitzung_unlesbar` (eine auf dem Gerät abgelegte
|
|
365
|
+
Sitzung lässt sich nicht mehr lesen – auf schon belastete Karten hinweisen, im Panel oder am
|
|
366
|
+
Terminal nachsehen lassen), `ablage_fehlgeschlagen` (die Ablage schlägt fehl – vor dem
|
|
367
|
+
Neuladen warnen, sonst verschwinden belastete Karten aus der Liste), `zu_viele_zahlungen`
|
|
368
|
+
(höchstens 20 Zahlungen je Beleg) und `entkoppeln_offene_karten` (ein entkoppeltes Gerät hatte
|
|
369
|
+
noch offene Kartenzahlungen – die Beträge stehen daneben, der Satz selbst bleibt ohne
|
|
370
|
+
Platzhalter). Grund: die Ablage der Teilzahlung läuft rein lokal auf dem Gerät; geht sie
|
|
371
|
+
verloren oder lässt sie sich nicht lesen, ist eine schon belastete Karte das teure Risiko, und
|
|
372
|
+
der Satz muss zum Nachschauen anleiten statt zum Weiterkassieren zu verleiten.
|
|
373
|
+
- **Einstellung `zahlGetrennt`** (Betrieb, Standard `false`) und **Tasten-Aktion `getrennt`**
|
|
374
|
+
(ohne Vorgabe-Taste). Grund: für Betriebe ohne Bedarf bleibt die Kasse, wie sie ist; eine
|
|
375
|
+
unerprobte Vorgabe-Taste finge womöglich der Browser ab. Das Backend (`kasse-settings-core.js`)
|
|
376
|
+
muss beide nachziehen, sonst verwirft sein Validator den Wert beim Speichern.
|
|
377
|
+
- **Vorgabe `kassierenModus` jetzt `'panel'`** (vorher `'seite'`): kassiert wird im Korb-Panel,
|
|
378
|
+
die Kacheln bleiben stehen. Grund: Nutzertest – so bleibt der Kachelbereich beim Kassieren
|
|
379
|
+
sichtbar, auch beim getrennten Zahlen. Ein gespeichertes `'seite'` bleibt; gespeichert werden
|
|
380
|
+
aber nur geänderte Felder, darum wechselt jedes Konto, das den Schalter nie angefasst hat, mit
|
|
381
|
+
dem Backend-Standard auf das Korb-Panel. Das Backend (`BETRIEB_STANDARD` in
|
|
382
|
+
`kasse-settings-core.js`) und der Dart-Zwilling ziehen denselben Wert nach.
|
|
383
|
+
- **Texte, die bisher nur in der Browser-Kasse standen, jetzt im Katalog**: Sätze
|
|
384
|
+
`kassieren.nichts_erfasst`, `kassieren.gegeben_fehlt`, `kassieren.gegeben_zu_wenig`,
|
|
385
|
+
`kassieren.gesperrt` („Kassieren gesperrt: {grund}“), `trinkgeld.ueber_haelfte`,
|
|
386
|
+
`sitzung.meldet_ab` („Kasse meldet in {sekunden} s ab …“), `abmelden.noch_einmal`,
|
|
387
|
+
`kartenzahlung.terminal_bricht_ab` und `connect.entkoppeln_frage` (nur Web); Beschriftungen
|
|
388
|
+
`kassieren.trinkgeld`, `kassieren.kein`, `kassieren.eigener_betrag`, `kassieren.passend`,
|
|
389
|
+
`kassieren.gegeben_loeschen`, `kassieren.es_fehlen_noch`, `kassieren.rueckgeld`,
|
|
390
|
+
`kartenzahlung.betrag_am_terminal`, `kartenzahlung.karte_vorhalten` („… · noch {zeit}“),
|
|
391
|
+
`kopplung.neu_koppeln`, `abmelden.frage`, `abmelden.weiter_arbeiten`, `geraet.entkoppeln`,
|
|
392
|
+
`connect.entkoppeln_bestaetigen` (nur Web), `storno.titel` („Storno zu {beleg}“),
|
|
393
|
+
`meldung.ausblenden` („Meldung ausblenden: {meldung}“) und `meldung.warnung_ausblenden`
|
|
394
|
+
(„Verstanden – Warnung ausblenden: {meldung}“). Wortlaut wie bisher in der Browser-Kasse.
|
|
395
|
+
Grund: Oberflächen-Vertrag – beide Kassen zeigen dieselben Wörter; das X an einer Meldung nennt
|
|
396
|
+
jetzt, welche Meldung es ausblendet (in der Ecke stehen oft mehrere).
|
|
397
|
+
- **Halbgeviertstrich statt Geviertstrich** in allen sichtbaren Texten von `MELDUNGEN` (u. a.
|
|
398
|
+
`abschluss.unklar`, `kartenzahlung.unklar`, `kartenzahlung.karte_gebucht_beleg_offen`,
|
|
399
|
+
`connect.*`, `druck.*`) und in den Sätzen der Hobex-Antwortcodes (`transaction-response.ts`,
|
|
400
|
+
auch `fixtures/hobex-hps-codes.json`): „ – “ statt „ — “. Nur das Zeichen ändert sich, kein
|
|
401
|
+
Wortlaut und kein Schlüssel. Wer einen dieser Sätze wörtlich vergleicht, muss nachziehen.
|
|
402
|
+
Grund: einheitliche Typografie am Bildschirm; der Geviertstrich wirkt dort wie ein
|
|
403
|
+
Maschinenzeichen. Die Rechnungstexte (`rechnung/texte.ts`, PDF) bleiben unverändert.
|
|
404
|
+
- **`Cancellation` trägt `refundedByPayment`** (Zahlungs-ID auf positive Cent), Zwilling der
|
|
405
|
+
gleichnamigen Backend-Ablage (`functions/gemeinsam/storno-core.js`). Die Lesung
|
|
406
|
+
(`fromReceiptPayload`) behält nur ganzzahlige, nicht negative Werte, verwirft ungültige
|
|
407
|
+
Einträge einzeln statt den ganzen Eintrag zu verwerfen, und lässt das Feld weg, wenn die
|
|
408
|
+
Nutzlast es nicht trägt – bestehende Belege lesen sich unverändert. Auch am `pending`-Eintrag
|
|
409
|
+
vorhanden. Grund: über alle Storno-Einträge darf je Zahlung nie mehr zurückgehen, als bezahlt
|
|
410
|
+
wurde; ohne das Feld ließe sich das am Client nicht nachvollziehen.
|
|
411
|
+
- **Weitere Sätze in `MELDUNGEN`**: `getrennt.karte_bereits_zurueckgebucht` (das Terminal meldet
|
|
412
|
+
eine Gutschrift, die hier noch als offene Rückbuchung steht), `abschluss.erledigen_frage` (nur erledigen, was wirklich in der Belegliste steht),
|
|
413
|
+
`kartenzahlung.korb_gesperrt_karte_belastet` und `kartenzahlung.entkoppeln_karte_belastet`.
|
|
414
|
+
Grund: jeder dieser Zustände ist eine schon belastete oder gutgeschriebene Karte ohne
|
|
415
|
+
passenden Beleg – der teuerste Fehler am Tresen ist die doppelte Buchung, und kein Satz davon
|
|
416
|
+
darf zum Wiederholen raten, ohne vorher den Terminal-Beleg zu nennen.
|
|
417
|
+
- **Weitere `BESCHRIFTUNGEN`**: `allgemein.abbrechen`, `abschluss.beleg_vorhanden`,
|
|
418
|
+
`abschluss.erledigen`, `getrennt.karte_zurueckbuchen`, `getrennt.trotzdem_neu_koppeln`,
|
|
419
|
+
`getrennt.zahlung_behalten`, `getrennt.klaeren`, `getrennt.wurde_belastet`,
|
|
420
|
+
`getrennt.nicht_belastet`, `getrennt.erneut_zurueckbuchen`, `storno.differenz`. Grund: Knöpfe
|
|
421
|
+
zu den neuen Sätzen oben, in beiden Kassen gleich beschriftet.
|
|
422
|
+
- **Storno eines Belegs mit mehreren Zahlungen: Karten gehen von Hand zurück.**
|
|
423
|
+
`storno.karten_gutschreiben` steht nach dem gebuchten Storno über der Liste der Karten zum
|
|
424
|
+
Abhaken (eine oder mehrere, mit oder ohne Anbindung); `storno.ergebnis_unklar_karten` ersetzt
|
|
425
|
+
`storno.ergebnis_unklar`, wenn der gesendete Vorschlag Karten enthielt – erst die Belegliste
|
|
426
|
+
neu laden, erst dann gutschreiben (`STORNO_ZAHLUNG_FEHLER` zeigt weiter auf
|
|
427
|
+
`storno.ergebnis_unklar`, die Wahl trifft die Kasse am Vorschlag). Die Sätze und Knöpfe einer
|
|
428
|
+
Gutschrift am Terminal VOR dem Senden (`storno.gutschrift_laeuft`,
|
|
429
|
+
`storno.gutschrift_fehlgeschlagen`, `storno.gutschrift_unklar`,
|
|
430
|
+
`storno.gutgeschrieben_nicht_gebucht`, `storno.gutschrift_pruefen`,
|
|
431
|
+
`storno.extern_gutschreiben`, `storno.am_terminal_gutgeschrieben`,
|
|
432
|
+
`storno.nicht_gutgeschrieben`) sind wieder entfernt; sie waren nie veröffentlicht. Grund:
|
|
433
|
+
eine Gutschrift vor dem gebuchten Storno lässt Geld zurückgehen, ohne dass ein Storno-Beleg
|
|
434
|
+
sicher entsteht; die automatische Gutschrift kommt als eigener Schritt mit
|
|
435
|
+
Server-Unterstützung.
|
|
436
|
+
- **`storno.karten_nicht_abgehakt`**: wird die Liste der Karten nach dem gebuchten Storno
|
|
437
|
+
geschlossen, obwohl nicht jede Karte abgehakt ist, fragt die Kasse einmal nach. Grund: eine
|
|
438
|
+
vergessene Gutschrift fällt sonst erst dem Gast auf, und am Storno-Beleg sieht sie niemand mehr.
|
|
439
|
+
|
|
7
440
|
## 0.30.0
|
|
8
441
|
|
|
9
442
|
Mehrere Zahlungen je Beleg. Setzt ein Backend mit `payments` voraus (keck, live seit
|
package/README.de.md
CHANGED
|
@@ -22,20 +22,24 @@ optional und nur für `@kreiseck/kasseneck-api/react` nötig.
|
|
|
22
22
|
## Ein Beleg in wenigen Zeilen
|
|
23
23
|
|
|
24
24
|
```ts
|
|
25
|
-
import { createKasseneckApi, apiKeyAuth, KeckPaymentMethod, VatRate } from '@kreiseck/kasseneck-api';
|
|
26
|
-
import {
|
|
25
|
+
import { createKasseneckApi, apiKeyAuth, KeckPaymentMethod, VatRate, receiptDueCents, receiptLayoutFromResult } from '@kreiseck/kasseneck-api';
|
|
26
|
+
import { escPosLayoutBytes } from '@kreiseck/kasseneck-api/receipt';
|
|
27
27
|
|
|
28
28
|
const api = createKasseneckApi({
|
|
29
29
|
auth: apiKeyAuth({ apiKey: 'kr_live_…', cashregisterToken: 'cb_live_…' }),
|
|
30
30
|
});
|
|
31
31
|
|
|
32
|
-
const {
|
|
33
|
-
|
|
34
|
-
items
|
|
32
|
+
const items = [{ name: 'Café Latte', quantity: 2, vat: VatRate.vat20, priceCents: 390 }];
|
|
33
|
+
const result = await api.sellReceiptWithCompany({
|
|
34
|
+
items,
|
|
35
|
+
// Die Zahlungen ergeben genau den Zahlbetrag (ganze Cent).
|
|
36
|
+
payments: [{ method: KeckPaymentMethod.cash, amountCents: receiptDueCents(items, [], 'standard') }],
|
|
35
37
|
});
|
|
36
38
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
+
// Das Layout des Servers (`layout`, 80 mm) gewinnt; nur ohne entsteht es aus derselben Antwort (`fallbackPaperSize`, Vorgabe mm58).
|
|
40
|
+
// Die Druckbreite wählt der Druckweg.
|
|
41
|
+
const layout = receiptLayoutFromResult(result);
|
|
42
|
+
const bytes = escPosLayoutBytes(layout, { paperSize: 'mm58' }); // für den Bondrucker
|
|
39
43
|
```
|
|
40
44
|
|
|
41
45
|
Beträge sind immer ganze Cent (`priceCents`), Mengen am Beleg ganze Zahlen.
|