@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
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type Objekt } from './draht.js';
|
|
2
|
+
/**
|
|
3
|
+
* Gespeicherte Einstellungen `{ betrieb, geraet }` in der Drahtform, nur die
|
|
4
|
+
* gespeicherten und gueltigen Felder (die Vorgaben mischt der Leser dazu),
|
|
5
|
+
* und die weggelassenen aeusseren Pfade.
|
|
6
|
+
*/
|
|
7
|
+
export declare function _storedPosSettingsToWire(stored: {
|
|
8
|
+
betrieb?: unknown;
|
|
9
|
+
geraet?: unknown;
|
|
10
|
+
} | null | undefined): {
|
|
11
|
+
business: Objekt;
|
|
12
|
+
device: Objekt;
|
|
13
|
+
weggelassen: string[];
|
|
14
|
+
};
|
|
15
|
+
/** Nur fuer den Test: die Feldliste der Pruefer (muss mit der Vorgabe deckungsgleich sein). */
|
|
16
|
+
export declare const _PRUEFER_FELDER: Readonly<{
|
|
17
|
+
business: string[];
|
|
18
|
+
device: string[];
|
|
19
|
+
standard: {
|
|
20
|
+
business: string[];
|
|
21
|
+
device: string[];
|
|
22
|
+
};
|
|
23
|
+
}>;
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._PRUEFER_FELDER = void 0;
|
|
4
|
+
exports._storedPosSettingsToWire = _storedPosSettingsToWire;
|
|
5
|
+
const settings_js_1 = require("../pos/settings.js");
|
|
6
|
+
const draht_js_1 = require("./draht.js");
|
|
7
|
+
const vokabular_js_1 = require("./vokabular.js");
|
|
8
|
+
const bool = (v) => typeof v === 'boolean';
|
|
9
|
+
const hex = (v) => typeof v === 'string' && /^#[0-9a-fA-F]{6}$/.test(v);
|
|
10
|
+
const kuerzel = (v) => typeof v === 'string' && /^[A-Za-z0-9]{1,3}$/.test(v);
|
|
11
|
+
const ganz = (min, max) => (v) => Number.isInteger(v) && v >= min && v <= max;
|
|
12
|
+
const ip = (v) => v === '' || (typeof v === 'string' && /^(\d{1,3}\.){3}\d{1,3}$/.test(v) && v.split('.').every((t) => Number(t) <= 255));
|
|
13
|
+
const kennung = (v) => typeof v === 'string' && v.length <= 64 && /^[\w:.\- ]*$/.test(v);
|
|
14
|
+
// eslint-disable-next-line no-control-regex
|
|
15
|
+
const UNSICHTBAR = /[\u0000-\u001F\u007F-\u009F\u200B-\u200F\u2028\u2029\u202A-\u202E\u2060\u2066-\u2069\uFEFF]/;
|
|
16
|
+
const klartext = (v) => typeof v === 'string' && v.length <= 64 && !UNSICHTBAR.test(v) && (v === '' || v.trim() !== '');
|
|
17
|
+
const tid = (v) => typeof v === 'string' && /^\d{0,16}$/.test(v);
|
|
18
|
+
const prozentChips = (v) => {
|
|
19
|
+
if (!Array.isArray(v) || v.length > 5)
|
|
20
|
+
return false;
|
|
21
|
+
const gesehen = [];
|
|
22
|
+
for (const x of v) {
|
|
23
|
+
if (typeof x !== 'number' || !Number.isFinite(x) || x <= 0 || x > 100)
|
|
24
|
+
return false;
|
|
25
|
+
const r = Math.round(x * 10) / 10;
|
|
26
|
+
if (r !== x || gesehen.includes(r))
|
|
27
|
+
return false;
|
|
28
|
+
gesehen.push(r);
|
|
29
|
+
}
|
|
30
|
+
return true;
|
|
31
|
+
};
|
|
32
|
+
const logoBildUrl = (v) => v === '' || (typeof v === 'string' && v.length <= 600 && v.startsWith('https://firebasestorage.googleapis.com/'));
|
|
33
|
+
/** Pruefer je aeusserem Feld, soweit das Feld keine Aufzaehlung und keine Karte ist. */
|
|
34
|
+
const PRUEFER = {
|
|
35
|
+
business: {
|
|
36
|
+
logoText: kuerzel, logoEnabled: bool, color: hex, clock: bool, lockScreen: bool, staffPhotos: bool, logoutAfterSale: bool,
|
|
37
|
+
fastLogin: bool, showPrices: bool, showVat: bool, emoji: bool, categoryColors: bool, customAmountAllowed: bool,
|
|
38
|
+
note: bool, search: bool, payCash: bool, payCard: bool, tip: bool, tipSplit: bool, change: bool, exactCash: bool,
|
|
39
|
+
paySplit: bool, tipChips: prozentChips, logoImage: logoBildUrl, watermarkX: ganz(-25, 125), watermarkY: ganz(-25, 125),
|
|
40
|
+
glass: bool, hints: bool, discountChips: prozentChips,
|
|
41
|
+
},
|
|
42
|
+
device: {
|
|
43
|
+
extraColumns: ganz(-2, 4), touch: bool, printerEnabled: bool, printerIp: ip, printerPort: ganz(1, 65535),
|
|
44
|
+
printerBluetoothId: kennung, printerName: klartext, printerId: kennung, printerDeviceId: kennung, connectPrinterId: kennung,
|
|
45
|
+
drawerEnabled: bool, terminalIp: ip, terminalPort: ganz(1, 65535), terminalTid: tid, shortcutHints: bool,
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
/** Aufzaehlungen (aussen, englisch) je Teil. */
|
|
49
|
+
const AUFZAEHLUNGEN = {
|
|
50
|
+
business: settings_js_1.POS_BUSINESS_VALUES, device: settings_js_1.POS_DEVICE_VALUES,
|
|
51
|
+
};
|
|
52
|
+
/** Schalter-Karten: erlaubte Schluessel (Backend STEUERSAETZE, TG_STUFEN = Schluessel der Vorgabe). */
|
|
53
|
+
const KARTEN = {
|
|
54
|
+
vatRates: Object.keys(settings_js_1.POS_BUSINESS_DEFAULTS.vatRates),
|
|
55
|
+
tipSteps: Object.keys(settings_js_1.POS_BUSINESS_DEFAULTS.tipSteps),
|
|
56
|
+
};
|
|
57
|
+
/** Tastenmuster (Backend TASTE_MUSTER). */
|
|
58
|
+
const TASTE_MUSTER = /^((Ctrl|Alt|Shift|Meta|Mod)\+){0,3}([A-Z0-9]|F\d{1,2}|Enter|Escape|Backspace|Space|Tab|Delete|Arrow(Up|Down|Left|Right)|[+\-*/.,])$/;
|
|
59
|
+
/** Schema-Teil (aussen -> innen) und die Kataloge seiner Werte. */
|
|
60
|
+
function teilSchema(teil) {
|
|
61
|
+
return (0, draht_js_1.regel)(vokabular_js_1.SCHEMAS.getKasseSettings.data[teil]).unter;
|
|
62
|
+
}
|
|
63
|
+
function katalogFuer(teil, aussen) {
|
|
64
|
+
const verweis = vokabular_js_1.SCHEMAS.getKasseSettings.werte[`${teil}.${aussen}`];
|
|
65
|
+
return verweis ? vokabular_js_1.KATALOGE[verweis.$catalog] ?? null : null;
|
|
66
|
+
}
|
|
67
|
+
/** Tasten: aeussere und innere Aktionsnamen, Vorgabe und Paare in innerer Form. */
|
|
68
|
+
const TASTEN_SCHEMA = (0, draht_js_1.regel)(teilSchema('device').shortcuts).unter;
|
|
69
|
+
const AKTION_AUSSEN = (0, draht_js_1.innereNamen)(TASTEN_SCHEMA); // innen -> aussen
|
|
70
|
+
const AKTION_INNEN = new Map([...AKTION_AUSSEN].map(([i, a]) => [a, i]));
|
|
71
|
+
const innen = (aktion) => AKTION_INNEN.get(aktion) ?? aktion;
|
|
72
|
+
const TASTEN_VORGABE_INNEN = Object.fromEntries(Object.entries(settings_js_1.POS_SHORTCUT_DEFAULTS).map(([a, t]) => [innen(a), [...t]]));
|
|
73
|
+
const darfTeilen = (a, b) => settings_js_1.POS_SHORTCUT_SHARED_PAIRS.some(([x, y]) => (innen(x) === a && innen(y) === b) || (innen(x) === b && innen(y) === a));
|
|
74
|
+
/** Zwilling von `entwirreTasten`: die gespeicherte Wahl gewinnt, eine beanspruchte Vorgabe-Taste faellt. */
|
|
75
|
+
function entwirreTasten(gemischt, gespeichert) {
|
|
76
|
+
const beansprucht = new Map();
|
|
77
|
+
for (const [aktion, tasten] of Object.entries(gespeichert)) {
|
|
78
|
+
if (!Array.isArray(tasten))
|
|
79
|
+
continue;
|
|
80
|
+
for (const t of tasten)
|
|
81
|
+
beansprucht.set(t, aktion);
|
|
82
|
+
}
|
|
83
|
+
const raus = {};
|
|
84
|
+
for (const [aktion, tasten] of Object.entries(gemischt)) {
|
|
85
|
+
if (!Array.isArray(tasten) || aktion in gespeichert) {
|
|
86
|
+
raus[aktion] = tasten;
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
raus[aktion] = tasten.filter((t) => {
|
|
90
|
+
const inhaber = beansprucht.get(t);
|
|
91
|
+
return !inhaber || inhaber === aktion || darfTeilen(inhaber, aktion);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
return raus;
|
|
95
|
+
}
|
|
96
|
+
/** Nimmt `tastenkarte` diesen einen Eintrag an? (bekannte Aktion, 0-3 Tasten im Muster) */
|
|
97
|
+
function tasteGueltig(aktion, tasten) {
|
|
98
|
+
if (!AKTION_AUSSEN.has(aktion))
|
|
99
|
+
return false;
|
|
100
|
+
return Array.isArray(tasten) && tasten.length <= 3 && tasten.every((t) => typeof t === 'string' && TASTE_MUSTER.test(t));
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Ein Aufzaehlungswert: gueltig (innen bekannt), unbekannt vom richtigen Typ
|
|
104
|
+
* (bleibt, siehe oben) oder ungueltig. Innen gilt die Liste des Servers, also
|
|
105
|
+
* die aeussere Liste durch den Katalog zurueck: ein englischer Wert im
|
|
106
|
+
* gespeicherten Stand (`stil: 'night'`) ist dort ungueltig.
|
|
107
|
+
*/
|
|
108
|
+
function aufzaehlung(liste, katalog, w) {
|
|
109
|
+
const zurueck = new Map(Object.entries(katalog ?? {}).map(([i, a]) => [a, i]));
|
|
110
|
+
const innenListe = liste.map((a) => (typeof a === 'string' && zurueck.has(a) ? zurueck.get(a) : a));
|
|
111
|
+
if (innenListe.includes(w))
|
|
112
|
+
return 'gueltig';
|
|
113
|
+
if (typeof w !== typeof liste[0])
|
|
114
|
+
return 'ungueltig';
|
|
115
|
+
if (liste.includes(w) || zurueck.has(w))
|
|
116
|
+
return 'ungueltig';
|
|
117
|
+
return 'unbekannt';
|
|
118
|
+
}
|
|
119
|
+
function teilNachAussen(teil, gespeichert, weg) {
|
|
120
|
+
if (!(0, draht_js_1.istObjekt)(gespeichert))
|
|
121
|
+
return {};
|
|
122
|
+
const schema = teilSchema(teil);
|
|
123
|
+
const aussenName = (0, draht_js_1.innereNamen)(schema); // innen -> aussen
|
|
124
|
+
const raus = {};
|
|
125
|
+
for (const [k, w] of Object.entries(gespeichert)) {
|
|
126
|
+
const aussen = aussenName.get(k);
|
|
127
|
+
// mische: was innen unbekannt ist, kommt gar nicht erst in den Stand.
|
|
128
|
+
if (aussen === undefined || w === undefined)
|
|
129
|
+
continue;
|
|
130
|
+
const pfad = `${teil}.${aussen}`;
|
|
131
|
+
if (aussen === 'shortcuts') {
|
|
132
|
+
if (!w || typeof w !== 'object') {
|
|
133
|
+
weg.push(pfad);
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
let gemischt = Object.assign({}, TASTEN_VORGABE_INNEN, w);
|
|
137
|
+
if (!Array.isArray(w))
|
|
138
|
+
gemischt = entwirreTasten(gemischt, w);
|
|
139
|
+
const karte = {};
|
|
140
|
+
for (const [aktion, tasten] of Object.entries(gemischt)) {
|
|
141
|
+
if (tasteGueltig(aktion, tasten))
|
|
142
|
+
karte[AKTION_AUSSEN.get(aktion)] = tasten;
|
|
143
|
+
else
|
|
144
|
+
weg.push(`${pfad}.${AKTION_AUSSEN.get(aktion) ?? aktion}`);
|
|
145
|
+
}
|
|
146
|
+
raus[aussen] = karte;
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
if ((0, draht_js_1.hat)(KARTEN, aussen)) {
|
|
150
|
+
if (!w || typeof w !== 'object') {
|
|
151
|
+
weg.push(pfad);
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
const karte = {};
|
|
155
|
+
for (const [sk, sw] of Object.entries(w)) {
|
|
156
|
+
if (KARTEN[aussen].includes(sk) && typeof sw === 'boolean')
|
|
157
|
+
karte[sk] = sw;
|
|
158
|
+
else
|
|
159
|
+
weg.push(`${pfad}.${sk}`);
|
|
160
|
+
}
|
|
161
|
+
raus[aussen] = karte;
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
const liste = AUFZAEHLUNGEN[teil][aussen];
|
|
165
|
+
if (liste) {
|
|
166
|
+
const katalog = katalogFuer(teil, aussen);
|
|
167
|
+
const art = aufzaehlung(liste, katalog, w);
|
|
168
|
+
if (art === 'ungueltig') {
|
|
169
|
+
weg.push(pfad);
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
raus[aussen] = katalog && typeof w === 'string' && (0, draht_js_1.hat)(katalog, w) ? katalog[w] : w;
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
const pruefer = PRUEFER[teil][aussen];
|
|
176
|
+
if (pruefer && pruefer(w))
|
|
177
|
+
raus[aussen] = w;
|
|
178
|
+
else
|
|
179
|
+
weg.push(pfad);
|
|
180
|
+
}
|
|
181
|
+
return raus;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Gespeicherte Einstellungen `{ betrieb, geraet }` in der Drahtform, nur die
|
|
185
|
+
* gespeicherten und gueltigen Felder (die Vorgaben mischt der Leser dazu),
|
|
186
|
+
* und die weggelassenen aeusseren Pfade.
|
|
187
|
+
*/
|
|
188
|
+
function _storedPosSettingsToWire(stored) {
|
|
189
|
+
const s = (0, draht_js_1.istObjekt)(stored) ? stored : {};
|
|
190
|
+
const weg = [];
|
|
191
|
+
const business = teilNachAussen('business', s.betrieb, weg);
|
|
192
|
+
const device = teilNachAussen('device', s.geraet, weg);
|
|
193
|
+
return { business, device, weggelassen: weg };
|
|
194
|
+
}
|
|
195
|
+
/** Nur fuer den Test: die Feldliste der Pruefer (muss mit der Vorgabe deckungsgleich sein). */
|
|
196
|
+
exports._PRUEFER_FELDER = Object.freeze({
|
|
197
|
+
business: [...Object.keys(PRUEFER.business), ...Object.keys(settings_js_1.POS_BUSINESS_VALUES), ...Object.keys(KARTEN)],
|
|
198
|
+
device: [...Object.keys(PRUEFER.device), ...Object.keys(settings_js_1.POS_DEVICE_VALUES), 'shortcuts'],
|
|
199
|
+
standard: { business: Object.keys(settings_js_1.POS_BUSINESS_DEFAULTS), device: Object.keys(settings_js_1.POS_DEVICE_DEFAULTS) },
|
|
200
|
+
});
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@kreiseck/kasseneck-api/stored`: gespeicherte Firestore-Dokumente (innen,
|
|
3
|
+
* deutsch) als dieselben englischen Modelle, die der Draht `/v3` liefert.
|
|
4
|
+
*
|
|
5
|
+
* Fuer Verbraucher, die Firestore direkt lesen (Admin-Panel, Echtzeit-Listener
|
|
6
|
+
* auf Belege). So gibt es in 1.0 ein englisches Modell und keinen zweiten
|
|
7
|
+
* Draht-Dialekt: jede Funktion hier uebersetzt das Dokument genau so, wie der
|
|
8
|
+
* Server es unter `/v3` bzw. `/api/v3` hinausgibt (Schluessel und Werte aus
|
|
9
|
+
* dem Vertrags-Export `fixtures/v3/v3-vokabular.json`), und liest das
|
|
10
|
+
* Ergebnis dann mit demselben Leser wie eine Antwort. Ein Test haelt jedes
|
|
11
|
+
* gespeicherte Dokument des Vertrags gegen seine Antwort.
|
|
12
|
+
*
|
|
13
|
+
* Belege kommen im Kanal der Kasse (`app`): mit Anbieterdaten der Zahlungen
|
|
14
|
+
* (`payments[].providerData`/`providerPaymentId`, alte Kartenfelder).
|
|
15
|
+
*/
|
|
16
|
+
import { type ReceiptWithCompany } from '../client/receipts.js';
|
|
17
|
+
import { type ReceiptCompany } from '../models/receipt-company.js';
|
|
18
|
+
import type { Receipt, RegistrationInfo } from '../models/receipt.js';
|
|
19
|
+
import { type PosSettings } from '../pos/settings.js';
|
|
20
|
+
import { type PosArticle } from '../pos/artikel.js';
|
|
21
|
+
/** Ein Firestore-Dokument mit seiner Kennung (die nicht in den Daten steht). */
|
|
22
|
+
export interface StoredDocument {
|
|
23
|
+
id: string;
|
|
24
|
+
data: unknown;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Ein Belegdokument (`users/{uid}/cashregisters/{id}/receipts/{id}`) als
|
|
28
|
+
* [Receipt], wie `getReceipt` am Kassenweg ihn liefert. Wirft
|
|
29
|
+
* `KasseneckValidationError`, wenn es kein Belegdokument ist.
|
|
30
|
+
*/
|
|
31
|
+
export declare function fromStoredReceipt(doc: unknown): Receipt;
|
|
32
|
+
export interface StoredReceiptOptions {
|
|
33
|
+
/**
|
|
34
|
+
* Die Kopf-Version dieses Belegs (`users/{uid}/beleg_kopf/{id}`): die mit
|
|
35
|
+
* `receipt.headerVersionId` (gespeichert `kopfId`), bei Altbelegen ohne
|
|
36
|
+
* Zuordnung die zum Belegzeitpunkt gueltige (`gueltigAb`/`gueltigBis`).
|
|
37
|
+
*/
|
|
38
|
+
headerVersion: StoredDocument;
|
|
39
|
+
/**
|
|
40
|
+
* Das Kontodokument (`users/{uid}`): Logo, wenn die Version noch keines
|
|
41
|
+
* kennt, und die Logo-Stufe (`register_settings.kasse.logoSkala`).
|
|
42
|
+
*/
|
|
43
|
+
account?: unknown;
|
|
44
|
+
/** Konto einer Testumgebung (Aufdruck TESTKASSE, keine Testsignatur-Warnung). */
|
|
45
|
+
testCashregister?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Registrierdaten fuer einen Nullbeleg, der sie nicht selbst traegt
|
|
48
|
+
* (Altbestand; der Server schlaegt sie an Karte und Kasse nach). Fehlt die
|
|
49
|
+
* Angabe, bleiben beide Zeitpunkte leer.
|
|
50
|
+
*/
|
|
51
|
+
registrationInfo?: RegistrationInfo;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Ein Belegdokument samt Firma und Layout, wie `getReceiptWithCompany` am
|
|
55
|
+
* Kassenweg es liefert: Kopf und Fuss aus der Kopf-Version, das Layout mit
|
|
56
|
+
* demselben Regelwerk und in derselben Breite (80 mm) wie am Server.
|
|
57
|
+
*/
|
|
58
|
+
export declare function fromStoredReceiptWithCompany(doc: unknown, options: StoredReceiptOptions): ReceiptWithCompany;
|
|
59
|
+
/**
|
|
60
|
+
* Eine Kopf-Version (`users/{uid}/beleg_kopf/{id}`) als [ReceiptCompany], wie
|
|
61
|
+
* die Beleg-Antwort sie traegt. `receipt`: ein Nullbeleg traegt kein Logo;
|
|
62
|
+
* `account`: kennt die Version noch kein Logo, gilt das des Kontos.
|
|
63
|
+
*/
|
|
64
|
+
export declare function fromStoredCompany(headerVersion: unknown, options?: {
|
|
65
|
+
account?: unknown;
|
|
66
|
+
receipt?: {
|
|
67
|
+
receiptType?: unknown;
|
|
68
|
+
};
|
|
69
|
+
}): ReceiptCompany;
|
|
70
|
+
/**
|
|
71
|
+
* Gespeicherte Kassen-Einstellungen als [PosSettings], wie `getKasseSettings`
|
|
72
|
+
* am Kassenweg sie liefert: `betrieb` aus
|
|
73
|
+
* `users/{uid}.register_settings.kasse`, `geraet` aus
|
|
74
|
+
* `users/{uid}/register_devices/{id}.kasse` (fehlt = Vorgaben).
|
|
75
|
+
*
|
|
76
|
+
* Wie am Server faellt weg, was der Validator beim Lesen nicht annimmt: ein
|
|
77
|
+
* fremder Steuersatz oder eine fremde Trinkgeldstufe, eine unbekannte
|
|
78
|
+
* Tasten-Aktion (erst nach dem Entwirren der Tasten, wie `mische`), eine Taste
|
|
79
|
+
* ausserhalb des Musters, ein Wert ausserhalb seines Bereichs oder Musters
|
|
80
|
+
* (`wzPos: 500`, Farbe, IP). An seiner Stelle steht die Vorgabe;
|
|
81
|
+
* [invalidStoredPosSettings] nennt jeden solchen Pfad. So schickt ein
|
|
82
|
+
* spaeteres Speichern nie einen Eintrag, den der Server abweist.
|
|
83
|
+
*
|
|
84
|
+
* Einzige Ausnahme: ein unbekannter Wert eines Aufzaehlungsfeldes vom
|
|
85
|
+
* richtigen Typ (`stil: 'sepia'`) bleibt woertlich stehen wie ein unbekannter
|
|
86
|
+
* Wert vom Draht; [unknownPosSettingValues] nennt ihn. Reste der inneren Form
|
|
87
|
+
* 0.x fallen auf die Vorgabe zurueck.
|
|
88
|
+
*/
|
|
89
|
+
export declare function fromStoredPosSettings(stored: {
|
|
90
|
+
betrieb?: unknown;
|
|
91
|
+
geraet?: unknown;
|
|
92
|
+
} | null | undefined): PosSettings;
|
|
93
|
+
/**
|
|
94
|
+
* Die aeusseren Pfade (`business.watermarkX`, `business.vatRates.7`,
|
|
95
|
+
* `device.shortcuts.cash`), deren gespeicherten Wert der Server beim Lesen
|
|
96
|
+
* weglaesst und [fromStoredPosSettings] darum durch die Vorgabe ersetzt. Fuer
|
|
97
|
+
* die Anzeige „gespeicherter Wert ungueltig, Vorgabe gilt“.
|
|
98
|
+
*/
|
|
99
|
+
export declare function invalidStoredPosSettings(stored: {
|
|
100
|
+
betrieb?: unknown;
|
|
101
|
+
geraet?: unknown;
|
|
102
|
+
} | null | undefined): string[];
|
|
103
|
+
/**
|
|
104
|
+
* Ein Artikeldokument (`users/{uid}/articles/{id}`) als [PosArticle], wie
|
|
105
|
+
* `listMyArticles` am Kassenweg ihn liefert. Felder, die kein Schreibweg
|
|
106
|
+
* kennt, und Katalogwerte, die der Vertrag nicht kennt, fallen wie am Server
|
|
107
|
+
* weg.
|
|
108
|
+
*/
|
|
109
|
+
export declare function fromStoredArticle(id: string, stored: unknown): PosArticle;
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fromStoredReceipt = fromStoredReceipt;
|
|
4
|
+
exports.fromStoredReceiptWithCompany = fromStoredReceiptWithCompany;
|
|
5
|
+
exports.fromStoredCompany = fromStoredCompany;
|
|
6
|
+
exports.fromStoredPosSettings = fromStoredPosSettings;
|
|
7
|
+
exports.invalidStoredPosSettings = invalidStoredPosSettings;
|
|
8
|
+
exports.fromStoredArticle = fromStoredArticle;
|
|
9
|
+
/**
|
|
10
|
+
* `@kreiseck/kasseneck-api/stored`: gespeicherte Firestore-Dokumente (innen,
|
|
11
|
+
* deutsch) als dieselben englischen Modelle, die der Draht `/v3` liefert.
|
|
12
|
+
*
|
|
13
|
+
* Fuer Verbraucher, die Firestore direkt lesen (Admin-Panel, Echtzeit-Listener
|
|
14
|
+
* auf Belege). So gibt es in 1.0 ein englisches Modell und keinen zweiten
|
|
15
|
+
* Draht-Dialekt: jede Funktion hier uebersetzt das Dokument genau so, wie der
|
|
16
|
+
* Server es unter `/v3` bzw. `/api/v3` hinausgibt (Schluessel und Werte aus
|
|
17
|
+
* dem Vertrags-Export `fixtures/v3/v3-vokabular.json`), und liest das
|
|
18
|
+
* Ergebnis dann mit demselben Leser wie eine Antwort. Ein Test haelt jedes
|
|
19
|
+
* gespeicherte Dokument des Vertrags gegen seine Antwort.
|
|
20
|
+
*
|
|
21
|
+
* Belege kommen im Kanal der Kasse (`app`): mit Anbieterdaten der Zahlungen
|
|
22
|
+
* (`payments[].providerData`/`providerPaymentId`, alte Kartenfelder).
|
|
23
|
+
*/
|
|
24
|
+
const receipts_js_1 = require("../client/receipts.js");
|
|
25
|
+
const receipt_company_js_1 = require("../models/receipt-company.js");
|
|
26
|
+
const layout_js_1 = require("../receipt/layout.js");
|
|
27
|
+
const settings_js_1 = require("../pos/settings.js");
|
|
28
|
+
const artikel_js_1 = require("../pos/artikel.js");
|
|
29
|
+
const errors_js_1 = require("../client/errors.js");
|
|
30
|
+
const draht_js_1 = require("./draht.js");
|
|
31
|
+
const einstellungen_js_1 = require("./einstellungen.js");
|
|
32
|
+
const istObjekt = (w) => w !== null && typeof w === 'object' && !Array.isArray(w);
|
|
33
|
+
// ---- Belege -----------------------------------------------------------------
|
|
34
|
+
/**
|
|
35
|
+
* Ein Belegdokument (`users/{uid}/cashregisters/{id}/receipts/{id}`) als
|
|
36
|
+
* [Receipt], wie `getReceipt` am Kassenweg ihn liefert. Wirft
|
|
37
|
+
* `KasseneckValidationError`, wenn es kein Belegdokument ist.
|
|
38
|
+
*/
|
|
39
|
+
function fromStoredReceipt(doc) {
|
|
40
|
+
return (0, receipts_js_1.belegAusHuelle)({ receipt: zeilenAlsText((0, draht_js_1._storedReceiptToWire)(doc, 'fromStoredReceipt')) }, 'fromStoredReceipt');
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Freitextzeilen (`customerDetails`, `legalMessage`) als Liste gespeichert:
|
|
44
|
+
* als Text mit Zeilenumbruechen lesen, wie das Layout am Server
|
|
45
|
+
* (beleg-layout.belegPayload). Bewusst nachsichtiger als der Draht: dort
|
|
46
|
+
* geht die Liste woertlich hinaus, und der Leser des Pakets scheitert an ihr
|
|
47
|
+
* (Backend-Folgepunkt: Huelle oder Leser). Das Panel soll anzeigen statt
|
|
48
|
+
* abzustuerzen.
|
|
49
|
+
*/
|
|
50
|
+
function zeilenAlsText(beleg) {
|
|
51
|
+
const raus = { ...beleg };
|
|
52
|
+
for (const feld of ['customerDetails', 'legalMessage']) {
|
|
53
|
+
const w = raus[feld];
|
|
54
|
+
if (Array.isArray(w))
|
|
55
|
+
raus[feld] = w.filter(Boolean).join('\n');
|
|
56
|
+
}
|
|
57
|
+
return raus;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Ein Belegdokument samt Firma und Layout, wie `getReceiptWithCompany` am
|
|
61
|
+
* Kassenweg es liefert: Kopf und Fuss aus der Kopf-Version, das Layout mit
|
|
62
|
+
* demselben Regelwerk und in derselben Breite (80 mm) wie am Server.
|
|
63
|
+
*/
|
|
64
|
+
function fromStoredReceiptWithCompany(doc, options) {
|
|
65
|
+
const name = 'fromStoredReceiptWithCompany';
|
|
66
|
+
if (!istObjekt(options) || !istObjekt(options.headerVersion) || typeof options.headerVersion.id !== 'string') {
|
|
67
|
+
throw new errors_js_1.KasseneckValidationError(name, 'headerVersion { id, data } fehlt', 'request');
|
|
68
|
+
}
|
|
69
|
+
const beleg = (0, draht_js_1._storedReceiptInner)(doc, name);
|
|
70
|
+
// Die Version muss die des Belegs sein: sonst zeigte er still den heutigen
|
|
71
|
+
// Kopf statt des eingefrorenen (BAO § 131). Altbelege ohne kopfId waehlt der
|
|
72
|
+
// Aufrufer ueber das Zeitfenster.
|
|
73
|
+
if (typeof beleg.kopfId === 'string' && beleg.kopfId !== options.headerVersion.id) {
|
|
74
|
+
throw new errors_js_1.KasseneckValidationError(name, `headerVersion ${options.headerVersion.id} ist nicht die Kopf-Version des Belegs (${beleg.kopfId})`, 'request');
|
|
75
|
+
}
|
|
76
|
+
const testKasse = options.testCashregister === true;
|
|
77
|
+
const huelle = {
|
|
78
|
+
receipt: beleg,
|
|
79
|
+
...betriebsfelder(options.headerVersion.data, options.account, beleg),
|
|
80
|
+
logo_skala: logoStufe(options.account),
|
|
81
|
+
kopfId: options.headerVersion.id,
|
|
82
|
+
pruefangaben: pruefangabenFuer(beleg, options.registrationInfo),
|
|
83
|
+
testSignatur: (0, layout_js_1.receiptSignatureIsTest)({ qr: typeof beleg.qr === 'string' ? beleg.qr : '' }) && !testKasse,
|
|
84
|
+
testKasse,
|
|
85
|
+
};
|
|
86
|
+
const draht = (0, draht_js_1._receiptEnvelopeToWire)(huelle);
|
|
87
|
+
draht.receipt = zeilenAlsText(draht.receipt);
|
|
88
|
+
const raus = (0, receipts_js_1.belegMitFirmaAusHuelle)(draht, name);
|
|
89
|
+
raus.layout = layoutWieServer(raus, beleg.layoutRegeln);
|
|
90
|
+
return raus;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Registrierdaten der Huelle wie `pruefangabenFuerBeleg`: nur Nullbelege;
|
|
94
|
+
* festgehaltene `pruefangaben` des Belegs gehen vor, sonst die Angabe des
|
|
95
|
+
* Aufrufers (der Server schlaegt dann an Karte und Kasse nach), sonst leer.
|
|
96
|
+
*/
|
|
97
|
+
function pruefangabenFuer(beleg, angabe) {
|
|
98
|
+
if (beleg.receiptType !== 'zero')
|
|
99
|
+
return null;
|
|
100
|
+
if (beleg.pruefangaben && typeof beleg.pruefangaben === 'object')
|
|
101
|
+
return (0, draht_js_1.pruefangabenDerHuelle)(beleg.pruefangaben);
|
|
102
|
+
return { karteRegistriertAm: angabe?.cardRegisteredAt ?? null, kasseRegistriertAm: angabe?.cashregisterRegisteredAt ?? null };
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Layout wie `beleg-layout.layoutFuerBeleg`: 80 mm, Regelwerk mindestens das
|
|
106
|
+
* aktuelle. Kann der Server es nicht bauen, liefert er `null` (dann baut
|
|
107
|
+
* [receiptLayoutFromResult] selbst); ebenso hier.
|
|
108
|
+
*/
|
|
109
|
+
function layoutWieServer(b, regelwerk) {
|
|
110
|
+
const ruleset = Math.max(Number(regelwerk) || 1, layout_js_1.CURRENT_LAYOUT_RULESET);
|
|
111
|
+
try {
|
|
112
|
+
return (0, layout_js_1.buildReceiptLayout)(b.receipt, b.company, {
|
|
113
|
+
paperSize: 'mm80', ruleset, testCashregister: b.testCashregister, testSignature: b.testSignature, registrationInfo: b.registrationInfo,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// ---- Firma ------------------------------------------------------------------
|
|
121
|
+
const KOPF_FELDER = ['companyName', 'street', 'zip', 'city', 'phone', 'uid', 'taxnr', 'isSmallBusiness',
|
|
122
|
+
'footer1', 'footer2', 'footer3', 'footer4', 'thanksMessage', 'showKreiseckLogo', 'logoUrl'];
|
|
123
|
+
/** Zwilling von `beleg-kopf-core.nurKopf`: Luecken der Version mit denselben Vorgaben. */
|
|
124
|
+
function nurKopf(version) {
|
|
125
|
+
const v = istObjekt(version) ? version : {};
|
|
126
|
+
const raus = {};
|
|
127
|
+
for (const f of KOPF_FELDER) {
|
|
128
|
+
if (f === 'logoUrl') {
|
|
129
|
+
if (v.logoUrl !== undefined)
|
|
130
|
+
raus.logoUrl = v.logoUrl;
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
raus[f] = v[f] !== undefined ? v[f]
|
|
134
|
+
: f === 'thanksMessage' ? []
|
|
135
|
+
: f === 'isSmallBusiness' || f === 'showKreiseckLogo' ? false
|
|
136
|
+
: f === 'uid' || f.startsWith('footer') ? null : '';
|
|
137
|
+
}
|
|
138
|
+
return raus;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Betriebsfelder der Beleg-Huelle aus einer Kopf-Version (Zwilling von
|
|
142
|
+
* `alsBetriebPayload` und `logoFuerBeleg`, beleg-kopf-core.js): innere
|
|
143
|
+
* Namen (`uid`, `taxnr`), die der Rand dann uebersetzt.
|
|
144
|
+
*/
|
|
145
|
+
function betriebsfelder(version, account, beleg) {
|
|
146
|
+
const k = nurKopf(version);
|
|
147
|
+
// Nachsichtiger als der Server: ein Dank als Zeichenkette (moeglich ueber
|
|
148
|
+
// nachtragKopf) laesst belegAntwort scheitern (`join`), hier bleibt er leer.
|
|
149
|
+
const dank = Array.isArray(k.thanksMessage) ? k.thanksMessage : [];
|
|
150
|
+
const konto = istObjekt(account) ? account : {};
|
|
151
|
+
let logo;
|
|
152
|
+
if (beleg && beleg.receiptType === 'zero')
|
|
153
|
+
logo = null;
|
|
154
|
+
else if (istObjekt(version) && version.logoUrl !== undefined)
|
|
155
|
+
logo = version.logoUrl || null;
|
|
156
|
+
else
|
|
157
|
+
logo = (typeof konto.logo_url === 'string' && konto.logo_url) || null;
|
|
158
|
+
return {
|
|
159
|
+
company: k.companyName, street: k.street, zip: k.zip, city: k.city, phone: k.phone,
|
|
160
|
+
uid: k.uid, taxnr: k.taxnr, is_small_business: k.isSmallBusiness,
|
|
161
|
+
footer1: k.footer1, footer2: k.footer2, footer3: k.footer3, footer4: k.footer4,
|
|
162
|
+
thanks_message: dank.length ? dank.join('\n') : null,
|
|
163
|
+
kreiseck_logo: k.showKreiseckLogo,
|
|
164
|
+
logo_url: logo,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/** Zwilling von `logoStufeFuerKonto`: Kasse-Einstellung `logoSkala`, sonst M. */
|
|
168
|
+
function logoStufe(account) {
|
|
169
|
+
const konto = istObjekt(account) ? account : {};
|
|
170
|
+
const rs = istObjekt(konto.register_settings) ? konto.register_settings : {};
|
|
171
|
+
const kasse = istObjekt(rs.kasse) ? rs.kasse : {};
|
|
172
|
+
return ['S', 'M', 'L', 'XL'].includes(kasse.logoSkala) ? kasse.logoSkala : 'M';
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Eine Kopf-Version (`users/{uid}/beleg_kopf/{id}`) als [ReceiptCompany], wie
|
|
176
|
+
* die Beleg-Antwort sie traegt. `receipt`: ein Nullbeleg traegt kein Logo;
|
|
177
|
+
* `account`: kennt die Version noch kein Logo, gilt das des Kontos.
|
|
178
|
+
*/
|
|
179
|
+
function fromStoredCompany(headerVersion, options = {}) {
|
|
180
|
+
const draht = (0, draht_js_1._receiptEnvelopeToWire)(betriebsfelder(headerVersion, options.account, options.receipt));
|
|
181
|
+
return (0, receipt_company_js_1.fromReceiptCompanyPayload)(draht);
|
|
182
|
+
}
|
|
183
|
+
// ---- Kassen-Einstellungen ------------------------------------------------------
|
|
184
|
+
/**
|
|
185
|
+
* Gespeicherte Kassen-Einstellungen als [PosSettings], wie `getKasseSettings`
|
|
186
|
+
* am Kassenweg sie liefert: `betrieb` aus
|
|
187
|
+
* `users/{uid}.register_settings.kasse`, `geraet` aus
|
|
188
|
+
* `users/{uid}/register_devices/{id}.kasse` (fehlt = Vorgaben).
|
|
189
|
+
*
|
|
190
|
+
* Wie am Server faellt weg, was der Validator beim Lesen nicht annimmt: ein
|
|
191
|
+
* fremder Steuersatz oder eine fremde Trinkgeldstufe, eine unbekannte
|
|
192
|
+
* Tasten-Aktion (erst nach dem Entwirren der Tasten, wie `mische`), eine Taste
|
|
193
|
+
* ausserhalb des Musters, ein Wert ausserhalb seines Bereichs oder Musters
|
|
194
|
+
* (`wzPos: 500`, Farbe, IP). An seiner Stelle steht die Vorgabe;
|
|
195
|
+
* [invalidStoredPosSettings] nennt jeden solchen Pfad. So schickt ein
|
|
196
|
+
* spaeteres Speichern nie einen Eintrag, den der Server abweist.
|
|
197
|
+
*
|
|
198
|
+
* Einzige Ausnahme: ein unbekannter Wert eines Aufzaehlungsfeldes vom
|
|
199
|
+
* richtigen Typ (`stil: 'sepia'`) bleibt woertlich stehen wie ein unbekannter
|
|
200
|
+
* Wert vom Draht; [unknownPosSettingValues] nennt ihn. Reste der inneren Form
|
|
201
|
+
* 0.x fallen auf die Vorgabe zurueck.
|
|
202
|
+
*/
|
|
203
|
+
function fromStoredPosSettings(stored) {
|
|
204
|
+
const { business, device } = (0, einstellungen_js_1._storedPosSettingsToWire)(stored);
|
|
205
|
+
return (0, settings_js_1.sanitizePosSettings)({ business, device });
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Die aeusseren Pfade (`business.watermarkX`, `business.vatRates.7`,
|
|
209
|
+
* `device.shortcuts.cash`), deren gespeicherten Wert der Server beim Lesen
|
|
210
|
+
* weglaesst und [fromStoredPosSettings] darum durch die Vorgabe ersetzt. Fuer
|
|
211
|
+
* die Anzeige „gespeicherter Wert ungueltig, Vorgabe gilt“.
|
|
212
|
+
*/
|
|
213
|
+
function invalidStoredPosSettings(stored) {
|
|
214
|
+
return (0, einstellungen_js_1._storedPosSettingsToWire)(stored).weggelassen;
|
|
215
|
+
}
|
|
216
|
+
// ---- Artikel ------------------------------------------------------------------
|
|
217
|
+
/**
|
|
218
|
+
* Ein Artikeldokument (`users/{uid}/articles/{id}`) als [PosArticle], wie
|
|
219
|
+
* `listMyArticles` am Kassenweg ihn liefert. Felder, die kein Schreibweg
|
|
220
|
+
* kennt, und Katalogwerte, die der Vertrag nicht kennt, fallen wie am Server
|
|
221
|
+
* weg.
|
|
222
|
+
*/
|
|
223
|
+
function fromStoredArticle(id, stored) {
|
|
224
|
+
return (0, artikel_js_1.fromPosArticlePayload)((0, draht_js_1._storedArticleToWire)(id, stored));
|
|
225
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** Fingerabdruck des Vertrags-Exports, aus dem diese Datei stammt (`_quelle.sha256`). */
|
|
2
|
+
export declare const VOKABULAR_QUELLE = "29994ca53adc96e7cb49b9e3688b102a69c126544ef092fc6579a2e1fcd0d555";
|
|
3
|
+
/** Schema-Notation des Vertrags: Blatt 'aussen': 'innen', Objekt { __: 'innen', ... }, Liste [ { __: 'innen', ... } ]. */
|
|
4
|
+
export type SchemaEintrag = string | SchemaObjekt | readonly [SchemaObjekt];
|
|
5
|
+
export interface SchemaObjekt {
|
|
6
|
+
readonly [aussen: string]: SchemaEintrag;
|
|
7
|
+
}
|
|
8
|
+
/** Schema je Endpunkt (aussen -> innen) und Wertverweise auf die Kataloge. */
|
|
9
|
+
export declare const SCHEMAS: Readonly<Record<'getReceipt' | 'getKasseSettings' | 'listMyArticles', {
|
|
10
|
+
readonly data: SchemaObjekt;
|
|
11
|
+
readonly werte: Readonly<Record<string, {
|
|
12
|
+
readonly $catalog: string;
|
|
13
|
+
}>>;
|
|
14
|
+
}>>;
|
|
15
|
+
/** Die Felder eines Artikels in der Antwort (`listMyArticles`), aussen. */
|
|
16
|
+
export declare const ARTIKEL_FELDER: readonly string[];
|
|
17
|
+
/** Wertkataloge innen (deutsch) -> aussen (englisch). */
|
|
18
|
+
export declare const KATALOGE: Readonly<Record<string, Readonly<Record<string, string>>>>;
|