@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
package/dist/cjs/receipt/bild.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.rasterizeLogo = rasterizeLogo;
|
|
4
4
|
const blatt_js_1 = require("./blatt.js");
|
|
5
5
|
/**
|
|
6
6
|
* RGBA-Pixel (wie `ImageData.data` im Browser oder ein dekodiertes PNG in
|
|
@@ -8,30 +8,30 @@ const blatt_js_1 = require("./blatt.js");
|
|
|
8
8
|
* dem Logo gibt.
|
|
9
9
|
*
|
|
10
10
|
* Die Rechnung ist Vertrag und hat einen Dart-Zwilling (Golden
|
|
11
|
-
* `
|
|
11
|
+
* `expected/logo-sample.raster32.txt`): Flaechenmittel je Druckpunkt,
|
|
12
12
|
* Durchsichtiges auf Papierweiss, Helligkeit nach BT.601, Floyd-Steinberg mit
|
|
13
13
|
* Schwelle 128. Die Reihenfolge der Rechenschritte nicht aendern -- beide
|
|
14
14
|
* Sprachen rechnen mit IEEE-Doubles und kommen nur so auf dieselben Punkte.
|
|
15
15
|
*/
|
|
16
|
-
function
|
|
17
|
-
if (!Number.isInteger(
|
|
16
|
+
function rasterizeLogo(rgba, pxWidth, pxHeight, dimensions, chars) {
|
|
17
|
+
if (!Number.isInteger(pxWidth) || !Number.isInteger(pxHeight) || pxWidth < 1 || pxHeight < 1 || rgba.length !== pxWidth * pxHeight * 4) {
|
|
18
18
|
throw new Error('RGBA-Laenge passt nicht zum Pixelmass');
|
|
19
19
|
}
|
|
20
|
-
const { breite, hoehe } = (0, blatt_js_1.
|
|
20
|
+
const { width: breite, height: hoehe } = (0, blatt_js_1.logoRasterSize)(dimensions, chars);
|
|
21
21
|
const grau = new Float64Array(breite * hoehe);
|
|
22
|
-
const sx =
|
|
23
|
-
const sy =
|
|
22
|
+
const sx = pxWidth / breite;
|
|
23
|
+
const sy = pxHeight / hoehe;
|
|
24
24
|
for (let y = 0; y < hoehe; y++) {
|
|
25
25
|
const y0 = Math.floor(y * sy);
|
|
26
|
-
const y1 = Math.min(
|
|
26
|
+
const y1 = Math.min(pxHeight, Math.max(y0 + 1, Math.floor((y + 1) * sy)));
|
|
27
27
|
for (let x = 0; x < breite; x++) {
|
|
28
28
|
const x0 = Math.floor(x * sx);
|
|
29
|
-
const x1 = Math.min(
|
|
29
|
+
const x1 = Math.min(pxWidth, Math.max(x0 + 1, Math.floor((x + 1) * sx)));
|
|
30
30
|
let summe = 0;
|
|
31
31
|
let anzahl = 0;
|
|
32
32
|
for (let py = y0; py < y1; py++) {
|
|
33
33
|
for (let px = x0; px < x1; px++) {
|
|
34
|
-
const i = (py *
|
|
34
|
+
const i = (py * pxWidth + px) * 4;
|
|
35
35
|
const deckung = rgba[i + 3] / 255;
|
|
36
36
|
const hell = 0.299 * rgba[i] + 0.587 * rgba[i + 1] + 0.114 * rgba[i + 2];
|
|
37
37
|
summe += hell * deckung + 255 * (1 - deckung);
|
|
@@ -61,5 +61,5 @@ function logoRaster(rgba, pxBreite, pxHoehe, mass, zeichen) {
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
return { breite, hoehe, punkte };
|
|
64
|
+
return { width: breite, height: hoehe, dots: punkte };
|
|
65
65
|
}
|
|
@@ -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,72 +1,72 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.
|
|
6
|
-
exports.
|
|
7
|
-
exports.
|
|
8
|
-
exports.
|
|
9
|
-
exports.
|
|
3
|
+
exports.LOGO_MAX_PIXELS = exports.DOTS_PER_LINE = exports.DOTS_PER_CHAR = exports.SHEET_LOGO_SIZES = void 0;
|
|
4
|
+
exports.paperSizeForChars = paperSizeForChars;
|
|
5
|
+
exports.isLogoPixelSizeAllowed = isLogoPixelSizeAllowed;
|
|
6
|
+
exports.logoDimensions = logoDimensions;
|
|
7
|
+
exports.logoRasterSize = logoRasterSize;
|
|
8
|
+
exports.qrSheetWidthFraction = qrSheetWidthFraction;
|
|
9
|
+
exports.receiptSheet = receiptSheet;
|
|
10
10
|
const index_js_1 = require("../printing/index.js");
|
|
11
11
|
const grid_js_1 = require("./grid.js");
|
|
12
12
|
const marke_daten_js_1 = require("./marke-daten.js");
|
|
13
13
|
/** Kasten je Stufe: Anteil der Blattbreite und Hoehe in Zeilen (Werte der Web-Kasse). */
|
|
14
|
-
exports.
|
|
15
|
-
S: {
|
|
16
|
-
M: {
|
|
17
|
-
L: {
|
|
18
|
-
XL: {
|
|
14
|
+
exports.SHEET_LOGO_SIZES = {
|
|
15
|
+
S: { widthFraction: 0.42, heightLines: 5 },
|
|
16
|
+
M: { widthFraction: 0.62, heightLines: 8 },
|
|
17
|
+
L: { widthFraction: 0.8, heightLines: 12 },
|
|
18
|
+
XL: { widthFraction: 0.94, heightLines: 16 },
|
|
19
19
|
};
|
|
20
|
-
exports.
|
|
21
|
-
exports.
|
|
20
|
+
exports.DOTS_PER_CHAR = 12;
|
|
21
|
+
exports.DOTS_PER_LINE = 24;
|
|
22
22
|
/**
|
|
23
23
|
* 32 Zeichen sind 58 mm, 48 sind 80 mm; andere Breiten behalten das Papier des
|
|
24
|
-
* Layouts. Der QR-Anteil (`
|
|
24
|
+
* Layouts. Der QR-Anteil (`qrSheetWidthFraction`) wird dann fuer die Kopfbreite
|
|
25
25
|
* DIESES Papiers gerechnet, nicht fuer die gewaehlte Zeichenzahl.
|
|
26
26
|
*/
|
|
27
|
-
function
|
|
28
|
-
if (
|
|
27
|
+
function paperSizeForChars(chars, fallback) {
|
|
28
|
+
if (chars === grid_js_1.CHARS_PER_PAPER_SIZE.mm58)
|
|
29
29
|
return 'mm58';
|
|
30
|
-
if (
|
|
30
|
+
if (chars === grid_js_1.CHARS_PER_PAPER_SIZE.mm80)
|
|
31
31
|
return 'mm80';
|
|
32
|
-
return
|
|
32
|
+
return fallback;
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
35
|
* Obergrenze der Logo-Pixel, die der Bildschirm noch anzeigen darf -- exakt
|
|
36
|
-
* dieselbe Grenze wie im Druck-Kit (`
|
|
36
|
+
* dieselbe Grenze wie im Druck-Kit (`LOGO_MAX_PIXELS` in `druck-logo.ts`):
|
|
37
37
|
* Bon und ePOS lehnen ein Logo ueber 4096x4096px schon beim Rastern ab (ein
|
|
38
38
|
* grosses Bild blockiert das Geraet). Ohne diese Grenze wuerde der
|
|
39
39
|
* Bildschirm ein Logo zeigen, das der Bon nie druckt -- Bildschirm und
|
|
40
40
|
* Papier waeren sich uneins, genau das soll das Beleg-Blatt verhindern.
|
|
41
41
|
*/
|
|
42
|
-
exports.
|
|
42
|
+
exports.LOGO_MAX_PIXELS = 4096;
|
|
43
43
|
/** Reine Pruefung, ob ein Logo dieser Pixelmasse noch angezeigt/gedruckt werden darf. */
|
|
44
|
-
function
|
|
45
|
-
return
|
|
44
|
+
function isLogoPixelSizeAllowed(width, height) {
|
|
45
|
+
return width > 0 && height > 0 && width <= exports.LOGO_MAX_PIXELS && height <= exports.LOGO_MAX_PIXELS;
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
48
48
|
* Das Logo in den Kasten seiner Stufe einpassen -- **nie hochrechnen**: ein
|
|
49
49
|
* Bildpixel wird hoechstens ein Druckpunkt. Ein kleines Logo bleibt klein,
|
|
50
50
|
* statt am Bon verwaschen zu werden (so hielten es PDF und Web-Kasse schon).
|
|
51
51
|
*/
|
|
52
|
-
function
|
|
53
|
-
if (!(logo.
|
|
52
|
+
function logoDimensions(logo, chars) {
|
|
53
|
+
if (!(logo.pixelWidth > 0) || !(logo.pixelHeight > 0))
|
|
54
54
|
throw new Error('Logo ohne Pixelmass');
|
|
55
|
-
const stufe = exports.
|
|
55
|
+
const stufe = exports.SHEET_LOGO_SIZES[logo.size];
|
|
56
56
|
if (stufe === undefined)
|
|
57
|
-
throw new Error(`Unbekannte Logo-Stufe: ${String(logo.
|
|
58
|
-
const blattPunkte =
|
|
59
|
-
const faktor = Math.min((stufe.
|
|
57
|
+
throw new Error(`Unbekannte Logo-Stufe: ${String(logo.size)}`);
|
|
58
|
+
const blattPunkte = chars * exports.DOTS_PER_CHAR;
|
|
59
|
+
const faktor = Math.min((stufe.widthFraction * blattPunkte) / logo.pixelWidth, (stufe.heightLines * exports.DOTS_PER_LINE) / logo.pixelHeight, 1);
|
|
60
60
|
return {
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
widthFraction: (logo.pixelWidth * faktor) / blattPunkte,
|
|
62
|
+
heightLines: (logo.pixelHeight * faktor) / exports.DOTS_PER_LINE,
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
65
|
/** Das Mass in ganzen Druckpunkten -- so gross muss das Rasterbild fuer den Bon sein. */
|
|
66
|
-
function
|
|
66
|
+
function logoRasterSize(dimensions, chars) {
|
|
67
67
|
return {
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
width: Math.max(1, Math.round(dimensions.widthFraction * chars * exports.DOTS_PER_CHAR)),
|
|
69
|
+
height: Math.max(1, Math.round(dimensions.heightLines * exports.DOTS_PER_LINE)),
|
|
70
70
|
};
|
|
71
71
|
}
|
|
72
72
|
/**
|
|
@@ -79,35 +79,35 @@ function logoRasterMass(mass, zeichen) {
|
|
|
79
79
|
* darum mit Fehlerkorrektur M und einer Ruhezone von 4 Modulen zeichnen, die
|
|
80
80
|
* den Kasten ganz ausfuellt -- sonst stimmt die Modulgroesse nicht mit dem Bon.
|
|
81
81
|
*/
|
|
82
|
-
function
|
|
83
|
-
if (
|
|
82
|
+
function qrSheetWidthFraction(payload, paperSize, size = 'auto') {
|
|
83
|
+
if (payload === '')
|
|
84
84
|
return 0;
|
|
85
85
|
// Ein Inhalt, der in keine QR-Version passt (Fehlerkorrektur M, hoechstens
|
|
86
|
-
// 2331 Byte), wuerde hier `
|
|
86
|
+
// 2331 Byte), wuerde hier `qrSizingFor` -> `qrModuleCount` zum Werfen
|
|
87
87
|
// bringen -- und riss damit jeden Zeichner mit, der das Blatt baut
|
|
88
88
|
// (Bildschirm, Bon, PDF). 0, wie bei leerer Nutzlast: der Beleg steht ohne
|
|
89
|
-
// QR, statt gar nicht zu stehen. `
|
|
89
|
+
// QR, statt gar nicht zu stehen. `qrModuleCount` selbst wirft weiter -- wer
|
|
90
90
|
// es ausserhalb des Blatts aufruft, soll den Fehler sehen.
|
|
91
|
-
if (!(0, index_js_1.
|
|
91
|
+
if (!(0, index_js_1.qrFitsInVersion)(payload))
|
|
92
92
|
return 0;
|
|
93
|
-
const papierPunkte = index_js_1.
|
|
94
|
-
const mass = (0, index_js_1.
|
|
95
|
-
if (mass.
|
|
96
|
-
return mass.
|
|
97
|
-
return ((mass.
|
|
93
|
+
const papierPunkte = index_js_1.QR_PRINT_WIDTH_DOTS[paperSize];
|
|
94
|
+
const mass = (0, index_js_1.qrSizingFor)({ payload: payload, paperWidthDots: papierPunkte, moduleSize: size });
|
|
95
|
+
if (mass.fits)
|
|
96
|
+
return mass.widthDots / papierPunkte;
|
|
97
|
+
return ((mass.modules + 2 * index_js_1.QR_QUIET_ZONE_MODULES) * (0, index_js_1.qrRasterDots)(paperSize, mass.modules, { moduleSize: size })) / papierPunkte;
|
|
98
98
|
}
|
|
99
|
-
function
|
|
100
|
-
const grid = (0, grid_js_1.renderReceiptGrid)(layout,
|
|
101
|
-
const zeichen = grid.
|
|
102
|
-
const papier =
|
|
103
|
-
const qrGroesse =
|
|
104
|
-
const leerzeile = {
|
|
99
|
+
function receiptSheet(layout, options = {}) {
|
|
100
|
+
const grid = (0, grid_js_1.renderReceiptGrid)(layout, options.charsPerLine === undefined ? {} : { charsPerLine: options.charsPerLine });
|
|
101
|
+
const zeichen = grid.charsPerLine;
|
|
102
|
+
const papier = paperSizeForChars(zeichen, layout.paperSize);
|
|
103
|
+
const qrGroesse = options.qrModuleSize ?? 'auto';
|
|
104
|
+
const leerzeile = { kind: 'line', text: ' '.repeat(zeichen), bold: false, blank: true };
|
|
105
105
|
const block = (z) => z.kind === 'qr'
|
|
106
|
-
? {
|
|
107
|
-
: {
|
|
106
|
+
? { kind: 'qr', payload: z.qr ?? '', widthFraction: qrSheetWidthFraction(z.qr ?? '', papier, qrGroesse) }
|
|
107
|
+
: { kind: 'line', text: z.text, bold: z.bold, blank: z.kind === 'space' };
|
|
108
108
|
const bloecke = [];
|
|
109
109
|
let i = 0;
|
|
110
|
-
if (
|
|
110
|
+
if (options.logo) {
|
|
111
111
|
// Fuehrende Aufdrucke (Testkasse, Testsignatur) bleiben ganz oben: wer den
|
|
112
112
|
// Beleg sieht, sieht zuerst, dass er nicht gilt.
|
|
113
113
|
while (i < grid.lines.length && grid.lines[i].kind === 'banner') {
|
|
@@ -118,21 +118,21 @@ function belegBlatt(layout, optionen = {}) {
|
|
|
118
118
|
// Rahmen oder an den Firmennamen kleben.
|
|
119
119
|
if (i > 0)
|
|
120
120
|
bloecke.push(leerzeile);
|
|
121
|
-
bloecke.push({
|
|
121
|
+
bloecke.push({ kind: 'logo', ...logoDimensions(options.logo, zeichen) });
|
|
122
122
|
bloecke.push(leerzeile);
|
|
123
123
|
}
|
|
124
124
|
for (; i < grid.lines.length; i += 1)
|
|
125
125
|
bloecke.push(block(grid.lines[i]));
|
|
126
|
-
if (
|
|
127
|
-
// Das Raster deckt nur die beiden bekannten Papierbreiten ab (`
|
|
126
|
+
if (options.brandMark === true) {
|
|
127
|
+
// Das Raster deckt nur die beiden bekannten Papierbreiten ab (`BRAND_MARK_RASTERS`).
|
|
128
128
|
// Faende sich hier eine dritte, faellt die Marke weg statt ein Raster in
|
|
129
129
|
// falscher Groesse zu drucken -- derselbe Grundsatz wie beim Firmenlogo:
|
|
130
130
|
// eine Marke ist Zierde, der Beleg ist Pflicht.
|
|
131
|
-
const raster = marke_daten_js_1.
|
|
131
|
+
const raster = marke_daten_js_1.BRAND_MARK_RASTERS[papier];
|
|
132
132
|
if (raster) {
|
|
133
133
|
bloecke.push(leerzeile);
|
|
134
|
-
bloecke.push({
|
|
134
|
+
bloecke.push({ kind: 'brandMark', width: raster.width, height: raster.height });
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
|
-
return { zeichen, bloecke };
|
|
137
|
+
return { charsPerLine: zeichen, blocks: bloecke };
|
|
138
138
|
}
|
|
@@ -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[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.distributeDiscount = distributeDiscount;
|
|
4
4
|
const receipt_item_js_1 = require("../models/receipt-item.js");
|
|
5
5
|
/**
|
|
6
6
|
* Rabatt als negative Position(en) — eine je Steuersatz, anteilig zum
|
|
@@ -12,15 +12,15 @@ const receipt_item_js_1 = require("../models/receipt-item.js");
|
|
|
12
12
|
* Abrunden uebrig bleiben, gehen der Reihe nach an die Gruppen mit dem
|
|
13
13
|
* groessten Bruchteil; keine Zeile ist je groesser als der Umsatz ihres Satzes.
|
|
14
14
|
*/
|
|
15
|
-
function
|
|
16
|
-
if (!Number.isInteger(
|
|
15
|
+
function distributeDiscount(items, discountCents, name = 'Rabatt') {
|
|
16
|
+
if (!Number.isInteger(discountCents) || discountCents < 0) {
|
|
17
17
|
throw new Error('Rabatt muss eine ganze Zahl in Cent >= 0 sein');
|
|
18
18
|
}
|
|
19
|
-
if (
|
|
19
|
+
if (discountCents === 0)
|
|
20
20
|
return [];
|
|
21
21
|
// Umsatz je Steuersatz (nur positive Positionen -- Rabatte/Stornos zaehlen nicht mit)
|
|
22
22
|
const gruppen = new Map();
|
|
23
|
-
for (const p of
|
|
23
|
+
for (const p of items) {
|
|
24
24
|
const betrag = (0, receipt_item_js_1.receiptItemTotalCents)(p);
|
|
25
25
|
if (betrag <= 0)
|
|
26
26
|
continue;
|
|
@@ -30,12 +30,12 @@ function verteileRabatt(positionen, rabattCents, name = 'Rabatt') {
|
|
|
30
30
|
gruppen.set(key, g);
|
|
31
31
|
}
|
|
32
32
|
const gesamt = [...gruppen.values()].reduce((s, g) => s + g.umsatz, 0);
|
|
33
|
-
if (
|
|
33
|
+
if (discountCents > gesamt)
|
|
34
34
|
throw new Error('Rabatt uebersteigt den Umsatz');
|
|
35
35
|
const liste = [...gruppen.values()];
|
|
36
|
-
const exakt = liste.map((g) => (
|
|
36
|
+
const exakt = liste.map((g) => (discountCents * g.umsatz) / gesamt);
|
|
37
37
|
const anteile = exakt.map((x) => Math.floor(x));
|
|
38
|
-
let rest =
|
|
38
|
+
let rest = discountCents - anteile.reduce((s, a) => s + a, 0);
|
|
39
39
|
// Reihenfolge fuer die Restcent: groesster Bruchteil zuerst, bei Gleichstand groesserer Umsatz
|
|
40
40
|
const reihenfolge = liste.map((_, i) => i).sort((a, b) => (exakt[b] - anteile[b]) - (exakt[a] - anteile[a]) || liste[b].umsatz - liste[a].umsatz);
|
|
41
41
|
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 {};
|