@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
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* PLZ, Gericht) macht das Backend mit `@kreiseck/validator` — sie hier zu
|
|
12
12
|
* wiederholen hiesse, zwei Wahrheiten zu haben, von denen eine veraltet.
|
|
13
13
|
* Ein Formfehler kommt als `KasseneckApiError` mit `code:"validation"` zurueck;
|
|
14
|
-
* `
|
|
14
|
+
* `partnerFieldErrors(fehler)` macht `data.errors[]` daraus. **Es entsteht dabei
|
|
15
15
|
* nichts** — der Aufruf ist folgenlos wiederholbar.
|
|
16
16
|
*
|
|
17
17
|
* Nach dem Senden wird nichts hart gecastet: fehlt ein zugesagtes Feld, wirft
|
|
@@ -86,8 +86,8 @@ function pflicht(wert, vorgang, feld) {
|
|
|
86
86
|
* Der guenstigste Selbsttest beim Hochfahren: er beweist Schluessel, Umgebung
|
|
87
87
|
* und Rechte in einem Aufruf.
|
|
88
88
|
*/
|
|
89
|
-
export async function getPartnerInfo(
|
|
90
|
-
const daten = objekt(await
|
|
89
|
+
export async function getPartnerInfo(transport) {
|
|
90
|
+
const daten = objekt(await transport('getPartnerInfo'));
|
|
91
91
|
const partner = verlangt(daten['partner'], 'getPartnerInfo', 'partner');
|
|
92
92
|
const key = objekt(daten['key']);
|
|
93
93
|
return {
|
|
@@ -145,18 +145,18 @@ export async function getPartnerInfo(rufen) {
|
|
|
145
145
|
* — auch dann, wenn der Rumpf inzwischen abweicht. Die eigene Kundennummer ist
|
|
146
146
|
* der natuerliche Wert dafuer.
|
|
147
147
|
*/
|
|
148
|
-
export async function createPartnerCustomer(
|
|
149
|
-
const appId = pflicht(
|
|
150
|
-
const betrieb =
|
|
148
|
+
export async function createPartnerCustomer(transport, options) {
|
|
149
|
+
const appId = pflicht(options?.appId, 'createPartnerCustomer', 'appId');
|
|
150
|
+
const betrieb = options?.business;
|
|
151
151
|
if (betrieb === null || typeof betrieb !== 'object') {
|
|
152
152
|
throw new KasseneckValidationError('createPartnerCustomer', 'business fehlt', 'request');
|
|
153
153
|
}
|
|
154
|
-
const daten = objekt(await
|
|
154
|
+
const daten = objekt(await transport('createPartnerCustomer', {
|
|
155
155
|
appId,
|
|
156
156
|
business: betrieb,
|
|
157
|
-
idempotencyKey:
|
|
158
|
-
access:
|
|
159
|
-
env:
|
|
157
|
+
idempotencyKey: options.idempotencyKey,
|
|
158
|
+
access: options.access,
|
|
159
|
+
env: options.env,
|
|
160
160
|
}));
|
|
161
161
|
const customerId = textOderNull(daten['customerId']);
|
|
162
162
|
if (!customerId) {
|
|
@@ -176,14 +176,14 @@ export async function createPartnerCustomer(rufen, optionen) {
|
|
|
176
176
|
};
|
|
177
177
|
}
|
|
178
178
|
/** Betriebe dieses Partners, seitenweise. `cursor` aus der Antwort setzt fort. */
|
|
179
|
-
export async function listPartnerCustomers(
|
|
180
|
-
if (
|
|
179
|
+
export async function listPartnerCustomers(transport, options = {}) {
|
|
180
|
+
if (options.limit !== undefined && (!Number.isInteger(options.limit) || options.limit < 1 || options.limit > 200)) {
|
|
181
181
|
throw new KasseneckValidationError('listPartnerCustomers', 'limit muss zwischen 1 und 200 liegen', 'request');
|
|
182
182
|
}
|
|
183
|
-
const daten = objekt(await
|
|
184
|
-
status:
|
|
185
|
-
limit:
|
|
186
|
-
cursor:
|
|
183
|
+
const daten = objekt(await transport('listPartnerCustomers', {
|
|
184
|
+
status: options.status,
|
|
185
|
+
limit: options.limit,
|
|
186
|
+
cursor: options.cursor,
|
|
187
187
|
}));
|
|
188
188
|
return {
|
|
189
189
|
customers: liste(daten['customers']).map(kundenZeile),
|
|
@@ -233,9 +233,9 @@ function avvStand(wert) {
|
|
|
233
233
|
return { ...v, mode: textOderNull(wert['mode']) };
|
|
234
234
|
}
|
|
235
235
|
/** Ein Betrieb mit allem, was der Partner ueber ihn sehen darf — nie Geheimnisse. */
|
|
236
|
-
export async function getPartnerCustomer(
|
|
236
|
+
export async function getPartnerCustomer(transport, customerId) {
|
|
237
237
|
const id = pflicht(customerId, 'getPartnerCustomer', 'customerId');
|
|
238
|
-
const daten = objekt(await
|
|
238
|
+
const daten = objekt(await transport('getPartnerCustomer', { customerId: id }));
|
|
239
239
|
const k = verlangt(daten['customer'], 'getPartnerCustomer', 'customer');
|
|
240
240
|
const fon = objekt(k['fon']);
|
|
241
241
|
const zugang = k['access'];
|
|
@@ -280,16 +280,16 @@ export async function getPartnerCustomer(rufen, customerId) {
|
|
|
280
280
|
* einem ganzen ausgefuellten Formular auf. Die Antwort sagt NUR ja oder nein —
|
|
281
281
|
* nie, wem die Adresse gehoert.
|
|
282
282
|
*/
|
|
283
|
-
export async function checkPartnerCustomerEmail(
|
|
283
|
+
export async function checkPartnerCustomerEmail(transport, email) {
|
|
284
284
|
const adresse = typeof email === 'string' ? email.trim() : '';
|
|
285
285
|
if (!adresse)
|
|
286
286
|
throw new KasseneckValidationError('checkPartnerCustomerEmail', 'email fehlt', 'request');
|
|
287
|
-
const daten = objekt(await
|
|
287
|
+
const daten = objekt(await transport('checkPartnerCustomerEmail', { email: adresse }));
|
|
288
288
|
return daten['available'] === true;
|
|
289
289
|
}
|
|
290
|
-
export async function sendPartnerCustomerFonLink(
|
|
290
|
+
export async function sendPartnerCustomerFonLink(transport, customerId) {
|
|
291
291
|
const id = pflicht(customerId, 'sendPartnerCustomerFonLink', 'customerId');
|
|
292
|
-
const daten = objekt(await
|
|
292
|
+
const daten = objekt(await transport('sendPartnerCustomerFonLink', { customerId: id }));
|
|
293
293
|
return {
|
|
294
294
|
customerId: text(daten['customerId'], id),
|
|
295
295
|
sentTo: text(daten['sentTo']),
|
|
@@ -346,12 +346,12 @@ function antrag(eintrag) {
|
|
|
346
346
|
* Abschluss kommt als Ereignis `signature.ready`, nicht als Antwort auf diesen
|
|
347
347
|
* Aufruf.
|
|
348
348
|
*/
|
|
349
|
-
export async function requestCustomerSignature(
|
|
349
|
+
export async function requestCustomerSignature(transport, customerId, options = {}) {
|
|
350
350
|
const id = pflicht(customerId, 'requestCustomerSignature', 'customerId');
|
|
351
|
-
const daten = objekt(await
|
|
351
|
+
const daten = objekt(await transport('requestCustomerSignature', {
|
|
352
352
|
customerId: id,
|
|
353
|
-
kind:
|
|
354
|
-
additional:
|
|
353
|
+
kind: options.kind,
|
|
354
|
+
additional: options.additional,
|
|
355
355
|
}));
|
|
356
356
|
return {
|
|
357
357
|
request: antrag(verlangt(daten['request'], 'requestCustomerSignature', 'request')),
|
|
@@ -385,9 +385,9 @@ function signaturEinzeln(eintrag) {
|
|
|
385
385
|
};
|
|
386
386
|
}
|
|
387
387
|
/** Stand der Signatur eines Betriebs samt aller Signaturen, Antraege und des FON-Zugangs. */
|
|
388
|
-
export async function getCustomerSignatureStatus(
|
|
388
|
+
export async function getCustomerSignatureStatus(transport, customerId) {
|
|
389
389
|
const id = pflicht(customerId, 'getCustomerSignatureStatus', 'customerId');
|
|
390
|
-
const daten = objekt(await
|
|
390
|
+
const daten = objekt(await transport('getCustomerSignatureStatus', { customerId: id }));
|
|
391
391
|
const signatur = objekt(daten['signature']);
|
|
392
392
|
const fon = objekt(daten['fon']);
|
|
393
393
|
return {
|
|
@@ -447,12 +447,12 @@ function kasse(eintrag) {
|
|
|
447
447
|
* Hoechstens 20 Kassen je Betrieb (`cashregister_limit`); ohne gebuchtes Modul
|
|
448
448
|
* `module_inactive`.
|
|
449
449
|
*/
|
|
450
|
-
export async function createCustomerCashregister(
|
|
451
|
-
const id = pflicht(
|
|
452
|
-
const daten = objekt(await
|
|
450
|
+
export async function createCustomerCashregister(transport, options) {
|
|
451
|
+
const id = pflicht(options?.customerId, 'createCustomerCashregister', 'customerId');
|
|
452
|
+
const daten = objekt(await transport('createCustomerCashregister', {
|
|
453
453
|
customerId: id,
|
|
454
|
-
automatic:
|
|
455
|
-
signatureRequestId:
|
|
454
|
+
automatic: options.automatic,
|
|
455
|
+
signatureRequestId: options.signatureRequestId,
|
|
456
456
|
}));
|
|
457
457
|
const ib = objekt(daten['activation']);
|
|
458
458
|
return {
|
|
@@ -476,19 +476,19 @@ export async function createCustomerCashregister(rufen, optionen) {
|
|
|
476
476
|
* veraendernde Aufruf dieses Clients, der ohne Idempotenzschluessel gefahrlos
|
|
477
477
|
* wiederholbar ist — weil der Server ihn so gebaut hat.
|
|
478
478
|
*/
|
|
479
|
-
export async function activateCashregister(
|
|
479
|
+
export async function activateCashregister(transport, customerId, cashregisterId) {
|
|
480
480
|
const kunde = pflicht(customerId, 'activateCashregister', 'customerId');
|
|
481
481
|
const kassenId = pflicht(cashregisterId, 'activateCashregister', 'cashregisterId');
|
|
482
|
-
const daten = objekt(await
|
|
482
|
+
const daten = objekt(await transport('activateCashregister', { customerId: kunde, cashregisterId: kassenId }));
|
|
483
483
|
return {
|
|
484
484
|
cashregister: kasse(verlangt(daten['cashregister'], 'activateCashregister', 'cashregister')),
|
|
485
485
|
unchanged: jaNein(daten['unchanged']),
|
|
486
486
|
};
|
|
487
487
|
}
|
|
488
488
|
/** Die Kassen eines Betriebs samt Stand der Inbetriebnahme — **nie** Token. */
|
|
489
|
-
export async function listCustomerCashregisters(
|
|
489
|
+
export async function listCustomerCashregisters(transport, customerId) {
|
|
490
490
|
const id = pflicht(customerId, 'listCustomerCashregisters', 'customerId');
|
|
491
|
-
const daten = objekt(await
|
|
491
|
+
const daten = objekt(await transport('listCustomerCashregisters', { customerId: id }));
|
|
492
492
|
return {
|
|
493
493
|
customerId: text(daten['customerId'], id),
|
|
494
494
|
cashregisters: liste(daten['cashregisters']).map(kasse),
|
|
@@ -511,9 +511,9 @@ export async function listCustomerCashregisters(rufen, customerId) {
|
|
|
511
511
|
* Zeichenketten-Umwandlung zeigen eine Maske, heraus kommt man nur ueber
|
|
512
512
|
* `.reveal()`.
|
|
513
513
|
*/
|
|
514
|
-
export async function getCustomerCredentials(
|
|
514
|
+
export async function getCustomerCredentials(transport, customerId) {
|
|
515
515
|
const id = pflicht(customerId, 'getCustomerCredentials', 'customerId');
|
|
516
|
-
const daten = objekt(await
|
|
516
|
+
const daten = objekt(await transport('getCustomerCredentials', { customerId: id }));
|
|
517
517
|
return {
|
|
518
518
|
customerId: text(daten['customerId'], id),
|
|
519
519
|
companyName: text(daten['companyName']),
|
|
@@ -531,3 +531,43 @@ export async function getCustomerCredentials(rufen, customerId) {
|
|
|
531
531
|
note: text(daten['note']),
|
|
532
532
|
};
|
|
533
533
|
}
|
|
534
|
+
// ---------------------------------------------------------------------------
|
|
535
|
+
// Vertraege
|
|
536
|
+
// ---------------------------------------------------------------------------
|
|
537
|
+
/**
|
|
538
|
+
* Meldet eine Zustimmung des Betriebs, die der Partner **in Vollmacht**
|
|
539
|
+
* eingeholt hat (Endpunkt `reportCustomerContract`, unter `/v1`
|
|
540
|
+
* `reportCustomerVertrag`). Braucht die Berechtigung `customers:write`.
|
|
541
|
+
*
|
|
542
|
+
* Vor dem Senden prueft dieser Client nur, dass jede Pflichtangabe da ist und
|
|
543
|
+
* `acceptedAt` eine Zahl ist. Ob die Art erlaubt ist (`kind_not_allowed`), die
|
|
544
|
+
* Fassung gilt (`unknown_version`, `no_version`) und der Text derselbe ist
|
|
545
|
+
* (`text_changed`), entscheidet der Server. Eine schon bestaetigte Fassung
|
|
546
|
+
* kommt als `already_accepted` mit `data.contractId`; das ist kein Schaden,
|
|
547
|
+
* sondern die Bestaetigung, dass es sie gibt.
|
|
548
|
+
*/
|
|
549
|
+
export async function reportCustomerContract(transport, options) {
|
|
550
|
+
const vorgang = 'reportCustomerContract';
|
|
551
|
+
const o = objekt(options);
|
|
552
|
+
const customerId = pflicht(o['customerId'], vorgang, 'customerId');
|
|
553
|
+
const kind = pflicht(o['kind'], vorgang, 'kind');
|
|
554
|
+
const version = pflicht(o['version'], vorgang, 'version');
|
|
555
|
+
const textHash = pflicht(o['textHash'], vorgang, 'textHash');
|
|
556
|
+
const name = pflicht(o['name'], vorgang, 'name');
|
|
557
|
+
const signerRole = pflicht(o['signerRole'], vorgang, 'signerRole');
|
|
558
|
+
const acceptedAt = o['acceptedAt'];
|
|
559
|
+
if (acceptedAt !== undefined && (typeof acceptedAt !== 'number' || !Number.isFinite(acceptedAt))) {
|
|
560
|
+
throw new KasseneckValidationError(vorgang, 'acceptedAt muss eine Zahl sein (Unix-Millisekunden)', 'request');
|
|
561
|
+
}
|
|
562
|
+
const daten = objekt(await transport(vorgang, { customerId, kind, version, textHash, name, signerRole, acceptedAt }));
|
|
563
|
+
const contractId = daten['contractId'];
|
|
564
|
+
if (typeof contractId !== 'string' || !contractId) {
|
|
565
|
+
throw new KasseneckValidationError(vorgang, 'Antwort enthaelt keine contractId', 'response');
|
|
566
|
+
}
|
|
567
|
+
return {
|
|
568
|
+
contractId,
|
|
569
|
+
confirmedAt: zahlOderNull(daten['confirmedAt']),
|
|
570
|
+
kind: text(daten['kind'], kind),
|
|
571
|
+
version: text(daten['version'], version),
|
|
572
|
+
};
|
|
573
|
+
}
|
|
@@ -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;
|
|
@@ -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,15 +36,22 @@
|
|
|
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
|
*/
|
|
49
56
|
import { KasseneckApiError } from '../client/errors.js';
|
|
50
57
|
/**
|
|
@@ -54,7 +61,7 @@ import { KasseneckApiError } from '../client/errors.js';
|
|
|
54
61
|
*
|
|
55
62
|
* Reihenfolge und Bestand wie im Abzug des Backends.
|
|
56
63
|
*/
|
|
57
|
-
export const
|
|
64
|
+
export const PARTNER_ERROR_CODES = [
|
|
58
65
|
// Eingabe, Konto und Takt
|
|
59
66
|
'validation',
|
|
60
67
|
'rate_limited',
|
|
@@ -84,8 +91,7 @@ export const PARTNER_FEHLER_CODES = [
|
|
|
84
91
|
'cashregister_limit',
|
|
85
92
|
'cashregister_not_found',
|
|
86
93
|
'contracts_pending',
|
|
87
|
-
// Vertraege (reportCustomerContract
|
|
88
|
-
// an, der Katalog fuehrt die Codes trotzdem vollstaendig, siehe oben)
|
|
94
|
+
// Vertraege (reportCustomerContract)
|
|
89
95
|
'kind_not_allowed',
|
|
90
96
|
'mode_not_allowed',
|
|
91
97
|
'power_of_attorney_missing',
|
|
@@ -109,7 +115,7 @@ export const PARTNER_FEHLER_CODES = [
|
|
|
109
115
|
* Wer eine Katalogseite baut oder eine fremde Antwort einsortiert, findet
|
|
110
116
|
* damit jeden Code des Backends wieder.
|
|
111
117
|
*/
|
|
112
|
-
export const
|
|
118
|
+
export const PARTNER_PORTAL_ERROR_CODES = [
|
|
113
119
|
'app_locked',
|
|
114
120
|
'version_locked',
|
|
115
121
|
'invalid_transition',
|
|
@@ -123,11 +129,40 @@ export const PARTNER_PORTAL_FEHLER_CODES = [
|
|
|
123
129
|
'card_not_verified',
|
|
124
130
|
'already_assigned',
|
|
125
131
|
];
|
|
126
|
-
|
|
127
|
-
|
|
132
|
+
/**
|
|
133
|
+
* Codes der Anmeldung und der Anfragepruefung, die `/v3` auch an
|
|
134
|
+
* Partner-Aufrufen setzt (Partner-Doku, Abschnitt Fehlercodes; im
|
|
135
|
+
* Vertrags-Export unter `errorCodes.auth`). Unter `/v1` kamen diese Fehler
|
|
136
|
+
* ohne Code. `validation` und `rate_limited` stehen schon in
|
|
137
|
+
* [PARTNER_ERROR_CODES]. Dahinter die Codes des Rands (`errorCodes.edge`,
|
|
138
|
+
* soweit nicht schon im Katalog; `not_found` und `validation` stehen dort)
|
|
139
|
+
* und `route_missing`, den das Paket selbst vergibt.
|
|
140
|
+
*/
|
|
141
|
+
export const PARTNER_REQUEST_ERROR_CODES = [
|
|
142
|
+
'method_not_allowed',
|
|
143
|
+
'unauthorized',
|
|
144
|
+
'partner_locked',
|
|
145
|
+
'scope_missing',
|
|
146
|
+
// Rand (errorCodes.edge, soweit nicht im Katalog) und Code des Pakets
|
|
147
|
+
'internal_translation_error',
|
|
148
|
+
'dialect_mismatch',
|
|
149
|
+
'response_translation_failed',
|
|
150
|
+
'route_missing',
|
|
151
|
+
];
|
|
152
|
+
function enthaelt(liste, wert) {
|
|
153
|
+
return typeof wert === 'string' && liste.includes(wert);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* `true` fuer einen Code, den ein Partner-Aufruf liefern kann: aus
|
|
157
|
+
* [PARTNER_ERROR_CODES] (Katalog) oder [PARTNER_REQUEST_ERROR_CODES]
|
|
158
|
+
* (Anmeldung, Rand, Paket). Alles andere, auch Unsinn, ist `false`.
|
|
159
|
+
*/
|
|
160
|
+
export function isPartnerErrorCode(value) {
|
|
161
|
+
return enthaelt(PARTNER_ERROR_CODES, value) || enthaelt(PARTNER_REQUEST_ERROR_CODES, value);
|
|
128
162
|
}
|
|
129
|
-
|
|
130
|
-
|
|
163
|
+
/** `true` fuer einen Code aus [PARTNER_PORTAL_ERROR_CODES]; alles andere ist `false`. */
|
|
164
|
+
export function isPartnerPortalErrorCode(value) {
|
|
165
|
+
return enthaelt(PARTNER_PORTAL_ERROR_CODES, value);
|
|
131
166
|
}
|
|
132
167
|
/**
|
|
133
168
|
* Was der Aufrufer tun muss. Ein Satz je Code, in der zweiten Person — nicht
|
|
@@ -164,10 +199,7 @@ const RAT = {
|
|
|
164
199
|
cashregister_not_found: 'Diese cashregisterId gibt es bei diesem Betrieb nicht.',
|
|
165
200
|
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.',
|
|
166
201
|
// -- Vertraege (reportCustomerContract) ------------------------------------
|
|
167
|
-
|
|
168
|
-
// nur fuer die Katalogseite und fuer einen Aufrufer, der die rohe Antwort
|
|
169
|
-
// selbst auswertet (siehe Kopfkommentar der Datei).
|
|
170
|
-
kind_not_allowed: 'reportCustomerContract mit einer anderen Art als "avv". Der Vollmachtsweg nimmt nur den Auftragsverarbeitungsvertrag entgegen. Dieser Client bietet den Endpunkt nicht an.',
|
|
202
|
+
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.',
|
|
171
203
|
mode_not_allowed: 'Der Vollmachtsweg ist fuer dieses Partner-Konto nicht freigeschaltet. Kasseneck fragen (hello@kasseneck.at).',
|
|
172
204
|
power_of_attorney_missing: 'Der Partnervertrag mit dem Vollmachts-Kapitel ist noch nicht bestaetigt. Erst danach nimmt der Vollmachtsweg Meldungen entgegen.',
|
|
173
205
|
not_found: 'Die genannte customerId gehoert nicht zu diesem Partner-Konto oder existiert nicht. listPartnerCustomers nennt die eigenen.',
|
|
@@ -179,6 +211,15 @@ const RAT = {
|
|
|
179
211
|
webhook_limit: 'Hoechstens 10 Webhook-Endpunkte je Partner. Einen ungenutzten loeschen.',
|
|
180
212
|
webhook_inactive: 'Der Webhook steht auf active:false. Zuerst aktivieren, dann erneut proben.',
|
|
181
213
|
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.',
|
|
214
|
+
// -- Anmeldung und Anfrage -----------------------------------------------
|
|
215
|
+
method_not_allowed: 'Die Anfrage war kein POST. Jeder Aufruf der Partner-API geht als POST mit JSON-Rumpf.',
|
|
216
|
+
unauthorized: 'Kein, ein ungueltiger oder ein widerrufener Partner-Schluessel. Den Schluessel im Partner-Portal pruefen bzw. einen neuen erzeugen.',
|
|
217
|
+
partner_locked: 'Das Partner-Konto ist gesperrt. Kasseneck fragen (hello@kasseneck.at).',
|
|
218
|
+
scope_missing: 'Dem Schluessel fehlt eine Berechtigung, die dieser Aufruf braucht (data.scope). Einen Schluessel mit dieser Berechtigung erzeugen.',
|
|
219
|
+
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.',
|
|
220
|
+
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.',
|
|
221
|
+
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.',
|
|
222
|
+
route_missing: 'Statt des Backends kam eine HTML-Seite: die Basisadresse stimmt nicht (PARTNER_BASE_URL bzw. eigener Proxy). Der Aufruf kam nie an.',
|
|
182
223
|
// -- Partner-Portal -------------------------------------------------------
|
|
183
224
|
app_locked: 'Name, Verteilungen und Kontakt einer App sind fest, sobald eine Version geprueft wird. Aenderungen daran gehen ueber Kasseneck.',
|
|
184
225
|
version_locked: 'Diese App-Version wird geprueft oder ist abgenommen. Fuer Aenderungen eine neue Version anlegen.',
|
|
@@ -194,23 +235,38 @@ const RAT = {
|
|
|
194
235
|
already_assigned: 'Fuer diesen Antrag sind bereits Kartendaten eingetragen; ein zweiter Satz ueberschreibt nichts.',
|
|
195
236
|
};
|
|
196
237
|
/**
|
|
197
|
-
* Der
|
|
198
|
-
*
|
|
199
|
-
|
|
238
|
+
* Der Rueckfall fuer einen Code, den dieses Paket nicht kennt: kein geratener
|
|
239
|
+
* Handgriff, sondern der Hinweis, wo die Auskunft steht.
|
|
240
|
+
*/
|
|
241
|
+
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.';
|
|
242
|
+
/**
|
|
243
|
+
* Der Handlungssatz zu einem Code, aus allen Flaechen. Fuer einen Code, den
|
|
244
|
+
* dieses Paket nicht kennt (oder fuer Unsinn), kommt ein Rueckfallsatz; die
|
|
245
|
+
* Funktion wirft nie.
|
|
200
246
|
*/
|
|
201
|
-
export function
|
|
247
|
+
export function partnerErrorAdvice(code) {
|
|
248
|
+
if (typeof code !== 'string' || !Object.prototype.hasOwnProperty.call(RAT, code))
|
|
249
|
+
return RUECKFALL;
|
|
202
250
|
return RAT[code];
|
|
203
251
|
}
|
|
204
252
|
/** Der Fehlercode eines geworfenen Fehlers — `undefined`, wenn es keiner der unseren ist. */
|
|
205
|
-
export function
|
|
253
|
+
export function partnerErrorCode(error) {
|
|
206
254
|
return error instanceof KasseneckApiError ? error.code : undefined;
|
|
207
255
|
}
|
|
208
|
-
/**
|
|
209
|
-
|
|
210
|
-
|
|
256
|
+
/**
|
|
257
|
+
* Kurzform fuer `catch (e) { if (isPartnerError(e, 'signature_missing')) … }`.
|
|
258
|
+
* Mit `code` nimmt sie auch Codes, die dieses Paket (noch) nicht kennt.
|
|
259
|
+
* Ohne `code`: traegt der Fehler einen Code, den ein Partner-Aufruf liefern
|
|
260
|
+
* kann ([isPartnerErrorCode])?
|
|
261
|
+
*/
|
|
262
|
+
export function isPartnerError(error, code) {
|
|
263
|
+
const gefunden = partnerErrorCode(error);
|
|
264
|
+
if (gefunden === undefined)
|
|
265
|
+
return false;
|
|
266
|
+
return code === undefined ? isPartnerErrorCode(gefunden) : gefunden === code;
|
|
211
267
|
}
|
|
212
268
|
/** Die Feldfehler einer `validation`-Antwort; leer, wenn es keine sind. */
|
|
213
|
-
export function
|
|
269
|
+
export function partnerFieldErrors(error) {
|
|
214
270
|
if (!(error instanceof KasseneckApiError))
|
|
215
271
|
return [];
|
|
216
272
|
const roh = error.details['errors'];
|
|
@@ -230,8 +286,8 @@ export function partnerFeldFehler(error) {
|
|
|
230
286
|
* Wie lange `rate_limited` noch gilt, in Sekunden. `undefined`, wenn der
|
|
231
287
|
* Fehler kein `rate_limited` ist oder das Backend keine Angabe macht.
|
|
232
288
|
*/
|
|
233
|
-
export function
|
|
234
|
-
if (
|
|
289
|
+
export function partnerRetryAfterSec(error) {
|
|
290
|
+
if (partnerErrorCode(error) !== 'rate_limited')
|
|
235
291
|
return undefined;
|
|
236
292
|
const wert = error.details['retryAfterSec'];
|
|
237
293
|
return typeof wert === 'number' && Number.isFinite(wert) && wert >= 0 ? wert : undefined;
|
|
@@ -11,22 +11,23 @@
|
|
|
11
11
|
* des Backends (`docs/api/partner.md`, kompakt `docs/api/partner.llms.txt`).
|
|
12
12
|
* Was hier steht, ist die Benutzung dieses Clients.
|
|
13
13
|
*
|
|
14
|
-
* Reihenfolge der Kette: [
|
|
14
|
+
* Reihenfolge der Kette: [PARTNER_FLOW].
|
|
15
15
|
*
|
|
16
|
-
* **Seit 0.28.0 spricht dieser Teil die englische `/v3`** ([PARTNER_BASE_URL])
|
|
17
|
-
*
|
|
18
|
-
*
|
|
16
|
+
* **Seit 0.28.0 spricht dieser Teil die englische `/v3`** ([PARTNER_BASE_URL]),
|
|
17
|
+
* seit 1.0 heissen auch seine Exporte englisch; die Tabelle alt/neu steht im
|
|
18
|
+
* CHANGELOG. Die Aliase aus 0.28 (`Rechtsform`, `Bundesland`, `KontaktRolle`)
|
|
19
|
+
* sind entfernt.
|
|
19
20
|
*/
|
|
20
21
|
export { createPartnerApi, PARTNER_BASE_URL, type PartnerApi, type PartnerApiOptions } from './api.js';
|
|
21
22
|
export { partnerKeyAuth, partnerKeyEnv, type PartnerKeyAuthOptions } from './auth.js';
|
|
22
|
-
export {
|
|
23
|
-
export {
|
|
24
|
-
export {
|
|
25
|
-
export { KasseneckSecret,
|
|
26
|
-
export { getPartnerInfo, createPartnerCustomer, listPartnerCustomers, checkPartnerCustomerEmail, getPartnerCustomer, sendPartnerCustomerFonLink, requestCustomerSignature, getCustomerSignatureStatus, createCustomerCashregister, activateCashregister, listCustomerCashregisters, getCustomerCredentials, } from './endpunkte.js';
|
|
27
|
-
export { createPartnerWebhook, listPartnerWebhooks, rotatePartnerWebhookSecret, updatePartnerWebhook, deletePartnerWebhook, sendPartnerWebhookTest, listPartnerWebhookDeliveries, parseWebhookEvent,
|
|
23
|
+
export { PARTNER_FLOW, nextFlowStep, type FlowStep, } from './ablauf.js';
|
|
24
|
+
export { PARTNER_ERROR_CODES, PARTNER_PORTAL_ERROR_CODES, PARTNER_REQUEST_ERROR_CODES, isPartnerErrorCode, isPartnerPortalErrorCode, isPartnerError, partnerErrorCode, partnerErrorAdvice, partnerFieldErrors, partnerRetryAfterSec, type PartnerCode, type PartnerErrorCode, type PartnerPortalErrorCode, type PartnerRequestErrorCode, type PartnerFieldError, } from './fehler.js';
|
|
25
|
+
export { BUSINESS_FIELDS, unknownBusinessFields, type BusinessField, } from './betrieb.js';
|
|
26
|
+
export { KasseneckSecret, SECRET_MASK } from './secret.js';
|
|
27
|
+
export { getPartnerInfo, createPartnerCustomer, listPartnerCustomers, checkPartnerCustomerEmail, getPartnerCustomer, sendPartnerCustomerFonLink, requestCustomerSignature, getCustomerSignatureStatus, createCustomerCashregister, activateCashregister, listCustomerCashregisters, getCustomerCredentials, reportCustomerContract, } from './endpunkte.js';
|
|
28
|
+
export { createPartnerWebhook, listPartnerWebhooks, rotatePartnerWebhookSecret, updatePartnerWebhook, deletePartnerWebhook, sendPartnerWebhookTest, listPartnerWebhookDeliveries, parseWebhookEvent, isPartnerWebhookEvent, PARTNER_WEBHOOK_EVENTS, WEBHOOK_ENVELOPE_FIELDS, WEBHOOK_DELIVERY_STATUSES, type PartnerWebhookEvent, type PartnerWebhookEventType, type PartnerWebhook, type CreateWebhookOptions, type CreateWebhookResult, type DeleteWebhookResult, type WebhookApiVersion, type WebhookDeliveryStatus, type WebhookTestDelivery, type ContractAcceptedEventData, type SignatureFailedEventData, type CashregisterFailedEventData, type WebhookPatch, type WebhookList, type WebhookDelivery, type WebhookTestResult, type WebhookEventResult, } from './webhooks.js';
|
|
28
29
|
export { verifyWebhookSignature, parseSignatureHeader, WEBHOOK_SIGNATURE_HEADER, WEBHOOK_EVENT_HEADER, WEBHOOK_DELIVERY_HEADER, WEBHOOK_TOLERANCE_SEC, WEBHOOK_RETRY_PLAN_SEC, WEBHOOK_MAX_ATTEMPTS, WEBHOOK_TIMEOUT_MS, WEBHOOK_LIMIT, type VerifyWebhookOptions, type WebhookVerifyResult, type WebhookVerifyReason, } from './webhook-signatur.js';
|
|
29
|
-
export { PARTNER_ENVS } from './typen.js';
|
|
30
|
-
export type { PartnerEnv, PartnerScope, PartnerApp, PartnerInfo, LegalForm, AustrianState, ContactRole, AvvMode, FeeInterval, PartnerFee, SignatureHistoryReason, SignatureErrorCode, RequestSignatureOptions, CustomerSignature,
|
|
30
|
+
export { PARTNER_ENVS, LEGAL_FORMS, AUSTRIAN_STATES, CONTACT_ROLES, AVV_MODES, FEE_INTERVALS, CONTRACT_KINDS, CONTRACT_SOURCES, SIGNATURE_HISTORY_REASONS, SIGNATURE_ERROR_CODES, } from './typen.js';
|
|
31
|
+
export type { PartnerEnv, PartnerScope, PartnerApp, PartnerInfo, LegalForm, AustrianState, ContactRole, AvvMode, FeeInterval, PartnerFee, SignatureHistoryReason, SignatureErrorCode, RequestSignatureOptions, CustomerSignature, ContractKind, ContractSource, ReportCustomerContractOptions, ReportCustomerContractResult, BusinessAddress, BusinessTaxDetails, BusinessContact, BusinessTaxAdvisor, Business, CreateCustomerOptions, CreateCustomerResult, PartnerCustomerStatus, PartnerCustomerSummary, AvvStatus, ContractStatus, PartnerCustomerFonStatus, ListCustomersOptions, PartnerCustomerList, PartnerCustomer, FonLinkResult, SignatureRequestStatus, SignatureHistoryEntry, SignatureRequest, RequestSignatureResult, CustomerSignatureStatus, CashregisterActivationStep, CustomerCashregisterStatus, CustomerCashregister, CreateCashregisterOptions, CreateCashregisterResult, ActivateCashregisterResult, CustomerCashregisterList, CustomerCashregisterCredential, CustomerCredentials, } from './typen.js';
|
|
31
32
|
/** `credentials:read` — nicht im Standardsatz, siehe typen.ts. */
|
|
32
33
|
export { SCOPE_CREDENTIALS } from './typen.js';
|