@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
|
@@ -23,46 +23,46 @@ import type { PosPaperSize, QrSize } from './escpos.js';
|
|
|
23
23
|
* alten Wert des nativen ESC/POS-Wegs), in Dart bei 6; derselbe Beleg kam
|
|
24
24
|
* dadurch je nach Paket verschieden gross aus dem Drucker. Einheitlich gilt
|
|
25
25
|
* jetzt 6: der Wert von Dart und vom Epson-Weg, und ein groesseres Modul
|
|
26
|
-
* liest sich besser. `
|
|
27
|
-
* `
|
|
26
|
+
* liest sich besser. `small` (4) druckt den QR so gross wie frueher `auto`;
|
|
27
|
+
* `medium` (6) und `large` (8) waehlt ein Mensch.
|
|
28
28
|
*/
|
|
29
|
-
export type
|
|
29
|
+
export type QrModuleSize = 'auto' | 'small' | 'medium' | 'large';
|
|
30
30
|
/** Groesste Modulgroesse in Druckpunkten, die der jeweilige Deckel zulaesst. */
|
|
31
|
-
export declare const
|
|
31
|
+
export declare const QR_MODULE_SIZE_CAP: Readonly<Record<QrModuleSize, number>>;
|
|
32
32
|
/**
|
|
33
33
|
* Ergebnis der Modulgroessen-Rechnung.
|
|
34
34
|
*
|
|
35
|
-
* Traegt bewusst mehr als die Zahl: ob ueberhaupt etwas passt (`
|
|
36
|
-
* nur unter der Mindestgroesse (`
|
|
37
|
-
* wird (`
|
|
35
|
+
* Traegt bewusst mehr als die Zahl: ob ueberhaupt etwas passt (`fits`), ob
|
|
36
|
+
* nur unter der Mindestgroesse (`belowMinimum`) und wie breit das Symbol
|
|
37
|
+
* wird (`widthDots`). Eine blosse Zahl haette die Ausnahme verschwiegen.
|
|
38
38
|
*/
|
|
39
|
-
export interface
|
|
39
|
+
export interface QrSizing {
|
|
40
40
|
/**
|
|
41
41
|
* Modulgroesse in Druckpunkten, `null` wenn das Symbol auch mit der
|
|
42
42
|
* Ausnahmegroesse nicht aufs Papier passt.
|
|
43
43
|
*/
|
|
44
|
-
readonly
|
|
44
|
+
readonly moduleDots: QrSize | null;
|
|
45
45
|
/** Modulanzahl des Symbols (ohne Ruhezone). */
|
|
46
|
-
readonly
|
|
46
|
+
readonly modules: number;
|
|
47
47
|
/** Gesamtbreite inklusive Ruhezone in Druckpunkten; 0, wenn nichts passt. */
|
|
48
|
-
readonly
|
|
48
|
+
readonly widthDots: number;
|
|
49
49
|
/**
|
|
50
|
-
* Gedruckt wird unter `
|
|
50
|
+
* Gedruckt wird unter `QR_MIN_MODULE_DOTS`. Erlaubt, aber eine Ausnahme, von
|
|
51
51
|
* der der Aufrufer erfahren muss — billige Thermodrucker und Handykameras
|
|
52
52
|
* tun sich damit schwer, besonders auf gewelltem Papier.
|
|
53
53
|
*/
|
|
54
|
-
readonly
|
|
54
|
+
readonly belowMinimum: boolean;
|
|
55
55
|
/** Kurz fuer `punkte !== null`. */
|
|
56
|
-
readonly
|
|
56
|
+
readonly fits: boolean;
|
|
57
57
|
}
|
|
58
58
|
/** Ruhezone je Seite, in Modulen (QR-Norm). */
|
|
59
|
-
export declare const
|
|
59
|
+
export declare const QR_QUIET_ZONE_MODULES = 4;
|
|
60
60
|
/** Untergrenze: 4 Punkte sind bei 203 dpi rund 0,5 mm je Modul. */
|
|
61
|
-
export declare const
|
|
62
|
-
/** Ausnahme, wenn `
|
|
63
|
-
export declare const
|
|
61
|
+
export declare const QR_MIN_MODULE_DOTS = 4;
|
|
62
|
+
/** Ausnahme, wenn `QR_MIN_MODULE_DOTS` nicht passt – gemeldet, nicht still. */
|
|
63
|
+
export declare const QR_EXCEPTION_MODULE_DOTS = 3;
|
|
64
64
|
/** Obergrenze des Druckbefehls in diesem Stack (`GS ( k` Funktion 167: 1..8). */
|
|
65
|
-
export declare const
|
|
65
|
+
export declare const QR_MAX_MODULE_DOTS = 8;
|
|
66
66
|
/**
|
|
67
67
|
* Druckbreite des Kopfes in Punkten (203 dpi): 58 mm = 384, 80 mm = 576 —
|
|
68
68
|
* Zwilling von `KeckPaperSize.druckPunkte`.
|
|
@@ -73,9 +73,9 @@ export declare const QR_HOECHST_PUNKTE = 8;
|
|
|
73
73
|
* die echte Kopfbreite — ein QR, der auch nur einen Punkt zu breit ist, wird
|
|
74
74
|
* von den meisten Geraeten gar nicht gedruckt.
|
|
75
75
|
*/
|
|
76
|
-
export declare const
|
|
76
|
+
export declare const QR_PRINT_WIDTH_DOTS: Readonly<Record<PosPaperSize, number>>;
|
|
77
77
|
/**
|
|
78
|
-
* Modulanzahl, die `
|
|
78
|
+
* Modulanzahl, die `payload` bei Fehlerkorrektur **M** braucht.
|
|
79
79
|
*
|
|
80
80
|
* Alle Druckwege setzen den QR mit Fehlerkorrektur **M** (nativer
|
|
81
81
|
* ESC/POS-Befehl, ePOS `level_m`; das Raster fuer den Bildweg rechnet der
|
|
@@ -90,38 +90,38 @@ export declare const QR_DRUCK_PUNKTE: Readonly<Record<PosPaperSize, number>>;
|
|
|
90
90
|
* langem Inhalt. Ein still zurueckgegebenes "passt nicht" haette den
|
|
91
91
|
* Datenfehler als Papierfehler getarnt.
|
|
92
92
|
*/
|
|
93
|
-
export declare function
|
|
93
|
+
export declare function qrModuleCount(payload: string): number;
|
|
94
94
|
/**
|
|
95
|
-
* Ob `
|
|
96
|
-
* dieselbe Tabelle wie `
|
|
95
|
+
* Ob `payload` in irgendeine QR-Version 1..40 bei Fehlerkorrektur M passt --
|
|
96
|
+
* dieselbe Tabelle wie `qrModuleCount`, aber ohne zu werfen.
|
|
97
97
|
*
|
|
98
98
|
* Fuer Aufrufer, denen ein zu langer Inhalt kein Programmierfehler ist,
|
|
99
99
|
* sondern ein Datenfehler, den sie selbst behandeln (das Beleg-Blatt: ohne
|
|
100
100
|
* QR weiterbauen statt den ganzen Zeichner mitzureissen).
|
|
101
101
|
*/
|
|
102
|
-
export declare function
|
|
102
|
+
export declare function qrFitsInVersion(payload: string): boolean;
|
|
103
103
|
/**
|
|
104
|
-
* Groesste Modulgroesse, mit der `
|
|
105
|
-
* `
|
|
104
|
+
* Groesste Modulgroesse, mit der `moduleCount` Module **samt Ruhezone** in
|
|
105
|
+
* `paperWidthDots` passen, gedeckelt durch `moduleSize`.
|
|
106
106
|
*
|
|
107
107
|
* Wirft bei sinnlosen Eingaben: eine Papierbreite von 0 oder ein Symbol ohne
|
|
108
108
|
* Module ist ein Programmierfehler, und ein still zurueckgegebenes "passt
|
|
109
109
|
* nicht" haette ihn als Druckerproblem getarnt.
|
|
110
110
|
*/
|
|
111
|
-
export declare function
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}):
|
|
111
|
+
export declare function computeQrSizing(options: {
|
|
112
|
+
paperWidthDots: number;
|
|
113
|
+
moduleCount: number;
|
|
114
|
+
moduleSize?: QrModuleSize;
|
|
115
|
+
}): QrSizing;
|
|
116
116
|
/**
|
|
117
|
-
* Wie `
|
|
117
|
+
* Wie `computeQrSizing`, nur mit der Modulanzahl aus `payload`.
|
|
118
118
|
*
|
|
119
119
|
* Eine leere Nutzlast ergibt kein Symbol — sie "passt nicht", statt zu
|
|
120
120
|
* werfen: der Aufrufer behandelt den Fall ohnehin schon (leerer QR am Beleg
|
|
121
121
|
* ist ein Datenfehler, kein Papierfehler).
|
|
122
122
|
*/
|
|
123
|
-
export declare function
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
}):
|
|
123
|
+
export declare function qrSizingFor(options: {
|
|
124
|
+
payload: string;
|
|
125
|
+
paperWidthDots: number;
|
|
126
|
+
moduleSize?: QrModuleSize;
|
|
127
|
+
}): QrSizing;
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.
|
|
6
|
-
exports.
|
|
7
|
-
exports.
|
|
3
|
+
exports.QR_PRINT_WIDTH_DOTS = exports.QR_MAX_MODULE_DOTS = exports.QR_EXCEPTION_MODULE_DOTS = exports.QR_MIN_MODULE_DOTS = exports.QR_QUIET_ZONE_MODULES = exports.QR_MODULE_SIZE_CAP = void 0;
|
|
4
|
+
exports.qrModuleCount = qrModuleCount;
|
|
5
|
+
exports.qrFitsInVersion = qrFitsInVersion;
|
|
6
|
+
exports.computeQrSizing = computeQrSizing;
|
|
7
|
+
exports.qrSizingFor = qrSizingFor;
|
|
8
8
|
/** Groesste Modulgroesse in Druckpunkten, die der jeweilige Deckel zulaesst. */
|
|
9
|
-
exports.
|
|
9
|
+
exports.QR_MODULE_SIZE_CAP = {
|
|
10
10
|
auto: 6,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
small: 4,
|
|
12
|
+
medium: 6,
|
|
13
|
+
large: 8,
|
|
14
14
|
};
|
|
15
15
|
// --------------------------------------------------------------- Konstanten
|
|
16
16
|
/** Ruhezone je Seite, in Modulen (QR-Norm). */
|
|
17
|
-
exports.
|
|
17
|
+
exports.QR_QUIET_ZONE_MODULES = 4;
|
|
18
18
|
/** Untergrenze: 4 Punkte sind bei 203 dpi rund 0,5 mm je Modul. */
|
|
19
|
-
exports.
|
|
20
|
-
/** Ausnahme, wenn `
|
|
21
|
-
exports.
|
|
19
|
+
exports.QR_MIN_MODULE_DOTS = 4;
|
|
20
|
+
/** Ausnahme, wenn `QR_MIN_MODULE_DOTS` nicht passt – gemeldet, nicht still. */
|
|
21
|
+
exports.QR_EXCEPTION_MODULE_DOTS = 3;
|
|
22
22
|
/** Obergrenze des Druckbefehls in diesem Stack (`GS ( k` Funktion 167: 1..8). */
|
|
23
|
-
exports.
|
|
23
|
+
exports.QR_MAX_MODULE_DOTS = 8;
|
|
24
24
|
/**
|
|
25
25
|
* Druckbreite des Kopfes in Punkten (203 dpi): 58 mm = 384, 80 mm = 576 —
|
|
26
26
|
* Zwilling von `KeckPaperSize.druckPunkte`.
|
|
@@ -31,7 +31,7 @@ exports.QR_HOECHST_PUNKTE = 8;
|
|
|
31
31
|
* die echte Kopfbreite — ein QR, der auch nur einen Punkt zu breit ist, wird
|
|
32
32
|
* von den meisten Geraeten gar nicht gedruckt.
|
|
33
33
|
*/
|
|
34
|
-
exports.
|
|
34
|
+
exports.QR_PRINT_WIDTH_DOTS = { mm58: 384, mm80: 576 };
|
|
35
35
|
/**
|
|
36
36
|
* Nutzlast in Byte, die eine QR-Version 1..40 bei Fehlerkorrektur **M** im
|
|
37
37
|
* Byte-Modus aufnimmt (ISO/IEC 18004, Tabelle 7).
|
|
@@ -48,7 +48,7 @@ const BYTE_KAPAZITAET_M = [
|
|
|
48
48
|
];
|
|
49
49
|
// ------------------------------------------------------------- oeffentlich
|
|
50
50
|
/**
|
|
51
|
-
* Modulanzahl, die `
|
|
51
|
+
* Modulanzahl, die `payload` bei Fehlerkorrektur **M** braucht.
|
|
52
52
|
*
|
|
53
53
|
* Alle Druckwege setzen den QR mit Fehlerkorrektur **M** (nativer
|
|
54
54
|
* ESC/POS-Befehl, ePOS `level_m`; das Raster fuer den Bildweg rechnet der
|
|
@@ -63,8 +63,8 @@ const BYTE_KAPAZITAET_M = [
|
|
|
63
63
|
* langem Inhalt. Ein still zurueckgegebenes "passt nicht" haette den
|
|
64
64
|
* Datenfehler als Papierfehler getarnt.
|
|
65
65
|
*/
|
|
66
|
-
function
|
|
67
|
-
const laenge = new TextEncoder().encode(
|
|
66
|
+
function qrModuleCount(payload) {
|
|
67
|
+
const laenge = new TextEncoder().encode(payload).length;
|
|
68
68
|
for (let i = 0; i < BYTE_KAPAZITAET_M.length; i++) {
|
|
69
69
|
if (laenge <= BYTE_KAPAZITAET_M[i])
|
|
70
70
|
return 17 + 4 * (i + 1);
|
|
@@ -72,69 +72,69 @@ function qrModulAnzahl(nutzlast) {
|
|
|
72
72
|
throw new Error('QR-Inhalt ist zu lang');
|
|
73
73
|
}
|
|
74
74
|
/**
|
|
75
|
-
* Ob `
|
|
76
|
-
* dieselbe Tabelle wie `
|
|
75
|
+
* Ob `payload` in irgendeine QR-Version 1..40 bei Fehlerkorrektur M passt --
|
|
76
|
+
* dieselbe Tabelle wie `qrModuleCount`, aber ohne zu werfen.
|
|
77
77
|
*
|
|
78
78
|
* Fuer Aufrufer, denen ein zu langer Inhalt kein Programmierfehler ist,
|
|
79
79
|
* sondern ein Datenfehler, den sie selbst behandeln (das Beleg-Blatt: ohne
|
|
80
80
|
* QR weiterbauen statt den ganzen Zeichner mitzureissen).
|
|
81
81
|
*/
|
|
82
|
-
function
|
|
83
|
-
const laenge = new TextEncoder().encode(
|
|
82
|
+
function qrFitsInVersion(payload) {
|
|
83
|
+
const laenge = new TextEncoder().encode(payload).length;
|
|
84
84
|
return laenge <= BYTE_KAPAZITAET_M[BYTE_KAPAZITAET_M.length - 1];
|
|
85
85
|
}
|
|
86
86
|
/**
|
|
87
|
-
* Groesste Modulgroesse, mit der `
|
|
88
|
-
* `
|
|
87
|
+
* Groesste Modulgroesse, mit der `moduleCount` Module **samt Ruhezone** in
|
|
88
|
+
* `paperWidthDots` passen, gedeckelt durch `moduleSize`.
|
|
89
89
|
*
|
|
90
90
|
* Wirft bei sinnlosen Eingaben: eine Papierbreite von 0 oder ein Symbol ohne
|
|
91
91
|
* Module ist ein Programmierfehler, und ein still zurueckgegebenes "passt
|
|
92
92
|
* nicht" haette ihn als Druckerproblem getarnt.
|
|
93
93
|
*/
|
|
94
|
-
function
|
|
95
|
-
const { papierbreitePunkte, moduleAnzahl } = options;
|
|
96
|
-
const groesse = options.
|
|
94
|
+
function computeQrSizing(options) {
|
|
95
|
+
const { paperWidthDots: papierbreitePunkte, moduleCount: moduleAnzahl } = options;
|
|
96
|
+
const groesse = options.moduleSize ?? 'auto';
|
|
97
97
|
if (!Number.isInteger(papierbreitePunkte) || papierbreitePunkte <= 0) {
|
|
98
98
|
throw new Error('papierbreitePunkte muss eine Ganzzahl > 0 sein');
|
|
99
99
|
}
|
|
100
100
|
if (!Number.isInteger(moduleAnzahl) || moduleAnzahl <= 0) {
|
|
101
101
|
throw new Error('moduleAnzahl muss eine Ganzzahl > 0 sein');
|
|
102
102
|
}
|
|
103
|
-
const roh = exports.
|
|
103
|
+
const roh = exports.QR_MODULE_SIZE_CAP[groesse];
|
|
104
104
|
if (roh === undefined) {
|
|
105
105
|
throw new Error(`Unbekannte QR-Modulgroesse: ${String(groesse)}`);
|
|
106
106
|
}
|
|
107
|
-
const gesamtModule = moduleAnzahl + exports.
|
|
107
|
+
const gesamtModule = moduleAnzahl + exports.QR_QUIET_ZONE_MODULES * 2;
|
|
108
108
|
const passend = Math.floor(papierbreitePunkte / gesamtModule);
|
|
109
|
-
if (passend < exports.
|
|
110
|
-
return {
|
|
109
|
+
if (passend < exports.QR_EXCEPTION_MODULE_DOTS) {
|
|
110
|
+
return { moduleDots: null, modules: moduleAnzahl, widthDots: 0, belowMinimum: false, fits: false };
|
|
111
111
|
}
|
|
112
|
-
const deckel = Math.min(Math.max(roh, exports.
|
|
113
|
-
const punkte = passend < exports.
|
|
112
|
+
const deckel = Math.min(Math.max(roh, exports.QR_EXCEPTION_MODULE_DOTS), exports.QR_MAX_MODULE_DOTS);
|
|
113
|
+
const punkte = passend < exports.QR_MIN_MODULE_DOTS ? exports.QR_EXCEPTION_MODULE_DOTS : Math.min(passend, deckel);
|
|
114
114
|
return {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
115
|
+
moduleDots: punkte,
|
|
116
|
+
modules: moduleAnzahl,
|
|
117
|
+
widthDots: gesamtModule * punkte,
|
|
118
|
+
belowMinimum: punkte < exports.QR_MIN_MODULE_DOTS,
|
|
119
|
+
fits: true,
|
|
120
120
|
};
|
|
121
121
|
}
|
|
122
122
|
/**
|
|
123
|
-
* Wie `
|
|
123
|
+
* Wie `computeQrSizing`, nur mit der Modulanzahl aus `payload`.
|
|
124
124
|
*
|
|
125
125
|
* Eine leere Nutzlast ergibt kein Symbol — sie "passt nicht", statt zu
|
|
126
126
|
* werfen: der Aufrufer behandelt den Fall ohnehin schon (leerer QR am Beleg
|
|
127
127
|
* ist ein Datenfehler, kein Papierfehler).
|
|
128
128
|
*/
|
|
129
|
-
function
|
|
130
|
-
if (options.
|
|
131
|
-
return {
|
|
129
|
+
function qrSizingFor(options) {
|
|
130
|
+
if (options.payload === '') {
|
|
131
|
+
return { moduleDots: null, modules: 0, widthDots: 0, belowMinimum: false, fits: false };
|
|
132
132
|
}
|
|
133
133
|
const weiter = {
|
|
134
|
-
|
|
135
|
-
|
|
134
|
+
paperWidthDots: options.paperWidthDots,
|
|
135
|
+
moduleCount: qrModuleCount(options.payload),
|
|
136
136
|
};
|
|
137
|
-
if (options.
|
|
138
|
-
weiter.
|
|
139
|
-
return
|
|
137
|
+
if (options.moduleSize !== undefined)
|
|
138
|
+
weiter.moduleSize = options.moduleSize;
|
|
139
|
+
return computeQrSizing(weiter);
|
|
140
140
|
}
|
|
@@ -87,9 +87,9 @@ export declare function usbFindPrinterEndpoint(d: {
|
|
|
87
87
|
*/
|
|
88
88
|
export declare class UsbTimeoutError extends Error {
|
|
89
89
|
readonly name = "UsbTimeoutError";
|
|
90
|
-
readonly
|
|
90
|
+
readonly step: string;
|
|
91
91
|
readonly timeoutMs: number;
|
|
92
|
-
constructor(
|
|
92
|
+
constructor(step: string, timeoutMs: number);
|
|
93
93
|
}
|
|
94
94
|
/**
|
|
95
95
|
* Bytes blockweise an den OUT-Endpunkt; liefert die geschriebene Gesamtzahl,
|
|
@@ -56,11 +56,11 @@ function usbFindPrinterEndpoint(d) {
|
|
|
56
56
|
*/
|
|
57
57
|
class UsbTimeoutError extends Error {
|
|
58
58
|
name = 'UsbTimeoutError';
|
|
59
|
-
|
|
59
|
+
step;
|
|
60
60
|
timeoutMs;
|
|
61
|
-
constructor(
|
|
62
|
-
super(`USB-Drucker antwortet nicht (${
|
|
63
|
-
this.
|
|
61
|
+
constructor(step, timeoutMs) {
|
|
62
|
+
super(`USB-Drucker antwortet nicht (${step}, Zeitlimit ${timeoutMs} ms überschritten) — Kabel/Gerät prüfen.`);
|
|
63
|
+
this.step = step;
|
|
64
64
|
this.timeoutMs = timeoutMs;
|
|
65
65
|
}
|
|
66
66
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
2
|
import type { ReceiptLayout } from '../receipt/layout.js';
|
|
3
|
-
import { type
|
|
4
|
-
import type {
|
|
3
|
+
import { type ReceiptSheet, type SheetLogoSize } from '../receipt/blatt.js';
|
|
4
|
+
import type { QrModuleSize } from '../printing/qr-groesse.js';
|
|
5
5
|
/**
|
|
6
6
|
* React-Adapter: zeichnet ein Beleg-Layout (siehe ../receipt/layout.ts).
|
|
7
7
|
*
|
|
@@ -31,69 +31,69 @@ export interface ReceiptLayoutViewProps {
|
|
|
31
31
|
* Fuer Bildschirme, auf denen der Beleg nur zur Kontrolle steht -- der
|
|
32
32
|
* Signatur-QR gehoert dem Kunden und wird erst auf Verlangen freigegeben.
|
|
33
33
|
*/
|
|
34
|
-
|
|
34
|
+
qrHidden?: boolean;
|
|
35
35
|
/** Text auf dem verdeckten QR (Vorgabe „Antippen zum Anzeigen“). */
|
|
36
|
-
|
|
36
|
+
qrHiddenText?: string;
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
|
-
* @deprecated Seit 0.14.0: [
|
|
39
|
+
* @deprecated Seit 0.14.0: [ReceiptSheetView] setzt den Beleg zeichengleich zu
|
|
40
40
|
* Bon und PDF (Raster, Logo, Marke). Diese Ansicht rechnet Spalten mit Flex
|
|
41
41
|
* und bricht darum anders um als das Papier.
|
|
42
42
|
*/
|
|
43
|
-
export declare function ReceiptLayoutView({ layout, className, renderQr, qrVerdeckt, qrVerdecktText }: ReceiptLayoutViewProps): ReactNode;
|
|
43
|
+
export declare function ReceiptLayoutView({ layout, className, renderQr, qrHidden: qrVerdeckt, qrHiddenText: qrVerdecktText }: ReceiptLayoutViewProps): ReactNode;
|
|
44
44
|
/**
|
|
45
45
|
* Verdeckter QR: weichgezeichnet und nicht scannbar, bis der Betrachter ihn
|
|
46
46
|
* antippt. Die Nutzlast bleibt trotzdem als `data-qr` am Element -- fuer Tests
|
|
47
47
|
* und Werkzeuge, nicht fuers Auge.
|
|
48
48
|
*/
|
|
49
|
-
export declare function
|
|
49
|
+
export declare function HiddenQr({ data, text, children }: {
|
|
50
50
|
data: string;
|
|
51
51
|
text?: string;
|
|
52
52
|
children: ReactNode;
|
|
53
53
|
}): ReactNode;
|
|
54
|
-
export interface
|
|
55
|
-
|
|
54
|
+
export interface ReceiptSheetLinesProps {
|
|
55
|
+
sheet: ReceiptSheet;
|
|
56
56
|
/** Adresse des Firmenlogos; ohne sie bleibt der Logo-Block leer (Platz bleibt). */
|
|
57
57
|
logoUrl?: string;
|
|
58
58
|
/**
|
|
59
|
-
* Zeichnet den QR in seinen Kasten (`
|
|
59
|
+
* Zeichnet den QR in seinen Kasten (`qrSheetWidthFraction`). Der Kasten schliesst
|
|
60
60
|
* die Ruhezone von 4 Modulen je Seite ein und setzt Fehlerkorrektur M
|
|
61
61
|
* voraus: das Symbol also mit Korrektur M und 4 Modulen Ruhezone zeichnen
|
|
62
62
|
* und den Kasten ganz ausfuellen -- dann ist ein Modul so gross wie am Bon.
|
|
63
63
|
*/
|
|
64
64
|
renderQr?: (data: string) => ReactNode;
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
qrHidden?: boolean;
|
|
66
|
+
qrHiddenText?: string;
|
|
67
67
|
className?: string;
|
|
68
68
|
}
|
|
69
69
|
/**
|
|
70
70
|
* Das Blatt am Bildschirm -- Zeile fuer Zeile dieselben Zeichen wie am Bon und
|
|
71
71
|
* im PDF. Masse in `ch`: eine Zeichenbreite ist `1ch`, eine Zeile `2ch`, das
|
|
72
|
-
* Blatt `
|
|
72
|
+
* Blatt `charsPerLine`ch breit. Der Verbraucher bestimmt nur Schrift (monospace,
|
|
73
73
|
* Vorgabe ueber `--keck-blatt-schrift`) und Schriftgroesse; alles andere steht
|
|
74
74
|
* im Blatt.
|
|
75
75
|
*/
|
|
76
|
-
export declare function
|
|
77
|
-
export interface
|
|
76
|
+
export declare function ReceiptSheetLines({ sheet: blatt, logoUrl, renderQr, qrHidden: qrVerdeckt, qrHiddenText: qrVerdecktText, className }: ReceiptSheetLinesProps): ReactNode;
|
|
77
|
+
export interface ReceiptSheetViewProps extends Omit<ReceiptSheetLinesProps, 'sheet' | 'logoUrl'> {
|
|
78
78
|
layout: ReceiptLayout;
|
|
79
|
-
|
|
79
|
+
charsPerLine?: number;
|
|
80
80
|
/** Firmenlogo und Stufe (`logoSkala`); das Pixelmass liest die Ansicht selbst. */
|
|
81
81
|
logo?: {
|
|
82
82
|
url: string;
|
|
83
|
-
|
|
83
|
+
size: SheetLogoSize;
|
|
84
84
|
} | null;
|
|
85
|
-
|
|
85
|
+
brandMark?: boolean;
|
|
86
86
|
/** Geraete-Einstellung fuer die QR-Modulgroesse; Vorgabe `auto` (hoechstens 6 Punkte je Modul) — wie die Druckwege. */
|
|
87
|
-
|
|
87
|
+
qrModuleSize?: QrModuleSize;
|
|
88
88
|
}
|
|
89
89
|
/**
|
|
90
90
|
* Laedt das Logo (fuer sein Pixelmass), baut das Blatt und zeichnet es. Bis
|
|
91
91
|
* das Bild geladen ist, fehlt der Logo-Block -- die Kasse laedt das Logo ohnehin
|
|
92
92
|
* vorab in den Browser-Cache.
|
|
93
93
|
*
|
|
94
|
-
* Ein Logo ueber [
|
|
94
|
+
* Ein Logo ueber [isLogoPixelSizeAllowed] (4096x4096px, dieselbe Grenze wie das
|
|
95
95
|
* Druck-Kit beim Rastern fuer den Bon) bleibt hier ebenso ohne Logo-Block --
|
|
96
96
|
* sonst zeigte der Bildschirm ein Logo, das nie gedruckt wird: Bildschirm und
|
|
97
97
|
* Bon zeigen dasselbe Logo.
|
|
98
98
|
*/
|
|
99
|
-
export declare function
|
|
99
|
+
export declare function ReceiptSheetView({ layout, charsPerLine: zeichen, logo, brandMark: marke, qrModuleSize: qrGroesse, ...rest }: ReceiptSheetViewProps): ReactNode;
|
package/dist/cjs/react/index.js
CHANGED
|
@@ -1,24 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ReceiptLayoutView = ReceiptLayoutView;
|
|
4
|
-
exports.
|
|
5
|
-
exports.
|
|
6
|
-
exports.
|
|
4
|
+
exports.HiddenQr = HiddenQr;
|
|
5
|
+
exports.ReceiptSheetLines = ReceiptSheetLines;
|
|
6
|
+
exports.ReceiptSheetView = ReceiptSheetView;
|
|
7
7
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
8
|
const react_1 = require("react");
|
|
9
9
|
const blatt_js_1 = require("../receipt/blatt.js");
|
|
10
10
|
const marke_daten_js_1 = require("../receipt/marke-daten.js");
|
|
11
|
+
/**
|
|
12
|
+
* CSS-Klasse je Ton. Die Klassennamen bleiben die von 0.x
|
|
13
|
+
* (`keck-receipt-banner--belegart`/`--warnung`): Stylesheets der Verbraucher
|
|
14
|
+
* haengen daran, und das HTML soll durch die englischen Werte kein Byte
|
|
15
|
+
* anders werden.
|
|
16
|
+
*/
|
|
17
|
+
const BANNER_KLASSE = {
|
|
18
|
+
receipt_type: 'belegart',
|
|
19
|
+
warning: 'warnung',
|
|
20
|
+
};
|
|
11
21
|
const AUSRICHTUNG = {
|
|
12
22
|
left: 'left',
|
|
13
23
|
center: 'center',
|
|
14
24
|
right: 'right',
|
|
15
25
|
};
|
|
16
26
|
/**
|
|
17
|
-
* @deprecated Seit 0.14.0: [
|
|
27
|
+
* @deprecated Seit 0.14.0: [ReceiptSheetView] setzt den Beleg zeichengleich zu
|
|
18
28
|
* Bon und PDF (Raster, Logo, Marke). Diese Ansicht rechnet Spalten mit Flex
|
|
19
29
|
* und bricht darum anders um als das Papier.
|
|
20
30
|
*/
|
|
21
|
-
function ReceiptLayoutView({ layout, className, renderQr, qrVerdeckt = false, qrVerdecktText }) {
|
|
31
|
+
function ReceiptLayoutView({ layout, className, renderQr, qrHidden: qrVerdeckt = false, qrHiddenText: qrVerdecktText }) {
|
|
22
32
|
const klasse = className === undefined ? 'keck-receipt' : `keck-receipt ${className}`;
|
|
23
33
|
return ((0, jsx_runtime_1.jsx)("div", { className: klasse, "data-paper-size": layout.paperSize, children: layout.lines.map((zeile, index) => ((0, jsx_runtime_1.jsx)(Zeile, { zeile: zeile, renderQr: renderQr, qrVerdeckt: qrVerdeckt, qrVerdecktText: qrVerdecktText }, index))) }));
|
|
24
34
|
}
|
|
@@ -27,7 +37,7 @@ function ReceiptLayoutView({ layout, className, renderQr, qrVerdeckt = false, qr
|
|
|
27
37
|
* antippt. Die Nutzlast bleibt trotzdem als `data-qr` am Element -- fuer Tests
|
|
28
38
|
* und Werkzeuge, nicht fuers Auge.
|
|
29
39
|
*/
|
|
30
|
-
function
|
|
40
|
+
function HiddenQr({ data, text = 'Antippen zum Anzeigen', children }) {
|
|
31
41
|
const [offen, setOffen] = (0, react_1.useState)(false);
|
|
32
42
|
return ((0, jsx_runtime_1.jsxs)("button", { type: "button", className: offen ? 'keck-receipt-qr-toggle keck-receipt-qr-toggle--offen' : 'keck-receipt-qr-toggle', "aria-pressed": offen, "aria-label": offen ? 'QR-Code verdecken' : text, "data-qr": data, onClick: () => setOffen((o) => !o), style: { position: 'relative', display: 'inline-block', border: 'none', background: 'transparent', padding: 0, cursor: 'pointer' }, children: [(0, jsx_runtime_1.jsx)("span", { style: { display: 'inline-block', filter: offen ? undefined : 'blur(3px)', transition: 'filter .15s ease' }, children: children }), !offen && (
|
|
33
43
|
// Tipp-Finger statt Textzeile: versteht jeder, verdeckt fast nichts.
|
|
@@ -60,47 +70,47 @@ function Zeile({ zeile, renderQr, qrVerdeckt, qrVerdecktText }) {
|
|
|
60
70
|
case 'space':
|
|
61
71
|
return (0, jsx_runtime_1.jsx)("div", { className: "keck-receipt-space", style: { height: `${zeile.lines}em` } });
|
|
62
72
|
case 'banner':
|
|
63
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: `keck-receipt-banner keck-receipt-banner--${zeile.
|
|
73
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: `keck-receipt-banner keck-receipt-banner--${BANNER_KLASSE[zeile.tone] ?? String(zeile.tone)}`, role: zeile.tone === 'warning' ? 'alert' : undefined, style: { textAlign: 'center', fontWeight: 'bold', letterSpacing: '0.06em', padding: '0.2em 0.4em', border: '2px solid currentColor', margin: '0.3em 0' }, children: zeile.text }));
|
|
64
74
|
case 'qr':
|
|
65
75
|
{
|
|
66
76
|
const bild = renderQr !== undefined ? renderQr(zeile.data) : (0, jsx_runtime_1.jsx)("div", { "data-qr": zeile.data, "aria-label": "RKSV-QR-Code" });
|
|
67
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: "keck-receipt-qr", style: { textAlign: 'center' }, children: qrVerdeckt ? (0, jsx_runtime_1.jsx)(
|
|
77
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "keck-receipt-qr", style: { textAlign: 'center' }, children: qrVerdeckt ? (0, jsx_runtime_1.jsx)(HiddenQr, { data: zeile.data, text: qrVerdecktText, children: bild }) : bild }));
|
|
68
78
|
}
|
|
69
79
|
}
|
|
70
80
|
}
|
|
71
81
|
/**
|
|
72
82
|
* Das Blatt am Bildschirm -- Zeile fuer Zeile dieselben Zeichen wie am Bon und
|
|
73
83
|
* im PDF. Masse in `ch`: eine Zeichenbreite ist `1ch`, eine Zeile `2ch`, das
|
|
74
|
-
* Blatt `
|
|
84
|
+
* Blatt `charsPerLine`ch breit. Der Verbraucher bestimmt nur Schrift (monospace,
|
|
75
85
|
* Vorgabe ueber `--keck-blatt-schrift`) und Schriftgroesse; alles andere steht
|
|
76
86
|
* im Blatt.
|
|
77
87
|
*/
|
|
78
|
-
function
|
|
79
|
-
const z = blatt.
|
|
88
|
+
function ReceiptSheetLines({ sheet: blatt, logoUrl, renderQr, qrHidden: qrVerdeckt = false, qrHiddenText: qrVerdecktText, className }) {
|
|
89
|
+
const z = blatt.charsPerLine;
|
|
80
90
|
const klasse = className === undefined ? 'keck-blatt' : `keck-blatt ${className}`;
|
|
81
91
|
const blattStil = {
|
|
82
92
|
width: `${z}ch`,
|
|
83
93
|
fontFamily: 'var(--keck-blatt-schrift, "DM Mono", ui-monospace, Menlo, Consolas, monospace)',
|
|
84
94
|
fontVariantLigatures: 'none',
|
|
85
95
|
};
|
|
86
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: klasse, "data-zeichen": z, style: blattStil, children: blatt.
|
|
87
|
-
switch (b.
|
|
88
|
-
case '
|
|
89
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: "keck-blatt-zeile", style: { whiteSpace: 'pre', height: '2ch', lineHeight: '2ch', overflow: 'hidden', fontWeight: b.
|
|
96
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: klasse, "data-zeichen": z, style: blattStil, children: blatt.blocks.map((b, i) => {
|
|
97
|
+
switch (b.kind) {
|
|
98
|
+
case 'line':
|
|
99
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "keck-blatt-zeile", style: { whiteSpace: 'pre', height: '2ch', lineHeight: '2ch', overflow: 'hidden', fontWeight: b.bold ? 'bold' : 'normal' }, children: b.text }, i));
|
|
90
100
|
case 'logo':
|
|
91
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: "keck-blatt-logo", style: { height: `${b.
|
|
92
|
-
case '
|
|
101
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "keck-blatt-logo", style: { height: `${b.heightLines * 2}ch`, display: 'flex', justifyContent: 'center' }, children: logoUrl === undefined ? null : ((0, jsx_runtime_1.jsx)("img", { src: logoUrl, alt: "", "aria-hidden": "true", style: { width: `${b.widthFraction * z}ch`, height: `${b.heightLines * 2}ch`, objectFit: 'contain' } })) }, i));
|
|
102
|
+
case 'brandMark':
|
|
93
103
|
// Kein Rasterbild wie am Bon: Dieses Paket hat bewusst keine
|
|
94
104
|
// Abhaengigkeiten, und die Pfade liegen ohnehin schon vor (PDF
|
|
95
105
|
// zeichnet dieselben). Ein SVG bleibt in jeder Aufloesung scharf.
|
|
96
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: "keck-blatt-marke", style: { height: `${b.
|
|
106
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "keck-blatt-marke", style: { height: `${b.height / blatt_js_1.DOTS_PER_CHAR}ch`, display: 'flex', justifyContent: 'center' }, children: (0, jsx_runtime_1.jsx)("svg", { viewBox: `0 0 ${marke_daten_js_1.BRAND_MARK_PATHS.width} ${marke_daten_js_1.BRAND_MARK_PATHS.height}`, width: `${b.width / blatt_js_1.DOTS_PER_CHAR}ch`, height: `${b.height / blatt_js_1.DOTS_PER_CHAR}ch`, role: "img", "aria-label": "Kasseneck", fill: "currentColor", children: marke_daten_js_1.BRAND_MARK_PATHS.paths.map((d, j) => (0, jsx_runtime_1.jsx)("path", { d: d }, j)) }) }, i));
|
|
97
107
|
case 'qr': {
|
|
98
108
|
// Auch beim Anteil 0 (leer oder in keine Version passend) bekommt
|
|
99
109
|
// `renderQr` die Nutzlast: die Oberflaeche muss sagen koennen, dass
|
|
100
110
|
// der QR fehlt und ein Papierbeleg noetig ist. Bon und PDF lassen
|
|
101
|
-
// den QR dann weg und melden es ueber `
|
|
102
|
-
const bild = renderQr !== undefined ? renderQr(b.
|
|
103
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: "keck-blatt-qr", style: { display: 'flex', justifyContent: 'center' }, children: (0, jsx_runtime_1.jsx)("div", { style: { width: `${b.
|
|
111
|
+
// den QR dann weg und melden es ueber `qrError`.
|
|
112
|
+
const bild = renderQr !== undefined ? renderQr(b.payload) : (0, jsx_runtime_1.jsx)("div", { "data-qr": b.payload, "aria-label": "RKSV-QR-Code" });
|
|
113
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "keck-blatt-qr", style: { display: 'flex', justifyContent: 'center' }, children: (0, jsx_runtime_1.jsx)("div", { style: { width: `${b.widthFraction * z}ch`, aspectRatio: '1 / 1' }, children: qrVerdeckt ? (0, jsx_runtime_1.jsx)(HiddenQr, { data: b.payload, text: qrVerdecktText, children: bild }) : bild }) }, i));
|
|
104
114
|
}
|
|
105
115
|
}
|
|
106
116
|
}) }));
|
|
@@ -110,12 +120,12 @@ function BelegBlattZeilen({ blatt, logoUrl, renderQr, qrVerdeckt = false, qrVerd
|
|
|
110
120
|
* das Bild geladen ist, fehlt der Logo-Block -- die Kasse laedt das Logo ohnehin
|
|
111
121
|
* vorab in den Browser-Cache.
|
|
112
122
|
*
|
|
113
|
-
* Ein Logo ueber [
|
|
123
|
+
* Ein Logo ueber [isLogoPixelSizeAllowed] (4096x4096px, dieselbe Grenze wie das
|
|
114
124
|
* Druck-Kit beim Rastern fuer den Bon) bleibt hier ebenso ohne Logo-Block --
|
|
115
125
|
* sonst zeigte der Bildschirm ein Logo, das nie gedruckt wird: Bildschirm und
|
|
116
126
|
* Bon zeigen dasselbe Logo.
|
|
117
127
|
*/
|
|
118
|
-
function
|
|
128
|
+
function ReceiptSheetView({ layout, charsPerLine: zeichen, logo, brandMark: marke = false, qrModuleSize: qrGroesse, ...rest }) {
|
|
119
129
|
const [mass, setMass] = (0, react_1.useState)(null);
|
|
120
130
|
const url = logo?.url;
|
|
121
131
|
(0, react_1.useEffect)(() => {
|
|
@@ -127,7 +137,7 @@ function BelegBlattView({ layout, zeichen, logo, marke = false, qrGroesse, ...re
|
|
|
127
137
|
return undefined;
|
|
128
138
|
const bild = new Bild();
|
|
129
139
|
bild.onload = () => {
|
|
130
|
-
if (aktiv && (0, blatt_js_1.
|
|
140
|
+
if (aktiv && (0, blatt_js_1.isLogoPixelSizeAllowed)(bild.naturalWidth, bild.naturalHeight))
|
|
131
141
|
setMass({ url, breite: bild.naturalWidth, hoehe: bild.naturalHeight });
|
|
132
142
|
};
|
|
133
143
|
bild.src = url;
|
|
@@ -135,14 +145,14 @@ function BelegBlattView({ layout, zeichen, logo, marke = false, qrGroesse, ...re
|
|
|
135
145
|
aktiv = false;
|
|
136
146
|
};
|
|
137
147
|
}, [url]);
|
|
138
|
-
const optionen = { marke };
|
|
148
|
+
const optionen = { brandMark: marke };
|
|
139
149
|
if (zeichen !== undefined)
|
|
140
|
-
optionen.
|
|
150
|
+
optionen.charsPerLine = zeichen;
|
|
141
151
|
if (qrGroesse !== undefined)
|
|
142
|
-
optionen.
|
|
152
|
+
optionen.qrModuleSize = qrGroesse;
|
|
143
153
|
const geladen = logo != null && mass !== null && mass.url === logo.url;
|
|
144
154
|
if (geladen)
|
|
145
|
-
optionen.logo = {
|
|
146
|
-
const blatt = (0, blatt_js_1.
|
|
147
|
-
return geladen ? (0, jsx_runtime_1.jsx)(
|
|
155
|
+
optionen.logo = { size: logo.size, pixelWidth: mass.breite, pixelHeight: mass.hoehe };
|
|
156
|
+
const blatt = (0, blatt_js_1.receiptSheet)(layout, optionen);
|
|
157
|
+
return geladen ? (0, jsx_runtime_1.jsx)(ReceiptSheetLines, { sheet: blatt, logoUrl: logo.url, ...rest }) : (0, jsx_runtime_1.jsx)(ReceiptSheetLines, { sheet: blatt, ...rest });
|
|
148
158
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import { type
|
|
1
|
+
import type { RasterImage } from '../printing/escpos.js';
|
|
2
|
+
import { type LogoDimensions } from './blatt.js';
|
|
3
3
|
/**
|
|
4
4
|
* RGBA-Pixel (wie `ImageData.data` im Browser oder ein dekodiertes PNG in
|
|
5
5
|
* Node/Dart) -> einfarbiges Rasterbild in genau der Groesse, die das Blatt
|
|
6
6
|
* dem Logo gibt.
|
|
7
7
|
*
|
|
8
8
|
* Die Rechnung ist Vertrag und hat einen Dart-Zwilling (Golden
|
|
9
|
-
* `
|
|
9
|
+
* `expected/logo-sample.raster32.txt`): Flaechenmittel je Druckpunkt,
|
|
10
10
|
* Durchsichtiges auf Papierweiss, Helligkeit nach BT.601, Floyd-Steinberg mit
|
|
11
11
|
* Schwelle 128. Die Reihenfolge der Rechenschritte nicht aendern -- beide
|
|
12
12
|
* Sprachen rechnen mit IEEE-Doubles und kommen nur so auf dieselben Punkte.
|
|
13
13
|
*/
|
|
14
|
-
export declare function
|
|
14
|
+
export declare function rasterizeLogo(rgba: ArrayLike<number>, pxWidth: number, pxHeight: number, dimensions: LogoDimensions, chars: number): RasterImage;
|