@kreiseck/kasseneck-api 0.31.0 → 1.0.0-rc.2
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 +317 -0
- package/README.de.md +11 -7
- package/README.md +509 -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 +94 -19
- package/dist/cjs/client/errors.js +132 -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 +196 -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 +234 -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/cjs/{rechnung → invoice}/vertrag.d.ts +97 -71
- package/dist/cjs/{rechnung → invoice}/vertrag.js +144 -82
- package/dist/cjs/models/cancellation.d.ts +43 -24
- package/dist/cjs/models/cancellation.js +94 -46
- 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-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 +12 -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.d.ts +11 -3
- package/dist/cjs/payments/hobex.js +17 -5
- package/dist/cjs/payments/stripe.d.ts +5 -2
- package/dist/cjs/payments/stripe.js +10 -5
- 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 +94 -19
- package/dist/esm/client/errors.js +129 -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 +195 -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 +233 -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/esm/{rechnung → invoice}/vertrag.d.ts +97 -71
- package/dist/esm/{rechnung → invoice}/vertrag.js +143 -81
- package/dist/esm/models/cancellation.d.ts +43 -24
- package/dist/esm/models/cancellation.js +90 -45
- 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-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 +12 -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.d.ts +11 -3
- package/dist/esm/payments/hobex.js +18 -6
- package/dist/esm/payments/stripe.d.ts +5 -2
- package/dist/esm/payments/stripe.js +11 -6
- 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 +12 -12
- 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/{kasse-texte.json → pos-texts.json} +416 -416
- 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} +7 -7
- 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 -83
- package/dist/cjs/kasse/settings.d.ts +0 -229
- package/dist/cjs/kasse/settings.js +0 -172
- package/dist/cjs/kasse/texte.d.ts +0 -868
- package/dist/cjs/kasse/texte.js +0 -474
- 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 -229
- package/dist/esm/kasse/settings.js +0 -168
- package/dist/esm/kasse/texte.d.ts +0 -868
- package/dist/esm/kasse/texte.js +0 -466
- 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/oberflaeche.json +0 -558
- 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
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* PLZ, Gericht) macht das Backend mit `@kreiseck/validator` — sie hier zu
|
|
13
13
|
* wiederholen hiesse, zwei Wahrheiten zu haben, von denen eine veraltet.
|
|
14
14
|
* Ein Formfehler kommt als `KasseneckApiError` mit `code:"validation"` zurueck;
|
|
15
|
-
* `
|
|
15
|
+
* `partnerFieldErrors(fehler)` macht `data.errors[]` daraus. **Es entsteht dabei
|
|
16
16
|
* nichts** — der Aufruf ist folgenlos wiederholbar.
|
|
17
17
|
*
|
|
18
18
|
* Nach dem Senden wird nichts hart gecastet: fehlt ein zugesagtes Feld, wirft
|
|
@@ -32,6 +32,7 @@ exports.createCustomerCashregister = createCustomerCashregister;
|
|
|
32
32
|
exports.activateCashregister = activateCashregister;
|
|
33
33
|
exports.listCustomerCashregisters = listCustomerCashregisters;
|
|
34
34
|
exports.getCustomerCredentials = getCustomerCredentials;
|
|
35
|
+
exports.reportCustomerContract = reportCustomerContract;
|
|
35
36
|
const errors_js_1 = require("../client/errors.js");
|
|
36
37
|
const secret_js_1 = require("./secret.js");
|
|
37
38
|
// ---------------------------------------------------------------------------
|
|
@@ -100,8 +101,8 @@ function pflicht(wert, vorgang, feld) {
|
|
|
100
101
|
* Der guenstigste Selbsttest beim Hochfahren: er beweist Schluessel, Umgebung
|
|
101
102
|
* und Rechte in einem Aufruf.
|
|
102
103
|
*/
|
|
103
|
-
async function getPartnerInfo(
|
|
104
|
-
const daten = objekt(await
|
|
104
|
+
async function getPartnerInfo(transport) {
|
|
105
|
+
const daten = objekt(await transport('getPartnerInfo'));
|
|
105
106
|
const partner = verlangt(daten['partner'], 'getPartnerInfo', 'partner');
|
|
106
107
|
const key = objekt(daten['key']);
|
|
107
108
|
return {
|
|
@@ -159,18 +160,18 @@ async function getPartnerInfo(rufen) {
|
|
|
159
160
|
* — auch dann, wenn der Rumpf inzwischen abweicht. Die eigene Kundennummer ist
|
|
160
161
|
* der natuerliche Wert dafuer.
|
|
161
162
|
*/
|
|
162
|
-
async function createPartnerCustomer(
|
|
163
|
-
const appId = pflicht(
|
|
164
|
-
const betrieb =
|
|
163
|
+
async function createPartnerCustomer(transport, options) {
|
|
164
|
+
const appId = pflicht(options?.appId, 'createPartnerCustomer', 'appId');
|
|
165
|
+
const betrieb = options?.business;
|
|
165
166
|
if (betrieb === null || typeof betrieb !== 'object') {
|
|
166
167
|
throw new errors_js_1.KasseneckValidationError('createPartnerCustomer', 'business fehlt', 'request');
|
|
167
168
|
}
|
|
168
|
-
const daten = objekt(await
|
|
169
|
+
const daten = objekt(await transport('createPartnerCustomer', {
|
|
169
170
|
appId,
|
|
170
171
|
business: betrieb,
|
|
171
|
-
idempotencyKey:
|
|
172
|
-
access:
|
|
173
|
-
env:
|
|
172
|
+
idempotencyKey: options.idempotencyKey,
|
|
173
|
+
access: options.access,
|
|
174
|
+
env: options.env,
|
|
174
175
|
}));
|
|
175
176
|
const customerId = textOderNull(daten['customerId']);
|
|
176
177
|
if (!customerId) {
|
|
@@ -190,14 +191,14 @@ async function createPartnerCustomer(rufen, optionen) {
|
|
|
190
191
|
};
|
|
191
192
|
}
|
|
192
193
|
/** Betriebe dieses Partners, seitenweise. `cursor` aus der Antwort setzt fort. */
|
|
193
|
-
async function listPartnerCustomers(
|
|
194
|
-
if (
|
|
194
|
+
async function listPartnerCustomers(transport, options = {}) {
|
|
195
|
+
if (options.limit !== undefined && (!Number.isInteger(options.limit) || options.limit < 1 || options.limit > 200)) {
|
|
195
196
|
throw new errors_js_1.KasseneckValidationError('listPartnerCustomers', 'limit muss zwischen 1 und 200 liegen', 'request');
|
|
196
197
|
}
|
|
197
|
-
const daten = objekt(await
|
|
198
|
-
status:
|
|
199
|
-
limit:
|
|
200
|
-
cursor:
|
|
198
|
+
const daten = objekt(await transport('listPartnerCustomers', {
|
|
199
|
+
status: options.status,
|
|
200
|
+
limit: options.limit,
|
|
201
|
+
cursor: options.cursor,
|
|
201
202
|
}));
|
|
202
203
|
return {
|
|
203
204
|
customers: liste(daten['customers']).map(kundenZeile),
|
|
@@ -247,9 +248,9 @@ function avvStand(wert) {
|
|
|
247
248
|
return { ...v, mode: textOderNull(wert['mode']) };
|
|
248
249
|
}
|
|
249
250
|
/** Ein Betrieb mit allem, was der Partner ueber ihn sehen darf — nie Geheimnisse. */
|
|
250
|
-
async function getPartnerCustomer(
|
|
251
|
+
async function getPartnerCustomer(transport, customerId) {
|
|
251
252
|
const id = pflicht(customerId, 'getPartnerCustomer', 'customerId');
|
|
252
|
-
const daten = objekt(await
|
|
253
|
+
const daten = objekt(await transport('getPartnerCustomer', { customerId: id }));
|
|
253
254
|
const k = verlangt(daten['customer'], 'getPartnerCustomer', 'customer');
|
|
254
255
|
const fon = objekt(k['fon']);
|
|
255
256
|
const zugang = k['access'];
|
|
@@ -294,16 +295,16 @@ async function getPartnerCustomer(rufen, customerId) {
|
|
|
294
295
|
* einem ganzen ausgefuellten Formular auf. Die Antwort sagt NUR ja oder nein —
|
|
295
296
|
* nie, wem die Adresse gehoert.
|
|
296
297
|
*/
|
|
297
|
-
async function checkPartnerCustomerEmail(
|
|
298
|
+
async function checkPartnerCustomerEmail(transport, email) {
|
|
298
299
|
const adresse = typeof email === 'string' ? email.trim() : '';
|
|
299
300
|
if (!adresse)
|
|
300
301
|
throw new errors_js_1.KasseneckValidationError('checkPartnerCustomerEmail', 'email fehlt', 'request');
|
|
301
|
-
const daten = objekt(await
|
|
302
|
+
const daten = objekt(await transport('checkPartnerCustomerEmail', { email: adresse }));
|
|
302
303
|
return daten['available'] === true;
|
|
303
304
|
}
|
|
304
|
-
async function sendPartnerCustomerFonLink(
|
|
305
|
+
async function sendPartnerCustomerFonLink(transport, customerId) {
|
|
305
306
|
const id = pflicht(customerId, 'sendPartnerCustomerFonLink', 'customerId');
|
|
306
|
-
const daten = objekt(await
|
|
307
|
+
const daten = objekt(await transport('sendPartnerCustomerFonLink', { customerId: id }));
|
|
307
308
|
return {
|
|
308
309
|
customerId: text(daten['customerId'], id),
|
|
309
310
|
sentTo: text(daten['sentTo']),
|
|
@@ -360,12 +361,12 @@ function antrag(eintrag) {
|
|
|
360
361
|
* Abschluss kommt als Ereignis `signature.ready`, nicht als Antwort auf diesen
|
|
361
362
|
* Aufruf.
|
|
362
363
|
*/
|
|
363
|
-
async function requestCustomerSignature(
|
|
364
|
+
async function requestCustomerSignature(transport, customerId, options = {}) {
|
|
364
365
|
const id = pflicht(customerId, 'requestCustomerSignature', 'customerId');
|
|
365
|
-
const daten = objekt(await
|
|
366
|
+
const daten = objekt(await transport('requestCustomerSignature', {
|
|
366
367
|
customerId: id,
|
|
367
|
-
kind:
|
|
368
|
-
additional:
|
|
368
|
+
kind: options.kind,
|
|
369
|
+
additional: options.additional,
|
|
369
370
|
}));
|
|
370
371
|
return {
|
|
371
372
|
request: antrag(verlangt(daten['request'], 'requestCustomerSignature', 'request')),
|
|
@@ -399,9 +400,9 @@ function signaturEinzeln(eintrag) {
|
|
|
399
400
|
};
|
|
400
401
|
}
|
|
401
402
|
/** Stand der Signatur eines Betriebs samt aller Signaturen, Antraege und des FON-Zugangs. */
|
|
402
|
-
async function getCustomerSignatureStatus(
|
|
403
|
+
async function getCustomerSignatureStatus(transport, customerId) {
|
|
403
404
|
const id = pflicht(customerId, 'getCustomerSignatureStatus', 'customerId');
|
|
404
|
-
const daten = objekt(await
|
|
405
|
+
const daten = objekt(await transport('getCustomerSignatureStatus', { customerId: id }));
|
|
405
406
|
const signatur = objekt(daten['signature']);
|
|
406
407
|
const fon = objekt(daten['fon']);
|
|
407
408
|
return {
|
|
@@ -461,12 +462,12 @@ function kasse(eintrag) {
|
|
|
461
462
|
* Hoechstens 20 Kassen je Betrieb (`cashregister_limit`); ohne gebuchtes Modul
|
|
462
463
|
* `module_inactive`.
|
|
463
464
|
*/
|
|
464
|
-
async function createCustomerCashregister(
|
|
465
|
-
const id = pflicht(
|
|
466
|
-
const daten = objekt(await
|
|
465
|
+
async function createCustomerCashregister(transport, options) {
|
|
466
|
+
const id = pflicht(options?.customerId, 'createCustomerCashregister', 'customerId');
|
|
467
|
+
const daten = objekt(await transport('createCustomerCashregister', {
|
|
467
468
|
customerId: id,
|
|
468
|
-
automatic:
|
|
469
|
-
signatureRequestId:
|
|
469
|
+
automatic: options.automatic,
|
|
470
|
+
signatureRequestId: options.signatureRequestId,
|
|
470
471
|
}));
|
|
471
472
|
const ib = objekt(daten['activation']);
|
|
472
473
|
return {
|
|
@@ -490,19 +491,19 @@ async function createCustomerCashregister(rufen, optionen) {
|
|
|
490
491
|
* veraendernde Aufruf dieses Clients, der ohne Idempotenzschluessel gefahrlos
|
|
491
492
|
* wiederholbar ist — weil der Server ihn so gebaut hat.
|
|
492
493
|
*/
|
|
493
|
-
async function activateCashregister(
|
|
494
|
+
async function activateCashregister(transport, customerId, cashregisterId) {
|
|
494
495
|
const kunde = pflicht(customerId, 'activateCashregister', 'customerId');
|
|
495
496
|
const kassenId = pflicht(cashregisterId, 'activateCashregister', 'cashregisterId');
|
|
496
|
-
const daten = objekt(await
|
|
497
|
+
const daten = objekt(await transport('activateCashregister', { customerId: kunde, cashregisterId: kassenId }));
|
|
497
498
|
return {
|
|
498
499
|
cashregister: kasse(verlangt(daten['cashregister'], 'activateCashregister', 'cashregister')),
|
|
499
500
|
unchanged: jaNein(daten['unchanged']),
|
|
500
501
|
};
|
|
501
502
|
}
|
|
502
503
|
/** Die Kassen eines Betriebs samt Stand der Inbetriebnahme — **nie** Token. */
|
|
503
|
-
async function listCustomerCashregisters(
|
|
504
|
+
async function listCustomerCashregisters(transport, customerId) {
|
|
504
505
|
const id = pflicht(customerId, 'listCustomerCashregisters', 'customerId');
|
|
505
|
-
const daten = objekt(await
|
|
506
|
+
const daten = objekt(await transport('listCustomerCashregisters', { customerId: id }));
|
|
506
507
|
return {
|
|
507
508
|
customerId: text(daten['customerId'], id),
|
|
508
509
|
cashregisters: liste(daten['cashregisters']).map(kasse),
|
|
@@ -525,9 +526,9 @@ async function listCustomerCashregisters(rufen, customerId) {
|
|
|
525
526
|
* Zeichenketten-Umwandlung zeigen eine Maske, heraus kommt man nur ueber
|
|
526
527
|
* `.reveal()`.
|
|
527
528
|
*/
|
|
528
|
-
async function getCustomerCredentials(
|
|
529
|
+
async function getCustomerCredentials(transport, customerId) {
|
|
529
530
|
const id = pflicht(customerId, 'getCustomerCredentials', 'customerId');
|
|
530
|
-
const daten = objekt(await
|
|
531
|
+
const daten = objekt(await transport('getCustomerCredentials', { customerId: id }));
|
|
531
532
|
return {
|
|
532
533
|
customerId: text(daten['customerId'], id),
|
|
533
534
|
companyName: text(daten['companyName']),
|
|
@@ -545,3 +546,43 @@ async function getCustomerCredentials(rufen, customerId) {
|
|
|
545
546
|
note: text(daten['note']),
|
|
546
547
|
};
|
|
547
548
|
}
|
|
549
|
+
// ---------------------------------------------------------------------------
|
|
550
|
+
// Vertraege
|
|
551
|
+
// ---------------------------------------------------------------------------
|
|
552
|
+
/**
|
|
553
|
+
* Meldet eine Zustimmung des Betriebs, die der Partner **in Vollmacht**
|
|
554
|
+
* eingeholt hat (Endpunkt `reportCustomerContract`, unter `/v1`
|
|
555
|
+
* `reportCustomerVertrag`). Braucht die Berechtigung `customers:write`.
|
|
556
|
+
*
|
|
557
|
+
* Vor dem Senden prueft dieser Client nur, dass jede Pflichtangabe da ist und
|
|
558
|
+
* `acceptedAt` eine Zahl ist. Ob die Art erlaubt ist (`kind_not_allowed`), die
|
|
559
|
+
* Fassung gilt (`unknown_version`, `no_version`) und der Text derselbe ist
|
|
560
|
+
* (`text_changed`), entscheidet der Server. Eine schon bestaetigte Fassung
|
|
561
|
+
* kommt als `already_accepted` mit `data.contractId`; das ist kein Schaden,
|
|
562
|
+
* sondern die Bestaetigung, dass es sie gibt.
|
|
563
|
+
*/
|
|
564
|
+
async function reportCustomerContract(transport, options) {
|
|
565
|
+
const vorgang = 'reportCustomerContract';
|
|
566
|
+
const o = objekt(options);
|
|
567
|
+
const customerId = pflicht(o['customerId'], vorgang, 'customerId');
|
|
568
|
+
const kind = pflicht(o['kind'], vorgang, 'kind');
|
|
569
|
+
const version = pflicht(o['version'], vorgang, 'version');
|
|
570
|
+
const textHash = pflicht(o['textHash'], vorgang, 'textHash');
|
|
571
|
+
const name = pflicht(o['name'], vorgang, 'name');
|
|
572
|
+
const signerRole = pflicht(o['signerRole'], vorgang, 'signerRole');
|
|
573
|
+
const acceptedAt = o['acceptedAt'];
|
|
574
|
+
if (acceptedAt !== undefined && (typeof acceptedAt !== 'number' || !Number.isFinite(acceptedAt))) {
|
|
575
|
+
throw new errors_js_1.KasseneckValidationError(vorgang, 'acceptedAt muss eine Zahl sein (Unix-Millisekunden)', 'request');
|
|
576
|
+
}
|
|
577
|
+
const daten = objekt(await transport(vorgang, { customerId, kind, version, textHash, name, signerRole, acceptedAt }));
|
|
578
|
+
const contractId = daten['contractId'];
|
|
579
|
+
if (typeof contractId !== 'string' || !contractId) {
|
|
580
|
+
throw new errors_js_1.KasseneckValidationError(vorgang, 'Antwort enthaelt keine contractId', 'response');
|
|
581
|
+
}
|
|
582
|
+
return {
|
|
583
|
+
contractId,
|
|
584
|
+
confirmedAt: zahlOderNull(daten['confirmedAt']),
|
|
585
|
+
kind: text(daten['kind'], kind),
|
|
586
|
+
version: text(daten['version'], version),
|
|
587
|
+
};
|
|
588
|
+
}
|
|
@@ -17,13 +17,13 @@
|
|
|
17
17
|
* im Backend (Abzug aus `partner-core.FEHLER_KATALOG`); ein Code, den nur eine
|
|
18
18
|
* Seite kennt, ist fuer einen Aufrufer nicht von „gibt es nicht" zu
|
|
19
19
|
* unterscheiden. Deshalb stehen hier BEIDE Flaechen: die der Schnittstelle
|
|
20
|
-
* ([
|
|
21
|
-
* ([
|
|
20
|
+
* ([PARTNER_ERROR_CODES]) und die des Partner-Portals
|
|
21
|
+
* ([PARTNER_PORTAL_ERROR_CODES]).
|
|
22
22
|
*
|
|
23
23
|
* **Seit 0.29.0 englisch, wie der Rest von `/v3`.** Dieser Client spricht seit
|
|
24
24
|
* 0.28.0 ausschliesslich `/v3` (`PARTNER_BASE_URL`): die paar deutschen Codes,
|
|
25
25
|
* die der Server bis dahin noch roh durchreichte, kommen jetzt genauso englisch
|
|
26
|
-
* an wie alle anderen. [
|
|
26
|
+
* an wie alle anderen. [PARTNER_ERROR_CODES] fuehrt deshalb ausnahmslos die
|
|
27
27
|
* `/v3`-Schreibweise aus `fehlercodes.json`s `v3`-Zuordnung (deutsch -> englisch);
|
|
28
28
|
* ein Aufrufer bekommt vom Server nie mehr die deutsche Form.
|
|
29
29
|
*
|
|
@@ -36,16 +36,24 @@
|
|
|
36
36
|
*
|
|
37
37
|
* **Die Vertrags-Codes (`kind_not_allowed`, `mode_not_allowed`,
|
|
38
38
|
* `power_of_attorney_missing`, `not_found`, `no_version`,
|
|
39
|
-
* `unknown_version`, `text_changed`, `already_accepted`)
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
39
|
+
* `unknown_version`, `text_changed`, `already_accepted`)** kommen aus
|
|
40
|
+
* `reportCustomerContract` (seit 1.0 in diesem Paket). `not_required` fehlt
|
|
41
|
+
* bewusst: derselbe gemeinsame Server-Zweig, aber ueber die Partner-API nicht
|
|
42
|
+
* erreichbar (der Server hat ihn aus `FEHLER_KATALOG` entfernt, siehe
|
|
43
|
+
* `partner-core.js` im Backend).
|
|
44
|
+
*
|
|
45
|
+
* **Seit 1.0 ist [PARTNER_ERROR_CODES] genau `errorCodes.partner` des
|
|
46
|
+
* Vertrags-Exports** (`fixtures/v3/v3-vokabular.json`); ein Test haelt beide
|
|
47
|
+
* gleich. Dazu kommen die Anmelde- und Anfragecodes, die `/v3` seit
|
|
48
|
+
* 2026-09-27 auch an Partner-Aufrufen setzt ([PARTNER_REQUEST_ERROR_CODES]).
|
|
49
|
+
*
|
|
50
|
+
* **Ein unbekannter Code ist kein Fehler dieses Pakets.** Der Server darf
|
|
51
|
+
* Fehlern, die heute keinen Code tragen, spaeter einen geben (vorhandene Codes
|
|
52
|
+
* aendern sich nie). [partnerErrorAdvice] antwortet darauf mit einem
|
|
53
|
+
* Rueckfallsatz statt `undefined`, die Erkenner mit `false`; geworfen wird
|
|
54
|
+
* nie.
|
|
48
55
|
*/
|
|
56
|
+
import { KasseneckApiError } from '../client/errors.js';
|
|
49
57
|
/**
|
|
50
58
|
* Alle Codes, die die **Schnittstelle** kennt. Als Liste und nicht nur als
|
|
51
59
|
* Typ, damit ein Aufrufer sie zur Laufzeit durchgehen kann (Katalogseite,
|
|
@@ -53,7 +61,7 @@
|
|
|
53
61
|
*
|
|
54
62
|
* Reihenfolge und Bestand wie im Abzug des Backends.
|
|
55
63
|
*/
|
|
56
|
-
export declare const
|
|
64
|
+
export declare const PARTNER_ERROR_CODES: readonly ["validation", "rate_limited", "app_not_found", "app_not_accepted", "live_not_allowed", "customer_exists", "customer_conflict", "customer_limit", "access_not_allowed", "email_taken", "no_email", "tax_number_missing", "fon_missing", "signature_pending", "signature_missing", "signature_unknown", "signature_ambiguous", "signature_not_ready", "signature_limit", "signature_failed", "module_inactive", "cashregister_limit", "cashregister_not_found", "contracts_pending", "kind_not_allowed", "mode_not_allowed", "power_of_attorney_missing", "not_found", "no_version", "unknown_version", "text_changed", "already_accepted", "activation_failed", "webhook_limit", "webhook_inactive", "event_not_subscribed"];
|
|
57
65
|
/**
|
|
58
66
|
* Die Codes, die nur im **Partner-Portal** entstehen — beim Pflegen der App,
|
|
59
67
|
* der Schluessel, der Mitglieder und der Signaturkarten.
|
|
@@ -63,25 +71,47 @@ export declare const PARTNER_FEHLER_CODES: readonly ["validation", "rate_limited
|
|
|
63
71
|
* Wer eine Katalogseite baut oder eine fremde Antwort einsortiert, findet
|
|
64
72
|
* damit jeden Code des Backends wieder.
|
|
65
73
|
*/
|
|
66
|
-
export declare const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
74
|
+
export declare const PARTNER_PORTAL_ERROR_CODES: readonly ["app_locked", "version_locked", "invalid_transition", "no_accepted_app", "consent", "key_limit", "last_owner", "auth_user_exists", "card_missing", "card_duplicate", "card_not_verified", "already_assigned"];
|
|
75
|
+
/**
|
|
76
|
+
* Codes der Anmeldung und der Anfragepruefung, die `/v3` auch an
|
|
77
|
+
* Partner-Aufrufen setzt (Partner-Doku, Abschnitt Fehlercodes; im
|
|
78
|
+
* Vertrags-Export unter `errorCodes.auth`). Unter `/v1` kamen diese Fehler
|
|
79
|
+
* ohne Code. `validation` und `rate_limited` stehen schon in
|
|
80
|
+
* [PARTNER_ERROR_CODES]. Dahinter die Codes des Rands (`errorCodes.edge`,
|
|
81
|
+
* soweit nicht schon im Katalog; `not_found` und `validation` stehen dort)
|
|
82
|
+
* und `route_missing`, den das Paket selbst vergibt.
|
|
83
|
+
*/
|
|
84
|
+
export declare const PARTNER_REQUEST_ERROR_CODES: readonly ["method_not_allowed", "unauthorized", "partner_locked", "scope_missing", "internal_translation_error", "dialect_mismatch", "response_translation_failed", "route_missing"];
|
|
85
|
+
export type PartnerErrorCode = typeof PARTNER_ERROR_CODES[number];
|
|
86
|
+
export type PartnerPortalErrorCode = typeof PARTNER_PORTAL_ERROR_CODES[number];
|
|
87
|
+
export type PartnerRequestErrorCode = typeof PARTNER_REQUEST_ERROR_CODES[number];
|
|
88
|
+
/** Ein Code aus einer der Flaechen, die dieses Paket kennt. */
|
|
89
|
+
export type PartnerCode = PartnerErrorCode | PartnerPortalErrorCode | PartnerRequestErrorCode;
|
|
73
90
|
/**
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
91
|
+
* `true` fuer einen Code, den ein Partner-Aufruf liefern kann: aus
|
|
92
|
+
* [PARTNER_ERROR_CODES] (Katalog) oder [PARTNER_REQUEST_ERROR_CODES]
|
|
93
|
+
* (Anmeldung, Rand, Paket). Alles andere, auch Unsinn, ist `false`.
|
|
77
94
|
*/
|
|
78
|
-
export declare function
|
|
95
|
+
export declare function isPartnerErrorCode(value: unknown): value is PartnerErrorCode | PartnerRequestErrorCode;
|
|
96
|
+
/** `true` fuer einen Code aus [PARTNER_PORTAL_ERROR_CODES]; alles andere ist `false`. */
|
|
97
|
+
export declare function isPartnerPortalErrorCode(value: unknown): value is PartnerPortalErrorCode;
|
|
98
|
+
/**
|
|
99
|
+
* Der Handlungssatz zu einem Code, aus allen Flaechen. Fuer einen Code, den
|
|
100
|
+
* dieses Paket nicht kennt (oder fuer Unsinn), kommt ein Rueckfallsatz; die
|
|
101
|
+
* Funktion wirft nie.
|
|
102
|
+
*/
|
|
103
|
+
export declare function partnerErrorAdvice(code: string): string;
|
|
79
104
|
/** Der Fehlercode eines geworfenen Fehlers — `undefined`, wenn es keiner der unseren ist. */
|
|
80
|
-
export declare function
|
|
81
|
-
/**
|
|
82
|
-
|
|
105
|
+
export declare function partnerErrorCode(error: unknown): string | undefined;
|
|
106
|
+
/**
|
|
107
|
+
* Kurzform fuer `catch (e) { if (isPartnerError(e, 'signature_missing')) … }`.
|
|
108
|
+
* Mit `code` nimmt sie auch Codes, die dieses Paket (noch) nicht kennt.
|
|
109
|
+
* Ohne `code`: traegt der Fehler einen Code, den ein Partner-Aufruf liefern
|
|
110
|
+
* kann ([isPartnerErrorCode])?
|
|
111
|
+
*/
|
|
112
|
+
export declare function isPartnerError(error: unknown, code?: PartnerCode | (string & {})): error is KasseneckApiError;
|
|
83
113
|
/** Ein Feldfehler aus `data.errors[]` einer `validation`-Antwort. */
|
|
84
|
-
export interface
|
|
114
|
+
export interface PartnerFieldError {
|
|
85
115
|
/**
|
|
86
116
|
* Der Feldpfad, so wie er im gesendeten Betrieb steht — verschachtelt und je
|
|
87
117
|
* Kontakt: `address.zip`, `taxDetails.taxNumber`, `contacts.0.email`.
|
|
@@ -90,9 +120,9 @@ export interface PartnerFeldFehler {
|
|
|
90
120
|
message: string;
|
|
91
121
|
}
|
|
92
122
|
/** Die Feldfehler einer `validation`-Antwort; leer, wenn es keine sind. */
|
|
93
|
-
export declare function
|
|
123
|
+
export declare function partnerFieldErrors(error: unknown): PartnerFieldError[];
|
|
94
124
|
/**
|
|
95
125
|
* Wie lange `rate_limited` noch gilt, in Sekunden. `undefined`, wenn der
|
|
96
126
|
* Fehler kein `rate_limited` ist oder das Backend keine Angabe macht.
|
|
97
127
|
*/
|
|
98
|
-
export declare function
|
|
128
|
+
export declare function partnerRetryAfterSec(error: unknown): number | undefined;
|
|
@@ -18,13 +18,13 @@
|
|
|
18
18
|
* im Backend (Abzug aus `partner-core.FEHLER_KATALOG`); ein Code, den nur eine
|
|
19
19
|
* Seite kennt, ist fuer einen Aufrufer nicht von „gibt es nicht" zu
|
|
20
20
|
* unterscheiden. Deshalb stehen hier BEIDE Flaechen: die der Schnittstelle
|
|
21
|
-
* ([
|
|
22
|
-
* ([
|
|
21
|
+
* ([PARTNER_ERROR_CODES]) und die des Partner-Portals
|
|
22
|
+
* ([PARTNER_PORTAL_ERROR_CODES]).
|
|
23
23
|
*
|
|
24
24
|
* **Seit 0.29.0 englisch, wie der Rest von `/v3`.** Dieser Client spricht seit
|
|
25
25
|
* 0.28.0 ausschliesslich `/v3` (`PARTNER_BASE_URL`): die paar deutschen Codes,
|
|
26
26
|
* die der Server bis dahin noch roh durchreichte, kommen jetzt genauso englisch
|
|
27
|
-
* an wie alle anderen. [
|
|
27
|
+
* an wie alle anderen. [PARTNER_ERROR_CODES] fuehrt deshalb ausnahmslos die
|
|
28
28
|
* `/v3`-Schreibweise aus `fehlercodes.json`s `v3`-Zuordnung (deutsch -> englisch);
|
|
29
29
|
* ein Aufrufer bekommt vom Server nie mehr die deutsche Form.
|
|
30
30
|
*
|
|
@@ -37,25 +37,32 @@
|
|
|
37
37
|
*
|
|
38
38
|
* **Die Vertrags-Codes (`kind_not_allowed`, `mode_not_allowed`,
|
|
39
39
|
* `power_of_attorney_missing`, `not_found`, `no_version`,
|
|
40
|
-
* `unknown_version`, `text_changed`, `already_accepted`)
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
40
|
+
* `unknown_version`, `text_changed`, `already_accepted`)** kommen aus
|
|
41
|
+
* `reportCustomerContract` (seit 1.0 in diesem Paket). `not_required` fehlt
|
|
42
|
+
* bewusst: derselbe gemeinsame Server-Zweig, aber ueber die Partner-API nicht
|
|
43
|
+
* erreichbar (der Server hat ihn aus `FEHLER_KATALOG` entfernt, siehe
|
|
44
|
+
* `partner-core.js` im Backend).
|
|
45
|
+
*
|
|
46
|
+
* **Seit 1.0 ist [PARTNER_ERROR_CODES] genau `errorCodes.partner` des
|
|
47
|
+
* Vertrags-Exports** (`fixtures/v3/v3-vokabular.json`); ein Test haelt beide
|
|
48
|
+
* gleich. Dazu kommen die Anmelde- und Anfragecodes, die `/v3` seit
|
|
49
|
+
* 2026-09-27 auch an Partner-Aufrufen setzt ([PARTNER_REQUEST_ERROR_CODES]).
|
|
50
|
+
*
|
|
51
|
+
* **Ein unbekannter Code ist kein Fehler dieses Pakets.** Der Server darf
|
|
52
|
+
* Fehlern, die heute keinen Code tragen, spaeter einen geben (vorhandene Codes
|
|
53
|
+
* aendern sich nie). [partnerErrorAdvice] antwortet darauf mit einem
|
|
54
|
+
* Rueckfallsatz statt `undefined`, die Erkenner mit `false`; geworfen wird
|
|
55
|
+
* nie.
|
|
49
56
|
*/
|
|
50
57
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
|
-
exports.
|
|
52
|
-
exports.
|
|
53
|
-
exports.
|
|
54
|
-
exports.
|
|
55
|
-
exports.
|
|
56
|
-
exports.
|
|
57
|
-
exports.
|
|
58
|
-
exports.
|
|
58
|
+
exports.PARTNER_REQUEST_ERROR_CODES = exports.PARTNER_PORTAL_ERROR_CODES = exports.PARTNER_ERROR_CODES = void 0;
|
|
59
|
+
exports.isPartnerErrorCode = isPartnerErrorCode;
|
|
60
|
+
exports.isPartnerPortalErrorCode = isPartnerPortalErrorCode;
|
|
61
|
+
exports.partnerErrorAdvice = partnerErrorAdvice;
|
|
62
|
+
exports.partnerErrorCode = partnerErrorCode;
|
|
63
|
+
exports.isPartnerError = isPartnerError;
|
|
64
|
+
exports.partnerFieldErrors = partnerFieldErrors;
|
|
65
|
+
exports.partnerRetryAfterSec = partnerRetryAfterSec;
|
|
59
66
|
const errors_js_1 = require("../client/errors.js");
|
|
60
67
|
/**
|
|
61
68
|
* Alle Codes, die die **Schnittstelle** kennt. Als Liste und nicht nur als
|
|
@@ -64,7 +71,7 @@ const errors_js_1 = require("../client/errors.js");
|
|
|
64
71
|
*
|
|
65
72
|
* Reihenfolge und Bestand wie im Abzug des Backends.
|
|
66
73
|
*/
|
|
67
|
-
exports.
|
|
74
|
+
exports.PARTNER_ERROR_CODES = [
|
|
68
75
|
// Eingabe, Konto und Takt
|
|
69
76
|
'validation',
|
|
70
77
|
'rate_limited',
|
|
@@ -94,8 +101,7 @@ exports.PARTNER_FEHLER_CODES = [
|
|
|
94
101
|
'cashregister_limit',
|
|
95
102
|
'cashregister_not_found',
|
|
96
103
|
'contracts_pending',
|
|
97
|
-
// Vertraege (reportCustomerContract
|
|
98
|
-
// an, der Katalog fuehrt die Codes trotzdem vollstaendig, siehe oben)
|
|
104
|
+
// Vertraege (reportCustomerContract)
|
|
99
105
|
'kind_not_allowed',
|
|
100
106
|
'mode_not_allowed',
|
|
101
107
|
'power_of_attorney_missing',
|
|
@@ -119,7 +125,7 @@ exports.PARTNER_FEHLER_CODES = [
|
|
|
119
125
|
* Wer eine Katalogseite baut oder eine fremde Antwort einsortiert, findet
|
|
120
126
|
* damit jeden Code des Backends wieder.
|
|
121
127
|
*/
|
|
122
|
-
exports.
|
|
128
|
+
exports.PARTNER_PORTAL_ERROR_CODES = [
|
|
123
129
|
'app_locked',
|
|
124
130
|
'version_locked',
|
|
125
131
|
'invalid_transition',
|
|
@@ -133,11 +139,40 @@ exports.PARTNER_PORTAL_FEHLER_CODES = [
|
|
|
133
139
|
'card_not_verified',
|
|
134
140
|
'already_assigned',
|
|
135
141
|
];
|
|
136
|
-
|
|
137
|
-
|
|
142
|
+
/**
|
|
143
|
+
* Codes der Anmeldung und der Anfragepruefung, die `/v3` auch an
|
|
144
|
+
* Partner-Aufrufen setzt (Partner-Doku, Abschnitt Fehlercodes; im
|
|
145
|
+
* Vertrags-Export unter `errorCodes.auth`). Unter `/v1` kamen diese Fehler
|
|
146
|
+
* ohne Code. `validation` und `rate_limited` stehen schon in
|
|
147
|
+
* [PARTNER_ERROR_CODES]. Dahinter die Codes des Rands (`errorCodes.edge`,
|
|
148
|
+
* soweit nicht schon im Katalog; `not_found` und `validation` stehen dort)
|
|
149
|
+
* und `route_missing`, den das Paket selbst vergibt.
|
|
150
|
+
*/
|
|
151
|
+
exports.PARTNER_REQUEST_ERROR_CODES = [
|
|
152
|
+
'method_not_allowed',
|
|
153
|
+
'unauthorized',
|
|
154
|
+
'partner_locked',
|
|
155
|
+
'scope_missing',
|
|
156
|
+
// Rand (errorCodes.edge, soweit nicht im Katalog) und Code des Pakets
|
|
157
|
+
'internal_translation_error',
|
|
158
|
+
'dialect_mismatch',
|
|
159
|
+
'response_translation_failed',
|
|
160
|
+
'route_missing',
|
|
161
|
+
];
|
|
162
|
+
function enthaelt(liste, wert) {
|
|
163
|
+
return typeof wert === 'string' && liste.includes(wert);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* `true` fuer einen Code, den ein Partner-Aufruf liefern kann: aus
|
|
167
|
+
* [PARTNER_ERROR_CODES] (Katalog) oder [PARTNER_REQUEST_ERROR_CODES]
|
|
168
|
+
* (Anmeldung, Rand, Paket). Alles andere, auch Unsinn, ist `false`.
|
|
169
|
+
*/
|
|
170
|
+
function isPartnerErrorCode(value) {
|
|
171
|
+
return enthaelt(exports.PARTNER_ERROR_CODES, value) || enthaelt(exports.PARTNER_REQUEST_ERROR_CODES, value);
|
|
138
172
|
}
|
|
139
|
-
|
|
140
|
-
|
|
173
|
+
/** `true` fuer einen Code aus [PARTNER_PORTAL_ERROR_CODES]; alles andere ist `false`. */
|
|
174
|
+
function isPartnerPortalErrorCode(value) {
|
|
175
|
+
return enthaelt(exports.PARTNER_PORTAL_ERROR_CODES, value);
|
|
141
176
|
}
|
|
142
177
|
/**
|
|
143
178
|
* Was der Aufrufer tun muss. Ein Satz je Code, in der zweiten Person — nicht
|
|
@@ -174,10 +209,7 @@ const RAT = {
|
|
|
174
209
|
cashregister_not_found: 'Diese cashregisterId gibt es bei diesem Betrieb nicht.',
|
|
175
210
|
contracts_pending: 'Nur live: der Betrieb hat Auftragsverarbeitungs- und Nutzungsvertrag noch nicht bestaetigt. An der Kasse aendert sich nichts. Den Betrieb ueber den Einrichtungs-Link bestaetigen lassen (sendPartnerCustomerFonLink, Stand in avv/terms von getPartnerCustomer), danach activateCashregister erneut.',
|
|
176
211
|
// -- Vertraege (reportCustomerContract) ------------------------------------
|
|
177
|
-
|
|
178
|
-
// nur fuer die Katalogseite und fuer einen Aufrufer, der die rohe Antwort
|
|
179
|
-
// selbst auswertet (siehe Kopfkommentar der Datei).
|
|
180
|
-
kind_not_allowed: 'reportCustomerContract mit einer anderen Art als "avv". Der Vollmachtsweg nimmt nur den Auftragsverarbeitungsvertrag entgegen. Dieser Client bietet den Endpunkt nicht an.',
|
|
212
|
+
kind_not_allowed: 'reportCustomerContract mit einer anderen Art als "avv". Der Vollmachtsweg nimmt nur den Auftragsverarbeitungsvertrag entgegen; den Nutzungsvertrag bestaetigt der Betrieb selbst ueber den Einrichtungs-Link.',
|
|
181
213
|
mode_not_allowed: 'Der Vollmachtsweg ist fuer dieses Partner-Konto nicht freigeschaltet. Kasseneck fragen (hello@kasseneck.at).',
|
|
182
214
|
power_of_attorney_missing: 'Der Partnervertrag mit dem Vollmachts-Kapitel ist noch nicht bestaetigt. Erst danach nimmt der Vollmachtsweg Meldungen entgegen.',
|
|
183
215
|
not_found: 'Die genannte customerId gehoert nicht zu diesem Partner-Konto oder existiert nicht. listPartnerCustomers nennt die eigenen.',
|
|
@@ -189,6 +221,15 @@ const RAT = {
|
|
|
189
221
|
webhook_limit: 'Hoechstens 10 Webhook-Endpunkte je Partner. Einen ungenutzten loeschen.',
|
|
190
222
|
webhook_inactive: 'Der Webhook steht auf active:false. Zuerst aktivieren, dann erneut proben.',
|
|
191
223
|
event_not_subscribed: 'Der Endpunkt abonniert dieses Ereignis nicht — auch eine Probe bekommt nur, was in seiner events-Liste steht. events erweitern und erneut versuchen.',
|
|
224
|
+
// -- Anmeldung und Anfrage -----------------------------------------------
|
|
225
|
+
method_not_allowed: 'Die Anfrage war kein POST. Jeder Aufruf der Partner-API geht als POST mit JSON-Rumpf.',
|
|
226
|
+
unauthorized: 'Kein, ein ungueltiger oder ein widerrufener Partner-Schluessel. Den Schluessel im Partner-Portal pruefen bzw. einen neuen erzeugen.',
|
|
227
|
+
partner_locked: 'Das Partner-Konto ist gesperrt. Kasseneck fragen (hello@kasseneck.at).',
|
|
228
|
+
scope_missing: 'Dem Schluessel fehlt eine Berechtigung, die dieser Aufruf braucht (data.scope). Einen Schluessel mit dieser Berechtigung erzeugen.',
|
|
229
|
+
internal_translation_error: 'Der Server konnte die Anfrage nicht in seine innere Form uebersetzen. Nichts wurde ausgefuehrt; hello@kasseneck.at mit Aufruf und Zeitpunkt melden.',
|
|
230
|
+
dialect_mismatch: 'Die Antwort kam nicht vom /v3-Rand (Kennzeichen fehlt), der Ausgang ist unklar. Nicht blind wiederholen: den Stand mit getPartnerCustomer bzw. listCustomerCashregisters nachlesen.',
|
|
231
|
+
response_translation_failed: 'Der Server konnte seine Antwort nicht uebersetzen. Mit details.handled === false lief nichts; sonst kann der Aufruf ausgefuehrt sein, dann den Stand nachlesen statt wiederholen.',
|
|
232
|
+
route_missing: 'Statt des Backends kam eine HTML-Seite: die Basisadresse stimmt nicht (PARTNER_BASE_URL bzw. eigener Proxy). Der Aufruf kam nie an.',
|
|
192
233
|
// -- Partner-Portal -------------------------------------------------------
|
|
193
234
|
app_locked: 'Name, Verteilungen und Kontakt einer App sind fest, sobald eine Version geprueft wird. Aenderungen daran gehen ueber Kasseneck.',
|
|
194
235
|
version_locked: 'Diese App-Version wird geprueft oder ist abgenommen. Fuer Aenderungen eine neue Version anlegen.',
|
|
@@ -204,23 +245,38 @@ const RAT = {
|
|
|
204
245
|
already_assigned: 'Fuer diesen Antrag sind bereits Kartendaten eingetragen; ein zweiter Satz ueberschreibt nichts.',
|
|
205
246
|
};
|
|
206
247
|
/**
|
|
207
|
-
* Der
|
|
208
|
-
*
|
|
209
|
-
|
|
248
|
+
* Der Rueckfall fuer einen Code, den dieses Paket nicht kennt: kein geratener
|
|
249
|
+
* Handgriff, sondern der Hinweis, wo die Auskunft steht.
|
|
250
|
+
*/
|
|
251
|
+
const RUECKFALL = 'Dieser Code ist diesem Paket nicht bekannt (neuer als diese Fassung). Die Meldung des Servers (message) sagt, was geschah; im Zweifel wie einen Fehler ohne Code behandeln und hello@kasseneck.at fragen.';
|
|
252
|
+
/**
|
|
253
|
+
* Der Handlungssatz zu einem Code, aus allen Flaechen. Fuer einen Code, den
|
|
254
|
+
* dieses Paket nicht kennt (oder fuer Unsinn), kommt ein Rueckfallsatz; die
|
|
255
|
+
* Funktion wirft nie.
|
|
210
256
|
*/
|
|
211
|
-
function
|
|
257
|
+
function partnerErrorAdvice(code) {
|
|
258
|
+
if (typeof code !== 'string' || !Object.prototype.hasOwnProperty.call(RAT, code))
|
|
259
|
+
return RUECKFALL;
|
|
212
260
|
return RAT[code];
|
|
213
261
|
}
|
|
214
262
|
/** Der Fehlercode eines geworfenen Fehlers — `undefined`, wenn es keiner der unseren ist. */
|
|
215
|
-
function
|
|
263
|
+
function partnerErrorCode(error) {
|
|
216
264
|
return error instanceof errors_js_1.KasseneckApiError ? error.code : undefined;
|
|
217
265
|
}
|
|
218
|
-
/**
|
|
219
|
-
|
|
220
|
-
|
|
266
|
+
/**
|
|
267
|
+
* Kurzform fuer `catch (e) { if (isPartnerError(e, 'signature_missing')) … }`.
|
|
268
|
+
* Mit `code` nimmt sie auch Codes, die dieses Paket (noch) nicht kennt.
|
|
269
|
+
* Ohne `code`: traegt der Fehler einen Code, den ein Partner-Aufruf liefern
|
|
270
|
+
* kann ([isPartnerErrorCode])?
|
|
271
|
+
*/
|
|
272
|
+
function isPartnerError(error, code) {
|
|
273
|
+
const gefunden = partnerErrorCode(error);
|
|
274
|
+
if (gefunden === undefined)
|
|
275
|
+
return false;
|
|
276
|
+
return code === undefined ? isPartnerErrorCode(gefunden) : gefunden === code;
|
|
221
277
|
}
|
|
222
278
|
/** Die Feldfehler einer `validation`-Antwort; leer, wenn es keine sind. */
|
|
223
|
-
function
|
|
279
|
+
function partnerFieldErrors(error) {
|
|
224
280
|
if (!(error instanceof errors_js_1.KasseneckApiError))
|
|
225
281
|
return [];
|
|
226
282
|
const roh = error.details['errors'];
|
|
@@ -240,8 +296,8 @@ function partnerFeldFehler(error) {
|
|
|
240
296
|
* Wie lange `rate_limited` noch gilt, in Sekunden. `undefined`, wenn der
|
|
241
297
|
* Fehler kein `rate_limited` ist oder das Backend keine Angabe macht.
|
|
242
298
|
*/
|
|
243
|
-
function
|
|
244
|
-
if (
|
|
299
|
+
function partnerRetryAfterSec(error) {
|
|
300
|
+
if (partnerErrorCode(error) !== 'rate_limited')
|
|
245
301
|
return undefined;
|
|
246
302
|
const wert = error.details['retryAfterSec'];
|
|
247
303
|
return typeof wert === 'number' && Number.isFinite(wert) && wert >= 0 ? wert : undefined;
|