@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
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { type TransportOptions } from '../client/transport.js';
|
|
2
2
|
import { type ReceiptCompany } from '../models/receipt-company.js';
|
|
3
|
-
import {
|
|
3
|
+
import type { PosSettings } from '../pos/settings.js';
|
|
4
4
|
/**
|
|
5
5
|
* Verbindungsangaben ohne Anmeldung — alles, was [TransportOptions] ausser der
|
|
6
|
-
* Anmeldung fuehrt. Alle Felder sind wahlfrei: ohne Angabe gelten
|
|
7
|
-
* Zeitlimit der Produktion und das
|
|
6
|
+
* Anmeldung fuehrt. Alle Felder sind wahlfrei: ohne Angabe gelten der Kassenweg
|
|
7
|
+
* der Produktion ([POS_BASE_URL]), das Zeitlimit der Produktion und das
|
|
8
|
+
* globale `fetch`. Die Web-Kasse gibt `posBaseUrl: '/api/v3'` (gleicher Ursprung).
|
|
8
9
|
*/
|
|
9
10
|
export type RegisterDeviceConnection = Omit<TransportOptions, 'auth'>;
|
|
10
11
|
/** Ausweis eines gekoppelten Geraets — Nachweis der beiden Folgeaufrufe. */
|
|
@@ -44,11 +45,11 @@ export interface RegisterGeo {
|
|
|
44
45
|
acc?: number;
|
|
45
46
|
}
|
|
46
47
|
/** Angaben, die Kopplung und Login zusaetzlich mitschicken duerfen. */
|
|
47
|
-
export interface
|
|
48
|
+
export interface RegisterDeviceInfo {
|
|
48
49
|
client?: RegisterClientInfo;
|
|
49
50
|
geo?: RegisterGeo | null;
|
|
50
51
|
}
|
|
51
|
-
export interface PairRegisterDeviceOptions extends RegisterDeviceConnection,
|
|
52
|
+
export interface PairRegisterDeviceOptions extends RegisterDeviceConnection, RegisterDeviceInfo {
|
|
52
53
|
/**
|
|
53
54
|
* Die Kasse ist schon auf einem anderen Geraet geoeffnet (BELEGT-Rueckfrage):
|
|
54
55
|
* `true` uebernimmt sie hierher und widerruft das alte Geraet.
|
|
@@ -67,14 +68,25 @@ export interface PairRegisterDeviceOptions extends RegisterDeviceConnection, Reg
|
|
|
67
68
|
/** Bezeichnung dieses Geraets in der Geraeteliste; ohne Angabe "Kasse". */
|
|
68
69
|
label?: string;
|
|
69
70
|
}
|
|
70
|
-
/**
|
|
71
|
+
/**
|
|
72
|
+
* Ergebnis der Kopplung: der vollstaendige Ausweis dieses Geraets.
|
|
73
|
+
*
|
|
74
|
+
* **Speicherformat der App bleibt, wie es ist** (Nachtrag §9, B2): wer den
|
|
75
|
+
* Ausweis ablegt, bildet `companyName`/`cashregisterLabel` auf seine
|
|
76
|
+
* bisherigen Felder ab (Web-Kasse: `betrieb`/`kasse`). Die Aufrufe dieses
|
|
77
|
+
* Pakets lesen aus einem abgelegten Satz nur `ownerUid`, `deviceId`,
|
|
78
|
+
* `deviceSecret` (und `cashregisterId` beim Login); weitere Felder eines alten
|
|
79
|
+
* Satzes stoeren nicht.
|
|
80
|
+
*/
|
|
71
81
|
export interface PairedRegisterDevice extends RegisterDeviceCredentials {
|
|
72
82
|
/** Kasse, an die die Kopplung dieses Geraet gebunden hat. */
|
|
73
83
|
cashregisterId: string;
|
|
74
|
-
/** Firmenname des Betriebs
|
|
84
|
+
/** Firmenname des Betriebs; Anzeige, kann leer sein. */
|
|
75
85
|
companyName: string;
|
|
76
|
-
/** Bezeichnung der Kasse (
|
|
86
|
+
/** Bezeichnung der Kasse (ohne Bezeichnung die Kassen-ID); Anzeige, kann leer sein. */
|
|
77
87
|
cashregisterLabel: string;
|
|
88
|
+
/** Die Kopplung gilt der Test-Umgebung des Betriebs (`kr_test_`-Konto). */
|
|
89
|
+
testEnvironment: boolean;
|
|
78
90
|
}
|
|
79
91
|
/**
|
|
80
92
|
* Art eines Kassen-Benutzers: eine Person oder ein Geraet (Sammelkonto). Ein
|
|
@@ -93,25 +105,25 @@ export interface RegisterUserSummary {
|
|
|
93
105
|
* Betriebs gesetzt: die Kasse zeigt ihm das Freifeld statt der Kaestchen.
|
|
94
106
|
* Das Backend sendet das Feld nur, wenn es zutrifft; gelesen ist es immer da.
|
|
95
107
|
*/
|
|
96
|
-
|
|
108
|
+
pinPolicyOutdated: boolean;
|
|
97
109
|
}
|
|
98
|
-
/** PIN-Regel des Betriebs
|
|
110
|
+
/** PIN-Regel des Betriebs: daraus baut die Kasse Kaestchen und Tastatur. */
|
|
99
111
|
export interface RegisterPinPolicy {
|
|
100
112
|
/** Feste Stellenzahl (Backend: 3 bis 6). */
|
|
101
|
-
|
|
102
|
-
/** `
|
|
103
|
-
|
|
113
|
+
length: number;
|
|
114
|
+
/** `digits` (nur 0-9) oder `alphanumeric` (0-9 plus Kopplungs-Alphabet). */
|
|
115
|
+
charset: 'digits' | 'alphanumeric' | (string & {});
|
|
104
116
|
}
|
|
105
|
-
/** Anmeldemodus des Geraets
|
|
106
|
-
export type RegisterLoginMode = '
|
|
117
|
+
/** Anmeldemodus des Geraets: Benutzerauswahl oder nur PIN. */
|
|
118
|
+
export type RegisterLoginMode = 'select_user' | 'pin';
|
|
107
119
|
/** Antwort von [listRegisterUsersForDevice]: Benutzer, Regel, Modus. */
|
|
108
120
|
export interface RegisterDeviceUsers {
|
|
109
121
|
/** Im Modus `pin` bewusst leer — Namen haben am nur-PIN-Geraet nichts verloren. */
|
|
110
122
|
users: RegisterUserSummary[];
|
|
111
123
|
/** Kassen-Einstellungen (betriebsweit + Geraet), gemischt mit den Standardwerten. */
|
|
112
|
-
settings:
|
|
113
|
-
/** Belegkopf-Daten des Betriebs (Name, Anschrift, UID, Fusszeilen)
|
|
114
|
-
|
|
124
|
+
settings: PosSettings;
|
|
125
|
+
/** Belegkopf-Daten des Betriebs (Name, Anschrift, UID, Fusszeilen), ohne Geheimnisse. */
|
|
126
|
+
receiptHeader: ReceiptCompany | null;
|
|
115
127
|
/**
|
|
116
128
|
* `null`, wenn das Backend (noch) keine Regel nennt — dann zeigt die Kasse
|
|
117
129
|
* das Freifeld, statt Kaestchen mit einer erratenen Stellenzahl.
|
|
@@ -119,17 +131,19 @@ export interface RegisterDeviceUsers {
|
|
|
119
131
|
policy: RegisterPinPolicy | null;
|
|
120
132
|
loginMode: RegisterLoginMode;
|
|
121
133
|
/** Der Betrieb verlangt die Ortung beim Login (Standortsperre an). */
|
|
122
|
-
|
|
134
|
+
locationLock: boolean;
|
|
123
135
|
/**
|
|
124
|
-
* Darf die gebundene Kasse ueberhaupt Belege erstellen? `
|
|
125
|
-
* nennt den Grund (ausser Betrieb,
|
|
126
|
-
* sperrt das Kassieren VOR dem ersten Beleg
|
|
127
|
-
* scheitern. Fehlt das Feld
|
|
136
|
+
* Darf die gebundene Kasse ueberhaupt Belege erstellen? `ready: false`
|
|
137
|
+
* nennt den Grund als Menschentext (ausser Betrieb, keine Signaturkarte,
|
|
138
|
+
* Startbeleg fehlt): die Kasse sperrt das Kassieren VOR dem ersten Beleg
|
|
139
|
+
* statt an createReceipt zu scheitern. Fehlt das Feld, gilt bereit.
|
|
128
140
|
*/
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
141
|
+
cashregister?: {
|
|
142
|
+
ready: boolean;
|
|
143
|
+
reason?: string | null;
|
|
144
|
+
};
|
|
145
|
+
/** Das Geraet haengt an der Test-Umgebung des Betriebs. */
|
|
146
|
+
testEnvironment: boolean;
|
|
133
147
|
}
|
|
134
148
|
/**
|
|
135
149
|
* Rechte eines Kassen-Benutzers (Backend: `perms`, Vorlagen `PERMS_KASSIER`
|
|
@@ -169,7 +183,7 @@ export interface RegisterUserPerms {
|
|
|
169
183
|
}
|
|
170
184
|
/**
|
|
171
185
|
* Alle Rechte-Schluessel, die dieses Paket kennt — die Zwillinge pruefen
|
|
172
|
-
* dagegen, und ueber `fixtures/
|
|
186
|
+
* dagegen, und ueber `fixtures/surface.json` steht die Liste im Vertrag.
|
|
173
187
|
*
|
|
174
188
|
* `satisfies` schliesst die eine Richtung: ein Name, den [RegisterUserPerms]
|
|
175
189
|
* nicht fuehrt (Tippfehler, umbenanntes Recht), kommt hier nicht durch.
|
|
@@ -205,7 +219,7 @@ export interface RegisterUserSession {
|
|
|
205
219
|
}
|
|
206
220
|
export interface ListRegisterUsersForDeviceOptions extends RegisterDeviceConnection, RegisterDeviceCredentials {
|
|
207
221
|
}
|
|
208
|
-
export interface RegisterUserLoginOptions extends RegisterDeviceConnection, RegisterDeviceCredentials,
|
|
222
|
+
export interface RegisterUserLoginOptions extends RegisterDeviceConnection, RegisterDeviceCredentials, RegisterDeviceInfo {
|
|
209
223
|
/** Kassen-Benutzer aus [listRegisterUsersForDevice]. */
|
|
210
224
|
userId: string;
|
|
211
225
|
/**
|
|
@@ -219,7 +233,8 @@ export interface RegisterUserLoginOptions extends RegisterDeviceConnection, Regi
|
|
|
219
233
|
/**
|
|
220
234
|
* Eine belegte Kasse uebernehmen. Nur mit dem Recht `takeover` (Kassen-Chef);
|
|
221
235
|
* die aelteste laufende Sitzung wird dabei verdraengt. Ohne das Recht bleibt
|
|
222
|
-
* es bei der Abweisung
|
|
236
|
+
* es bei der Abweisung `cashregister_in_use` (Daten `deviceLabel`,
|
|
237
|
+
* `takeoverAllowed: false`, siehe [registerErrorDetails]).
|
|
223
238
|
*/
|
|
224
239
|
takeover?: boolean;
|
|
225
240
|
/**
|
|
@@ -232,7 +247,7 @@ export interface RegisterUserLoginOptions extends RegisterDeviceConnection, Regi
|
|
|
232
247
|
*/
|
|
233
248
|
takeoverSessionId?: string;
|
|
234
249
|
}
|
|
235
|
-
export interface RegisterPinLoginOptions extends RegisterDeviceConnection, RegisterDeviceCredentials,
|
|
250
|
+
export interface RegisterPinLoginOptions extends RegisterDeviceConnection, RegisterDeviceCredentials, RegisterDeviceInfo {
|
|
236
251
|
/**
|
|
237
252
|
* Die PIN allein — sie identifiziert UND authentifiziert (Geraete-Modus
|
|
238
253
|
* `pin`; das Backend haelt PINs je Betrieb eindeutig). Das Format prueft
|
|
@@ -275,12 +290,16 @@ export declare function unpairRegisterDevice(options: ListRegisterUsersForDevice
|
|
|
275
290
|
export interface RegisterSession {
|
|
276
291
|
id: string;
|
|
277
292
|
deviceId: string | null;
|
|
278
|
-
/**
|
|
279
|
-
|
|
293
|
+
/**
|
|
294
|
+
* Name des Geraets; `null`, wenn es keinen hat (unter `/v3` sendet das
|
|
295
|
+
* Backend dann `null` statt des frueheren Ersatzes „Kasse"). Die Oberflaeche
|
|
296
|
+
* waehlt ihren eigenen Ersatztext.
|
|
297
|
+
*/
|
|
298
|
+
deviceLabel: string | null;
|
|
280
299
|
startedAt: number | null;
|
|
281
300
|
expiresAt: number | null;
|
|
282
301
|
/** Laeuft diese Sitzung auf DIESEM Geraet? */
|
|
283
|
-
|
|
302
|
+
own: boolean;
|
|
284
303
|
/**
|
|
285
304
|
* Wer angemeldet ist. Fehlt an einem nur-PIN-Geraet: Dort zeigt schon die
|
|
286
305
|
* Benutzerliste keine Namen, und was dort nicht steht, darf hier nicht
|
|
@@ -290,7 +309,7 @@ export interface RegisterSession {
|
|
|
290
309
|
userName?: string;
|
|
291
310
|
}
|
|
292
311
|
/** Was eine Kasse gerade haelt -- Lizenzzahl und laufende Sitzungen. */
|
|
293
|
-
export interface
|
|
312
|
+
export interface RegisterSessionOverview {
|
|
294
313
|
/** Wie viele Sitzungen gleichzeitig laufen duerfen. */
|
|
295
314
|
licenses: number;
|
|
296
315
|
/** Aelteste zuerst: oben steht, was das Backend ohne Wahl verdraengen wuerde. */
|
|
@@ -310,7 +329,7 @@ export interface ListRegisterSessionsForDeviceOptions extends RegisterDeviceConn
|
|
|
310
329
|
* [listRegisterUsersForDevice]: An diesem Punkt gibt es weder Sitzung noch
|
|
311
330
|
* Token. Die Kasse bestimmt das Backend aus dem Geraet, nicht aus dem Aufruf.
|
|
312
331
|
*/
|
|
313
|
-
export declare function listRegisterSessionsForDevice(options: ListRegisterSessionsForDeviceOptions): Promise<
|
|
332
|
+
export declare function listRegisterSessionsForDevice(options: ListRegisterSessionsForDeviceOptions): Promise<RegisterSessionOverview>;
|
|
314
333
|
export declare function listRegisterUsersForDevice(options: ListRegisterUsersForDeviceOptions): Promise<RegisterDeviceUsers>;
|
|
315
334
|
/**
|
|
316
335
|
* Kassen-Benutzer per PIN anmelden. **Ohne Anmeldung** — dieser Aufruf
|
|
@@ -12,7 +12,7 @@ exports.registerPinLogin = registerPinLogin;
|
|
|
12
12
|
const errors_js_1 = require("../client/errors.js");
|
|
13
13
|
const transport_js_1 = require("../client/transport.js");
|
|
14
14
|
const receipt_company_js_1 = require("../models/receipt-company.js");
|
|
15
|
-
const
|
|
15
|
+
const client_js_1 = require("../pos/client.js");
|
|
16
16
|
/**
|
|
17
17
|
* Die drei Aufrufe, die **ohne jede Identitaet** laufen: Kopplung eines
|
|
18
18
|
* Geraets, Benutzerliste dieses Geraets, PIN-Anmeldung. Sie sind der Weg, auf
|
|
@@ -51,7 +51,7 @@ const settings_js_1 = require("../kasse/settings.js");
|
|
|
51
51
|
const ohneAnmeldung = () => ({ headers: {}, params: {} });
|
|
52
52
|
/**
|
|
53
53
|
* Alle Rechte-Schluessel, die dieses Paket kennt — die Zwillinge pruefen
|
|
54
|
-
* dagegen, und ueber `fixtures/
|
|
54
|
+
* dagegen, und ueber `fixtures/surface.json` steht die Liste im Vertrag.
|
|
55
55
|
*
|
|
56
56
|
* `satisfies` schliesst die eine Richtung: ein Name, den [RegisterUserPerms]
|
|
57
57
|
* nicht fuehrt (Tippfehler, umbenanntes Recht), kommt hier nicht durch.
|
|
@@ -94,8 +94,9 @@ async function pairRegisterDevice(options) {
|
|
|
94
94
|
deviceSecret: pflichtfeld('pairRegisterDevice', daten, 'deviceSecret'),
|
|
95
95
|
ownerUid: pflichtfeld('pairRegisterDevice', daten, 'ownerUid'),
|
|
96
96
|
cashregisterId: pflichtfeld('pairRegisterDevice', daten, 'cashregisterId'),
|
|
97
|
-
companyName: text(daten?.['
|
|
98
|
-
cashregisterLabel: text(daten?.['
|
|
97
|
+
companyName: text(daten?.['companyName']),
|
|
98
|
+
cashregisterLabel: text(daten?.['cashregisterLabel']),
|
|
99
|
+
testEnvironment: daten?.['testEnvironment'] === true,
|
|
99
100
|
};
|
|
100
101
|
}
|
|
101
102
|
/**
|
|
@@ -150,10 +151,10 @@ async function listRegisterSessionsForDevice(options) {
|
|
|
150
151
|
// nichts tun kann, ist schlimmer als keine.
|
|
151
152
|
id: pflichtfeld(name, roh, 'id'),
|
|
152
153
|
deviceId: typeof roh['deviceId'] === 'string' && roh['deviceId'] ? roh['deviceId'] : null,
|
|
153
|
-
deviceLabel: text(roh['deviceLabel']) ||
|
|
154
|
+
deviceLabel: text(roh['deviceLabel']) || null,
|
|
154
155
|
startedAt: typeof roh['startedAt'] === 'number' ? roh['startedAt'] : null,
|
|
155
156
|
expiresAt: typeof roh['expiresAt'] === 'number' ? roh['expiresAt'] : null,
|
|
156
|
-
|
|
157
|
+
own: roh['own'] === true,
|
|
157
158
|
// Nur uebernehmen, wenn wirklich einer kam: ein leerer String stuende
|
|
158
159
|
// in der Oberflaeche als namenlose Zeile, statt die Spalte wegzulassen.
|
|
159
160
|
...(typeof roh['userName'] === 'string' && roh['userName'] ? { userName: roh['userName'] } : {}),
|
|
@@ -181,49 +182,48 @@ async function listRegisterUsersForDevice(options) {
|
|
|
181
182
|
id: pflichtfeld(name, roh, 'id'),
|
|
182
183
|
name: text(roh['name']),
|
|
183
184
|
kind: typeof roh['kind'] === 'string' && roh['kind'] ? roh['kind'] : 'person',
|
|
184
|
-
|
|
185
|
+
pinPolicyOutdated: roh['pinPolicyOutdated'] === true,
|
|
185
186
|
};
|
|
186
187
|
});
|
|
187
|
-
const settingsRoh =
|
|
188
|
-
const settings =
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
};
|
|
192
|
-
const bd = daten?.betriebsdaten;
|
|
193
|
-
const betriebsdaten = bd && typeof bd === 'object' ? (0, receipt_company_js_1.fromReceiptCompanyPayload)(bd) : null;
|
|
188
|
+
const settingsRoh = daten?.settings;
|
|
189
|
+
const settings = (0, client_js_1.posSettingsFromWire)(settingsRoh !== null && typeof settingsRoh === 'object' ? settingsRoh : null);
|
|
190
|
+
const kopf = daten?.receiptHeader;
|
|
191
|
+
const receiptHeader = kopf && typeof kopf === 'object' ? (0, receipt_company_js_1.fromReceiptCompanyPayload)(kopf) : null;
|
|
194
192
|
return {
|
|
195
193
|
users,
|
|
196
194
|
policy: regel(daten?.policy),
|
|
197
|
-
|
|
195
|
+
// Nur `pin` heisst nur-PIN; alles andere (auch ein kuenftiger Wert) zeigt
|
|
196
|
+
// die Auswahl: die Namen stehen dann in `users`, und das Backend weist
|
|
197
|
+
// eine Anmeldung ohne Auswahl ohnehin mit `login_mode_select_user` ab.
|
|
198
|
+
loginMode: daten?.loginMode === 'pin' ? 'pin' : 'select_user',
|
|
198
199
|
settings,
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
//
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
kasse: kasseBereit(daten?.kasse),
|
|
200
|
+
receiptHeader,
|
|
201
|
+
locationLock: daten?.locationLock === true,
|
|
202
|
+
// Fehlt das Feld, bleibt es undefined: dann gilt bereit.
|
|
203
|
+
...(kasseBereit(daten?.cashregister) ? { cashregister: kasseBereit(daten?.cashregister) } : {}),
|
|
204
|
+
testEnvironment: daten?.testEnvironment === true,
|
|
205
205
|
};
|
|
206
206
|
}
|
|
207
207
|
function kasseBereit(wert) {
|
|
208
208
|
if (typeof wert !== 'object' || wert === null || Array.isArray(wert))
|
|
209
209
|
return undefined;
|
|
210
210
|
const roh = wert;
|
|
211
|
-
if (typeof roh['
|
|
211
|
+
if (typeof roh['ready'] !== 'boolean')
|
|
212
212
|
return undefined;
|
|
213
|
-
return {
|
|
213
|
+
return { ready: roh['ready'], reason: typeof roh['reason'] === 'string' ? roh['reason'] : null };
|
|
214
214
|
}
|
|
215
215
|
/** Die Regel aus der Antwort — oder `null`, wenn keine brauchbare kommt. */
|
|
216
216
|
function regel(wert) {
|
|
217
217
|
if (typeof wert !== 'object' || wert === null || Array.isArray(wert))
|
|
218
218
|
return null;
|
|
219
219
|
const roh = wert;
|
|
220
|
-
const
|
|
221
|
-
const
|
|
222
|
-
if (typeof
|
|
220
|
+
const length = roh['length'];
|
|
221
|
+
const charset = roh['charset'];
|
|
222
|
+
if (typeof length !== 'number' || !Number.isInteger(length) || length < 1)
|
|
223
223
|
return null;
|
|
224
|
-
if (typeof
|
|
224
|
+
if (typeof charset !== 'string' || charset === '')
|
|
225
225
|
return null;
|
|
226
|
-
return {
|
|
226
|
+
return { length, charset: charset };
|
|
227
227
|
}
|
|
228
228
|
/**
|
|
229
229
|
* Kassen-Benutzer per PIN anmelden. **Ohne Anmeldung** — dieser Aufruf
|
|
@@ -311,7 +311,11 @@ function sitzungAusAntwort(name, daten) {
|
|
|
311
311
|
},
|
|
312
312
|
};
|
|
313
313
|
}
|
|
314
|
-
/**
|
|
314
|
+
/**
|
|
315
|
+
* Transport ohne Anmeldung; `auth` steht zuletzt und ist damit nicht zu
|
|
316
|
+
* ueberschreiben. Ohne eigene Basis gehen diese Aufrufe an den Kassenweg: sie
|
|
317
|
+
* sind reine Kassenaufrufe, der Transport leitet sie dorthin.
|
|
318
|
+
*/
|
|
315
319
|
function transportFuer(verbindung) {
|
|
316
320
|
return (0, transport_js_1.createTransport)({ ...verbindung, auth: ohneAnmeldung });
|
|
317
321
|
}
|
|
@@ -19,11 +19,11 @@ import type { InternerTransport } from '../client/aufrufe.js';
|
|
|
19
19
|
* seit 1970).
|
|
20
20
|
*
|
|
21
21
|
* Die Sitzung lebt 90 Sekunden; die Browser-Kasse erneuert alle 30. Ist sie
|
|
22
|
-
* bereits beendet oder uebernommen, antwortet das Backend
|
|
23
|
-
*
|
|
24
|
-
* `registerUserLogin`.
|
|
22
|
+
* bereits beendet oder uebernommen, antwortet das Backend mit dem Code
|
|
23
|
+
* `session_expired` bzw. `session_ended` (siehe [isRegisterError]); dann hilft
|
|
24
|
+
* nur eine neue Anmeldung ueber `registerUserLogin` oder `registerPinLogin`.
|
|
25
25
|
*/
|
|
26
|
-
export declare function renewRegisterSession(
|
|
26
|
+
export declare function renewRegisterSession(transport: InternerTransport): Promise<number>;
|
|
27
27
|
/**
|
|
28
28
|
* Sitzung beenden und den Lizenzplatz sofort freigeben — der regulaere Weg des
|
|
29
29
|
* Abmeldens.
|
|
@@ -34,4 +34,4 @@ export declare function renewRegisterSession(rufen: InternerTransport): Promise<
|
|
|
34
34
|
* einer harmlosen Vertragsaenderung — ausgerechnet beim Abmelden, dem Aufruf,
|
|
35
35
|
* der auch dann durchgehen soll, wenn sonst nichts mehr geht.
|
|
36
36
|
*/
|
|
37
|
-
export declare function endRegisterSession(
|
|
37
|
+
export declare function endRegisterSession(transport: InternerTransport): Promise<void>;
|
|
@@ -23,12 +23,12 @@ const errors_js_1 = require("../client/errors.js");
|
|
|
23
23
|
* seit 1970).
|
|
24
24
|
*
|
|
25
25
|
* Die Sitzung lebt 90 Sekunden; die Browser-Kasse erneuert alle 30. Ist sie
|
|
26
|
-
* bereits beendet oder uebernommen, antwortet das Backend
|
|
27
|
-
*
|
|
28
|
-
* `registerUserLogin`.
|
|
26
|
+
* bereits beendet oder uebernommen, antwortet das Backend mit dem Code
|
|
27
|
+
* `session_expired` bzw. `session_ended` (siehe [isRegisterError]); dann hilft
|
|
28
|
+
* nur eine neue Anmeldung ueber `registerUserLogin` oder `registerPinLogin`.
|
|
29
29
|
*/
|
|
30
|
-
async function renewRegisterSession(
|
|
31
|
-
const daten = await
|
|
30
|
+
async function renewRegisterSession(transport) {
|
|
31
|
+
const daten = await transport('renewRegisterSession');
|
|
32
32
|
const expiresAt = daten?.expiresAt;
|
|
33
33
|
if (typeof expiresAt !== 'number' || !Number.isFinite(expiresAt)) {
|
|
34
34
|
// Ohne brauchbaren Ablaufzeitpunkt weiss die Kasse nicht, wann sie das
|
|
@@ -47,6 +47,6 @@ async function renewRegisterSession(rufen) {
|
|
|
47
47
|
* einer harmlosen Vertragsaenderung — ausgerechnet beim Abmelden, dem Aufruf,
|
|
48
48
|
* der auch dann durchgehen soll, wenn sonst nichts mehr geht.
|
|
49
49
|
*/
|
|
50
|
-
async function endRegisterSession(
|
|
51
|
-
await
|
|
50
|
+
async function endRegisterSession(transport) {
|
|
51
|
+
await transport('endRegisterSession');
|
|
52
52
|
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type SchemaEintrag, type SchemaObjekt } from './vokabular.js';
|
|
2
|
+
export type Objekt = Record<string, unknown>;
|
|
3
|
+
export declare const hat: (o: object, k: string) => boolean;
|
|
4
|
+
export declare const istObjekt: (w: unknown) => w is Objekt;
|
|
5
|
+
/** Schema-Eintrag zerlegt: innerer Name, Unterschema (ohne `__`) und ob es eine Liste ist. */
|
|
6
|
+
export declare function regel(eintrag: SchemaEintrag): {
|
|
7
|
+
innen: string;
|
|
8
|
+
unter: SchemaObjekt | null;
|
|
9
|
+
liste: boolean;
|
|
10
|
+
};
|
|
11
|
+
/** Innere Namen einer Schema-Ebene (was der Server innen an dieser Stelle kennt). */
|
|
12
|
+
export declare function innereNamen(schema: SchemaObjekt): Map<string, string>;
|
|
13
|
+
/**
|
|
14
|
+
* Ein Belegdokument, wie Handler und Rand es vor der Uebersetzung sehen:
|
|
15
|
+
* ohne Storno-Marke (storno-core.ohneInterneStornoFelder, Rand
|
|
16
|
+
* ohneStornoMarke). Alles andere bleibt woertlich, auch `pruefangaben` im
|
|
17
|
+
* Beleg selbst (der Server reicht sie so durch). Wirft, wenn es kein
|
|
18
|
+
* Belegdokument ist.
|
|
19
|
+
*/
|
|
20
|
+
export declare function _storedReceiptInner(doc: unknown, functionName: string): Objekt;
|
|
21
|
+
/**
|
|
22
|
+
* Registrierdaten der Huelle aus den beim Ausstellen festgehaltenen
|
|
23
|
+
* `pruefangaben` (Zwilling von `pruefangabenFuerBeleg`, erster Zweig): genau
|
|
24
|
+
* die zwei Felder, je ueber [alsIso].
|
|
25
|
+
*/
|
|
26
|
+
export declare function pruefangabenDerHuelle(p: Objekt): Objekt;
|
|
27
|
+
/**
|
|
28
|
+
* Eine Beleg-Huelle der inneren Form (`receipt`, Betriebsfelder, `kopfId`,
|
|
29
|
+
* `pruefangaben`, `testKasse` ...) in die Drahtform von `getReceipt` unter
|
|
30
|
+
* `/api/v3` (Kanal `app`: Anbieterdaten bleiben).
|
|
31
|
+
*/
|
|
32
|
+
export declare function _receiptEnvelopeToWire(huelle: Objekt): Objekt;
|
|
33
|
+
/**
|
|
34
|
+
* Ein Belegdokument (`users/{uid}/cashregisters/{id}/receipts/{id}`) in der
|
|
35
|
+
* Form von `data.receipt` einer `/api/v3`-Antwort (Kanal `app`: Anbieterdaten
|
|
36
|
+
* bleiben). Wirft, wenn es kein Belegdokument ist.
|
|
37
|
+
*/
|
|
38
|
+
export declare function _storedReceiptToWire(doc: unknown, functionName?: string): Objekt;
|
|
39
|
+
/**
|
|
40
|
+
* Ein Artikeldokument (`users/{uid}/articles/{id}`) in der Form eines
|
|
41
|
+
* Eintrags von `listMyArticles` unter `/api/v3`. Vor dem Rand ergaenzt der
|
|
42
|
+
* Handler `groupId`/`revenueGroupId` (fehlt -> `null`) und die Kachel
|
|
43
|
+
* (article-endpoints.js listMyArticles); das steht nicht im Vertrag.
|
|
44
|
+
*/
|
|
45
|
+
export declare function _storedArticleToWire(id: string, doc: unknown, functionName?: string): Objekt;
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.istObjekt = exports.hat = void 0;
|
|
4
|
+
exports.regel = regel;
|
|
5
|
+
exports.innereNamen = innereNamen;
|
|
6
|
+
exports._storedReceiptInner = _storedReceiptInner;
|
|
7
|
+
exports.pruefangabenDerHuelle = pruefangabenDerHuelle;
|
|
8
|
+
exports._receiptEnvelopeToWire = _receiptEnvelopeToWire;
|
|
9
|
+
exports._storedReceiptToWire = _storedReceiptToWire;
|
|
10
|
+
exports._storedArticleToWire = _storedArticleToWire;
|
|
11
|
+
const errors_js_1 = require("../client/errors.js");
|
|
12
|
+
const vokabular_js_1 = require("./vokabular.js");
|
|
13
|
+
const hat = (o, k) => Object.prototype.hasOwnProperty.call(o, k);
|
|
14
|
+
exports.hat = hat;
|
|
15
|
+
const istObjekt = (w) => w !== null && typeof w === 'object' && !Array.isArray(w);
|
|
16
|
+
exports.istObjekt = istObjekt;
|
|
17
|
+
/** Schema-Eintrag zerlegt: innerer Name, Unterschema (ohne `__`) und ob es eine Liste ist. */
|
|
18
|
+
function regel(eintrag) {
|
|
19
|
+
const liste = Array.isArray(eintrag);
|
|
20
|
+
const kern = (liste ? eintrag[0] : eintrag);
|
|
21
|
+
if (typeof kern === 'string')
|
|
22
|
+
return { innen: kern, unter: null, liste };
|
|
23
|
+
const { __: innen, ...unter } = kern;
|
|
24
|
+
return { innen: innen, unter: unter, liste };
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Schluessel innen -> aussen (Zwilling von `schluessel(obj, schema, 'aus')`).
|
|
28
|
+
* Kopiert, veraendert die Eingabe nie; ein Treffer wandert wie am Server ans
|
|
29
|
+
* Ende des Objekts.
|
|
30
|
+
*/
|
|
31
|
+
function schluesselNachAussen(obj, schema) {
|
|
32
|
+
if (!(0, exports.istObjekt)(obj))
|
|
33
|
+
return obj;
|
|
34
|
+
const raus = { ...obj };
|
|
35
|
+
for (const [aussen, eintrag] of Object.entries(schema)) {
|
|
36
|
+
if (aussen === '__')
|
|
37
|
+
continue;
|
|
38
|
+
const { innen, unter, liste } = regel(eintrag);
|
|
39
|
+
if (!(0, exports.hat)(raus, innen))
|
|
40
|
+
continue;
|
|
41
|
+
let wert = raus[innen];
|
|
42
|
+
if (unter) {
|
|
43
|
+
wert = liste ? (Array.isArray(wert) ? wert.map((e) => schluesselNachAussen(e, unter)) : wert) : schluesselNachAussen(wert, unter);
|
|
44
|
+
}
|
|
45
|
+
delete raus[innen];
|
|
46
|
+
raus[aussen] = wert;
|
|
47
|
+
}
|
|
48
|
+
return raus;
|
|
49
|
+
}
|
|
50
|
+
/** Innere Namen einer Schema-Ebene (was der Server innen an dieser Stelle kennt). */
|
|
51
|
+
function innereNamen(schema) {
|
|
52
|
+
const raus = new Map();
|
|
53
|
+
for (const [aussen, eintrag] of Object.entries(schema))
|
|
54
|
+
if (aussen !== '__')
|
|
55
|
+
raus.set(regel(eintrag).innen, aussen);
|
|
56
|
+
return raus;
|
|
57
|
+
}
|
|
58
|
+
/** Wert an einem aeusseren Pfad (`a.b`, `a[].b`) abbilden (Zwilling von `anPfad`). */
|
|
59
|
+
function anPfad(obj, teile, fn) {
|
|
60
|
+
if (obj == null || teile.length === 0 || typeof obj !== 'object')
|
|
61
|
+
return obj;
|
|
62
|
+
const [kopf, ...rest] = teile;
|
|
63
|
+
const liste = kopf.endsWith('[]');
|
|
64
|
+
const name = liste ? kopf.slice(0, -2) : kopf;
|
|
65
|
+
if (!(0, exports.hat)(obj, name))
|
|
66
|
+
return obj;
|
|
67
|
+
const wert = obj[name];
|
|
68
|
+
let neu;
|
|
69
|
+
if (liste)
|
|
70
|
+
neu = Array.isArray(wert) ? wert.map((e) => (rest.length ? anPfad(e, rest, fn) : fn(e))) : wert;
|
|
71
|
+
else
|
|
72
|
+
neu = rest.length ? anPfad(wert, rest, fn) : fn(wert);
|
|
73
|
+
return { ...obj, [name]: neu };
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Werte ueber die Kataloge des Vertrags abbilden (Zwilling von
|
|
77
|
+
* `werteAbbilden`). Ein Wert, den der Katalog nicht kennt, bleibt woertlich
|
|
78
|
+
* stehen, wie am Server.
|
|
79
|
+
*/
|
|
80
|
+
function werteNachAussen(obj, werte) {
|
|
81
|
+
let raus = obj;
|
|
82
|
+
for (const [pfad, { $catalog }] of Object.entries(werte)) {
|
|
83
|
+
const katalog = vokabular_js_1.KATALOGE[$catalog];
|
|
84
|
+
if (!katalog)
|
|
85
|
+
throw new Error(`stored: Katalog ${$catalog} fehlt im Vokabular`);
|
|
86
|
+
raus = anPfad(raus, pfad.split('.'), (v) => (typeof v === 'string' && (0, exports.hat)(katalog, v) ? katalog[v] : v));
|
|
87
|
+
}
|
|
88
|
+
return raus;
|
|
89
|
+
}
|
|
90
|
+
/** Englische Werte eines Katalogs (was an dieser Stelle hinaus darf). */
|
|
91
|
+
const aeussereWerte = (name) => new Set(Object.values(vokabular_js_1.KATALOGE[name] ?? {}));
|
|
92
|
+
// ---- Belege -----------------------------------------------------------------
|
|
93
|
+
/**
|
|
94
|
+
* Interne Marke der Storno-Reservierung: `stornoMarke` am Storno-Beleg,
|
|
95
|
+
* `marke` im Bezug und in `cancellations[]`. Handler
|
|
96
|
+
* (storno-core.ohneInterneStornoFelder) und Rand (ohneStornoMarke) nehmen sie
|
|
97
|
+
* heraus; der Vertrag nennt die Namen nicht (nur `$function: belegJeKanal`).
|
|
98
|
+
*/
|
|
99
|
+
const STORNO_MARKE = 'stornoMarke';
|
|
100
|
+
const MARKE = 'marke';
|
|
101
|
+
const ohneMarke = (o) => {
|
|
102
|
+
if (!(0, exports.istObjekt)(o) || !(0, exports.hat)(o, MARKE))
|
|
103
|
+
return o;
|
|
104
|
+
const { [MARKE]: _m, ...rest } = o;
|
|
105
|
+
return rest;
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* Zwilling von `beleg-pruefangaben.alsIso`: leer (auch 0, '') -> null;
|
|
109
|
+
* Firestore-Zeitstempel, Zahl oder Zeichenkette -> ISO-Zeitpunkt in UTC;
|
|
110
|
+
* nicht lesbar -> null.
|
|
111
|
+
*/
|
|
112
|
+
function alsIso(ts) {
|
|
113
|
+
if (!ts)
|
|
114
|
+
return null;
|
|
115
|
+
let d = ts;
|
|
116
|
+
if (typeof d.toDate === 'function')
|
|
117
|
+
d = d.toDate();
|
|
118
|
+
if (typeof d === 'number' || typeof d === 'string')
|
|
119
|
+
d = new Date(d);
|
|
120
|
+
return d instanceof Date && !Number.isNaN(d.getTime()) ? d.toISOString() : null;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Ein Belegdokument, wie Handler und Rand es vor der Uebersetzung sehen:
|
|
124
|
+
* ohne Storno-Marke (storno-core.ohneInterneStornoFelder, Rand
|
|
125
|
+
* ohneStornoMarke). Alles andere bleibt woertlich, auch `pruefangaben` im
|
|
126
|
+
* Beleg selbst (der Server reicht sie so durch). Wirft, wenn es kein
|
|
127
|
+
* Belegdokument ist.
|
|
128
|
+
*/
|
|
129
|
+
function _storedReceiptInner(doc, functionName) {
|
|
130
|
+
if (!(0, exports.istObjekt)(doc) || typeof doc.receiptId !== 'string') {
|
|
131
|
+
throw new errors_js_1.KasseneckValidationError(functionName, 'Kein Belegdokument (receiptId fehlt)', 'response');
|
|
132
|
+
}
|
|
133
|
+
const { [STORNO_MARKE]: _s, ...beleg } = doc;
|
|
134
|
+
if ((0, exports.hat)(beleg, 'cancellationOf'))
|
|
135
|
+
beleg.cancellationOf = ohneMarke(beleg.cancellationOf);
|
|
136
|
+
if (Array.isArray(beleg.cancellations))
|
|
137
|
+
beleg.cancellations = beleg.cancellations.map(ohneMarke);
|
|
138
|
+
return beleg;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Registrierdaten der Huelle aus den beim Ausstellen festgehaltenen
|
|
142
|
+
* `pruefangaben` (Zwilling von `pruefangabenFuerBeleg`, erster Zweig): genau
|
|
143
|
+
* die zwei Felder, je ueber [alsIso].
|
|
144
|
+
*/
|
|
145
|
+
function pruefangabenDerHuelle(p) {
|
|
146
|
+
return { karteRegistriertAm: alsIso(p.karteRegistriertAm), kasseRegistriertAm: alsIso(p.kasseRegistriertAm) };
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Eine Beleg-Huelle der inneren Form (`receipt`, Betriebsfelder, `kopfId`,
|
|
150
|
+
* `pruefangaben`, `testKasse` ...) in die Drahtform von `getReceipt` unter
|
|
151
|
+
* `/api/v3` (Kanal `app`: Anbieterdaten bleiben).
|
|
152
|
+
*/
|
|
153
|
+
function _receiptEnvelopeToWire(huelle) {
|
|
154
|
+
const schema = vokabular_js_1.SCHEMAS.getReceipt;
|
|
155
|
+
return werteNachAussen(schluesselNachAussen(huelle, schema.data), schema.werte);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Ein Belegdokument (`users/{uid}/cashregisters/{id}/receipts/{id}`) in der
|
|
159
|
+
* Form von `data.receipt` einer `/api/v3`-Antwort (Kanal `app`: Anbieterdaten
|
|
160
|
+
* bleiben). Wirft, wenn es kein Belegdokument ist.
|
|
161
|
+
*/
|
|
162
|
+
function _storedReceiptToWire(doc, functionName = 'fromStoredReceipt') {
|
|
163
|
+
return _receiptEnvelopeToWire({ receipt: _storedReceiptInner(doc, functionName) }).receipt;
|
|
164
|
+
}
|
|
165
|
+
// ---- Artikel ------------------------------------------------------------------
|
|
166
|
+
/**
|
|
167
|
+
* Zwilling von `kachelAttribute` (article-groups-core): sichtbar, wenn nicht
|
|
168
|
+
* ausdruecklich aus; Reihenfolge ganzzahlig ab 0, sonst 0.
|
|
169
|
+
*/
|
|
170
|
+
function kachelAttribute(e) {
|
|
171
|
+
const k = (0, exports.istObjekt)(e) ? e : {};
|
|
172
|
+
return {
|
|
173
|
+
sichtbar: typeof k.sichtbar === 'boolean' ? k.sichtbar : true,
|
|
174
|
+
sort: Number.isInteger(k.sort) && k.sort >= 0 ? k.sort : 0,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Nur bekannte Felder hinaus (Zwilling von `nurBekannte`): ein Feld, das
|
|
179
|
+
* kein Schreibweg kennt, und ein Katalogwert, den der Katalog nicht kennt,
|
|
180
|
+
* fallen weg; `undefined` ebenso.
|
|
181
|
+
*/
|
|
182
|
+
function nurBekannte(obj, erlaubt, werte = {}) {
|
|
183
|
+
const raus = {};
|
|
184
|
+
for (const [k, w] of Object.entries(obj)) {
|
|
185
|
+
if (w === undefined || !erlaubt.has(k))
|
|
186
|
+
continue;
|
|
187
|
+
if ((0, exports.hat)(werte, k) && w !== null && !werte[k].has(w))
|
|
188
|
+
continue;
|
|
189
|
+
raus[k] = w;
|
|
190
|
+
}
|
|
191
|
+
return raus;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Ein Artikeldokument (`users/{uid}/articles/{id}`) in der Form eines
|
|
195
|
+
* Eintrags von `listMyArticles` unter `/api/v3`. Vor dem Rand ergaenzt der
|
|
196
|
+
* Handler `groupId`/`revenueGroupId` (fehlt -> `null`) und die Kachel
|
|
197
|
+
* (article-endpoints.js listMyArticles); das steht nicht im Vertrag.
|
|
198
|
+
*/
|
|
199
|
+
function _storedArticleToWire(id, doc, functionName = 'fromStoredArticle') {
|
|
200
|
+
if (typeof id !== 'string' || id === '' || !(0, exports.istObjekt)(doc)) {
|
|
201
|
+
throw new errors_js_1.KasseneckValidationError(functionName, 'Kein Artikeldokument (id oder Daten fehlen)', 'response');
|
|
202
|
+
}
|
|
203
|
+
const a = doc;
|
|
204
|
+
const handler = {
|
|
205
|
+
id, ...a, groupId: a.groupId || null, revenueGroupId: a.revenueGroupId || null, kasse: kachelAttribute(a.kasse),
|
|
206
|
+
create_time: undefined, update_time: undefined,
|
|
207
|
+
};
|
|
208
|
+
const schema = vokabular_js_1.SCHEMAS.listMyArticles;
|
|
209
|
+
const huelle = werteNachAussen(schluesselNachAussen({ articles: [handler] }, schema.data), schema.werte);
|
|
210
|
+
const artikel = huelle.articles[0];
|
|
211
|
+
const katalog = (pfad) => aeussereWerte(schema.werte[pfad].$catalog);
|
|
212
|
+
const raus = nurBekannte(artikel, new Set(vokabular_js_1.ARTIKEL_FELDER), {
|
|
213
|
+
quantityRule: katalog('articles[].quantityRule'), e1aGroup: katalog('articles[].e1aGroup'),
|
|
214
|
+
});
|
|
215
|
+
if ((0, exports.istObjekt)(raus.tile)) {
|
|
216
|
+
const kachel = regel(regel(schema.data.articles).unter.tile).unter;
|
|
217
|
+
raus.tile = nurBekannte(raus.tile, new Set(Object.keys(kachel)));
|
|
218
|
+
}
|
|
219
|
+
return raus;
|
|
220
|
+
}
|