@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
|
@@ -6,20 +6,20 @@
|
|
|
6
6
|
* einem, der sonst nichts von diesem Paket benutzt.
|
|
7
7
|
*/
|
|
8
8
|
import type { InternerTransport } from '../client/aufrufe.js';
|
|
9
|
+
import type { CashregisterActivationStep, ContractKind, ContractSource, PartnerEnv } from './typen.js';
|
|
9
10
|
import { type VerifyWebhookOptions, type WebhookVerifyReason } from './webhook-signatur.js';
|
|
10
11
|
/**
|
|
11
|
-
* Alle Ereignisse, die ein Webhook abonnieren **und proben** kann
|
|
12
|
+
* Alle Ereignisse, die ein Webhook abonnieren **und proben** kann, in der
|
|
13
|
+
* Reihenfolge des Backend-Katalogs (`listPartnerWebhooks().events`). Ein
|
|
12
14
|
* Endpunkt bekommt ausschliesslich die, die in seiner `events`-Liste stehen.
|
|
13
15
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* gegeneinander geprueft werden. Abonnieren geht trotzdem schon (`events`
|
|
18
|
-
* nimmt jeden Namen), die Nutzlast beschreibt [ContractAcceptedEventData].
|
|
16
|
+
* Die Nutzlasten der Ereignisse, die `/v3` uebersetzt, beschreiben
|
|
17
|
+
* [ContractAcceptedEventData], [SignatureFailedEventData] und
|
|
18
|
+
* [CashregisterFailedEventData].
|
|
19
19
|
*/
|
|
20
|
-
export declare const PARTNER_WEBHOOK_EVENTS: readonly ["customer.created", "customer.updated", "customer.status_changed", "customer.fon_verified", "customer.live_enabled", "signature.requested", "signature.ready", "signature.failed", "cashregister.created", "cashregister.live", "cashregister.failed", "app.version.accepted", "app.version.rejected", "webhook.test"];
|
|
20
|
+
export declare const PARTNER_WEBHOOK_EVENTS: readonly ["customer.created", "customer.updated", "customer.status_changed", "customer.fon_verified", "customer.live_enabled", "customer.avv_accepted", "customer.terms_accepted", "signature.requested", "signature.ready", "signature.failed", "cashregister.created", "cashregister.live", "cashregister.failed", "app.version.accepted", "app.version.rejected", "webhook.test"];
|
|
21
21
|
export type PartnerWebhookEventType = typeof PARTNER_WEBHOOK_EVENTS[number];
|
|
22
|
-
export declare function
|
|
22
|
+
export declare function isPartnerWebhookEvent(value: unknown): value is PartnerWebhookEventType;
|
|
23
23
|
/**
|
|
24
24
|
* Die Felder des Umschlags, so wie er auf der Leitung liegt.
|
|
25
25
|
*
|
|
@@ -27,7 +27,7 @@ export declare function istPartnerWebhookEvent(wert: unknown): wert is PartnerWe
|
|
|
27
27
|
* genau ein solches Feld verschwindet sonst auf einer Seite, ohne dass etwas
|
|
28
28
|
* rot wird.
|
|
29
29
|
*/
|
|
30
|
-
export declare const
|
|
30
|
+
export declare const WEBHOOK_ENVELOPE_FIELDS: readonly ["id", "type", "createdAt", "partnerId", "test", "data"];
|
|
31
31
|
/**
|
|
32
32
|
* Die Huelle jeder Zustellung. `type` bleibt bewusst offen fuer unbekannte
|
|
33
33
|
* Werte (`(string & {})`): ein spaeter ergaenztes Ereignis soll einen
|
|
@@ -69,14 +69,6 @@ export interface PartnerWebhookEvent<T = Record<string, unknown>> {
|
|
|
69
69
|
* Webhook hat.
|
|
70
70
|
*/
|
|
71
71
|
export type WebhookApiVersion = 'v1' | 'v3';
|
|
72
|
-
/** Art des Vertrags in `customer.avv_accepted` / `customer.terms_accepted`. */
|
|
73
|
-
export type ContractKind = 'avv' | 'terms';
|
|
74
|
-
/**
|
|
75
|
-
* Wo der Betrieb bestaetigt hat. Unter `v1` hiessen die ersten fuenf
|
|
76
|
-
* `einrichten`, `prozess`, `partner_vollmacht`, `admin_papier`,
|
|
77
|
-
* `papier_upload`; `app` und `portal` sind in beiden Sprachen gleich.
|
|
78
|
-
*/
|
|
79
|
-
export type ContractSource = 'setup_link' | 'process_link' | 'partner_power_of_attorney' | 'admin_paper' | 'paper_upload' | 'app' | 'portal' | (string & {});
|
|
80
72
|
/**
|
|
81
73
|
* Nutzlast von `customer.avv_accepted` und `customer.terms_accepted` in der
|
|
82
74
|
* Sprache `v3`. Ein Webhook mit `apiVersion: 'v1'` schickt hier weiter
|
|
@@ -90,6 +82,41 @@ export interface ContractAcceptedEventData {
|
|
|
90
82
|
confirmedAt: number;
|
|
91
83
|
source: ContractSource;
|
|
92
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Nutzlast von `signature.failed` in der Sprache `v3`. `code` ist immer
|
|
87
|
+
* `signature_failed` (FinanzOnline hat die Registrierung abgelehnt, `rc`
|
|
88
|
+
* nennt den Rueckgabecode); die Ursache im Einzelnen steht am Antrag
|
|
89
|
+
* (`getCustomerSignatureStatus`, `requests[].error.code`, siehe
|
|
90
|
+
* [SIGNATURE_ERROR_CODES]). `message` ist ein Text fuer Menschen.
|
|
91
|
+
*/
|
|
92
|
+
export interface SignatureFailedEventData {
|
|
93
|
+
customerId: string;
|
|
94
|
+
companyName: string;
|
|
95
|
+
requestId: string;
|
|
96
|
+
code: 'signature_failed' | (string & {});
|
|
97
|
+
/** Rueckgabecode von FinanzOnline, falls es einen gab. */
|
|
98
|
+
rc: string | null;
|
|
99
|
+
message: string;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Nutzlast von `cashregister.failed` in der Sprache `v3`: an welchem Schritt
|
|
103
|
+
* die Inbetriebnahme stehen blieb und mit welchem Code. Der Server feuert das
|
|
104
|
+
* Ereignis mit `signature_not_ready`, `fon_missing` oder `activation_failed`.
|
|
105
|
+
* Fehlende Vertraege (`contracts_pending`) loesen **kein** Ereignis aus: das
|
|
106
|
+
* meldet `activateCashregister` als Fehler, die Freigabe melden
|
|
107
|
+
* `customer.avv_accepted` und `customer.terms_accepted`.
|
|
108
|
+
*/
|
|
109
|
+
export interface CashregisterFailedEventData {
|
|
110
|
+
customerId: string;
|
|
111
|
+
companyName: string;
|
|
112
|
+
cashregisterId: string;
|
|
113
|
+
step: CashregisterActivationStep | null;
|
|
114
|
+
code: 'signature_not_ready' | 'fon_missing' | 'activation_failed' | (string & {});
|
|
115
|
+
/** Rueckgabecode von FinanzOnline, falls es einen gab. */
|
|
116
|
+
rc: string | null;
|
|
117
|
+
message: string;
|
|
118
|
+
env: PartnerEnv;
|
|
119
|
+
}
|
|
93
120
|
export type WebhookEventResult = {
|
|
94
121
|
ok: true;
|
|
95
122
|
event: PartnerWebhookEvent;
|
|
@@ -113,9 +140,10 @@ export type WebhookEventResult = {
|
|
|
113
140
|
* Eine ausbleibende Antwort wird bis zu fuenfmal wiederholt (1 min, 5 min,
|
|
114
141
|
* 30 min, 2 h, 12 h) und gilt dann als fehlgeschlagen.
|
|
115
142
|
*/
|
|
116
|
-
export declare function parseWebhookEvent(
|
|
117
|
-
/**
|
|
118
|
-
export
|
|
143
|
+
export declare function parseWebhookEvent(options: VerifyWebhookOptions): Promise<WebhookEventResult>;
|
|
144
|
+
/** Staende einer Zustellung; `/v1` sagte `offen`, `zugestellt`, `fehlgeschlagen`, `verworfen`. */
|
|
145
|
+
export declare const WEBHOOK_DELIVERY_STATUSES: readonly ["pending", "delivered", "failed", "dropped"];
|
|
146
|
+
export type WebhookDeliveryStatus = typeof WEBHOOK_DELIVERY_STATUSES[number];
|
|
119
147
|
export interface PartnerWebhook {
|
|
120
148
|
webhookId: string;
|
|
121
149
|
/** Sprache der Nutzlast; fehlt sie in der Antwort, ist es ein Bestands-Webhook und damit `v1`. */
|
|
@@ -173,7 +201,7 @@ export interface DeleteWebhookResult {
|
|
|
173
201
|
/** Unter `/v1` hiess das Feld `geloescht`. */
|
|
174
202
|
deleted: boolean;
|
|
175
203
|
}
|
|
176
|
-
export interface
|
|
204
|
+
export interface WebhookList {
|
|
177
205
|
webhooks: PartnerWebhook[];
|
|
178
206
|
/** Der Katalog: Ereignisname und deutscher Text, so wie das Panel ihn zeigt. */
|
|
179
207
|
events: {
|
|
@@ -181,7 +209,7 @@ export interface WebhookListe {
|
|
|
181
209
|
text: string;
|
|
182
210
|
}[];
|
|
183
211
|
}
|
|
184
|
-
export interface
|
|
212
|
+
export interface WebhookDelivery {
|
|
185
213
|
deliveryId: string;
|
|
186
214
|
webhookId: string;
|
|
187
215
|
event: string;
|
|
@@ -203,7 +231,7 @@ export interface WebhookZustellung {
|
|
|
203
231
|
* **Das Secret in der Antwort ist der einzige Weg dazu.** Es sofort dorthin
|
|
204
232
|
* schreiben, wo der Empfaenger es liest — nicht in ein Protokoll.
|
|
205
233
|
*/
|
|
206
|
-
export declare function createPartnerWebhook(
|
|
234
|
+
export declare function createPartnerWebhook(transport: InternerTransport, options: CreateWebhookOptions): Promise<CreateWebhookResult>;
|
|
207
235
|
/**
|
|
208
236
|
* Ein neues Secret fuer denselben Endpunkt.
|
|
209
237
|
*
|
|
@@ -214,22 +242,22 @@ export declare function createPartnerWebhook(rufen: InternerTransport, optionen:
|
|
|
214
242
|
* Das alte Secret gilt ab der Antwort NICHT mehr: die naechste Zustellung ist
|
|
215
243
|
* schon mit dem neuen signiert. Erst speichern, dann weiterarbeiten.
|
|
216
244
|
*/
|
|
217
|
-
export declare function rotatePartnerWebhookSecret(
|
|
245
|
+
export declare function rotatePartnerWebhookSecret(transport: InternerTransport, webhookId: string): Promise<CreateWebhookResult>;
|
|
218
246
|
/** Die Webhook-Endpunkte dieses Partners samt Ereignis-Katalog. */
|
|
219
|
-
export declare function listPartnerWebhooks(
|
|
247
|
+
export declare function listPartnerWebhooks(transport: InternerTransport): Promise<WebhookList>;
|
|
220
248
|
/**
|
|
221
249
|
* Aendert einen Endpunkt. Nur die genannten Felder — ein leeres `patch` lehnt
|
|
222
250
|
* das Backend ab (`validation`, Feld `patch`), statt stillschweigend nichts zu
|
|
223
251
|
* tun.
|
|
224
252
|
*/
|
|
225
|
-
export declare function updatePartnerWebhook(
|
|
253
|
+
export declare function updatePartnerWebhook(transport: InternerTransport, webhookId: string, patch: WebhookPatch): Promise<PartnerWebhook>;
|
|
226
254
|
/**
|
|
227
255
|
* Loescht einen Endpunkt. Danach kommt dort nichts mehr an; offene
|
|
228
256
|
* Zustellungen werden verworfen (`dropped`).
|
|
229
257
|
*/
|
|
230
|
-
export declare function deletePartnerWebhook(
|
|
258
|
+
export declare function deletePartnerWebhook(transport: InternerTransport, webhookId: string): Promise<DeleteWebhookResult>;
|
|
231
259
|
/** Eine Zustellung der Probe, so wie `sendPartnerWebhookTest` sie meldet. */
|
|
232
|
-
export interface
|
|
260
|
+
export interface WebhookTestDelivery {
|
|
233
261
|
deliveryId: string;
|
|
234
262
|
webhookId: string;
|
|
235
263
|
status: WebhookDeliveryStatus | (string & {});
|
|
@@ -239,7 +267,7 @@ export interface WebhookTestResult {
|
|
|
239
267
|
eventId: string;
|
|
240
268
|
/** Welches Ereignis geprobt wurde — ohne Angabe `webhook.test`. */
|
|
241
269
|
event: string;
|
|
242
|
-
deliveries:
|
|
270
|
+
deliveries: WebhookTestDelivery[];
|
|
243
271
|
}
|
|
244
272
|
/**
|
|
245
273
|
* Schickt eine Probe an genau diesen Endpunkt.
|
|
@@ -261,13 +289,13 @@ export interface WebhookTestResult {
|
|
|
261
289
|
* den Namen bei, damit ein Leser der Doku und ein Leser des Codes dasselbe
|
|
262
290
|
* suchen.
|
|
263
291
|
*/
|
|
264
|
-
export declare function sendPartnerWebhookTest(
|
|
292
|
+
export declare function sendPartnerWebhookTest(transport: InternerTransport, webhookId: string, event?: PartnerWebhookEventType | (string & {})): Promise<WebhookTestResult>;
|
|
265
293
|
/**
|
|
266
294
|
* Die letzten Zustellversuche — mit `webhookId` fuer einen Endpunkt, ohne ihn
|
|
267
295
|
* fuer alle. Die Stelle, an der sich „mein Server bekommt nichts" klaeren
|
|
268
296
|
* laesst, ohne bei Kasseneck nachzufragen.
|
|
269
297
|
*/
|
|
270
|
-
export declare function listPartnerWebhookDeliveries(
|
|
298
|
+
export declare function listPartnerWebhookDeliveries(transport: InternerTransport, options?: {
|
|
271
299
|
webhookId?: string;
|
|
272
300
|
limit?: number;
|
|
273
|
-
}): Promise<
|
|
301
|
+
}): Promise<WebhookDelivery[]>;
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* einem, der sonst nichts von diesem Paket benutzt.
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.
|
|
11
|
-
exports.
|
|
10
|
+
exports.WEBHOOK_DELIVERY_STATUSES = exports.WEBHOOK_ENVELOPE_FIELDS = exports.PARTNER_WEBHOOK_EVENTS = void 0;
|
|
11
|
+
exports.isPartnerWebhookEvent = isPartnerWebhookEvent;
|
|
12
12
|
exports.parseWebhookEvent = parseWebhookEvent;
|
|
13
13
|
exports.createPartnerWebhook = createPartnerWebhook;
|
|
14
14
|
exports.rotatePartnerWebhookSecret = rotatePartnerWebhookSecret;
|
|
@@ -23,14 +23,13 @@ const webhook_signatur_js_1 = require("./webhook-signatur.js");
|
|
|
23
23
|
// Ereignisse
|
|
24
24
|
// ---------------------------------------------------------------------------
|
|
25
25
|
/**
|
|
26
|
-
* Alle Ereignisse, die ein Webhook abonnieren **und proben** kann
|
|
26
|
+
* Alle Ereignisse, die ein Webhook abonnieren **und proben** kann, in der
|
|
27
|
+
* Reihenfolge des Backend-Katalogs (`listPartnerWebhooks().events`). Ein
|
|
27
28
|
* Endpunkt bekommt ausschliesslich die, die in seiner `events`-Liste stehen.
|
|
28
29
|
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* gegeneinander geprueft werden. Abonnieren geht trotzdem schon (`events`
|
|
33
|
-
* nimmt jeden Namen), die Nutzlast beschreibt [ContractAcceptedEventData].
|
|
30
|
+
* Die Nutzlasten der Ereignisse, die `/v3` uebersetzt, beschreiben
|
|
31
|
+
* [ContractAcceptedEventData], [SignatureFailedEventData] und
|
|
32
|
+
* [CashregisterFailedEventData].
|
|
34
33
|
*/
|
|
35
34
|
exports.PARTNER_WEBHOOK_EVENTS = [
|
|
36
35
|
'customer.created',
|
|
@@ -38,6 +37,8 @@ exports.PARTNER_WEBHOOK_EVENTS = [
|
|
|
38
37
|
'customer.status_changed',
|
|
39
38
|
'customer.fon_verified',
|
|
40
39
|
'customer.live_enabled',
|
|
40
|
+
'customer.avv_accepted',
|
|
41
|
+
'customer.terms_accepted',
|
|
41
42
|
'signature.requested',
|
|
42
43
|
'signature.ready',
|
|
43
44
|
'signature.failed',
|
|
@@ -48,8 +49,8 @@ exports.PARTNER_WEBHOOK_EVENTS = [
|
|
|
48
49
|
'app.version.rejected',
|
|
49
50
|
'webhook.test',
|
|
50
51
|
];
|
|
51
|
-
function
|
|
52
|
-
return typeof
|
|
52
|
+
function isPartnerWebhookEvent(value) {
|
|
53
|
+
return typeof value === 'string' && exports.PARTNER_WEBHOOK_EVENTS.includes(value);
|
|
53
54
|
}
|
|
54
55
|
/**
|
|
55
56
|
* Die Felder des Umschlags, so wie er auf der Leitung liegt.
|
|
@@ -58,7 +59,7 @@ function istPartnerWebhookEvent(wert) {
|
|
|
58
59
|
* genau ein solches Feld verschwindet sonst auf einer Seite, ohne dass etwas
|
|
59
60
|
* rot wird.
|
|
60
61
|
*/
|
|
61
|
-
exports.
|
|
62
|
+
exports.WEBHOOK_ENVELOPE_FIELDS = ['id', 'type', 'createdAt', 'partnerId', 'test', 'data'];
|
|
62
63
|
/**
|
|
63
64
|
* Prueft die Signatur **und** liest das Ereignis — in dieser Reihenfolge. Wer
|
|
64
65
|
* zuerst parst und dann prueft, hat den fremden Rumpf schon durch seinen Code
|
|
@@ -74,11 +75,11 @@ exports.WEBHOOK_UMSCHLAG_FELDER = ['id', 'type', 'createdAt', 'partnerId', 'test
|
|
|
74
75
|
* Eine ausbleibende Antwort wird bis zu fuenfmal wiederholt (1 min, 5 min,
|
|
75
76
|
* 30 min, 2 h, 12 h) und gilt dann als fehlgeschlagen.
|
|
76
77
|
*/
|
|
77
|
-
async function parseWebhookEvent(
|
|
78
|
-
const geprueft = await (0, webhook_signatur_js_1.verifyWebhookSignature)(
|
|
78
|
+
async function parseWebhookEvent(options) {
|
|
79
|
+
const geprueft = await (0, webhook_signatur_js_1.verifyWebhookSignature)(options);
|
|
79
80
|
if (!geprueft.ok)
|
|
80
81
|
return { ok: false, reason: geprueft.reason };
|
|
81
|
-
const text = typeof
|
|
82
|
+
const text = typeof options.body === 'string' ? options.body : new TextDecoder('utf-8').decode(options.body);
|
|
82
83
|
let roh;
|
|
83
84
|
try {
|
|
84
85
|
roh = JSON.parse(text);
|
|
@@ -109,6 +110,11 @@ async function parseWebhookEvent(optionen) {
|
|
|
109
110
|
},
|
|
110
111
|
};
|
|
111
112
|
}
|
|
113
|
+
// ---------------------------------------------------------------------------
|
|
114
|
+
// Endpunkte verwalten
|
|
115
|
+
// ---------------------------------------------------------------------------
|
|
116
|
+
/** Staende einer Zustellung; `/v1` sagte `offen`, `zugestellt`, `fehlgeschlagen`, `verworfen`. */
|
|
117
|
+
exports.WEBHOOK_DELIVERY_STATUSES = ['pending', 'delivered', 'failed', 'dropped'];
|
|
112
118
|
function objekt(wert) {
|
|
113
119
|
return wert !== null && typeof wert === 'object' && !Array.isArray(wert) ? wert : {};
|
|
114
120
|
}
|
|
@@ -146,18 +152,18 @@ function webhook(eintrag) {
|
|
|
146
152
|
* **Das Secret in der Antwort ist der einzige Weg dazu.** Es sofort dorthin
|
|
147
153
|
* schreiben, wo der Empfaenger es liest — nicht in ein Protokoll.
|
|
148
154
|
*/
|
|
149
|
-
async function createPartnerWebhook(
|
|
150
|
-
const url = typeof
|
|
155
|
+
async function createPartnerWebhook(transport, options) {
|
|
156
|
+
const url = typeof options?.url === 'string' ? options.url.trim() : '';
|
|
151
157
|
if (!url)
|
|
152
158
|
throw new errors_js_1.KasseneckValidationError('createPartnerWebhook', 'url fehlt', 'request');
|
|
153
|
-
if (!Array.isArray(
|
|
159
|
+
if (!Array.isArray(options.events) || options.events.length === 0) {
|
|
154
160
|
throw new errors_js_1.KasseneckValidationError('createPartnerWebhook', 'events ist leer — ein Endpunkt ohne Ereignis bekaeme nie etwas', 'request');
|
|
155
161
|
}
|
|
156
|
-
const daten = objekt(await
|
|
162
|
+
const daten = objekt(await transport('createPartnerWebhook', {
|
|
157
163
|
url,
|
|
158
|
-
events:
|
|
159
|
-
description:
|
|
160
|
-
active:
|
|
164
|
+
events: options.events,
|
|
165
|
+
description: options.description,
|
|
166
|
+
active: options.active,
|
|
161
167
|
}));
|
|
162
168
|
const secret = daten['secret'];
|
|
163
169
|
if (typeof secret !== 'string' || !secret) {
|
|
@@ -175,11 +181,11 @@ async function createPartnerWebhook(rufen, optionen) {
|
|
|
175
181
|
* Das alte Secret gilt ab der Antwort NICHT mehr: die naechste Zustellung ist
|
|
176
182
|
* schon mit dem neuen signiert. Erst speichern, dann weiterarbeiten.
|
|
177
183
|
*/
|
|
178
|
-
async function rotatePartnerWebhookSecret(
|
|
184
|
+
async function rotatePartnerWebhookSecret(transport, webhookId) {
|
|
179
185
|
const id = typeof webhookId === 'string' ? webhookId.trim() : '';
|
|
180
186
|
if (!id)
|
|
181
187
|
throw new errors_js_1.KasseneckValidationError('rotatePartnerWebhookSecret', 'webhookId fehlt', 'request');
|
|
182
|
-
const daten = objekt(await
|
|
188
|
+
const daten = objekt(await transport('rotatePartnerWebhookSecret', { webhookId: id }));
|
|
183
189
|
const secret = daten['secret'];
|
|
184
190
|
if (typeof secret !== 'string' || !secret) {
|
|
185
191
|
throw new errors_js_1.KasseneckValidationError('rotatePartnerWebhookSecret', 'Antwort enthaelt kein secret — dann waere der Wechsel nicht nachvollziehbar', 'response');
|
|
@@ -187,8 +193,8 @@ async function rotatePartnerWebhookSecret(rufen, webhookId) {
|
|
|
187
193
|
return { webhook: webhook(daten['webhook']), secret };
|
|
188
194
|
}
|
|
189
195
|
/** Die Webhook-Endpunkte dieses Partners samt Ereignis-Katalog. */
|
|
190
|
-
async function listPartnerWebhooks(
|
|
191
|
-
const daten = objekt(await
|
|
196
|
+
async function listPartnerWebhooks(transport) {
|
|
197
|
+
const daten = objekt(await transport('listPartnerWebhooks'));
|
|
192
198
|
return {
|
|
193
199
|
webhooks: (Array.isArray(daten['webhooks']) ? daten['webhooks'] : []).map(webhook),
|
|
194
200
|
events: (Array.isArray(daten['events']) ? daten['events'] : []).map((e) => ({
|
|
@@ -202,25 +208,25 @@ async function listPartnerWebhooks(rufen) {
|
|
|
202
208
|
* das Backend ab (`validation`, Feld `patch`), statt stillschweigend nichts zu
|
|
203
209
|
* tun.
|
|
204
210
|
*/
|
|
205
|
-
async function updatePartnerWebhook(
|
|
211
|
+
async function updatePartnerWebhook(transport, webhookId, patch) {
|
|
206
212
|
const id = typeof webhookId === 'string' ? webhookId.trim() : '';
|
|
207
213
|
if (!id)
|
|
208
214
|
throw new errors_js_1.KasseneckValidationError('updatePartnerWebhook', 'webhookId fehlt', 'request');
|
|
209
215
|
if (patch === null || typeof patch !== 'object' || Object.keys(patch).length === 0) {
|
|
210
216
|
throw new errors_js_1.KasseneckValidationError('updatePartnerWebhook', 'patch nennt keine Aenderung', 'request');
|
|
211
217
|
}
|
|
212
|
-
const daten = objekt(await
|
|
218
|
+
const daten = objekt(await transport('updatePartnerWebhook', { webhookId: id, patch }));
|
|
213
219
|
return webhook(daten['webhook']);
|
|
214
220
|
}
|
|
215
221
|
/**
|
|
216
222
|
* Loescht einen Endpunkt. Danach kommt dort nichts mehr an; offene
|
|
217
223
|
* Zustellungen werden verworfen (`dropped`).
|
|
218
224
|
*/
|
|
219
|
-
async function deletePartnerWebhook(
|
|
225
|
+
async function deletePartnerWebhook(transport, webhookId) {
|
|
220
226
|
const id = typeof webhookId === 'string' ? webhookId.trim() : '';
|
|
221
227
|
if (!id)
|
|
222
228
|
throw new errors_js_1.KasseneckValidationError('deletePartnerWebhook', 'webhookId fehlt', 'request');
|
|
223
|
-
const daten = objekt(await
|
|
229
|
+
const daten = objekt(await transport('deletePartnerWebhook', { webhookId: id }));
|
|
224
230
|
return {
|
|
225
231
|
webhookId: typeof daten['webhookId'] === 'string' ? daten['webhookId'] : id,
|
|
226
232
|
deleted: daten['deleted'] === true,
|
|
@@ -246,12 +252,12 @@ async function deletePartnerWebhook(rufen, webhookId) {
|
|
|
246
252
|
* den Namen bei, damit ein Leser der Doku und ein Leser des Codes dasselbe
|
|
247
253
|
* suchen.
|
|
248
254
|
*/
|
|
249
|
-
async function sendPartnerWebhookTest(
|
|
255
|
+
async function sendPartnerWebhookTest(transport, webhookId, event) {
|
|
250
256
|
const id = typeof webhookId === 'string' ? webhookId.trim() : '';
|
|
251
257
|
if (!id)
|
|
252
258
|
throw new errors_js_1.KasseneckValidationError('sendPartnerWebhookTest', 'webhookId fehlt', 'request');
|
|
253
259
|
const ereignis = typeof event === 'string' ? event.trim() : '';
|
|
254
|
-
const daten = objekt(await
|
|
260
|
+
const daten = objekt(await transport('sendPartnerWebhookTest', { webhookId: id, event: ereignis || undefined }));
|
|
255
261
|
return {
|
|
256
262
|
eventId: typeof daten['eventId'] === 'string' ? daten['eventId'] : '',
|
|
257
263
|
event: typeof daten['event'] === 'string' ? daten['event'] : ereignis || 'webhook.test',
|
|
@@ -271,11 +277,11 @@ async function sendPartnerWebhookTest(rufen, webhookId, event) {
|
|
|
271
277
|
* fuer alle. Die Stelle, an der sich „mein Server bekommt nichts" klaeren
|
|
272
278
|
* laesst, ohne bei Kasseneck nachzufragen.
|
|
273
279
|
*/
|
|
274
|
-
async function listPartnerWebhookDeliveries(
|
|
275
|
-
if (
|
|
280
|
+
async function listPartnerWebhookDeliveries(transport, options = {}) {
|
|
281
|
+
if (options.limit !== undefined && (!Number.isInteger(options.limit) || options.limit < 1 || options.limit > 200)) {
|
|
276
282
|
throw new errors_js_1.KasseneckValidationError('listPartnerWebhookDeliveries', 'limit muss zwischen 1 und 200 liegen', 'request');
|
|
277
283
|
}
|
|
278
|
-
const daten = objekt(await
|
|
284
|
+
const daten = objekt(await transport('listPartnerWebhookDeliveries', { webhookId: options.webhookId, limit: options.limit }));
|
|
279
285
|
return (Array.isArray(daten['deliveries']) ? daten['deliveries'] : []).map((eintrag) => {
|
|
280
286
|
const z = objekt(eintrag);
|
|
281
287
|
const zahl = (wert) => (typeof wert === 'number' && Number.isFinite(wert) ? wert : null);
|
|
@@ -45,8 +45,12 @@ export interface HobexTransactionIdOptions {
|
|
|
45
45
|
*
|
|
46
46
|
* **Der Endpunkt heisst `hobexPayApi`** — mit Suffix; ohne ihn gibt es ihn
|
|
47
47
|
* nicht.
|
|
48
|
+
*
|
|
49
|
+
* **Nie wiederholen.** Bei `isOutcomeUnknown(e)` (Netz, Zeitlimit, HTTP 5xx,
|
|
50
|
+
* unlesbare Antwort) kann die Karte belastet sein: den Stand ueber die
|
|
51
|
+
* Transaktionskennung nachlesen, nicht ein zweites Mal belasten.
|
|
48
52
|
*/
|
|
49
|
-
export declare function hobexPay(
|
|
53
|
+
export declare function hobexPay(transport: InternerTransport, options: HobexPayOptions): Promise<HobexReceipt>;
|
|
50
54
|
/**
|
|
51
55
|
* Erstattet eine zuvor ueber die Hobex-Cloud getaetigte Zahlung. Das Backend
|
|
52
56
|
* storniert zuerst (Void, solange der Tagesabschluss aussteht) und erstattet
|
|
@@ -57,11 +61,15 @@ export declare function hobexPay(rufen: InternerTransport, options: HobexPayOpti
|
|
|
57
61
|
* schon im Transport, sobald der Status nicht ausdruecklich Erfolg ist. Ein
|
|
58
62
|
* Wahrheitswert waere hier also immer `true` — eine Luege ueber den
|
|
59
63
|
* Informationsgehalt, an der ein Aufrufer ein `if` aufhaengt, das nie greift.
|
|
60
|
-
* Misserfolg kommt als geworfener Fehler
|
|
64
|
+
* Misserfolg kommt als geworfener Fehler: eine Fehlerhuelle als
|
|
65
|
+
* [KasseneckApiError] mit Code, Netz, Zeitlimit, HTTP 5xx und eine unlesbare
|
|
66
|
+
* Erfolgsantwort mit `outcome: 'unknown'` (die Erstattung kann gelaufen sein).
|
|
67
|
+
* Ein `false` an dieser Stelle luede zum zweiten Versuch ein, also zur
|
|
68
|
+
* doppelten Erstattung. **Nie wiederholen**, sondern den Stand nachlesen.
|
|
61
69
|
*
|
|
62
70
|
* **Der Endpunkt heisst `hobexRefundApi`** — mit Suffix.
|
|
63
71
|
*/
|
|
64
|
-
export declare function hobexRefund(
|
|
72
|
+
export declare function hobexRefund(transport: InternerTransport, options: HobexRefundOptions): Promise<void>;
|
|
65
73
|
/**
|
|
66
74
|
* Erzeugt eine neue Hobex-Transaktionskennung: 19 Ziffern aus Zeitanteil und
|
|
67
75
|
* Zufall (Zwilling von `newHobexTransactionId` im Vorbild, Zeile 522).
|
|
@@ -41,14 +41,22 @@ const ENDPUNKT_REFUND = 'hobexRefundApi';
|
|
|
41
41
|
*
|
|
42
42
|
* **Der Endpunkt heisst `hobexPayApi`** — mit Suffix; ohne ihn gibt es ihn
|
|
43
43
|
* nicht.
|
|
44
|
+
*
|
|
45
|
+
* **Nie wiederholen.** Bei `isOutcomeUnknown(e)` (Netz, Zeitlimit, HTTP 5xx,
|
|
46
|
+
* unlesbare Antwort) kann die Karte belastet sein: den Stand ueber die
|
|
47
|
+
* Transaktionskennung nachlesen, nicht ein zweites Mal belasten.
|
|
44
48
|
*/
|
|
45
|
-
async function hobexPay(
|
|
49
|
+
async function hobexPay(transport, options) {
|
|
46
50
|
const params = zahlungsNutzlast(ENDPUNKT_PAY, options);
|
|
47
51
|
// `reference` steht im Vorbild **unbedingt** in der Nutzlast: ohne Angabe
|
|
48
52
|
// geht sie als null raus, nicht gar nicht. Der Transport wirft nur
|
|
49
53
|
// `undefined` weg, `null` bleibt erhalten — genau diese Unterscheidung.
|
|
50
54
|
params['reference'] = options.reference ?? null;
|
|
51
|
-
|
|
55
|
+
const daten = await transport(ENDPUNKT_PAY, params);
|
|
56
|
+
// Erfolg gemeldet heisst: die Karte ist belastet. Ist der Beleg dann
|
|
57
|
+
// unlesbar, bleibt der Ausgang unklar (`response_unreadable`), damit keine
|
|
58
|
+
// App ein zweites Mal belastet.
|
|
59
|
+
return (0, errors_js_1.signiertGelesen)(ENDPUNKT_PAY, () => belegAusNutzlast(daten));
|
|
52
60
|
}
|
|
53
61
|
/**
|
|
54
62
|
* Erstattet eine zuvor ueber die Hobex-Cloud getaetigte Zahlung. Das Backend
|
|
@@ -60,13 +68,17 @@ async function hobexPay(rufen, options) {
|
|
|
60
68
|
* schon im Transport, sobald der Status nicht ausdruecklich Erfolg ist. Ein
|
|
61
69
|
* Wahrheitswert waere hier also immer `true` — eine Luege ueber den
|
|
62
70
|
* Informationsgehalt, an der ein Aufrufer ein `if` aufhaengt, das nie greift.
|
|
63
|
-
* Misserfolg kommt als geworfener Fehler
|
|
71
|
+
* Misserfolg kommt als geworfener Fehler: eine Fehlerhuelle als
|
|
72
|
+
* [KasseneckApiError] mit Code, Netz, Zeitlimit, HTTP 5xx und eine unlesbare
|
|
73
|
+
* Erfolgsantwort mit `outcome: 'unknown'` (die Erstattung kann gelaufen sein).
|
|
74
|
+
* Ein `false` an dieser Stelle luede zum zweiten Versuch ein, also zur
|
|
75
|
+
* doppelten Erstattung. **Nie wiederholen**, sondern den Stand nachlesen.
|
|
64
76
|
*
|
|
65
77
|
* **Der Endpunkt heisst `hobexRefundApi`** — mit Suffix.
|
|
66
78
|
*/
|
|
67
|
-
async function hobexRefund(
|
|
79
|
+
async function hobexRefund(transport, options) {
|
|
68
80
|
// Anders als die Zahlung sendet der Refund im Vorbild **keine** reference.
|
|
69
|
-
await
|
|
81
|
+
await transport(ENDPUNKT_REFUND, zahlungsNutzlast(ENDPUNKT_REFUND, options));
|
|
70
82
|
}
|
|
71
83
|
/**
|
|
72
84
|
* Erzeugt eine neue Hobex-Transaktionskennung: 19 Ziffern aus Zeitanteil und
|
|
@@ -50,12 +50,15 @@ export interface StripeCaptureResult {
|
|
|
50
50
|
* Methodenname und Endpunktname fallen wie schon beim Monatsbericht
|
|
51
51
|
* auseinander (siehe client/reports.ts).
|
|
52
52
|
*/
|
|
53
|
-
export declare function createStripeLink(
|
|
53
|
+
export declare function createStripeLink(transport: InternerTransport, options: CreateStripeLinkOptions): Promise<StripeUrlSession>;
|
|
54
54
|
/**
|
|
55
55
|
* Zieht die zuvor nur reservierte Zahlung einer `authorization`-Sitzung ein.
|
|
56
56
|
*
|
|
57
57
|
* **Der Parameter heisst `stripe_sessions_id`** — mit "sessions" im Plural, so
|
|
58
58
|
* das Vorbild und so das Backend. Der naheliegende Singular waere ein fehlender
|
|
59
59
|
* Pflichtparameter.
|
|
60
|
+
*
|
|
61
|
+
* **Nie wiederholen.** Bei `isOutcomeUnknown(e)` (Netz, Zeitlimit, HTTP 5xx,
|
|
62
|
+
* unlesbare Antwort) kann der Einzug gelaufen sein: den Stand nachlesen.
|
|
60
63
|
*/
|
|
61
|
-
export declare function stripeCaptureIntent(
|
|
64
|
+
export declare function stripeCaptureIntent(transport: InternerTransport, stripeSessionId: string): Promise<StripeCaptureResult>;
|
|
@@ -29,7 +29,7 @@ const ENDPUNKT_CAPTURE = 'stripeCaptureIntent';
|
|
|
29
29
|
* Methodenname und Endpunktname fallen wie schon beim Monatsbericht
|
|
30
30
|
* auseinander (siehe client/reports.ts).
|
|
31
31
|
*/
|
|
32
|
-
async function createStripeLink(
|
|
32
|
+
async function createStripeLink(transport, options) {
|
|
33
33
|
const { items } = options;
|
|
34
34
|
// Vor dem Senden pruefen: ein Zahlungslink ist zwar folgenlos wiederholbar,
|
|
35
35
|
// eine abgewiesene Anfrage aber eine unnoetige Runde ueber das Netz — und der
|
|
@@ -64,7 +64,7 @@ async function createStripeLink(rufen, options) {
|
|
|
64
64
|
if (options.customerEmail != null) {
|
|
65
65
|
params['customer_email'] = options.customerEmail;
|
|
66
66
|
}
|
|
67
|
-
return sitzungAusNutzlast(await
|
|
67
|
+
return sitzungAusNutzlast(await transport(ENDPUNKT_LINK, params));
|
|
68
68
|
}
|
|
69
69
|
/**
|
|
70
70
|
* Zieht die zuvor nur reservierte Zahlung einer `authorization`-Sitzung ein.
|
|
@@ -72,13 +72,18 @@ async function createStripeLink(rufen, options) {
|
|
|
72
72
|
* **Der Parameter heisst `stripe_sessions_id`** — mit "sessions" im Plural, so
|
|
73
73
|
* das Vorbild und so das Backend. Der naheliegende Singular waere ein fehlender
|
|
74
74
|
* Pflichtparameter.
|
|
75
|
+
*
|
|
76
|
+
* **Nie wiederholen.** Bei `isOutcomeUnknown(e)` (Netz, Zeitlimit, HTTP 5xx,
|
|
77
|
+
* unlesbare Antwort) kann der Einzug gelaufen sein: den Stand nachlesen.
|
|
75
78
|
*/
|
|
76
|
-
async function stripeCaptureIntent(
|
|
79
|
+
async function stripeCaptureIntent(transport, stripeSessionId) {
|
|
77
80
|
if (typeof stripeSessionId !== 'string' || !stripeSessionId.trim()) {
|
|
78
81
|
throw eingabefehler(ENDPUNKT_CAPTURE, 'stripeSessionId fehlt');
|
|
79
82
|
}
|
|
80
|
-
const daten = await
|
|
81
|
-
|
|
83
|
+
const daten = await transport(ENDPUNKT_CAPTURE, { stripe_sessions_id: stripeSessionId });
|
|
84
|
+
// Erfolg gemeldet heisst: eingezogen. Eine unlesbare Nutzlast bleibt
|
|
85
|
+
// Ausgang unklar (`response_unreadable`), nie ein gewoehnlicher Lesefehler.
|
|
86
|
+
return (0, errors_js_1.signiertGelesen)(ENDPUNKT_CAPTURE, () => einzugAusNutzlast(daten));
|
|
82
87
|
}
|
|
83
88
|
/**
|
|
84
89
|
* Positionen in ihre Nutzlast wandeln und dabei die strenge Schreibpfad-
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { InternerTransport } from '../client/aufrufe.js';
|
|
2
|
+
/**
|
|
3
|
+
* Artikelgruppen (Kategorien der Kachel-Kasse) und Artikel in der Form, die
|
|
4
|
+
* die Kacheln brauchen, Backend: `article-endpoints.js`
|
|
5
|
+
* (`listMyArticleGroups`, `listMyArticles` mit `groupId`/`tile`).
|
|
6
|
+
*/
|
|
7
|
+
export interface ArticleGroup {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
/** #RRGGBB */
|
|
11
|
+
color: string;
|
|
12
|
+
/** Kategorie-Symbol (Emoji, hoechstens zwei Zeichen) oder null. */
|
|
13
|
+
symbol: string | null;
|
|
14
|
+
sort: number;
|
|
15
|
+
vatRate: number | null;
|
|
16
|
+
}
|
|
17
|
+
export interface ArticleGroupPayload {
|
|
18
|
+
id?: string | null;
|
|
19
|
+
name?: string | null;
|
|
20
|
+
color?: string | null;
|
|
21
|
+
symbol?: string | null;
|
|
22
|
+
sort?: number | null;
|
|
23
|
+
vatRate?: number | null;
|
|
24
|
+
}
|
|
25
|
+
export declare function fromArticleGroupPayload(p: ArticleGroupPayload): ArticleGroup;
|
|
26
|
+
/**
|
|
27
|
+
* Mengenregel eines Artikels (Draht `quantityRule`): `piece` = ganze Stueck
|
|
28
|
+
* (1, 2, 3 ...), `decimal` = Kommamenge in der Einheit (0,250 kg, 1,5 m).
|
|
29
|
+
* Beleg und DEP bleiben ganzzahlig: eine Kommamenge wird an der Kasse als EINE
|
|
30
|
+
* Position mit ausgerechnetem Betrag gebucht, die Bezeichnung traegt die Menge
|
|
31
|
+
* („Wurst 0,250 kg“). Siehe [quantityRuleForUnit] fuer die Vorgabe je Einheit.
|
|
32
|
+
*/
|
|
33
|
+
export declare const QUANTITY_RULES: readonly ["piece", "decimal"];
|
|
34
|
+
export type QuantityRule = typeof QUANTITY_RULES[number];
|
|
35
|
+
export interface QuantityDefaults {
|
|
36
|
+
rule: QuantityRule;
|
|
37
|
+
/** Kasse fragt beim Antippen nach der Menge (Wurst nach Gewicht: ja; Semmel: nein). */
|
|
38
|
+
ask: boolean;
|
|
39
|
+
/** Nachkommastellen bei `decimal`. */
|
|
40
|
+
decimals: number;
|
|
41
|
+
}
|
|
42
|
+
/** Vorgabe je Einheit: was der Betrieb bei einem neuen Artikel bekommt und aendern darf. */
|
|
43
|
+
export declare function quantityRuleForUnit(unit: string | null | undefined): QuantityDefaults;
|
|
44
|
+
/** Wirksame Regel eines Artikels: gespeicherte Angabe schlaegt die Vorgabe der Einheit. */
|
|
45
|
+
export declare function quantityDefaults(a: Pick<PosArticle, 'unit' | 'quantityRule' | 'askQuantity'>): QuantityDefaults;
|
|
46
|
+
/** Artikel, wie ihn die Kasse fuer Kacheln und Belegpositionen braucht. */
|
|
47
|
+
export interface PosArticle {
|
|
48
|
+
id: string;
|
|
49
|
+
name: string;
|
|
50
|
+
unitPriceCents: number | null;
|
|
51
|
+
vatRate: number | null;
|
|
52
|
+
unit: string;
|
|
53
|
+
groupId: string | null;
|
|
54
|
+
/** Erloesgruppe (Buchhaltung); null = keine. */
|
|
55
|
+
revenueGroupId: string | null;
|
|
56
|
+
/** Kachel sichtbar (Draht `tile.visible`, fehlt = sichtbar). */
|
|
57
|
+
visible: boolean;
|
|
58
|
+
/** Reihenfolge der Kachel (Draht `tile.sort`). */
|
|
59
|
+
sort: number;
|
|
60
|
+
active: boolean;
|
|
61
|
+
/** Gespeicherte Mengenregel; null = Vorgabe der Einheit. */
|
|
62
|
+
quantityRule: QuantityRule | null;
|
|
63
|
+
/** Gespeichert: Kasse fragt nach der Menge; null = Vorgabe der Einheit. */
|
|
64
|
+
askQuantity: boolean | null;
|
|
65
|
+
/** Hoechstmenge je Beleg (bei kg/l/m auch Kommazahl); null = keine Grenze. */
|
|
66
|
+
maxQuantity: number | null;
|
|
67
|
+
}
|
|
68
|
+
/** Deckelt eine gewuenschte Menge an der Hoechstmenge des Artikels (null = keine Grenze). */
|
|
69
|
+
export declare function allowedQuantity(a: Pick<PosArticle, 'maxQuantity'>, wanted: number): number;
|
|
70
|
+
/** Ein Artikel am Draht `/api/v3` (`listMyArticles`), soweit dieses Paket ihn liest. */
|
|
71
|
+
export interface PosArticlePayload {
|
|
72
|
+
id?: string | null;
|
|
73
|
+
name?: string | null;
|
|
74
|
+
unitPriceCents?: number | null;
|
|
75
|
+
vatRate?: number | null;
|
|
76
|
+
unit?: string | null;
|
|
77
|
+
groupId?: string | null;
|
|
78
|
+
revenueGroupId?: string | null;
|
|
79
|
+
tile?: {
|
|
80
|
+
visible?: boolean | null;
|
|
81
|
+
sort?: number | null;
|
|
82
|
+
} | null;
|
|
83
|
+
active?: boolean | null;
|
|
84
|
+
quantityRule?: string | null;
|
|
85
|
+
askQuantity?: boolean | null;
|
|
86
|
+
maxQuantity?: number | null;
|
|
87
|
+
}
|
|
88
|
+
export declare function fromPosArticlePayload(p: PosArticlePayload): PosArticle;
|
|
89
|
+
export declare function listMyArticleGroups(transport: InternerTransport): Promise<ArticleGroup[]>;
|
|
90
|
+
export declare function listMyArticles(transport: InternerTransport): Promise<PosArticle[]>;
|