@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,367 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kassen-Einstellungen der Browser-Kasse und der Kassen-App in der Form des
|
|
3
|
+
* Drahts `/api/v3` (Nachtrag Stufe 4, §11.7.2): Schluessel und Katalogwerte
|
|
4
|
+
* englisch. Zwilling von `functions-kasse/kasse-settings-core.js` (Backend,
|
|
5
|
+
* dort mit Validator und in der inneren, deutschen Form).
|
|
6
|
+
*
|
|
7
|
+
* Betriebsweit (`business`, am Konto) und je Geraet (`device`). Die
|
|
8
|
+
* Standardwerte stehen hier UND im Backend; `fixtures/pos-settings-defaults.json`
|
|
9
|
+
* ist aus dem Vertrags-Export abgeleitet (Antwort fuer ein Konto ohne
|
|
10
|
+
* gespeicherte Einstellungen) und haelt beide deckungsgleich. Die innere Form
|
|
11
|
+
* derselben Werte liegt unter `fixtures/stored/`. Trinkgeld ist bewusst AUS,
|
|
12
|
+
* bis die Buchung geklaert ist (Spec kachel-kasse § 9).
|
|
13
|
+
*/
|
|
14
|
+
/*
|
|
15
|
+
* Jedes Enum steht als Liste zur Laufzeit da, der Typ leitet sich daraus ab
|
|
16
|
+
* (`typeof LISTE[number]`). So gibt es die Werte nur einmal, und die Zwillinge
|
|
17
|
+
* (Backend-Validator, Flutter-Paket) koennen gegen dieselben Listen pruefen,
|
|
18
|
+
* statt sie abzuschreiben. Der Name der Liste ist der Feldname in
|
|
19
|
+
* GROSSSCHRIFT (`tileStyle` -> `TILE_STYLE`): so fuehrt `fixtures/surface.json`
|
|
20
|
+
* jede Liste unter dem Namen des Feldes, zu dem sie gehoert.
|
|
21
|
+
*/
|
|
22
|
+
export const THEME = ['clear', 'warm', 'night', 'contrast'];
|
|
23
|
+
export const FONT_SIZE = ['S', 'M', 'L', 'XL'];
|
|
24
|
+
export const WATERMARK = ['off', 'login', 'everywhere'];
|
|
25
|
+
export const QUANTITY = ['off', 'x', 'kg'];
|
|
26
|
+
export const TIP_MODE = ['amount', 'total', 'both'];
|
|
27
|
+
export const CHECKOUT_MODE = ['page', 'panel'];
|
|
28
|
+
/** Kartenanbieter: Karte gibt es erst mit eingerichtetem Anbieter; 'external' = eigenes Terminal ohne Anbindung. */
|
|
29
|
+
export const CARD_PROVIDER = ['none', 'external', 'gptom', 'hobex', 'mypos', 'stripe'];
|
|
30
|
+
export const RECEIPT_OUTPUT = ['qr', 'print', 'email', 'sms', 'ask'];
|
|
31
|
+
export const LAYOUT = ['right', 'left', 'fullscreen'];
|
|
32
|
+
export const CATEGORY_POSITION = ['top', 'left'];
|
|
33
|
+
export const TILE_HEIGHT = ['S', 'M', 'L'];
|
|
34
|
+
/**
|
|
35
|
+
* `sdp` = Netzwerk ueber Epson Server Direct Print (der Drucker holt Jobs vom Backend, jeder Browser druckt).
|
|
36
|
+
* `network` = Epson direkt per IP (ePOS). `connect` = Kasseneck Connect (lokaler
|
|
37
|
+
* Agent auf dem Kassen-Rechner druckt fuer die Browser-Kasse).
|
|
38
|
+
*/
|
|
39
|
+
export const PRINTER_TYPE = ['sdp', 'network', 'bluetooth', 'usb', 'connect'];
|
|
40
|
+
/** Terminal-Ansprache: direkt per IP oder ueber Kasseneck Connect (Agent leitet weiter). */
|
|
41
|
+
export const TERMINAL_VIA = ['direct', 'connect'];
|
|
42
|
+
/** Art des Kartenterminals an dieser Kasse: keines oder Hobex HPS (JSON-REST am Geraet). */
|
|
43
|
+
export const TERMINAL_TYPE = ['none', 'hps'];
|
|
44
|
+
export const PAPER_SIZE = ['mm58', 'mm80'];
|
|
45
|
+
export const CODE_PAGE = ['CP1252', 'CP437'];
|
|
46
|
+
export const CUT = ['partial', 'full', 'none'];
|
|
47
|
+
export const DRAWER_AUTO_OPEN = ['cash', 'always', 'never'];
|
|
48
|
+
/**
|
|
49
|
+
* Mit welchem Befehl der Signatur-QR auf den Bon kommt.
|
|
50
|
+
*
|
|
51
|
+
* `raster` = der QR wird als Bild gerastert (GS v 0) und geht darum durch jeden
|
|
52
|
+
* Drucker, der Bilder kann. `escpos` = der native QR-Befehl (GS ( k): schaerfer
|
|
53
|
+
* und schneller, aber aeltere Geraete drucken dann gar keinen QR oder
|
|
54
|
+
* Zeichensalat.
|
|
55
|
+
*
|
|
56
|
+
* `auto` ist die Vorgabe und heisst **unbestimmt**: an diesem Geraet hat noch
|
|
57
|
+
* niemand am Papier entschieden. Jede Kasse bleibt dann bei ihrer bisherigen
|
|
58
|
+
* Praxis, die Browser-Kasse beim ESC/POS-Befehl, die App beim Rasterbild.
|
|
59
|
+
* Eine harte Vorgabe waere hier eine stille Umstellung des Altbestands
|
|
60
|
+
* gewesen: jedes Geraet, das nie durch den Drucker-Wizard lief, druckte
|
|
61
|
+
* ploetzlich anders, und ueber BLE kostet ein Rasterbild mehrere Sekunden je
|
|
62
|
+
* Bon. Nur ein ausdruecklich gesetzter Wert aendert etwas.
|
|
63
|
+
*
|
|
64
|
+
* **Eine Geraete-Einstellung, keine des Betriebs:** derselbe Bon kommt an einer
|
|
65
|
+
* Kasse sauber heraus und an der Nebenkasse nicht. Und sie ist nicht
|
|
66
|
+
* kosmetisch: nach § 132a BAO ist der QR Teil des Belegs; wer den falschen
|
|
67
|
+
* Modus stehen laesst, erteilt Belege ohne lesbare Signatur.
|
|
68
|
+
*/
|
|
69
|
+
export const QR_MODE = ['auto', 'raster', 'escpos'];
|
|
70
|
+
/** Groesse des Kuerzel-Logos in der Kopfzeile der Kasse. */
|
|
71
|
+
export const LOGO_SIZE = ['S', 'M', 'L'];
|
|
72
|
+
/** Schriftgroesse in den Chef-Einstellungen, getrennt von der Schrift der Kasse. */
|
|
73
|
+
export const SETTINGS_FONT_SIZE = ['S', 'M', 'L'];
|
|
74
|
+
/** Kachel-Optik: farbiger Streifen am Rand oder ganz gefuellte Kachel. */
|
|
75
|
+
export const TILE_STYLE = ['stripe', 'full'];
|
|
76
|
+
/** Automatisches Abmelden nach Minuten Ruhe; 0 = nie. */
|
|
77
|
+
export const AUTO_LOGOUT_MINUTES = [0, 1, 5, 15, 30];
|
|
78
|
+
/** Rabatt am Beleg erlaubt. */
|
|
79
|
+
export const DISCOUNT = ['off', 'on'];
|
|
80
|
+
/** Seite des Wasserzeichens; ALT, abgeloest von watermarkX. */
|
|
81
|
+
export const WATERMARK_SIDE = ['left', 'center', 'right'];
|
|
82
|
+
/** Deckkraft des Wasserzeichens in Prozent, bewusst Stufen, kein Schieberegler. */
|
|
83
|
+
export const WATERMARK_STRENGTH = [3, 6, 10, 16];
|
|
84
|
+
/** Groesse des Bild-Logos am Beleg. */
|
|
85
|
+
export const LOGO_SCALE = ['S', 'M', 'L', 'XL'];
|
|
86
|
+
/** Groesse des Wasserzeichens, getrennt vom Beleg-Logo. */
|
|
87
|
+
export const WATERMARK_SCALE = ['S', 'M', 'L', 'XL'];
|
|
88
|
+
/** Wie lange die Fertig-Seite stehen bleibt, in Sekunden; 0 = bis zum Tippen. */
|
|
89
|
+
export const DONE_SCREEN_SECONDS = [0, 3, 5, 10, 15, 30, 60];
|
|
90
|
+
/** Aktionen der Kasse, die eine Taste bekommen koennen (Schluessel von `device.shortcuts`). */
|
|
91
|
+
export const POS_SHORTCUT_ACTIONS = [
|
|
92
|
+
'checkout', 'complete', 'cancel', 'customAmount', 'cash', 'card', 'exactAmount', 'receipts', 'undoLast',
|
|
93
|
+
'settings', 'logout', 'tip', 'fullscreen', 'clearTendered', 'clearCart', 'splitPayment',
|
|
94
|
+
];
|
|
95
|
+
export const POS_SHORTCUT_DEFAULTS = Object.freeze({
|
|
96
|
+
checkout: ['Enter'], complete: ['Enter'], cancel: ['Escape'],
|
|
97
|
+
// Mod+F gehoert dem Vollbild; Betrag frei liegt auf D. Bar bleibt auf B
|
|
98
|
+
// (Entscheidung vom 21.8., der Tausch von 0.6.25 ist zurueck).
|
|
99
|
+
customAmount: ['Mod+D'], cash: ['Mod+B'], card: ['Mod+K'], exactAmount: ['Mod+P'],
|
|
100
|
+
// NICHT Mod+E: das faengt Chrome auf dem Mac selbst ab („Auswahl fuer
|
|
101
|
+
// Suche verwenden"), am Geraet belegt. J wie Journal laesst er durch.
|
|
102
|
+
receipts: ['Mod+J'], undoLast: ['Mod+Backspace'],
|
|
103
|
+
// NICHT Mod+T: die Taste ist im Browser reserviert (neuer Tab) und kommt
|
|
104
|
+
// nie bei der Seite an. Mod+G laesst Chrome durch.
|
|
105
|
+
settings: ['Mod+S'], logout: ['Mod+L'], tip: ['Mod+G'],
|
|
106
|
+
fullscreen: ['Mod+F'],
|
|
107
|
+
// Mod+C = Kopieren des Browsers; im Kassieren-Schritt ist Kopieren fern,
|
|
108
|
+
// und die Bindung gilt nur dort (Bar + Rueckgeld-Rechner an).
|
|
109
|
+
clearTendered: ['Mod+C'],
|
|
110
|
+
// Bewusst DIESELBE Taste wie clearTendered: die beiden leben in
|
|
111
|
+
// verschiedenen Momenten (Korb vor dem Kassieren, Gegeben-Feld darin),
|
|
112
|
+
// der Verteiler laesst die nicht zustaendige Aktion durchfallen.
|
|
113
|
+
clearCart: ['Mod+C'],
|
|
114
|
+
// Bewusst ohne Vorgabe: jede freie Mod-Taste ist in irgendeinem Browser
|
|
115
|
+
// belegt oder am Geraet unerprobt. Der Chef vergibt sie, wenn er sie braucht.
|
|
116
|
+
splitPayment: [],
|
|
117
|
+
});
|
|
118
|
+
/**
|
|
119
|
+
* Aktionen, die sich eine Taste teilen duerfen (Backend `TASTEN_PAARE`): sie
|
|
120
|
+
* leben in verschiedenen Momenten, der Verteiler laesst die nicht zustaendige
|
|
121
|
+
* durchfallen. Jede andere Doppelbelegung weist der Server ab, und dieses
|
|
122
|
+
* Paket schon vor dem Senden.
|
|
123
|
+
*/
|
|
124
|
+
export const POS_SHORTCUT_SHARED_PAIRS = Object.freeze([
|
|
125
|
+
['checkout', 'complete'],
|
|
126
|
+
['clearTendered', 'clearCart'],
|
|
127
|
+
]);
|
|
128
|
+
const darfTeilen = (a, b) => POS_SHORTCUT_SHARED_PAIRS.some(([x, y]) => (x === a && y === b) || (x === b && y === a));
|
|
129
|
+
/**
|
|
130
|
+
* Die erste Doppelbelegung einer Tastenkarte: `{ action, key, heldBy }` oder
|
|
131
|
+
* `null`. Geprueft wird die ganze Karte, so wie der Server sie nach dem
|
|
132
|
+
* Speichern haelt (er selbst prueft nur die gesendeten Eintraege).
|
|
133
|
+
*/
|
|
134
|
+
export function posShortcutConflict(shortcuts) {
|
|
135
|
+
const belegt = new Map();
|
|
136
|
+
for (const aktion of Object.keys(shortcuts)) {
|
|
137
|
+
const tasten = shortcuts[aktion];
|
|
138
|
+
if (!Array.isArray(tasten))
|
|
139
|
+
continue;
|
|
140
|
+
for (const t of tasten) {
|
|
141
|
+
const vorher = belegt.get(t);
|
|
142
|
+
if (vorher !== undefined && vorher !== aktion && !darfTeilen(vorher, aktion))
|
|
143
|
+
return { action: aktion, key: t, heldBy: vorher };
|
|
144
|
+
belegt.set(t, aktion);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
export const POS_BUSINESS_DEFAULTS = Object.freeze({
|
|
150
|
+
// Das Petrol der Marke: die Aktionsfarbe des Design-Systems (Rolle `brand`).
|
|
151
|
+
logoText: 'K', logoEnabled: true, logoSize: 'M', watermark: 'login', color: '#136B6B',
|
|
152
|
+
theme: 'clear', fontSize: 'M', settingsFontSize: 'S', tileStyle: 'stripe', clock: true,
|
|
153
|
+
lockScreen: true, staffPhotos: true, autoLogoutMinutes: 0, logoutAfterSale: false, fastLogin: true,
|
|
154
|
+
showPrices: true, showVat: false, emoji: true, categoryColors: true, customAmountAllowed: true,
|
|
155
|
+
vatRates: { 20: true, 13: true, 10: true, 4.9: true, 0: true, 19: false },
|
|
156
|
+
quantity: 'x', note: false, search: false, discount: 'off',
|
|
157
|
+
payCash: true, payCard: false, paySplit: false, cardProvider: 'none', tip: false, tipMode: 'both',
|
|
158
|
+
tipSteps: { 5: true, 10: true, 15: false, 20: false }, tipSplit: true, change: true,
|
|
159
|
+
tipChips: [5, 10], exactCash: false, checkoutMode: 'panel',
|
|
160
|
+
// 'ask' = Fertig-Seite bietet QR und Bon an, sicherster Standard.
|
|
161
|
+
receiptOutput: 'ask', doneScreenSeconds: 0,
|
|
162
|
+
logoImage: '', watermarkSide: 'center', watermarkX: 50, watermarkY: 50, watermarkStrength: 6, logoScale: 'M', watermarkScale: 'M',
|
|
163
|
+
glass: true, hints: true,
|
|
164
|
+
discountChips: [5, 10, 15, 20],
|
|
165
|
+
});
|
|
166
|
+
export const POS_DEVICE_DEFAULTS = Object.freeze({
|
|
167
|
+
layout: 'right', categoryPosition: 'top', extraColumns: 0, tileHeight: 'M', touch: false,
|
|
168
|
+
shortcuts: { ...POS_SHORTCUT_DEFAULTS },
|
|
169
|
+
printerEnabled: false, printerType: 'sdp', printerIp: '', printerPort: 9100, printerBluetoothId: '', printerName: '',
|
|
170
|
+
printerId: '', printerDeviceId: 'local_printer', connectPrinterId: '',
|
|
171
|
+
paperSize: 'mm80', codePage: 'CP1252', cut: 'partial', qrMode: 'auto',
|
|
172
|
+
drawerEnabled: false, drawerAutoOpen: 'cash',
|
|
173
|
+
terminalIp: '', terminalPort: 8080, terminalTid: '', terminalVia: 'direct',
|
|
174
|
+
terminalType: 'none', shortcutHints: true,
|
|
175
|
+
});
|
|
176
|
+
/**
|
|
177
|
+
* Die Wertemenge je Feld, soweit das Feld eine hat: dagegen prueft der
|
|
178
|
+
* Schreibweg vor dem Senden (ein deutscher Wert wie `'nacht'` geht so gar
|
|
179
|
+
* nicht erst hinaus). Die Wahrheit ueber Gueltigkeit hat weiter das Backend.
|
|
180
|
+
*/
|
|
181
|
+
export const POS_BUSINESS_VALUES = Object.freeze({
|
|
182
|
+
logoSize: LOGO_SIZE, watermark: WATERMARK, theme: THEME, fontSize: FONT_SIZE, settingsFontSize: SETTINGS_FONT_SIZE,
|
|
183
|
+
tileStyle: TILE_STYLE, autoLogoutMinutes: AUTO_LOGOUT_MINUTES, quantity: QUANTITY, discount: DISCOUNT,
|
|
184
|
+
cardProvider: CARD_PROVIDER, tipMode: TIP_MODE, checkoutMode: CHECKOUT_MODE, receiptOutput: RECEIPT_OUTPUT,
|
|
185
|
+
doneScreenSeconds: DONE_SCREEN_SECONDS, watermarkSide: WATERMARK_SIDE, watermarkStrength: WATERMARK_STRENGTH,
|
|
186
|
+
logoScale: LOGO_SCALE, watermarkScale: WATERMARK_SCALE,
|
|
187
|
+
});
|
|
188
|
+
/** Wie [POS_BUSINESS_VALUES] fuer die Geraete-Einstellungen. */
|
|
189
|
+
export const POS_DEVICE_VALUES = Object.freeze({
|
|
190
|
+
layout: LAYOUT, categoryPosition: CATEGORY_POSITION, tileHeight: TILE_HEIGHT, printerType: PRINTER_TYPE,
|
|
191
|
+
paperSize: PAPER_SIZE, codePage: CODE_PAGE, cut: CUT, qrMode: QR_MODE, drawerAutoOpen: DRAWER_AUTO_OPEN,
|
|
192
|
+
terminalVia: TERMINAL_VIA, terminalType: TERMINAL_TYPE,
|
|
193
|
+
});
|
|
194
|
+
/** Eigene Eigenschaft, nie eine geerbte (`toString`, `constructor`, `__proto__`). */
|
|
195
|
+
const eigen = (o, k) => Object.prototype.hasOwnProperty.call(o, k);
|
|
196
|
+
/**
|
|
197
|
+
* Werte der inneren Form (0.x, deutsch), die unter einem Feldnamen stehen
|
|
198
|
+
* koennten, den auch die Drahtform traegt. Wichtig sind `layout` und
|
|
199
|
+
* `terminalVia` (innen und aussen gleich benannt); die Tabelle fuehrt aber jeden
|
|
200
|
+
* Katalog, damit ein zwischengespeicherter Mischstand nie einen deutschen Wert
|
|
201
|
+
* ins englische Modell traegt. Ein Test haelt sie deckungsgleich mit den
|
|
202
|
+
* Katalogen des Vokabulars (innere Werte ohne die gleichlautenden).
|
|
203
|
+
*/
|
|
204
|
+
const ALTWERTE_0X = Object.freeze({
|
|
205
|
+
watermark: ['aus', 'anmeldung', 'ueberall'],
|
|
206
|
+
theme: ['klar', 'nacht', 'kontrast'],
|
|
207
|
+
tileStyle: ['streifen', 'voll'],
|
|
208
|
+
quantity: ['aus'],
|
|
209
|
+
discount: ['aus', 'an'],
|
|
210
|
+
cardProvider: ['keiner', 'extern'],
|
|
211
|
+
tipMode: ['betrag', 'gesamt', 'beides'],
|
|
212
|
+
checkoutMode: ['seite'],
|
|
213
|
+
receiptOutput: ['druck', 'mail', 'fragen'],
|
|
214
|
+
watermarkSide: ['links', 'mitte', 'rechts'],
|
|
215
|
+
layout: ['rechts', 'links', 'vollbild'],
|
|
216
|
+
categoryPosition: ['oben', 'links'],
|
|
217
|
+
printerType: ['netz', 'bt'],
|
|
218
|
+
drawerAutoOpen: ['bar', 'immer', 'nie'],
|
|
219
|
+
terminalVia: ['direkt'],
|
|
220
|
+
terminalType: ['keins'],
|
|
221
|
+
});
|
|
222
|
+
/** Tasten-Aktionen der inneren Form (0.x). */
|
|
223
|
+
const ALTAKTIONEN_0X = new Set([
|
|
224
|
+
'kassieren', 'abschliessen', 'abbrechen', 'frei', 'bar', 'karte', 'passend', 'belege', 'letzteZurueck',
|
|
225
|
+
'einstellungen', 'abmelden', 'trinkgeld', 'vollbild', 'gegebenLeeren', 'korbLeeren', 'getrennt',
|
|
226
|
+
]);
|
|
227
|
+
/** Ein Wert der inneren Form 0.x fuer dieses Feld? (paketintern, fuer die Meldung der Vorab-Pruefung) */
|
|
228
|
+
export function _istAltwert0x(feld, wert) {
|
|
229
|
+
const alte = eigen(ALTWERTE_0X, feld) ? ALTWERTE_0X[feld] : undefined;
|
|
230
|
+
return !!alte && alte.includes(wert);
|
|
231
|
+
}
|
|
232
|
+
/** Nur fuer den Test: die beiden Tabellen der inneren Form. */
|
|
233
|
+
export const _ALTFORM_0X = Object.freeze({ werte: ALTWERTE_0X, aktionen: [...ALTAKTIONEN_0X] });
|
|
234
|
+
/**
|
|
235
|
+
* Standard + stored. Landkarten (`vatRates`, `tipSteps`, `shortcuts`)
|
|
236
|
+
* werden je Schluessel gemischt, damit neue Saetze beim Altbestand ankommen;
|
|
237
|
+
* Schluessel, die der Standard nicht fuehrt, bleiben draussen.
|
|
238
|
+
*
|
|
239
|
+
* **Immer** (unabhaengig davon, welches Standard-Objekt uebergeben wird, auch
|
|
240
|
+
* eine Kopie oder das einer zweiten Paketkopie) faellt ein Wert der inneren
|
|
241
|
+
* Form 0.x auf den Standard zurueck (`layout: 'rechts'`, `terminalVia:
|
|
242
|
+
* 'direkt'`), und deutsche Tasten-Aktionen (`kassieren`) kommen nicht in die
|
|
243
|
+
* Tastenkarte. Ein unbekannter **englischer** Wert (`theme: 'sepia'`) bleibt
|
|
244
|
+
* dagegen stehen: er kann ein neuer Wert des Servers sein.
|
|
245
|
+
*/
|
|
246
|
+
export function mergePosSettings(standard, stored) {
|
|
247
|
+
const out = JSON.parse(JSON.stringify(standard));
|
|
248
|
+
if (stored && typeof stored === 'object') {
|
|
249
|
+
for (const key of Object.keys(stored)) {
|
|
250
|
+
if (!eigen(out, key))
|
|
251
|
+
continue;
|
|
252
|
+
const wert = stored[key];
|
|
253
|
+
const alt = out[key];
|
|
254
|
+
if (alt && typeof alt === 'object' && !Array.isArray(alt) && wert && typeof wert === 'object' && !Array.isArray(wert)) {
|
|
255
|
+
const neu = {};
|
|
256
|
+
for (const k of Object.keys(wert)) {
|
|
257
|
+
if (key === 'shortcuts' && ALTAKTIONEN_0X.has(k))
|
|
258
|
+
continue;
|
|
259
|
+
if (k === '__proto__')
|
|
260
|
+
continue;
|
|
261
|
+
neu[k] = wert[k];
|
|
262
|
+
}
|
|
263
|
+
out[key] = { ...alt, ...neu };
|
|
264
|
+
}
|
|
265
|
+
else if (wert !== undefined) {
|
|
266
|
+
const alte = eigen(ALTWERTE_0X, key) ? ALTWERTE_0X[key] : undefined;
|
|
267
|
+
if (alte && alte.includes(wert))
|
|
268
|
+
continue;
|
|
269
|
+
out[key] = wert;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
return out;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Einen gespeicherten oder zwischengespeicherten Stand `{business, device}`
|
|
277
|
+
* lesen: gemischt mit den Standardwerten, ohne Werte und Tasten-Aktionen der
|
|
278
|
+
* inneren Form 0.x (siehe [mergePosSettings]). Der Weg fuer jeden Stand, den
|
|
279
|
+
* ein Verbraucher selbst abgelegt hat; ein Stand in der inneren Form ergibt
|
|
280
|
+
* die Standardwerte, nie einen deutschen Wert und nie einen Absturz.
|
|
281
|
+
*/
|
|
282
|
+
export function sanitizePosSettings(stored) {
|
|
283
|
+
const roh = stored !== null && typeof stored === 'object' ? stored : {};
|
|
284
|
+
const teil = (k) => {
|
|
285
|
+
const w = eigen(roh, k) ? roh[k] : undefined;
|
|
286
|
+
return w !== null && typeof w === 'object' && !Array.isArray(w) ? w : null;
|
|
287
|
+
};
|
|
288
|
+
return {
|
|
289
|
+
business: mergePosSettings(POS_BUSINESS_DEFAULTS, teil('business')),
|
|
290
|
+
device: mergePosSettings(POS_DEVICE_DEFAULTS, teil('device')),
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Die Felder, deren Wert dieses Paket nicht kennt (neuer Wert des Servers),
|
|
295
|
+
* als Pfade (`business.theme`, `device.printerType`). Die Oberflaeche kann sie
|
|
296
|
+
* als „vom Server, hier nicht einstellbar" zeigen; sie bleiben erhalten, solange
|
|
297
|
+
* nur geaenderte Felder geschrieben werden ([posSettingsChanges]).
|
|
298
|
+
*/
|
|
299
|
+
export function unknownPosSettingValues(settings) {
|
|
300
|
+
const raus = [];
|
|
301
|
+
const pruefe = (teil, block, mengen) => {
|
|
302
|
+
for (const k of Object.keys(mengen)) {
|
|
303
|
+
const erlaubt = mengen[k];
|
|
304
|
+
if (!erlaubt || !eigen(block, k))
|
|
305
|
+
continue;
|
|
306
|
+
if (!erlaubt.includes(block[k]))
|
|
307
|
+
raus.push(`${teil}.${k}`);
|
|
308
|
+
}
|
|
309
|
+
};
|
|
310
|
+
pruefe('business', settings.business, POS_BUSINESS_VALUES);
|
|
311
|
+
pruefe('device', settings.device, POS_DEVICE_VALUES);
|
|
312
|
+
// Tasten-Aktionen, die dieses Paket nicht kennt (eine kuenftige des Servers).
|
|
313
|
+
const bekannt = new Set(POS_SHORTCUT_ACTIONS);
|
|
314
|
+
const tasten = eigen(settings.device, 'shortcuts') ? settings.device.shortcuts : undefined;
|
|
315
|
+
if (tasten && typeof tasten === 'object') {
|
|
316
|
+
for (const aktion of Object.keys(tasten))
|
|
317
|
+
if (!bekannt.has(aktion))
|
|
318
|
+
raus.push(`device.shortcuts.${aktion}`);
|
|
319
|
+
}
|
|
320
|
+
return raus;
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Was sich zwischen zwei Staenden eines Teils geaendert hat, als Nutzlast fuer
|
|
324
|
+
* `setMyPosSettings` bzw. `setMyRegisterDeviceSettings`: **nur geaenderte
|
|
325
|
+
* Felder** (der Server mischt, ein nicht geaenderter, hier unbekannter Wert
|
|
326
|
+
* geht so nie verloren). `vatRates` geht bei einer Aenderung als ganze Karte
|
|
327
|
+
* (Nachtrag §11.7.2), `shortcuts` ebenfalls ganz, aber nur mit den Aktionen,
|
|
328
|
+
* die dieses Paket kennt: so sieht die Doppelbelegungspruefung des Servers die
|
|
329
|
+
* ganze Belegung, und eine unbekannte Aktion bleibt per Mischen am Server
|
|
330
|
+
* stehen. `tipSteps` geht nur mit den geaenderten Eintraegen.
|
|
331
|
+
*/
|
|
332
|
+
export function posSettingsChanges(before, after) {
|
|
333
|
+
const raus = {};
|
|
334
|
+
const gleich = (a, b) => JSON.stringify(a) === JSON.stringify(b);
|
|
335
|
+
for (const k of Object.keys(after)) {
|
|
336
|
+
if (k === '__proto__')
|
|
337
|
+
continue;
|
|
338
|
+
const neu = after[k];
|
|
339
|
+
const alt = eigen(before, k) ? before[k] : undefined;
|
|
340
|
+
if (gleich(alt, neu))
|
|
341
|
+
continue;
|
|
342
|
+
if (k === 'shortcuts' && neu && typeof neu === 'object' && !Array.isArray(neu)) {
|
|
343
|
+
const bekannt = new Set(POS_SHORTCUT_ACTIONS);
|
|
344
|
+
const ganz = {};
|
|
345
|
+
for (const aktion of Object.keys(neu))
|
|
346
|
+
if (bekannt.has(aktion))
|
|
347
|
+
ganz[aktion] = neu[aktion];
|
|
348
|
+
raus[k] = ganz;
|
|
349
|
+
continue;
|
|
350
|
+
}
|
|
351
|
+
if (k !== 'vatRates' && neu && typeof neu === 'object' && !Array.isArray(neu) && alt && typeof alt === 'object' && !Array.isArray(alt)) {
|
|
352
|
+
const teil = {};
|
|
353
|
+
for (const e of Object.keys(neu)) {
|
|
354
|
+
if (e === '__proto__')
|
|
355
|
+
continue;
|
|
356
|
+
const a = eigen(alt, e) ? alt[e] : undefined;
|
|
357
|
+
if (!gleich(a, neu[e]))
|
|
358
|
+
teil[e] = neu[e];
|
|
359
|
+
}
|
|
360
|
+
if (Object.keys(teil).length)
|
|
361
|
+
raus[k] = teil;
|
|
362
|
+
continue;
|
|
363
|
+
}
|
|
364
|
+
raus[k] = neu;
|
|
365
|
+
}
|
|
366
|
+
return raus;
|
|
367
|
+
}
|