@kreiseck/kasseneck-api 0.31.0 → 1.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +317 -0
- package/README.de.md +11 -7
- package/README.md +509 -126
- package/dist/cjs/client/api.d.ts +7 -6
- package/dist/cjs/client/api.js +2 -2
- package/dist/cjs/client/aufrufe.d.ts +29 -5
- package/dist/cjs/client/aufrufe.js +114 -2
- package/dist/cjs/client/auth.d.ts +2 -0
- package/dist/cjs/client/auth.js +17 -1
- package/dist/cjs/client/cashregisters.d.ts +1 -1
- package/dist/cjs/client/cashregisters.js +2 -2
- package/dist/cjs/client/errors.d.ts +94 -19
- package/dist/cjs/client/errors.js +132 -28
- package/dist/cjs/client/fehlercodes.d.ts +9 -0
- package/dist/cjs/client/fehlercodes.js +36 -0
- package/dist/cjs/client/index.d.ts +5 -5
- package/dist/cjs/client/index.js +11 -3
- package/dist/cjs/client/receipts.d.ts +131 -124
- package/dist/cjs/client/receipts.js +196 -137
- package/dist/cjs/client/reports.d.ts +26 -4
- package/dist/cjs/client/reports.js +37 -4
- package/dist/cjs/client/status.d.ts +3 -3
- package/dist/cjs/client/status.js +7 -7
- package/dist/cjs/client/transport.d.ts +56 -4
- package/dist/cjs/client/transport.js +234 -25
- package/dist/cjs/enums/vat-rate.d.ts +2 -2
- package/dist/cjs/enums/vat-rate.js +1 -1
- package/dist/cjs/index.d.ts +4 -3
- package/dist/cjs/index.js +42 -13
- package/dist/{esm/rechnung → cjs/invoice}/api.d.ts +18 -17
- package/dist/cjs/{rechnung → invoice}/api.js +6 -6
- package/dist/{esm/rechnung → cjs/invoice}/auth.d.ts +2 -2
- package/dist/cjs/{rechnung → invoice}/auth.js +5 -5
- package/dist/{esm/rechnung/rechnen.d.ts → cjs/invoice/calc.d.ts} +27 -27
- package/dist/cjs/{rechnung/rechnen.js → invoice/calc.js} +54 -54
- package/dist/{esm/rechnung → cjs/invoice}/endpunkte.d.ts +23 -21
- package/dist/cjs/{rechnung → invoice}/endpunkte.js +52 -42
- package/dist/cjs/invoice/fehler.d.ts +31 -0
- package/dist/cjs/invoice/fehler.js +39 -0
- package/dist/cjs/invoice/index.d.ts +21 -0
- package/dist/cjs/invoice/index.js +86 -0
- package/dist/cjs/{rechnung → invoice}/summen.d.ts +12 -12
- package/dist/cjs/{rechnung → invoice}/summen.js +14 -14
- package/dist/cjs/invoice/texte.d.ts +224 -0
- package/dist/cjs/invoice/texte.js +425 -0
- package/dist/{esm/rechnung → cjs/invoice}/typen.d.ts +32 -11
- package/dist/cjs/{rechnung → invoice}/vertrag.d.ts +97 -71
- package/dist/cjs/{rechnung → invoice}/vertrag.js +144 -82
- package/dist/cjs/models/cancellation.d.ts +43 -24
- package/dist/cjs/models/cancellation.js +94 -46
- package/dist/cjs/models/hobex-receipt.d.ts +3 -3
- package/dist/cjs/models/hobex-receipt.js +35 -35
- package/dist/cjs/models/index.d.ts +6 -5
- package/dist/cjs/models/index.js +22 -2
- package/dist/cjs/models/payment-errors.d.ts +32 -15
- package/dist/cjs/models/payment-errors.js +80 -32
- package/dist/cjs/models/receipt-company.d.ts +6 -5
- package/dist/cjs/models/receipt-company.js +4 -4
- package/dist/cjs/models/receipt-email.d.ts +32 -18
- package/dist/cjs/models/receipt-email.js +69 -24
- package/dist/cjs/models/receipt-errors.d.ts +39 -0
- package/dist/cjs/models/receipt-errors.js +94 -0
- package/dist/cjs/models/receipt-item.d.ts +9 -1
- package/dist/cjs/models/receipt-item.js +3 -0
- package/dist/cjs/models/receipt-summary.d.ts +10 -4
- package/dist/cjs/models/receipt-summary.js +10 -4
- package/dist/cjs/models/receipt.d.ts +31 -2
- package/dist/cjs/models/receipt.js +12 -1
- package/dist/cjs/models/voucher.d.ts +7 -6
- package/dist/cjs/models/voucher.js +2 -7
- package/dist/cjs/partner/ablauf.d.ts +10 -10
- package/dist/cjs/partner/ablauf.js +29 -29
- package/dist/cjs/partner/api.d.ts +26 -23
- package/dist/cjs/partner/api.js +11 -13
- package/dist/cjs/partner/auth.d.ts +1 -1
- package/dist/cjs/partner/auth.js +2 -2
- package/dist/cjs/partner/betrieb.d.ts +7 -7
- package/dist/cjs/partner/betrieb.js +10 -10
- package/dist/cjs/partner/endpunkte.d.ts +27 -14
- package/dist/cjs/partner/endpunkte.js +80 -39
- package/dist/cjs/partner/fehler.d.ts +60 -30
- package/dist/cjs/partner/fehler.js +99 -43
- package/dist/cjs/partner/index.d.ts +13 -12
- package/dist/cjs/partner/index.js +35 -22
- package/dist/cjs/partner/secret.d.ts +3 -3
- package/dist/cjs/partner/secret.js +6 -6
- package/dist/cjs/partner/typen.d.ts +129 -71
- package/dist/cjs/partner/typen.js +76 -3
- package/dist/cjs/partner/webhook-signatur.d.ts +2 -2
- package/dist/cjs/partner/webhook-signatur.js +12 -12
- package/dist/cjs/partner/webhooks.d.ts +60 -32
- package/dist/cjs/partner/webhooks.js +40 -34
- package/dist/cjs/payments/hobex.d.ts +11 -3
- package/dist/cjs/payments/hobex.js +17 -5
- package/dist/cjs/payments/stripe.d.ts +5 -2
- package/dist/cjs/payments/stripe.js +10 -5
- package/dist/cjs/pos/artikel.d.ts +90 -0
- package/dist/cjs/pos/artikel.js +89 -0
- package/dist/cjs/pos/client.d.ts +27 -0
- package/dist/cjs/pos/client.js +144 -0
- package/dist/cjs/pos/drucker.d.ts +86 -0
- package/dist/cjs/pos/drucker.js +78 -0
- package/dist/cjs/pos/errors.d.ts +36 -0
- package/dist/cjs/pos/errors.js +95 -0
- package/dist/cjs/pos/index.d.ts +15 -0
- package/dist/cjs/pos/index.js +102 -0
- package/dist/cjs/pos/settings.d.ts +313 -0
- package/dist/cjs/pos/settings.js +376 -0
- package/dist/cjs/pos/texte.d.ts +883 -0
- package/dist/cjs/pos/texte.js +489 -0
- package/dist/cjs/{kasse → pos}/trinkgeld.d.ts +1 -1
- package/dist/cjs/{kasse → pos}/trinkgeld.js +2 -2
- package/dist/cjs/printing/escpos.d.ts +29 -29
- package/dist/cjs/printing/escpos.js +61 -61
- package/dist/cjs/printing/index.d.ts +2 -2
- package/dist/cjs/printing/index.js +17 -17
- package/dist/cjs/printing/qr-groesse.d.ts +38 -38
- package/dist/cjs/printing/qr-groesse.js +47 -47
- package/dist/cjs/printing/webusb.d.ts +2 -2
- package/dist/cjs/printing/webusb.js +4 -4
- package/dist/cjs/react/index.d.ts +21 -21
- package/dist/cjs/react/index.js +40 -30
- package/dist/cjs/receipt/bild.d.ts +4 -4
- package/dist/cjs/receipt/bild.js +11 -11
- package/dist/cjs/receipt/blatt.d.ts +46 -46
- package/dist/cjs/receipt/blatt.js +59 -59
- package/dist/cjs/receipt/discount.d.ts +1 -1
- package/dist/cjs/receipt/discount.js +8 -8
- package/dist/cjs/receipt/due.d.ts +86 -0
- package/dist/cjs/receipt/due.js +261 -0
- package/dist/cjs/receipt/epos.d.ts +22 -22
- package/dist/cjs/receipt/epos.js +45 -45
- package/dist/cjs/receipt/grid.d.ts +10 -10
- package/dist/cjs/receipt/grid.js +20 -20
- package/dist/cjs/receipt/index.d.ts +9 -8
- package/dist/cjs/receipt/index.js +26 -23
- package/dist/cjs/receipt/layout-escpos.d.ts +24 -24
- package/dist/cjs/receipt/layout-escpos.js +49 -49
- package/dist/cjs/receipt/layout.d.ts +28 -23
- package/dist/cjs/receipt/layout.js +45 -21
- package/dist/cjs/receipt/marke-daten.d.ts +8 -8
- package/dist/cjs/receipt/marke-daten.js +8 -8
- package/dist/cjs/receipt/marke.d.ts +7 -7
- package/dist/cjs/receipt/marke.js +10 -10
- package/dist/cjs/register/errors.d.ts +61 -0
- package/dist/cjs/register/errors.js +112 -0
- package/dist/cjs/register/index.d.ts +14 -1
- package/dist/cjs/register/index.js +20 -1
- package/dist/cjs/register/pairing.d.ts +55 -36
- package/dist/cjs/register/pairing.js +33 -29
- package/dist/cjs/register/session.d.ts +5 -5
- package/dist/cjs/register/session.js +7 -7
- package/dist/cjs/stored/draht.d.ts +45 -0
- package/dist/cjs/stored/draht.js +220 -0
- package/dist/cjs/stored/einstellungen.d.ts +23 -0
- package/dist/cjs/stored/einstellungen.js +200 -0
- package/dist/cjs/stored/index.d.ts +109 -0
- package/dist/cjs/stored/index.js +225 -0
- package/dist/cjs/stored/vokabular.d.ts +18 -0
- package/dist/cjs/stored/vokabular.js +389 -0
- package/dist/cjs/version.d.ts +7 -0
- package/dist/cjs/version.js +10 -0
- package/dist/cjs/vienna-time.d.ts +1 -1
- package/dist/cjs/vienna-time.js +2 -2
- package/dist/esm/client/api.d.ts +7 -6
- package/dist/esm/client/api.js +4 -4
- package/dist/esm/client/aufrufe.d.ts +29 -5
- package/dist/esm/client/aufrufe.js +111 -1
- package/dist/esm/client/auth.d.ts +2 -0
- package/dist/esm/client/auth.js +16 -1
- package/dist/esm/client/cashregisters.d.ts +1 -1
- package/dist/esm/client/cashregisters.js +2 -2
- package/dist/esm/client/errors.d.ts +94 -19
- package/dist/esm/client/errors.js +129 -27
- package/dist/esm/client/fehlercodes.d.ts +9 -0
- package/dist/esm/client/fehlercodes.js +32 -0
- package/dist/esm/client/index.d.ts +5 -5
- package/dist/esm/client/index.js +5 -5
- package/dist/esm/client/receipts.d.ts +131 -124
- package/dist/esm/client/receipts.js +195 -140
- package/dist/esm/client/reports.d.ts +26 -4
- package/dist/esm/client/reports.js +36 -4
- package/dist/esm/client/status.d.ts +3 -3
- package/dist/esm/client/status.js +7 -7
- package/dist/esm/client/transport.d.ts +56 -4
- package/dist/esm/client/transport.js +233 -24
- package/dist/esm/enums/vat-rate.d.ts +2 -2
- package/dist/esm/enums/vat-rate.js +1 -1
- package/dist/esm/index.d.ts +4 -3
- package/dist/esm/index.js +4 -3
- package/dist/{cjs/rechnung → esm/invoice}/api.d.ts +18 -17
- package/dist/esm/{rechnung → invoice}/api.js +6 -6
- package/dist/{cjs/rechnung → esm/invoice}/auth.d.ts +2 -2
- package/dist/esm/{rechnung → invoice}/auth.js +4 -4
- package/dist/{cjs/rechnung/rechnen.d.ts → esm/invoice/calc.d.ts} +27 -27
- package/dist/esm/{rechnung/rechnen.js → invoice/calc.js} +45 -45
- package/dist/{cjs/rechnung → esm/invoice}/endpunkte.d.ts +23 -21
- package/dist/esm/{rechnung → invoice}/endpunkte.js +52 -42
- package/dist/esm/invoice/fehler.d.ts +31 -0
- package/dist/esm/invoice/fehler.js +33 -0
- package/dist/esm/invoice/index.d.ts +21 -0
- package/dist/esm/invoice/index.js +20 -0
- package/dist/esm/{rechnung → invoice}/summen.d.ts +12 -12
- package/dist/esm/{rechnung → invoice}/summen.js +12 -12
- package/dist/esm/invoice/texte.d.ts +224 -0
- package/dist/esm/invoice/texte.js +421 -0
- package/dist/{cjs/rechnung → esm/invoice}/typen.d.ts +32 -11
- package/dist/esm/{rechnung → invoice}/vertrag.d.ts +97 -71
- package/dist/esm/{rechnung → invoice}/vertrag.js +143 -81
- package/dist/esm/models/cancellation.d.ts +43 -24
- package/dist/esm/models/cancellation.js +90 -45
- package/dist/esm/models/hobex-receipt.d.ts +3 -3
- package/dist/esm/models/hobex-receipt.js +35 -35
- package/dist/esm/models/index.d.ts +6 -5
- package/dist/esm/models/index.js +6 -5
- package/dist/esm/models/payment-errors.d.ts +32 -15
- package/dist/esm/models/payment-errors.js +77 -32
- package/dist/esm/models/receipt-company.d.ts +6 -5
- package/dist/esm/models/receipt-company.js +4 -4
- package/dist/esm/models/receipt-email.d.ts +32 -18
- package/dist/esm/models/receipt-email.js +65 -23
- package/dist/esm/models/receipt-errors.d.ts +39 -0
- package/dist/esm/models/receipt-errors.js +87 -0
- package/dist/esm/models/receipt-item.d.ts +9 -1
- package/dist/esm/models/receipt-item.js +3 -0
- package/dist/esm/models/receipt-summary.d.ts +10 -4
- package/dist/esm/models/receipt-summary.js +9 -3
- package/dist/esm/models/receipt.d.ts +31 -2
- package/dist/esm/models/receipt.js +12 -2
- package/dist/esm/models/voucher.d.ts +7 -6
- package/dist/esm/models/voucher.js +2 -7
- package/dist/esm/partner/ablauf.d.ts +10 -10
- package/dist/esm/partner/ablauf.js +27 -27
- package/dist/esm/partner/api.d.ts +26 -23
- package/dist/esm/partner/api.js +13 -15
- package/dist/esm/partner/auth.d.ts +1 -1
- package/dist/esm/partner/auth.js +2 -2
- package/dist/esm/partner/betrieb.d.ts +7 -7
- package/dist/esm/partner/betrieb.js +8 -8
- package/dist/esm/partner/endpunkte.d.ts +27 -14
- package/dist/esm/partner/endpunkte.js +79 -39
- package/dist/esm/partner/fehler.d.ts +60 -30
- package/dist/esm/partner/fehler.js +91 -35
- package/dist/esm/partner/index.d.ts +13 -12
- package/dist/esm/partner/index.js +12 -11
- package/dist/esm/partner/secret.d.ts +3 -3
- package/dist/esm/partner/secret.js +5 -5
- package/dist/esm/partner/typen.d.ts +129 -71
- package/dist/esm/partner/typen.js +75 -2
- package/dist/esm/partner/webhook-signatur.d.ts +2 -2
- package/dist/esm/partner/webhook-signatur.js +12 -12
- package/dist/esm/partner/webhooks.d.ts +60 -32
- package/dist/esm/partner/webhooks.js +38 -32
- package/dist/esm/payments/hobex.d.ts +11 -3
- package/dist/esm/payments/hobex.js +18 -6
- package/dist/esm/payments/stripe.d.ts +5 -2
- package/dist/esm/payments/stripe.js +11 -6
- package/dist/esm/pos/artikel.d.ts +90 -0
- package/dist/esm/pos/artikel.js +79 -0
- package/dist/esm/pos/client.d.ts +27 -0
- package/dist/esm/pos/client.js +137 -0
- package/dist/esm/pos/drucker.d.ts +86 -0
- package/dist/esm/pos/drucker.js +71 -0
- package/dist/esm/pos/errors.d.ts +36 -0
- package/dist/esm/pos/errors.js +88 -0
- package/dist/esm/pos/index.d.ts +15 -0
- package/dist/esm/pos/index.js +20 -0
- package/dist/esm/pos/settings.d.ts +313 -0
- package/dist/esm/pos/settings.js +367 -0
- package/dist/esm/pos/texte.d.ts +883 -0
- package/dist/esm/pos/texte.js +481 -0
- package/dist/esm/{kasse → pos}/trinkgeld.d.ts +1 -1
- package/dist/esm/{kasse → pos}/trinkgeld.js +2 -2
- package/dist/esm/printing/escpos.d.ts +29 -29
- package/dist/esm/printing/escpos.js +56 -56
- package/dist/esm/printing/index.d.ts +2 -2
- package/dist/esm/printing/index.js +2 -2
- package/dist/esm/printing/qr-groesse.d.ts +38 -38
- package/dist/esm/printing/qr-groesse.js +42 -42
- package/dist/esm/printing/webusb.d.ts +2 -2
- package/dist/esm/printing/webusb.js +4 -4
- package/dist/esm/react/index.d.ts +21 -21
- package/dist/esm/react/index.js +39 -29
- package/dist/esm/receipt/bild.d.ts +4 -4
- package/dist/esm/receipt/bild.js +11 -11
- package/dist/esm/receipt/blatt.d.ts +46 -46
- package/dist/esm/receipt/blatt.js +55 -55
- package/dist/esm/receipt/discount.d.ts +1 -1
- package/dist/esm/receipt/discount.js +7 -7
- package/dist/esm/receipt/due.d.ts +86 -0
- package/dist/esm/receipt/due.js +257 -0
- package/dist/esm/receipt/epos.d.ts +22 -22
- package/dist/esm/receipt/epos.js +47 -47
- package/dist/esm/receipt/grid.d.ts +10 -10
- package/dist/esm/receipt/grid.js +18 -18
- package/dist/esm/receipt/index.d.ts +9 -8
- package/dist/esm/receipt/index.js +9 -8
- package/dist/esm/receipt/layout-escpos.d.ts +24 -24
- package/dist/esm/receipt/layout-escpos.js +51 -51
- package/dist/esm/receipt/layout.d.ts +28 -23
- package/dist/esm/receipt/layout.js +44 -20
- package/dist/esm/receipt/marke-daten.d.ts +8 -8
- package/dist/esm/receipt/marke-daten.js +7 -7
- package/dist/esm/receipt/marke.d.ts +7 -7
- package/dist/esm/receipt/marke.js +10 -10
- package/dist/esm/register/errors.d.ts +61 -0
- package/dist/esm/register/errors.js +104 -0
- package/dist/esm/register/index.d.ts +14 -1
- package/dist/esm/register/index.js +13 -0
- package/dist/esm/register/pairing.d.ts +55 -36
- package/dist/esm/register/pairing.js +33 -29
- package/dist/esm/register/session.d.ts +5 -5
- package/dist/esm/register/session.js +7 -7
- package/dist/esm/stored/draht.d.ts +45 -0
- package/dist/esm/stored/draht.js +208 -0
- package/dist/esm/stored/einstellungen.d.ts +23 -0
- package/dist/esm/stored/einstellungen.js +196 -0
- package/dist/esm/stored/index.d.ts +109 -0
- package/dist/esm/stored/index.js +217 -0
- package/dist/esm/stored/vokabular.d.ts +18 -0
- package/dist/esm/stored/vokabular.js +386 -0
- package/dist/esm/version.d.ts +7 -0
- package/dist/esm/version.js +7 -0
- package/dist/esm/vienna-time.d.ts +1 -1
- package/dist/esm/vienna-time.js +2 -2
- package/fixtures/{erwartet/storno-rabatt.lines.json → expected/cancellation-discount.lines.json} +2 -2
- package/fixtures/expected/cancellation-discount.sheet32.json +248 -0
- package/fixtures/{erwartet/storno-rabatt.blatt48.json → expected/cancellation-discount.sheet48.json} +119 -119
- package/fixtures/{erwartet/storno-voll.lines.json → expected/cancellation-full.lines.json} +2 -2
- package/fixtures/expected/cancellation-full.sheet32.json +218 -0
- package/fixtures/{erwartet/storno-voll.blatt48.json → expected/cancellation-full.sheet48.json} +107 -107
- package/fixtures/{erwartet/storno-teil.lines.json → expected/cancellation-partial.lines.json} +2 -2
- package/fixtures/expected/cancellation-partial.sheet32.json +206 -0
- package/fixtures/{erwartet/storno-teil.blatt48.json → expected/cancellation-partial.sheet48.json} +101 -101
- package/fixtures/{erwartet/storno-split-voll.lines.json → expected/cancellation-split-full.lines.json} +2 -2
- package/fixtures/expected/cancellation-split-full.sheet32.json +320 -0
- package/fixtures/{erwartet/storno-split-voll.blatt48.json → expected/cancellation-split-full.sheet48.json} +158 -158
- package/fixtures/{erwartet/storno-split-teil.lines.json → expected/cancellation-split-partial.lines.json} +2 -2
- package/fixtures/expected/cancellation-split-partial.sheet32.json +230 -0
- package/fixtures/{erwartet/storno-split-teil.blatt48.json → expected/cancellation-split-partial.sheet48.json} +113 -113
- package/fixtures/{erwartet/karte-eigener.lines.json → expected/card-custom.lines.json} +1 -1
- package/fixtures/expected/card-custom.sheet32.json +158 -0
- package/fixtures/{erwartet/karte-eigener.blatt48.json → expected/card-custom.sheet48.json} +80 -80
- package/fixtures/{erwartet/karte-gptom-ios.lines.json → expected/card-gptom-ios.lines.json} +1 -1
- package/fixtures/expected/card-gptom-ios.sheet32.json +230 -0
- package/fixtures/{erwartet/karte-gptom-ios.blatt48.json → expected/card-gptom-ios.sheet48.json} +116 -116
- package/fixtures/{erwartet/karte-gptom.lines.json → expected/card-gptom.lines.json} +1 -1
- package/fixtures/expected/card-gptom.sheet32.json +230 -0
- package/fixtures/{erwartet/karte-gptom.blatt48.json → expected/card-gptom.sheet48.json} +116 -116
- package/fixtures/{erwartet/karte-hobex-cloud.lines.json → expected/card-hobex-cloud.lines.json} +1 -1
- package/fixtures/expected/card-hobex-cloud.sheet32.json +200 -0
- package/fixtures/{erwartet/karte-hobex-cloud.blatt48.json → expected/card-hobex-cloud.sheet48.json} +101 -101
- package/fixtures/{erwartet/karte-hobex-hps.lines.json → expected/card-hobex-hps.lines.json} +1 -1
- package/fixtures/expected/card-hobex-hps.sheet32.json +224 -0
- package/fixtures/{erwartet/karte-hobex-hps.blatt48.json → expected/card-hobex-hps.sheet48.json} +113 -113
- package/fixtures/{erwartet/karte-mypos.lines.json → expected/card-mypos.lines.json} +1 -1
- package/fixtures/expected/card-mypos.sheet32.json +254 -0
- package/fixtures/{erwartet/karte-mypos.blatt48.json → expected/card-mypos.sheet48.json} +122 -122
- package/fixtures/{erwartet/karte-stripe-eps.lines.json → expected/card-stripe-eps.lines.json} +1 -1
- package/fixtures/expected/card-stripe-eps.sheet32.json +194 -0
- package/fixtures/{erwartet/karte-stripe-eps.blatt48.json → expected/card-stripe-eps.sheet48.json} +98 -98
- package/fixtures/{erwartet/karte-stripe.lines.json → expected/card-stripe.lines.json} +1 -1
- package/fixtures/expected/card-stripe.sheet32.json +212 -0
- package/fixtures/{erwartet/karte-stripe.blatt48.json → expected/card-stripe.sheet48.json} +107 -107
- package/fixtures/{erwartet/karte-sumup.lines.json → expected/card-sumup.lines.json} +1 -1
- package/fixtures/expected/card-sumup.sheet32.json +218 -0
- package/fixtures/{erwartet/karte-sumup.blatt48.json → expected/card-sumup.sheet48.json} +104 -104
- package/fixtures/{erwartet/rabattzeilen.lines.json → expected/discount-lines.lines.json} +1 -1
- package/fixtures/expected/discount-lines.sheet32.json +200 -0
- package/fixtures/{erwartet/rabattzeilen.blatt48.json → expected/discount-lines.sheet48.json} +98 -98
- package/fixtures/{erwartet/rabatt-chef-trinkgeld.lines.json → expected/discount-owner-tip.lines.json} +1 -1
- package/fixtures/expected/discount-owner-tip.sheet32.json +212 -0
- package/fixtures/{erwartet/rabatt-chef-trinkgeld.blatt48.json → expected/discount-owner-tip.sheet48.json} +104 -104
- package/fixtures/{erwartet/rabatt-einfach.lines.json → expected/discount-simple.lines.json} +1 -1
- package/fixtures/expected/discount-simple.sheet32.json +182 -0
- package/fixtures/{erwartet/rabatt-einfach.blatt48.json → expected/discount-simple.sheet48.json} +89 -89
- package/fixtures/{erwartet/rabatt-trinkgeld.lines.json → expected/discount-tip.lines.json} +1 -1
- package/fixtures/expected/discount-tip.sheet32.json +212 -0
- package/fixtures/{erwartet/rabatt-trinkgeld.blatt48.json → expected/discount-tip.sheet48.json} +104 -104
- package/fixtures/{erwartet/rabatt-wertgutschein.lines.json → expected/discount-value-voucher.lines.json} +1 -1
- package/fixtures/expected/discount-value-voucher.sheet32.json +218 -0
- package/fixtures/{erwartet/rabatt-wertgutschein.blatt48.json → expected/discount-value-voucher.sheet48.json} +107 -107
- package/fixtures/{erwartet/langer-artikelname.lines.json → expected/long-item-name.lines.json} +1 -1
- package/fixtures/expected/long-item-name.sheet32.json +176 -0
- package/fixtures/{erwartet/langer-artikelname.blatt48.json → expected/long-item-name.sheet48.json} +86 -86
- package/fixtures/{erwartet/verkauf-karte.lines.json → expected/sale-card.lines.json} +1 -1
- package/fixtures/expected/sale-card.sheet32.json +176 -0
- package/fixtures/{erwartet/verkauf-karte.blatt48.json → expected/sale-card.sheet48.json} +86 -86
- package/fixtures/{erwartet/verkauf-bar.lines.json → expected/sale-cash.lines.json} +1 -1
- package/fixtures/expected/sale-cash.sheet32.json +176 -0
- package/fixtures/{erwartet/verkauf-bar.blatt48.json → expected/sale-cash.sheet48.json} +86 -86
- package/fixtures/{erwartet/verkauf-kleinunternehmer.lines.json → expected/sale-small-business.lines.json} +1 -1
- package/fixtures/expected/sale-small-business.sheet32.json +182 -0
- package/fixtures/{erwartet/verkauf-kleinunternehmer.blatt48.json → expected/sale-small-business.sheet48.json} +89 -89
- package/fixtures/{erwartet/signaturausfall-verkauf.lines.json → expected/signature-outage-sale.lines.json} +1 -1
- package/fixtures/expected/signature-outage-sale.sheet32.json +194 -0
- package/fixtures/{erwartet/signaturausfall-verkauf.blatt48.json → expected/signature-outage-sale.sheet48.json} +92 -92
- package/fixtures/{erwartet/split-karte-karte-bar.lines.json → expected/split-card-card-cash.lines.json} +1 -1
- package/fixtures/expected/split-card-card-cash.sheet32.json +356 -0
- package/fixtures/{erwartet/split-karte-karte-bar.blatt48.json → expected/split-card-card-cash.sheet48.json} +170 -170
- package/fixtures/{erwartet/split-bar-rueckgeld.lines.json → expected/split-cash-change.lines.json} +1 -1
- package/fixtures/expected/split-cash-change.sheet32.json +194 -0
- package/fixtures/{erwartet/split-bar-rueckgeld.blatt48.json → expected/split-cash-change.sheet48.json} +92 -92
- package/fixtures/{erwartet/split-langer-betrag.lines.json → expected/split-long-amount.lines.json} +1 -1
- package/fixtures/expected/split-long-amount.sheet32.json +266 -0
- package/fixtures/{erwartet/split-langer-betrag.blatt48.json → expected/split-long-amount.sheet48.json} +131 -131
- package/fixtures/{erwartet/split-eine-karte-trinkgeld.lines.json → expected/split-one-card-tip.lines.json} +1 -1
- package/fixtures/expected/split-one-card-tip.sheet32.json +242 -0
- package/fixtures/{erwartet/split-eine-karte-trinkgeld.blatt48.json → expected/split-one-card-tip.sheet48.json} +113 -113
- package/fixtures/{erwartet/split-tischrunde-trinkgeld.lines.json → expected/split-table-round-tip.lines.json} +1 -1
- package/fixtures/expected/split-table-round-tip.sheet32.json +470 -0
- package/fixtures/{erwartet/split-tischrunde-trinkgeld.blatt48.json → expected/split-table-round-tip.sheet48.json} +218 -218
- package/fixtures/{erwartet/split-trinkgeld-karte.lines.json → expected/split-tip-card.lines.json} +1 -1
- package/fixtures/expected/split-tip-card.sheet32.json +272 -0
- package/fixtures/{erwartet/split-trinkgeld-karte.blatt48.json → expected/split-tip-card.sheet48.json} +128 -128
- package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.lines.json → expected/split-two-cards-same-provider.lines.json} +1 -1
- package/fixtures/expected/split-two-cards-same-provider.sheet32.json +326 -0
- package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.blatt48.json → expected/split-two-cards-same-provider.sheet48.json} +149 -149
- package/fixtures/{erwartet/testkasse-verkauf.lines.json → expected/test-cashregister-sale.lines.json} +3 -3
- package/fixtures/expected/test-cashregister-sale.sheet32.json +224 -0
- package/fixtures/{erwartet/testkasse-verkauf.blatt48.json → expected/test-cashregister-sale.sheet48.json} +110 -110
- package/fixtures/{erwartet/testsignatur-verkauf.lines.json → expected/test-signature-sale.lines.json} +3 -3
- package/fixtures/expected/test-signature-sale.sheet32.json +236 -0
- package/fixtures/{erwartet/testsignatur-verkauf.blatt48.json → expected/test-signature-sale.sheet48.json} +110 -110
- package/fixtures/{erwartet → expected}/training.lines.json +2 -2
- package/fixtures/expected/training.sheet32.json +236 -0
- package/fixtures/{erwartet/training.blatt48.json → expected/training.sheet48.json} +110 -110
- package/fixtures/{erwartet/null-jahr.lines.json → expected/zero-annual.lines.json} +2 -2
- package/fixtures/expected/zero-annual.sheet32.json +212 -0
- package/fixtures/{erwartet/null-jahr.blatt48.json → expected/zero-annual.sheet48.json} +95 -95
- package/fixtures/{erwartet/null-schluss.lines.json → expected/zero-final.lines.json} +2 -2
- package/fixtures/expected/zero-final.sheet32.json +206 -0
- package/fixtures/{erwartet/null-schluss.blatt48.json → expected/zero-final.sheet48.json} +95 -95
- package/fixtures/{erwartet/null-pruef.lines.json → expected/zero-manual.lines.json} +2 -2
- package/fixtures/expected/zero-manual.sheet32.json +206 -0
- package/fixtures/{erwartet/null-pruef.blatt48.json → expected/zero-manual.sheet48.json} +95 -95
- package/fixtures/{erwartet/null-monat.lines.json → expected/zero-monthly.lines.json} +2 -2
- package/fixtures/expected/zero-monthly.sheet32.json +206 -0
- package/fixtures/{erwartet/null-monat.blatt48.json → expected/zero-monthly.sheet48.json} +95 -95
- package/fixtures/{erwartet/null-ausfall.lines.json → expected/zero-outage-end.lines.json} +2 -2
- package/fixtures/expected/zero-outage-end.sheet32.json +206 -0
- package/fixtures/{erwartet/null-ausfall.blatt48.json → expected/zero-outage-end.sheet48.json} +95 -95
- package/fixtures/{erwartet/null-start.lines.json → expected/zero-start.lines.json} +2 -2
- package/fixtures/expected/zero-start.sheet32.json +206 -0
- package/fixtures/{erwartet/null-start.blatt48.json → expected/zero-start.sheet48.json} +95 -95
- package/fixtures/hobex-hps-codes.json +12 -12
- package/fixtures/invoice-api-examples/brands-ok.json +8 -0
- package/fixtures/{rechnung-api-beispiele/credit-fehler-grund.json → invoice-api-examples/credit-error-reason.json} +6 -6
- package/fixtures/{rechnung-api-beispiele → invoice-api-examples}/credit-ok.json +6 -6
- package/fixtures/{rechnung-api-beispiele/customer-fehler-uid.json → invoice-api-examples/customer-error-vat-id.json} +4 -4
- package/fixtures/invoice-api-examples/customer-get-error-both.json +15 -0
- package/fixtures/{rechnung-api-beispiele → invoice-api-examples}/customer-ok.json +4 -4
- package/fixtures/{rechnung-api-beispiele/customer-search-fehler-leer.json → invoice-api-examples/customer-search-error-empty.json} +4 -4
- package/fixtures/{rechnung-api-beispiele/issue-rabatt.json → invoice-api-examples/issue-discount.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-englisch.json → invoice-api-examples/issue-english.json} +7 -7
- package/fixtures/{rechnung-api-beispiele/issue-fehler-cent.json → invoice-api-examples/issue-error-cent.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-fehler-sprache.json → invoice-api-examples/issue-error-language.json} +5 -5
- package/fixtures/{rechnung-api-beispiele/issue-fehler-negativ.json → invoice-api-examples/issue-error-negative.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-fehler-zahlungsart.json → invoice-api-examples/issue-error-payment-method.json} +8 -6
- package/fixtures/{rechnung-api-beispiele/issue-fehler-preis-beide.json → invoice-api-examples/issue-error-price-both.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-fehler-preis-fehlt.json → invoice-api-examples/issue-error-price-missing.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-fehler-menge.json → invoice-api-examples/issue-error-quantity.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-fehler-satz.json → invoice-api-examples/issue-error-rate.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-fehler-einheit.json → invoice-api-examples/issue-error-unit.json} +5 -5
- package/fixtures/{rechnung-api-beispiele/issue-fehler-unbekannt.json → invoice-api-examples/issue-error-unknown.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-brutto-20.json → invoice-api-examples/issue-gross-20.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-mikropreis.json → invoice-api-examples/issue-micro-price.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-gemischt.json → invoice-api-examples/issue-mixed.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-netto-20.json → invoice-api-examples/issue-net-20.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-bezahlt.json → invoice-api-examples/issue-paid.json} +7 -7
- package/fixtures/{rechnung-api-beispiele/issue-kleinunternehmer.json → invoice-api-examples/issue-small-business.json} +6 -6
- package/fixtures/invoice-api-examples/payment-error-on-site.json +17 -0
- package/fixtures/invoice-api-examples/payment-error-without-key.json +16 -0
- package/fixtures/invoice-api-examples/payment-recorded-later.json +14 -0
- package/fixtures/{rechnung-api-beispiele/setup-status-fehler-feld.json → invoice-api-examples/setup-status-error-field.json} +4 -4
- package/fixtures/invoice-api-examples/setup-status-ok.json +8 -0
- package/fixtures/{rechnung-api.schema.json → invoice-api.schema.json} +24 -24
- package/fixtures/{rechnung-rechnen-zufall.json → invoice-calc-random.json} +828 -828
- package/fixtures/{rechnung-rechnen.json → invoice-calc.json} +47 -47
- package/fixtures/invoice-texts.json +464 -0
- package/fixtures/{rechnung-summen.json → invoice-totals.json} +25 -25
- package/fixtures/{position-aus-euro.json → item-from-euro.json} +26 -26
- package/fixtures/manifest.json +252 -252
- package/fixtures/pos-message-cases.json +32 -0
- package/fixtures/pos-settings-defaults.json +149 -0
- package/fixtures/{kasse-texte.json → pos-texts.json} +416 -416
- package/fixtures/receipt-due-generated.json +1218 -0
- package/fixtures/{belege/storno-rabatt.json → receipts/cancellation-discount.json} +3 -3
- package/fixtures/{belege/storno-voll.json → receipts/cancellation-full.json} +3 -3
- package/fixtures/{belege/storno-teil.json → receipts/cancellation-partial.json} +3 -3
- package/fixtures/{belege/storno-split-voll.json → receipts/cancellation-split-full.json} +3 -3
- package/fixtures/{belege/storno-split-teil.json → receipts/cancellation-split-partial.json} +3 -3
- package/fixtures/{belege/karte-eigener.json → receipts/card-custom.json} +2 -2
- package/fixtures/{belege/karte-gptom-ios.json → receipts/card-gptom-ios.json} +2 -2
- package/fixtures/{belege/karte-gptom.json → receipts/card-gptom.json} +2 -2
- package/fixtures/{belege/karte-hobex-cloud.json → receipts/card-hobex-cloud.json} +2 -2
- package/fixtures/{belege/karte-hobex-hps.json → receipts/card-hobex-hps.json} +2 -2
- package/fixtures/{belege/karte-mypos.json → receipts/card-mypos.json} +2 -2
- package/fixtures/{belege/karte-stripe-eps.json → receipts/card-stripe-eps.json} +2 -2
- package/fixtures/{belege/karte-stripe.json → receipts/card-stripe.json} +2 -2
- package/fixtures/{belege/karte-sumup.json → receipts/card-sumup.json} +2 -2
- package/fixtures/{belege/rabattzeilen.json → receipts/discount-lines.json} +2 -2
- package/fixtures/{belege/rabatt-chef-trinkgeld.json → receipts/discount-owner-tip.json} +2 -2
- package/fixtures/{belege/rabatt-einfach.json → receipts/discount-simple.json} +2 -2
- package/fixtures/{belege/rabatt-trinkgeld.json → receipts/discount-tip.json} +2 -2
- package/fixtures/{belege/rabatt-wertgutschein.json → receipts/discount-value-voucher.json} +2 -2
- package/fixtures/{belege/langer-artikelname.json → receipts/long-item-name.json} +2 -2
- package/fixtures/{belege/verkauf-karte.json → receipts/sale-card.json} +2 -2
- package/fixtures/{belege/verkauf-bar.json → receipts/sale-cash.json} +2 -2
- package/fixtures/{belege/verkauf-kleinunternehmer.json → receipts/sale-small-business.json} +1 -1
- package/fixtures/{belege/signaturausfall-verkauf.json → receipts/signature-outage-sale.json} +2 -2
- package/fixtures/{belege/split-karte-karte-bar.json → receipts/split-card-card-cash.json} +2 -2
- package/fixtures/{belege/split-bar-rueckgeld.json → receipts/split-cash-change.json} +2 -2
- package/fixtures/{belege/split-langer-betrag.json → receipts/split-long-amount.json} +2 -2
- package/fixtures/{belege/split-eine-karte-trinkgeld.json → receipts/split-one-card-tip.json} +2 -2
- package/fixtures/{belege/split-tischrunde-trinkgeld.json → receipts/split-table-round-tip.json} +2 -2
- package/fixtures/{belege/split-trinkgeld-karte.json → receipts/split-tip-card.json} +2 -2
- package/fixtures/{belege/split-zwei-karten-gleicher-anbieter.json → receipts/split-two-cards-same-provider.json} +2 -2
- package/fixtures/{belege/testsignatur-verkauf.json → receipts/test-cashregister-sale.json} +3 -3
- package/fixtures/{belege/testkasse-verkauf.json → receipts/test-signature-sale.json} +3 -3
- package/fixtures/{belege → receipts}/training.json +2 -2
- package/fixtures/{belege/null-jahr.json → receipts/zero-annual.json} +5 -5
- package/fixtures/{belege/null-schluss.json → receipts/zero-final.json} +5 -5
- package/fixtures/{belege/null-pruef.json → receipts/zero-manual.json} +5 -5
- package/fixtures/{belege/null-monat.json → receipts/zero-monthly.json} +5 -5
- package/fixtures/{belege/null-ausfall.json → receipts/zero-outage-end.json} +5 -5
- package/fixtures/{belege/null-start.json → receipts/zero-start.json} +5 -5
- package/fixtures/renames-1.0.json +1490 -0
- package/fixtures/{kasse-settings-standard.json → stored/pos-settings-defaults.json} +7 -7
- package/fixtures/surface.json +877 -0
- package/fixtures/v3/README.md +125 -0
- package/fixtures/v3/antworten/belege.json +4738 -0
- package/fixtures/v3/antworten/belegmail.json +154 -0
- package/fixtures/v3/antworten/kasse-belege.json +4304 -0
- package/fixtures/v3/antworten/kasse.json +12716 -0
- package/fixtures/v3/antworten/rechnungen.json +1712 -0
- package/fixtures/v3/antworten/storno.json +737 -0
- package/fixtures/v3/stored/belege.json +502 -0
- package/fixtures/v3/stored/kasse.json +3461 -0
- package/fixtures/v3/stored/rechnungen.json +750 -0
- package/fixtures/v3/v3-vokabular.json +3375 -0
- package/fixtures/v3/zahlbetrag-faelle.json +794 -0
- package/package.json +32 -18
- package/dist/cjs/kasse/artikel.d.ts +0 -83
- package/dist/cjs/kasse/artikel.js +0 -79
- package/dist/cjs/kasse/client.d.ts +0 -10
- package/dist/cjs/kasse/client.js +0 -38
- package/dist/cjs/kasse/drucker.d.ts +0 -59
- package/dist/cjs/kasse/drucker.js +0 -50
- package/dist/cjs/kasse/index.d.ts +0 -13
- package/dist/cjs/kasse/index.js +0 -83
- package/dist/cjs/kasse/settings.d.ts +0 -229
- package/dist/cjs/kasse/settings.js +0 -172
- package/dist/cjs/kasse/texte.d.ts +0 -868
- package/dist/cjs/kasse/texte.js +0 -474
- package/dist/cjs/rechnung/fehler.d.ts +0 -21
- package/dist/cjs/rechnung/fehler.js +0 -44
- package/dist/cjs/rechnung/index.d.ts +0 -21
- package/dist/cjs/rechnung/index.js +0 -82
- package/dist/cjs/rechnung/texte.d.ts +0 -222
- package/dist/cjs/rechnung/texte.js +0 -425
- package/dist/esm/kasse/artikel.d.ts +0 -83
- package/dist/esm/kasse/artikel.js +0 -70
- package/dist/esm/kasse/client.d.ts +0 -10
- package/dist/esm/kasse/client.js +0 -33
- package/dist/esm/kasse/drucker.d.ts +0 -59
- package/dist/esm/kasse/drucker.js +0 -45
- package/dist/esm/kasse/index.d.ts +0 -13
- package/dist/esm/kasse/index.js +0 -18
- package/dist/esm/kasse/settings.d.ts +0 -229
- package/dist/esm/kasse/settings.js +0 -168
- package/dist/esm/kasse/texte.d.ts +0 -868
- package/dist/esm/kasse/texte.js +0 -466
- package/dist/esm/rechnung/fehler.d.ts +0 -21
- package/dist/esm/rechnung/fehler.js +0 -39
- package/dist/esm/rechnung/index.d.ts +0 -21
- package/dist/esm/rechnung/index.js +0 -20
- package/dist/esm/rechnung/texte.d.ts +0 -222
- package/dist/esm/rechnung/texte.js +0 -421
- package/fixtures/erwartet/karte-eigener.blatt32.json +0 -158
- package/fixtures/erwartet/karte-gptom-ios.blatt32.json +0 -230
- package/fixtures/erwartet/karte-gptom.blatt32.json +0 -230
- package/fixtures/erwartet/karte-hobex-cloud.blatt32.json +0 -200
- package/fixtures/erwartet/karte-hobex-hps.blatt32.json +0 -224
- package/fixtures/erwartet/karte-mypos.blatt32.json +0 -254
- package/fixtures/erwartet/karte-stripe-eps.blatt32.json +0 -194
- package/fixtures/erwartet/karte-stripe.blatt32.json +0 -212
- package/fixtures/erwartet/karte-sumup.blatt32.json +0 -218
- package/fixtures/erwartet/langer-artikelname.blatt32.json +0 -176
- package/fixtures/erwartet/null-ausfall.blatt32.json +0 -206
- package/fixtures/erwartet/null-jahr.blatt32.json +0 -212
- package/fixtures/erwartet/null-monat.blatt32.json +0 -206
- package/fixtures/erwartet/null-pruef.blatt32.json +0 -206
- package/fixtures/erwartet/null-schluss.blatt32.json +0 -206
- package/fixtures/erwartet/null-start.blatt32.json +0 -206
- package/fixtures/erwartet/rabatt-chef-trinkgeld.blatt32.json +0 -212
- package/fixtures/erwartet/rabatt-einfach.blatt32.json +0 -182
- package/fixtures/erwartet/rabatt-trinkgeld.blatt32.json +0 -212
- package/fixtures/erwartet/rabatt-wertgutschein.blatt32.json +0 -218
- package/fixtures/erwartet/rabattzeilen.blatt32.json +0 -200
- package/fixtures/erwartet/signaturausfall-verkauf.blatt32.json +0 -194
- package/fixtures/erwartet/split-bar-rueckgeld.blatt32.json +0 -194
- package/fixtures/erwartet/split-eine-karte-trinkgeld.blatt32.json +0 -242
- package/fixtures/erwartet/split-karte-karte-bar.blatt32.json +0 -356
- package/fixtures/erwartet/split-langer-betrag.blatt32.json +0 -266
- package/fixtures/erwartet/split-tischrunde-trinkgeld.blatt32.json +0 -470
- package/fixtures/erwartet/split-trinkgeld-karte.blatt32.json +0 -272
- package/fixtures/erwartet/split-zwei-karten-gleicher-anbieter.blatt32.json +0 -326
- package/fixtures/erwartet/storno-rabatt.blatt32.json +0 -248
- package/fixtures/erwartet/storno-split-teil.blatt32.json +0 -230
- package/fixtures/erwartet/storno-split-voll.blatt32.json +0 -320
- package/fixtures/erwartet/storno-teil.blatt32.json +0 -206
- package/fixtures/erwartet/storno-voll.blatt32.json +0 -218
- package/fixtures/erwartet/testkasse-verkauf.blatt32.json +0 -224
- package/fixtures/erwartet/testsignatur-verkauf.blatt32.json +0 -236
- package/fixtures/erwartet/training.blatt32.json +0 -236
- package/fixtures/erwartet/verkauf-bar.blatt32.json +0 -176
- package/fixtures/erwartet/verkauf-karte.blatt32.json +0 -176
- package/fixtures/erwartet/verkauf-kleinunternehmer.blatt32.json +0 -182
- package/fixtures/kasse-meldungen-faelle.json +0 -32
- package/fixtures/oberflaeche.json +0 -558
- package/fixtures/rechnung-api-beispiele/brands-ok.json +0 -8
- package/fixtures/rechnung-api-beispiele/customer-get-fehler-beide.json +0 -15
- package/fixtures/rechnung-api-beispiele/setup-status-ok.json +0 -8
- package/fixtures/rechnung-api-beispiele/zahlung-fehler-ohne-schluessel.json +0 -14
- package/fixtures/rechnung-api-beispiele/zahlung-fehler-vor-ort.json +0 -15
- package/fixtures/rechnung-api-beispiele/zahlung-nachtrag.json +0 -14
- package/fixtures/rechnung-texte.json +0 -464
- /package/dist/cjs/{rechnung → invoice}/typen.js +0 -0
- /package/dist/esm/{rechnung → invoice}/typen.js +0 -0
- /package/fixtures/{erwartet/storno-rabatt.grid32.txt → expected/cancellation-discount.grid32.txt} +0 -0
- /package/fixtures/{erwartet/storno-rabatt.grid48.txt → expected/cancellation-discount.grid48.txt} +0 -0
- /package/fixtures/{erwartet/storno-voll.grid32.txt → expected/cancellation-full.grid32.txt} +0 -0
- /package/fixtures/{erwartet/storno-voll.grid48.txt → expected/cancellation-full.grid48.txt} +0 -0
- /package/fixtures/{erwartet/storno-teil.grid32.txt → expected/cancellation-partial.grid32.txt} +0 -0
- /package/fixtures/{erwartet/storno-teil.grid48.txt → expected/cancellation-partial.grid48.txt} +0 -0
- /package/fixtures/{erwartet/storno-split-voll.grid32.txt → expected/cancellation-split-full.grid32.txt} +0 -0
- /package/fixtures/{erwartet/storno-split-voll.grid48.txt → expected/cancellation-split-full.grid48.txt} +0 -0
- /package/fixtures/{erwartet/storno-split-teil.grid32.txt → expected/cancellation-split-partial.grid32.txt} +0 -0
- /package/fixtures/{erwartet/storno-split-teil.grid48.txt → expected/cancellation-split-partial.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-eigener.grid32.txt → expected/card-custom.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-eigener.grid48.txt → expected/card-custom.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-gptom-ios.grid32.txt → expected/card-gptom-ios.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-gptom-ios.grid48.txt → expected/card-gptom-ios.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-gptom.grid32.txt → expected/card-gptom.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-gptom.grid48.txt → expected/card-gptom.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-hobex-cloud.grid32.txt → expected/card-hobex-cloud.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-hobex-cloud.grid48.txt → expected/card-hobex-cloud.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-hobex-hps.grid32.txt → expected/card-hobex-hps.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-hobex-hps.grid48.txt → expected/card-hobex-hps.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-mypos.grid32.txt → expected/card-mypos.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-mypos.grid48.txt → expected/card-mypos.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-stripe-eps.grid32.txt → expected/card-stripe-eps.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-stripe-eps.grid48.txt → expected/card-stripe-eps.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-stripe.grid32.txt → expected/card-stripe.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-stripe.grid48.txt → expected/card-stripe.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-sumup.grid32.txt → expected/card-sumup.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-sumup.grid48.txt → expected/card-sumup.grid48.txt} +0 -0
- /package/fixtures/{erwartet/rabattzeilen.grid32.txt → expected/discount-lines.grid32.txt} +0 -0
- /package/fixtures/{erwartet/rabattzeilen.grid48.txt → expected/discount-lines.grid48.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-chef-trinkgeld.grid32.txt → expected/discount-owner-tip.grid32.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-chef-trinkgeld.grid48.txt → expected/discount-owner-tip.grid48.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-einfach.grid32.txt → expected/discount-simple.grid32.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-einfach.grid48.txt → expected/discount-simple.grid48.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-trinkgeld.grid32.txt → expected/discount-tip.grid32.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-trinkgeld.grid48.txt → expected/discount-tip.grid48.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-wertgutschein.grid32.txt → expected/discount-value-voucher.grid32.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-wertgutschein.grid48.txt → expected/discount-value-voucher.grid48.txt} +0 -0
- /package/fixtures/{erwartet/logo-probe-hoch.raster32.txt → expected/logo-sample-tall.raster32.txt} +0 -0
- /package/fixtures/{erwartet/logo-probe.raster32.txt → expected/logo-sample.raster32.txt} +0 -0
- /package/fixtures/{erwartet/langer-artikelname.grid32.txt → expected/long-item-name.grid32.txt} +0 -0
- /package/fixtures/{erwartet/langer-artikelname.grid48.txt → expected/long-item-name.grid48.txt} +0 -0
- /package/fixtures/{erwartet/verkauf-karte.grid32.txt → expected/sale-card.grid32.txt} +0 -0
- /package/fixtures/{erwartet/verkauf-karte.grid48.txt → expected/sale-card.grid48.txt} +0 -0
- /package/fixtures/{erwartet/verkauf-bar.grid32.txt → expected/sale-cash.grid32.txt} +0 -0
- /package/fixtures/{erwartet/verkauf-bar.grid48.txt → expected/sale-cash.grid48.txt} +0 -0
- /package/fixtures/{erwartet/verkauf-kleinunternehmer.grid32.txt → expected/sale-small-business.grid32.txt} +0 -0
- /package/fixtures/{erwartet/verkauf-kleinunternehmer.grid48.txt → expected/sale-small-business.grid48.txt} +0 -0
- /package/fixtures/{erwartet/signaturausfall-verkauf.grid32.txt → expected/signature-outage-sale.grid32.txt} +0 -0
- /package/fixtures/{erwartet/signaturausfall-verkauf.grid48.txt → expected/signature-outage-sale.grid48.txt} +0 -0
- /package/fixtures/{erwartet/split-karte-karte-bar.grid32.txt → expected/split-card-card-cash.grid32.txt} +0 -0
- /package/fixtures/{erwartet/split-karte-karte-bar.grid48.txt → expected/split-card-card-cash.grid48.txt} +0 -0
- /package/fixtures/{erwartet/split-bar-rueckgeld.grid32.txt → expected/split-cash-change.grid32.txt} +0 -0
- /package/fixtures/{erwartet/split-bar-rueckgeld.grid48.txt → expected/split-cash-change.grid48.txt} +0 -0
- /package/fixtures/{erwartet/split-langer-betrag.grid32.txt → expected/split-long-amount.grid32.txt} +0 -0
- /package/fixtures/{erwartet/split-langer-betrag.grid48.txt → expected/split-long-amount.grid48.txt} +0 -0
- /package/fixtures/{erwartet/split-eine-karte-trinkgeld.grid32.txt → expected/split-one-card-tip.grid32.txt} +0 -0
- /package/fixtures/{erwartet/split-eine-karte-trinkgeld.grid48.txt → expected/split-one-card-tip.grid48.txt} +0 -0
- /package/fixtures/{erwartet/split-tischrunde-trinkgeld.grid32.txt → expected/split-table-round-tip.grid32.txt} +0 -0
- /package/fixtures/{erwartet/split-tischrunde-trinkgeld.grid48.txt → expected/split-table-round-tip.grid48.txt} +0 -0
- /package/fixtures/{erwartet/split-trinkgeld-karte.grid32.txt → expected/split-tip-card.grid32.txt} +0 -0
- /package/fixtures/{erwartet/split-trinkgeld-karte.grid48.txt → expected/split-tip-card.grid48.txt} +0 -0
- /package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.grid32.txt → expected/split-two-cards-same-provider.grid32.txt} +0 -0
- /package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.grid48.txt → expected/split-two-cards-same-provider.grid48.txt} +0 -0
- /package/fixtures/{erwartet/testkasse-verkauf.grid32.txt → expected/test-cashregister-sale.grid32.txt} +0 -0
- /package/fixtures/{erwartet/testkasse-verkauf.grid48.txt → expected/test-cashregister-sale.grid48.txt} +0 -0
- /package/fixtures/{erwartet/testsignatur-verkauf.grid32.txt → expected/test-signature-sale.grid32.txt} +0 -0
- /package/fixtures/{erwartet/testsignatur-verkauf.grid48.txt → expected/test-signature-sale.grid48.txt} +0 -0
- /package/fixtures/{erwartet → expected}/training.grid32.txt +0 -0
- /package/fixtures/{erwartet → expected}/training.grid48.txt +0 -0
- /package/fixtures/{erwartet/null-jahr.grid32.txt → expected/zero-annual.grid32.txt} +0 -0
- /package/fixtures/{erwartet/null-jahr.grid48.txt → expected/zero-annual.grid48.txt} +0 -0
- /package/fixtures/{erwartet/null-schluss.grid32.txt → expected/zero-final.grid32.txt} +0 -0
- /package/fixtures/{erwartet/null-schluss.grid48.txt → expected/zero-final.grid48.txt} +0 -0
- /package/fixtures/{erwartet/null-pruef.grid32.txt → expected/zero-manual.grid32.txt} +0 -0
- /package/fixtures/{erwartet/null-pruef.grid48.txt → expected/zero-manual.grid48.txt} +0 -0
- /package/fixtures/{erwartet/null-monat.grid32.txt → expected/zero-monthly.grid32.txt} +0 -0
- /package/fixtures/{erwartet/null-monat.grid48.txt → expected/zero-monthly.grid48.txt} +0 -0
- /package/fixtures/{erwartet/null-ausfall.grid32.txt → expected/zero-outage-end.grid32.txt} +0 -0
- /package/fixtures/{erwartet/null-ausfall.grid48.txt → expected/zero-outage-end.grid48.txt} +0 -0
- /package/fixtures/{erwartet/null-start.grid32.txt → expected/zero-start.grid32.txt} +0 -0
- /package/fixtures/{erwartet/null-start.grid48.txt → expected/zero-start.grid48.txt} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PosPaperSize } from '../printing/escpos.js';
|
|
2
|
-
import { type
|
|
2
|
+
import { type QrModuleSize } from '../printing/index.js';
|
|
3
3
|
import type { ReceiptLayout } from './layout.js';
|
|
4
4
|
/**
|
|
5
5
|
* Das Beleg-Blatt: die vollstaendige Folge dessen, was auf dem Papier steht --
|
|
@@ -15,85 +15,85 @@ import type { ReceiptLayout } from './layout.js';
|
|
|
15
15
|
* Punkte breit, eine Zeile 24 Punkte hoch. Am Bildschirm ist eine Zeile `2ch`,
|
|
16
16
|
* im PDF zwei Zeichenbreiten.
|
|
17
17
|
*/
|
|
18
|
-
export type
|
|
18
|
+
export type SheetLogoSize = 'S' | 'M' | 'L' | 'XL';
|
|
19
19
|
/** Kasten je Stufe: Anteil der Blattbreite und Hoehe in Zeilen (Werte der Web-Kasse). */
|
|
20
|
-
export declare const
|
|
21
|
-
readonly
|
|
22
|
-
readonly
|
|
20
|
+
export declare const SHEET_LOGO_SIZES: Readonly<Record<SheetLogoSize, {
|
|
21
|
+
readonly widthFraction: number;
|
|
22
|
+
readonly heightLines: number;
|
|
23
23
|
}>>;
|
|
24
|
-
export declare const
|
|
25
|
-
export declare const
|
|
26
|
-
export interface
|
|
27
|
-
|
|
24
|
+
export declare const DOTS_PER_CHAR = 12;
|
|
25
|
+
export declare const DOTS_PER_LINE = 24;
|
|
26
|
+
export interface SheetLogo {
|
|
27
|
+
size: SheetLogoSize;
|
|
28
28
|
/** Pixelmass des Originalbilds -- ohne das laesst sich nicht einpassen. */
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
pixelWidth: number;
|
|
30
|
+
pixelHeight: number;
|
|
31
31
|
}
|
|
32
|
-
export interface
|
|
32
|
+
export interface LogoDimensions {
|
|
33
33
|
/** Anteil der Blattbreite (0..1). */
|
|
34
|
-
|
|
34
|
+
widthFraction: number;
|
|
35
35
|
/** Hoehe in Zeilen (nicht ganzzahlig). */
|
|
36
|
-
|
|
36
|
+
heightLines: number;
|
|
37
37
|
}
|
|
38
|
-
export type
|
|
39
|
-
readonly
|
|
38
|
+
export type SheetBlock = {
|
|
39
|
+
readonly kind: 'line';
|
|
40
40
|
readonly text: string;
|
|
41
|
-
readonly
|
|
42
|
-
readonly
|
|
41
|
+
readonly bold: boolean;
|
|
42
|
+
readonly blank: boolean;
|
|
43
43
|
} | {
|
|
44
|
-
readonly
|
|
45
|
-
readonly
|
|
46
|
-
readonly
|
|
44
|
+
readonly kind: 'logo';
|
|
45
|
+
readonly widthFraction: number;
|
|
46
|
+
readonly heightLines: number;
|
|
47
47
|
} | {
|
|
48
|
-
readonly
|
|
49
|
-
readonly
|
|
50
|
-
readonly
|
|
48
|
+
readonly kind: 'qr';
|
|
49
|
+
readonly payload: string;
|
|
50
|
+
readonly widthFraction: number;
|
|
51
51
|
} | {
|
|
52
|
-
readonly
|
|
53
|
-
readonly
|
|
54
|
-
readonly
|
|
52
|
+
readonly kind: 'brandMark';
|
|
53
|
+
readonly width: number;
|
|
54
|
+
readonly height: number;
|
|
55
55
|
};
|
|
56
|
-
export interface
|
|
57
|
-
readonly
|
|
58
|
-
readonly
|
|
56
|
+
export interface ReceiptSheet {
|
|
57
|
+
readonly charsPerLine: number;
|
|
58
|
+
readonly blocks: readonly SheetBlock[];
|
|
59
59
|
}
|
|
60
|
-
export interface
|
|
60
|
+
export interface ReceiptSheetOptions {
|
|
61
61
|
/** Zeichen je Zeile; Vorgabe nach `layout.paperSize` (32/48). */
|
|
62
|
-
|
|
62
|
+
charsPerLine?: number;
|
|
63
63
|
/** Firmenlogo; ohne Angabe kein Logo-Block. */
|
|
64
|
-
logo?:
|
|
64
|
+
logo?: SheetLogo | null;
|
|
65
65
|
/** Das Kasseneck-Logo am Ende (Konto-Flag `kreiseck_logo`). */
|
|
66
|
-
|
|
66
|
+
brandMark?: boolean;
|
|
67
67
|
/** Geraete-Einstellung fuer die QR-Modulgroesse; Vorgabe `auto` (hoechstens 6 Punkte je Modul) — wie die Druckwege. */
|
|
68
|
-
|
|
68
|
+
qrModuleSize?: QrModuleSize;
|
|
69
69
|
}
|
|
70
70
|
/**
|
|
71
71
|
* 32 Zeichen sind 58 mm, 48 sind 80 mm; andere Breiten behalten das Papier des
|
|
72
|
-
* Layouts. Der QR-Anteil (`
|
|
72
|
+
* Layouts. Der QR-Anteil (`qrSheetWidthFraction`) wird dann fuer die Kopfbreite
|
|
73
73
|
* DIESES Papiers gerechnet, nicht fuer die gewaehlte Zeichenzahl.
|
|
74
74
|
*/
|
|
75
|
-
export declare function
|
|
75
|
+
export declare function paperSizeForChars(chars: number, fallback: PosPaperSize): PosPaperSize;
|
|
76
76
|
/**
|
|
77
77
|
* Obergrenze der Logo-Pixel, die der Bildschirm noch anzeigen darf -- exakt
|
|
78
|
-
* dieselbe Grenze wie im Druck-Kit (`
|
|
78
|
+
* dieselbe Grenze wie im Druck-Kit (`LOGO_MAX_PIXELS` in `druck-logo.ts`):
|
|
79
79
|
* Bon und ePOS lehnen ein Logo ueber 4096x4096px schon beim Rastern ab (ein
|
|
80
80
|
* grosses Bild blockiert das Geraet). Ohne diese Grenze wuerde der
|
|
81
81
|
* Bildschirm ein Logo zeigen, das der Bon nie druckt -- Bildschirm und
|
|
82
82
|
* Papier waeren sich uneins, genau das soll das Beleg-Blatt verhindern.
|
|
83
83
|
*/
|
|
84
|
-
export declare const
|
|
84
|
+
export declare const LOGO_MAX_PIXELS = 4096;
|
|
85
85
|
/** Reine Pruefung, ob ein Logo dieser Pixelmasse noch angezeigt/gedruckt werden darf. */
|
|
86
|
-
export declare function
|
|
86
|
+
export declare function isLogoPixelSizeAllowed(width: number, height: number): boolean;
|
|
87
87
|
/**
|
|
88
88
|
* Das Logo in den Kasten seiner Stufe einpassen -- **nie hochrechnen**: ein
|
|
89
89
|
* Bildpixel wird hoechstens ein Druckpunkt. Ein kleines Logo bleibt klein,
|
|
90
90
|
* statt am Bon verwaschen zu werden (so hielten es PDF und Web-Kasse schon).
|
|
91
91
|
*/
|
|
92
|
-
export declare function
|
|
92
|
+
export declare function logoDimensions(logo: SheetLogo, chars: number): LogoDimensions;
|
|
93
93
|
/** Das Mass in ganzen Druckpunkten -- so gross muss das Rasterbild fuer den Bon sein. */
|
|
94
|
-
export declare function
|
|
95
|
-
|
|
96
|
-
|
|
94
|
+
export declare function logoRasterSize(dimensions: LogoDimensions, chars: number): {
|
|
95
|
+
width: number;
|
|
96
|
+
height: number;
|
|
97
97
|
};
|
|
98
98
|
/**
|
|
99
99
|
* Anteil der Blattbreite, den der QR am Drucker einnimmt -- dieselbe Rechnung
|
|
@@ -105,5 +105,5 @@ export declare function logoRasterMass(mass: LogoMass, zeichen: number): {
|
|
|
105
105
|
* darum mit Fehlerkorrektur M und einer Ruhezone von 4 Modulen zeichnen, die
|
|
106
106
|
* den Kasten ganz ausfuellt -- sonst stimmt die Modulgroesse nicht mit dem Bon.
|
|
107
107
|
*/
|
|
108
|
-
export declare function
|
|
109
|
-
export declare function
|
|
108
|
+
export declare function qrSheetWidthFraction(payload: string, paperSize: PosPaperSize, size?: QrModuleSize): number;
|
|
109
|
+
export declare function receiptSheet(layout: ReceiptLayout, options?: ReceiptSheetOptions): ReceiptSheet;
|
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { renderReceiptGrid,
|
|
3
|
-
import {
|
|
1
|
+
import { QR_PRINT_WIDTH_DOTS, QR_QUIET_ZONE_MODULES, qrSizingFor, qrFitsInVersion, qrRasterDots, } from '../printing/index.js';
|
|
2
|
+
import { renderReceiptGrid, CHARS_PER_PAPER_SIZE } from './grid.js';
|
|
3
|
+
import { BRAND_MARK_RASTERS } from './marke-daten.js';
|
|
4
4
|
/** Kasten je Stufe: Anteil der Blattbreite und Hoehe in Zeilen (Werte der Web-Kasse). */
|
|
5
|
-
export const
|
|
6
|
-
S: {
|
|
7
|
-
M: {
|
|
8
|
-
L: {
|
|
9
|
-
XL: {
|
|
5
|
+
export const SHEET_LOGO_SIZES = {
|
|
6
|
+
S: { widthFraction: 0.42, heightLines: 5 },
|
|
7
|
+
M: { widthFraction: 0.62, heightLines: 8 },
|
|
8
|
+
L: { widthFraction: 0.8, heightLines: 12 },
|
|
9
|
+
XL: { widthFraction: 0.94, heightLines: 16 },
|
|
10
10
|
};
|
|
11
|
-
export const
|
|
12
|
-
export const
|
|
11
|
+
export const DOTS_PER_CHAR = 12;
|
|
12
|
+
export const DOTS_PER_LINE = 24;
|
|
13
13
|
/**
|
|
14
14
|
* 32 Zeichen sind 58 mm, 48 sind 80 mm; andere Breiten behalten das Papier des
|
|
15
|
-
* Layouts. Der QR-Anteil (`
|
|
15
|
+
* Layouts. Der QR-Anteil (`qrSheetWidthFraction`) wird dann fuer die Kopfbreite
|
|
16
16
|
* DIESES Papiers gerechnet, nicht fuer die gewaehlte Zeichenzahl.
|
|
17
17
|
*/
|
|
18
|
-
export function
|
|
19
|
-
if (
|
|
18
|
+
export function paperSizeForChars(chars, fallback) {
|
|
19
|
+
if (chars === CHARS_PER_PAPER_SIZE.mm58)
|
|
20
20
|
return 'mm58';
|
|
21
|
-
if (
|
|
21
|
+
if (chars === CHARS_PER_PAPER_SIZE.mm80)
|
|
22
22
|
return 'mm80';
|
|
23
|
-
return
|
|
23
|
+
return fallback;
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
26
|
* Obergrenze der Logo-Pixel, die der Bildschirm noch anzeigen darf -- exakt
|
|
27
|
-
* dieselbe Grenze wie im Druck-Kit (`
|
|
27
|
+
* dieselbe Grenze wie im Druck-Kit (`LOGO_MAX_PIXELS` in `druck-logo.ts`):
|
|
28
28
|
* Bon und ePOS lehnen ein Logo ueber 4096x4096px schon beim Rastern ab (ein
|
|
29
29
|
* grosses Bild blockiert das Geraet). Ohne diese Grenze wuerde der
|
|
30
30
|
* Bildschirm ein Logo zeigen, das der Bon nie druckt -- Bildschirm und
|
|
31
31
|
* Papier waeren sich uneins, genau das soll das Beleg-Blatt verhindern.
|
|
32
32
|
*/
|
|
33
|
-
export const
|
|
33
|
+
export const LOGO_MAX_PIXELS = 4096;
|
|
34
34
|
/** Reine Pruefung, ob ein Logo dieser Pixelmasse noch angezeigt/gedruckt werden darf. */
|
|
35
|
-
export function
|
|
36
|
-
return
|
|
35
|
+
export function isLogoPixelSizeAllowed(width, height) {
|
|
36
|
+
return width > 0 && height > 0 && width <= LOGO_MAX_PIXELS && height <= LOGO_MAX_PIXELS;
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
39
|
* Das Logo in den Kasten seiner Stufe einpassen -- **nie hochrechnen**: ein
|
|
40
40
|
* Bildpixel wird hoechstens ein Druckpunkt. Ein kleines Logo bleibt klein,
|
|
41
41
|
* statt am Bon verwaschen zu werden (so hielten es PDF und Web-Kasse schon).
|
|
42
42
|
*/
|
|
43
|
-
export function
|
|
44
|
-
if (!(logo.
|
|
43
|
+
export function logoDimensions(logo, chars) {
|
|
44
|
+
if (!(logo.pixelWidth > 0) || !(logo.pixelHeight > 0))
|
|
45
45
|
throw new Error('Logo ohne Pixelmass');
|
|
46
|
-
const stufe =
|
|
46
|
+
const stufe = SHEET_LOGO_SIZES[logo.size];
|
|
47
47
|
if (stufe === undefined)
|
|
48
|
-
throw new Error(`Unbekannte Logo-Stufe: ${String(logo.
|
|
49
|
-
const blattPunkte =
|
|
50
|
-
const faktor = Math.min((stufe.
|
|
48
|
+
throw new Error(`Unbekannte Logo-Stufe: ${String(logo.size)}`);
|
|
49
|
+
const blattPunkte = chars * DOTS_PER_CHAR;
|
|
50
|
+
const faktor = Math.min((stufe.widthFraction * blattPunkte) / logo.pixelWidth, (stufe.heightLines * DOTS_PER_LINE) / logo.pixelHeight, 1);
|
|
51
51
|
return {
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
widthFraction: (logo.pixelWidth * faktor) / blattPunkte,
|
|
53
|
+
heightLines: (logo.pixelHeight * faktor) / DOTS_PER_LINE,
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
56
|
/** Das Mass in ganzen Druckpunkten -- so gross muss das Rasterbild fuer den Bon sein. */
|
|
57
|
-
export function
|
|
57
|
+
export function logoRasterSize(dimensions, chars) {
|
|
58
58
|
return {
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
width: Math.max(1, Math.round(dimensions.widthFraction * chars * DOTS_PER_CHAR)),
|
|
60
|
+
height: Math.max(1, Math.round(dimensions.heightLines * DOTS_PER_LINE)),
|
|
61
61
|
};
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
@@ -70,35 +70,35 @@ export function logoRasterMass(mass, zeichen) {
|
|
|
70
70
|
* darum mit Fehlerkorrektur M und einer Ruhezone von 4 Modulen zeichnen, die
|
|
71
71
|
* den Kasten ganz ausfuellt -- sonst stimmt die Modulgroesse nicht mit dem Bon.
|
|
72
72
|
*/
|
|
73
|
-
export function
|
|
74
|
-
if (
|
|
73
|
+
export function qrSheetWidthFraction(payload, paperSize, size = 'auto') {
|
|
74
|
+
if (payload === '')
|
|
75
75
|
return 0;
|
|
76
76
|
// Ein Inhalt, der in keine QR-Version passt (Fehlerkorrektur M, hoechstens
|
|
77
|
-
// 2331 Byte), wuerde hier `
|
|
77
|
+
// 2331 Byte), wuerde hier `qrSizingFor` -> `qrModuleCount` zum Werfen
|
|
78
78
|
// bringen -- und riss damit jeden Zeichner mit, der das Blatt baut
|
|
79
79
|
// (Bildschirm, Bon, PDF). 0, wie bei leerer Nutzlast: der Beleg steht ohne
|
|
80
|
-
// QR, statt gar nicht zu stehen. `
|
|
80
|
+
// QR, statt gar nicht zu stehen. `qrModuleCount` selbst wirft weiter -- wer
|
|
81
81
|
// es ausserhalb des Blatts aufruft, soll den Fehler sehen.
|
|
82
|
-
if (!
|
|
82
|
+
if (!qrFitsInVersion(payload))
|
|
83
83
|
return 0;
|
|
84
|
-
const papierPunkte =
|
|
85
|
-
const mass =
|
|
86
|
-
if (mass.
|
|
87
|
-
return mass.
|
|
88
|
-
return ((mass.
|
|
84
|
+
const papierPunkte = QR_PRINT_WIDTH_DOTS[paperSize];
|
|
85
|
+
const mass = qrSizingFor({ payload: payload, paperWidthDots: papierPunkte, moduleSize: size });
|
|
86
|
+
if (mass.fits)
|
|
87
|
+
return mass.widthDots / papierPunkte;
|
|
88
|
+
return ((mass.modules + 2 * QR_QUIET_ZONE_MODULES) * qrRasterDots(paperSize, mass.modules, { moduleSize: size })) / papierPunkte;
|
|
89
89
|
}
|
|
90
|
-
export function
|
|
91
|
-
const grid = renderReceiptGrid(layout,
|
|
92
|
-
const zeichen = grid.
|
|
93
|
-
const papier =
|
|
94
|
-
const qrGroesse =
|
|
95
|
-
const leerzeile = {
|
|
90
|
+
export function receiptSheet(layout, options = {}) {
|
|
91
|
+
const grid = renderReceiptGrid(layout, options.charsPerLine === undefined ? {} : { charsPerLine: options.charsPerLine });
|
|
92
|
+
const zeichen = grid.charsPerLine;
|
|
93
|
+
const papier = paperSizeForChars(zeichen, layout.paperSize);
|
|
94
|
+
const qrGroesse = options.qrModuleSize ?? 'auto';
|
|
95
|
+
const leerzeile = { kind: 'line', text: ' '.repeat(zeichen), bold: false, blank: true };
|
|
96
96
|
const block = (z) => z.kind === 'qr'
|
|
97
|
-
? {
|
|
98
|
-
: {
|
|
97
|
+
? { kind: 'qr', payload: z.qr ?? '', widthFraction: qrSheetWidthFraction(z.qr ?? '', papier, qrGroesse) }
|
|
98
|
+
: { kind: 'line', text: z.text, bold: z.bold, blank: z.kind === 'space' };
|
|
99
99
|
const bloecke = [];
|
|
100
100
|
let i = 0;
|
|
101
|
-
if (
|
|
101
|
+
if (options.logo) {
|
|
102
102
|
// Fuehrende Aufdrucke (Testkasse, Testsignatur) bleiben ganz oben: wer den
|
|
103
103
|
// Beleg sieht, sieht zuerst, dass er nicht gilt.
|
|
104
104
|
while (i < grid.lines.length && grid.lines[i].kind === 'banner') {
|
|
@@ -109,21 +109,21 @@ export function belegBlatt(layout, optionen = {}) {
|
|
|
109
109
|
// Rahmen oder an den Firmennamen kleben.
|
|
110
110
|
if (i > 0)
|
|
111
111
|
bloecke.push(leerzeile);
|
|
112
|
-
bloecke.push({
|
|
112
|
+
bloecke.push({ kind: 'logo', ...logoDimensions(options.logo, zeichen) });
|
|
113
113
|
bloecke.push(leerzeile);
|
|
114
114
|
}
|
|
115
115
|
for (; i < grid.lines.length; i += 1)
|
|
116
116
|
bloecke.push(block(grid.lines[i]));
|
|
117
|
-
if (
|
|
118
|
-
// Das Raster deckt nur die beiden bekannten Papierbreiten ab (`
|
|
117
|
+
if (options.brandMark === true) {
|
|
118
|
+
// Das Raster deckt nur die beiden bekannten Papierbreiten ab (`BRAND_MARK_RASTERS`).
|
|
119
119
|
// Faende sich hier eine dritte, faellt die Marke weg statt ein Raster in
|
|
120
120
|
// falscher Groesse zu drucken -- derselbe Grundsatz wie beim Firmenlogo:
|
|
121
121
|
// eine Marke ist Zierde, der Beleg ist Pflicht.
|
|
122
|
-
const raster =
|
|
122
|
+
const raster = BRAND_MARK_RASTERS[papier];
|
|
123
123
|
if (raster) {
|
|
124
124
|
bloecke.push(leerzeile);
|
|
125
|
-
bloecke.push({
|
|
125
|
+
bloecke.push({ kind: 'brandMark', width: raster.width, height: raster.height });
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
|
-
return { zeichen, bloecke };
|
|
128
|
+
return { charsPerLine: zeichen, blocks: bloecke };
|
|
129
129
|
}
|
|
@@ -9,4 +9,4 @@ import type { ReceiptItem } from '../models/receipt-item.js';
|
|
|
9
9
|
* Abrunden uebrig bleiben, gehen der Reihe nach an die Gruppen mit dem
|
|
10
10
|
* groessten Bruchteil; keine Zeile ist je groesser als der Umsatz ihres Satzes.
|
|
11
11
|
*/
|
|
12
|
-
export declare function
|
|
12
|
+
export declare function distributeDiscount(items: ReceiptItem[], discountCents: number, name?: string): ReceiptItem[];
|
|
@@ -9,15 +9,15 @@ import { receiptItemTotalCents } from '../models/receipt-item.js';
|
|
|
9
9
|
* Abrunden uebrig bleiben, gehen der Reihe nach an die Gruppen mit dem
|
|
10
10
|
* groessten Bruchteil; keine Zeile ist je groesser als der Umsatz ihres Satzes.
|
|
11
11
|
*/
|
|
12
|
-
export function
|
|
13
|
-
if (!Number.isInteger(
|
|
12
|
+
export function distributeDiscount(items, discountCents, name = 'Rabatt') {
|
|
13
|
+
if (!Number.isInteger(discountCents) || discountCents < 0) {
|
|
14
14
|
throw new Error('Rabatt muss eine ganze Zahl in Cent >= 0 sein');
|
|
15
15
|
}
|
|
16
|
-
if (
|
|
16
|
+
if (discountCents === 0)
|
|
17
17
|
return [];
|
|
18
18
|
// Umsatz je Steuersatz (nur positive Positionen -- Rabatte/Stornos zaehlen nicht mit)
|
|
19
19
|
const gruppen = new Map();
|
|
20
|
-
for (const p of
|
|
20
|
+
for (const p of items) {
|
|
21
21
|
const betrag = receiptItemTotalCents(p);
|
|
22
22
|
if (betrag <= 0)
|
|
23
23
|
continue;
|
|
@@ -27,12 +27,12 @@ export function verteileRabatt(positionen, rabattCents, name = 'Rabatt') {
|
|
|
27
27
|
gruppen.set(key, g);
|
|
28
28
|
}
|
|
29
29
|
const gesamt = [...gruppen.values()].reduce((s, g) => s + g.umsatz, 0);
|
|
30
|
-
if (
|
|
30
|
+
if (discountCents > gesamt)
|
|
31
31
|
throw new Error('Rabatt uebersteigt den Umsatz');
|
|
32
32
|
const liste = [...gruppen.values()];
|
|
33
|
-
const exakt = liste.map((g) => (
|
|
33
|
+
const exakt = liste.map((g) => (discountCents * g.umsatz) / gesamt);
|
|
34
34
|
const anteile = exakt.map((x) => Math.floor(x));
|
|
35
|
-
let rest =
|
|
35
|
+
let rest = discountCents - anteile.reduce((s, a) => s + a, 0);
|
|
36
36
|
// Reihenfolge fuer die Restcent: groesster Bruchteil zuerst, bei Gleichstand groesserer Umsatz
|
|
37
37
|
const reihenfolge = liste.map((_, i) => i).sort((a, b) => (exakt[b] - anteile[b]) - (exakt[a] - anteile[a]) || liste[b].umsatz - liste[a].umsatz);
|
|
38
38
|
for (let runde = 0; rest > 0 && runde < liste.length + 1; runde++) {
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { ReceiptType, type ReceiptTypeKey, KeckPaymentMethod } from '../enums/index.js';
|
|
2
|
+
import type { ReceiptItem } from '../models/receipt-item.js';
|
|
3
|
+
import type { Voucher } from '../models/voucher.js';
|
|
4
|
+
/**
|
|
5
|
+
* Zahlbetrag eines Belegs in ganzen Cent: Zwilling von `createReceipt` im
|
|
6
|
+
* Backend (Nachtrag §8), also `beleg-toepfe.belegToepfe(...).zaehlerDeltaCents`
|
|
7
|
+
* plus `zahlungen-core.wertgutscheinFlussCents`, mit den Trinkgeld-Positionen,
|
|
8
|
+
* die `tip-core.buildTipItems` aus `tip` bzw. aus `payments[].tipCents` baut.
|
|
9
|
+
*
|
|
10
|
+
* `createReceipt` hat keinen Probelauf. Unter `/v3` ist `payments[]` Pflicht,
|
|
11
|
+
* und die Summe der Zahlungen muss genau diesen Betrag treffen; wer die
|
|
12
|
+
* Zahlungen baut (Kartenterminal, Rueckgeld), rechnet ihn hier vorher aus.
|
|
13
|
+
* Trifft die Summe nicht, antwortet der Server mit `payments_sum_mismatch` und
|
|
14
|
+
* `expectedCents`, ohne eine Belegnummer zu verbrauchen; das Paket wiederholt
|
|
15
|
+
* nie selbst.
|
|
16
|
+
*
|
|
17
|
+
* **Bewusst dieselbe Rechnung wie der Server, nicht die exakte.** Das Backend
|
|
18
|
+
* rechnet die RKSV-Toepfe in Euro-Gleitkomma (Einzelpreis `Math.round(cents)/100`,
|
|
19
|
+
* je Topf `priceOne * amount` in Positionsreihenfolge, Trinkgeld-Positionen
|
|
20
|
+
* hinten angehaengt, gerundet mit `Math.round(euro * 100)`, Rabatt-Deckel in
|
|
21
|
+
* Euro). Diese Reihenfolge ist signiert und aendert sich nicht; ein exakter
|
|
22
|
+
* Zwilling wiche bei Bruchmengen auf halbem Cent ab (0,5 x 29 ct: Server 14,
|
|
23
|
+
* exakt 15). Darum steht hier dieselbe Arithmetik, Schritt fuer Schritt.
|
|
24
|
+
* Eingaben und Ergebnis sind ganze Cent; die Gleitkommazahlen leben nur
|
|
25
|
+
* innerhalb dieser Rechnung. Geprueft gegen die 20 Vertragsfaelle aus
|
|
26
|
+
* `fixtures/v3/zahlbetrag-faelle.json` und gegen mehr als 1000 mit dem echten
|
|
27
|
+
* Backend-Code erzeugte Faelle (`fixtures/receipt-due-generated.json`).
|
|
28
|
+
*
|
|
29
|
+
* **Trinkgeld-Empfaenger:** Ohne `recipients` bucht der Server das Trinkgeld
|
|
30
|
+
* auf den angemeldeten Kassen-Benutzer, und dessen Inhaber-Kennzeichen
|
|
31
|
+
* entscheidet: Inhaber-Trinkgeld ist Umsatz (anteilig auf die Saetze der Ware,
|
|
32
|
+
* mitrabattiert), Personal-Trinkgeld ein durchlaufender Posten (nie
|
|
33
|
+
* rabattiert). Das weiss nur die Kasse; darum ist `tipRecipient` Pflicht,
|
|
34
|
+
* sobald Trinkgeld ohne `recipients` vorkommt. Ohne angemeldeten Benutzer
|
|
35
|
+
* (Geraete-Schluessel) gilt `'staff'`.
|
|
36
|
+
*/
|
|
37
|
+
/** Wer das Trinkgeld ohne `recipients` bekommt (Kennzeichen des angemeldeten Kassen-Benutzers). */
|
|
38
|
+
export type ReceiptDueTipRecipient = 'owner' | 'staff';
|
|
39
|
+
/** Trinkgeld wie `tip` an `sellReceipt`: Betrag, optional mit Empfaengern samt Inhaber-Kennzeichen. */
|
|
40
|
+
export type ReceiptDueTip = number | {
|
|
41
|
+
cents: number;
|
|
42
|
+
recipients?: ReadonlyArray<{
|
|
43
|
+
cents: number;
|
|
44
|
+
owner: boolean;
|
|
45
|
+
}>;
|
|
46
|
+
};
|
|
47
|
+
export interface ReceiptDueOptions {
|
|
48
|
+
/** Trinkgeld als Parameter `tip`; nie zugleich mit `payments[].tipCents` (`tip_conflict`). */
|
|
49
|
+
tip?: ReceiptDueTip;
|
|
50
|
+
/**
|
|
51
|
+
* Die Zahlungen, soweit sie Trinkgeld tragen (`tipCents`). Der Server bucht
|
|
52
|
+
* je Zahlart genau so, als waere `tip: { cents: Summe, paymentMethod }`
|
|
53
|
+
* geschickt worden. Andere Felder zaehlen hier nicht.
|
|
54
|
+
*/
|
|
55
|
+
payments?: ReadonlyArray<{
|
|
56
|
+
method: KeckPaymentMethod | string;
|
|
57
|
+
tipCents?: number;
|
|
58
|
+
}>;
|
|
59
|
+
/** Pflicht, sobald Trinkgeld ohne `recipients` vorkommt (siehe Modulkommentar). */
|
|
60
|
+
tipRecipient?: ReceiptDueTipRecipient;
|
|
61
|
+
}
|
|
62
|
+
/** Die sechs RKSV-Toepfe in Cent, Namen wie am Beleg des Backends. */
|
|
63
|
+
export interface ReceiptDueBuckets {
|
|
64
|
+
amountRateStandard: number;
|
|
65
|
+
amountRateReduced1: number;
|
|
66
|
+
amountRateReduced2: number;
|
|
67
|
+
amountRateZero: number;
|
|
68
|
+
amountRateSpecial: number;
|
|
69
|
+
amountRatOthers: number;
|
|
70
|
+
}
|
|
71
|
+
export interface ReceiptDueBreakdown {
|
|
72
|
+
/** Was die Zahlungen zusammen ergeben muessen. */
|
|
73
|
+
dueCents: number;
|
|
74
|
+
/** Delta des Umsatzzaehlers (Summe der Toepfe). */
|
|
75
|
+
counterDeltaCents: number;
|
|
76
|
+
/** Anteil der Wertgutscheine am Zahlbetrag. */
|
|
77
|
+
valueVoucherFlowCents: number;
|
|
78
|
+
/** Toepfe je auf Cent gerundet; `null` bei Start- und Nullbeleg. */
|
|
79
|
+
bucketsCents: ReceiptDueBuckets | null;
|
|
80
|
+
}
|
|
81
|
+
type BelegArt = ReceiptType | ReceiptTypeKey | string;
|
|
82
|
+
/** Zahlbetrag in Cent, siehe Modulkommentar. */
|
|
83
|
+
export declare function receiptDueCents(items: readonly ReceiptItem[], vouchers: readonly Voucher[], receiptType: BelegArt, options?: ReceiptDueOptions): number;
|
|
84
|
+
/** Wie [receiptDueCents], dazu Zaehler-Delta, Wertgutschein-Anteil und Toepfe. */
|
|
85
|
+
export declare function receiptDueBreakdown(items: readonly ReceiptItem[], vouchers: readonly Voucher[], receiptType: BelegArt, options?: ReceiptDueOptions): ReceiptDueBreakdown;
|
|
86
|
+
export {};
|