@kreiseck/kasseneck-api 1.12.0 → 1.14.0
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 +29 -0
- package/README.md +1 -0
- package/dist/cjs/client/api.d.ts +3 -1
- package/dist/cjs/client/api.js +1 -0
- package/dist/cjs/client/aufrufe.d.ts +5 -5
- package/dist/cjs/client/aufrufe.js +7 -2
- package/dist/cjs/client/index.d.ts +1 -1
- package/dist/cjs/client/index.js +2 -1
- package/dist/cjs/client/receipts.d.ts +85 -2
- package/dist/cjs/client/receipts.js +164 -5
- package/dist/cjs/enums/voucher-type.d.ts +1 -1
- package/dist/cjs/enums/voucher-type.js +1 -1
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.js +15 -3
- package/dist/cjs/invoice/typen.d.ts +1 -1
- package/dist/cjs/models/index.d.ts +2 -1
- package/dist/cjs/models/index.js +12 -1
- package/dist/cjs/models/receipt-output.d.ts +79 -0
- package/dist/cjs/models/receipt-output.js +143 -0
- package/dist/cjs/models/receipt.d.ts +2 -2
- package/dist/cjs/models/receipt.js +2 -2
- package/dist/cjs/models/voucher.d.ts +24 -2
- package/dist/cjs/models/voucher.js +2 -2
- package/dist/cjs/partner/typen.d.ts +1 -1
- package/dist/cjs/pos/index.d.ts +2 -1
- package/dist/cjs/pos/index.js +6 -1
- package/dist/cjs/pos/schicht-typen.d.ts +2 -2
- package/dist/cjs/pos/schicht-typen.js +2 -2
- package/dist/cjs/pos/settings.d.ts +1 -1
- package/dist/cjs/pos/settings.js +5 -0
- package/dist/cjs/pos/texte.d.ts +187 -0
- package/dist/cjs/pos/texte.js +88 -0
- package/dist/cjs/receipt/due.d.ts +4 -2
- package/dist/cjs/receipt/due.js +22 -5
- package/dist/cjs/receipt/duplikat.d.ts +35 -0
- package/dist/cjs/receipt/duplikat.js +76 -0
- package/dist/cjs/receipt/gutschein-plan.d.ts +2 -0
- package/dist/cjs/receipt/gutschein-plan.js +5 -0
- package/dist/cjs/receipt/index.d.ts +1 -0
- package/dist/cjs/receipt/index.js +4 -2
- package/dist/cjs/receipt/layout.js +44 -21
- package/dist/cjs/register/pairing.d.ts +6 -2
- package/dist/cjs/register/pairing.js +1 -1
- package/dist/cjs/stored/bon-layout.js +3 -4
- package/dist/cjs/stored/vokabular.d.ts +1 -1
- package/dist/cjs/stored/vokabular.js +34 -2
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/client/api.d.ts +3 -1
- package/dist/esm/client/api.js +2 -1
- package/dist/esm/client/aufrufe.d.ts +5 -5
- package/dist/esm/client/aufrufe.js +7 -2
- package/dist/esm/client/index.d.ts +1 -1
- package/dist/esm/client/index.js +1 -1
- package/dist/esm/client/receipts.d.ts +85 -2
- package/dist/esm/client/receipts.js +164 -6
- package/dist/esm/enums/voucher-type.d.ts +1 -1
- package/dist/esm/enums/voucher-type.js +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/invoice/typen.d.ts +1 -1
- package/dist/esm/models/index.d.ts +2 -1
- package/dist/esm/models/index.js +1 -0
- package/dist/esm/models/receipt-output.d.ts +79 -0
- package/dist/esm/models/receipt-output.js +135 -0
- package/dist/esm/models/receipt.d.ts +2 -2
- package/dist/esm/models/receipt.js +2 -2
- package/dist/esm/models/voucher.d.ts +24 -2
- package/dist/esm/models/voucher.js +2 -2
- package/dist/esm/partner/typen.d.ts +1 -1
- package/dist/esm/pos/index.d.ts +2 -1
- package/dist/esm/pos/index.js +3 -1
- package/dist/esm/pos/schicht-typen.d.ts +2 -2
- package/dist/esm/pos/schicht-typen.js +2 -2
- package/dist/esm/pos/settings.d.ts +1 -1
- package/dist/esm/pos/settings.js +5 -0
- package/dist/esm/pos/texte.d.ts +187 -0
- package/dist/esm/pos/texte.js +87 -0
- package/dist/esm/receipt/due.d.ts +4 -2
- package/dist/esm/receipt/due.js +23 -6
- package/dist/esm/receipt/duplikat.d.ts +35 -0
- package/dist/esm/receipt/duplikat.js +73 -0
- package/dist/esm/receipt/gutschein-plan.d.ts +2 -0
- package/dist/esm/receipt/gutschein-plan.js +4 -0
- package/dist/esm/receipt/index.d.ts +1 -0
- package/dist/esm/receipt/index.js +1 -0
- package/dist/esm/receipt/layout.js +44 -21
- package/dist/esm/register/pairing.d.ts +6 -2
- package/dist/esm/register/pairing.js +1 -1
- package/dist/esm/stored/bon-layout.js +3 -4
- package/dist/esm/stored/vokabular.d.ts +1 -1
- package/dist/esm/stored/vokabular.js +34 -2
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/fixtures/code-table-receipts.json +1 -1
- package/fixtures/duplicate-cases.json +5616 -0
- package/fixtures/expected/cancellation-discount.grid32.txt +1 -1
- package/fixtures/expected/cancellation-discount.grid48.txt +1 -1
- package/fixtures/expected/cancellation-discount.lines.json +1 -1
- package/fixtures/expected/cancellation-discount.sheet32.json +1 -1
- package/fixtures/expected/cancellation-discount.sheet48.json +1 -1
- package/fixtures/expected/cancellation-full.grid32.txt +1 -1
- package/fixtures/expected/cancellation-full.grid48.txt +1 -1
- package/fixtures/expected/cancellation-full.lines.json +1 -1
- package/fixtures/expected/cancellation-full.sheet32.json +1 -1
- package/fixtures/expected/cancellation-full.sheet48.json +1 -1
- package/fixtures/expected/cancellation-partial.grid32.txt +1 -1
- package/fixtures/expected/cancellation-partial.grid48.txt +1 -1
- package/fixtures/expected/cancellation-partial.lines.json +1 -1
- package/fixtures/expected/cancellation-partial.sheet32.json +1 -1
- package/fixtures/expected/cancellation-partial.sheet48.json +1 -1
- package/fixtures/expected/cancellation-split-full.grid32.txt +1 -1
- package/fixtures/expected/cancellation-split-full.grid48.txt +1 -1
- package/fixtures/expected/cancellation-split-full.lines.json +1 -1
- package/fixtures/expected/cancellation-split-full.sheet32.json +1 -1
- package/fixtures/expected/cancellation-split-full.sheet48.json +1 -1
- package/fixtures/expected/cancellation-split-partial.grid32.txt +1 -1
- package/fixtures/expected/cancellation-split-partial.grid48.txt +1 -1
- package/fixtures/expected/cancellation-split-partial.lines.json +1 -1
- package/fixtures/expected/cancellation-split-partial.sheet32.json +1 -1
- package/fixtures/expected/cancellation-split-partial.sheet48.json +1 -1
- package/fixtures/expected/card-custom.grid32.txt +1 -1
- package/fixtures/expected/card-custom.grid48.txt +1 -1
- package/fixtures/expected/card-custom.lines.json +1 -1
- package/fixtures/expected/card-custom.sheet32.json +1 -1
- package/fixtures/expected/card-custom.sheet48.json +1 -1
- package/fixtures/expected/card-gptom-ios.grid32.txt +1 -1
- package/fixtures/expected/card-gptom-ios.grid48.txt +1 -1
- package/fixtures/expected/card-gptom-ios.lines.json +1 -1
- package/fixtures/expected/card-gptom-ios.sheet32.json +1 -1
- package/fixtures/expected/card-gptom-ios.sheet48.json +1 -1
- package/fixtures/expected/card-gptom.grid32.txt +1 -1
- package/fixtures/expected/card-gptom.grid48.txt +1 -1
- package/fixtures/expected/card-gptom.lines.json +1 -1
- package/fixtures/expected/card-gptom.sheet32.json +1 -1
- package/fixtures/expected/card-gptom.sheet48.json +1 -1
- package/fixtures/expected/card-hobex-cloud.grid32.txt +1 -1
- package/fixtures/expected/card-hobex-cloud.grid48.txt +1 -1
- package/fixtures/expected/card-hobex-cloud.lines.json +1 -1
- package/fixtures/expected/card-hobex-cloud.sheet32.json +1 -1
- package/fixtures/expected/card-hobex-cloud.sheet48.json +1 -1
- package/fixtures/expected/card-hobex-hps.grid32.txt +1 -1
- package/fixtures/expected/card-hobex-hps.grid48.txt +1 -1
- package/fixtures/expected/card-hobex-hps.lines.json +1 -1
- package/fixtures/expected/card-hobex-hps.sheet32.json +1 -1
- package/fixtures/expected/card-hobex-hps.sheet48.json +1 -1
- package/fixtures/expected/card-mypos.grid32.txt +1 -1
- package/fixtures/expected/card-mypos.grid48.txt +1 -1
- package/fixtures/expected/card-mypos.lines.json +1 -1
- package/fixtures/expected/card-mypos.sheet32.json +1 -1
- package/fixtures/expected/card-mypos.sheet48.json +1 -1
- package/fixtures/expected/card-stripe-eps.grid32.txt +1 -1
- package/fixtures/expected/card-stripe-eps.grid48.txt +1 -1
- package/fixtures/expected/card-stripe-eps.lines.json +1 -1
- package/fixtures/expected/card-stripe-eps.sheet32.json +1 -1
- package/fixtures/expected/card-stripe-eps.sheet48.json +1 -1
- package/fixtures/expected/card-stripe.grid32.txt +1 -1
- package/fixtures/expected/card-stripe.grid48.txt +1 -1
- package/fixtures/expected/card-stripe.lines.json +1 -1
- package/fixtures/expected/card-stripe.sheet32.json +1 -1
- package/fixtures/expected/card-stripe.sheet48.json +1 -1
- package/fixtures/expected/card-sumup.grid32.txt +1 -1
- package/fixtures/expected/card-sumup.grid48.txt +1 -1
- package/fixtures/expected/card-sumup.lines.json +1 -1
- package/fixtures/expected/card-sumup.sheet32.json +1 -1
- package/fixtures/expected/card-sumup.sheet48.json +1 -1
- package/fixtures/expected/code-table-receipt.long-item-name.iso8859_15.hex +1 -1
- package/fixtures/expected/code-table-receipt.long-item-name.pc437.hex +1 -1
- package/fixtures/expected/code-table-receipt.long-item-name.pc850.hex +1 -1
- package/fixtures/expected/code-table-receipt.long-item-name.pc858.hex +1 -1
- package/fixtures/expected/code-table-receipt.long-item-name.replacement.hex +1 -1
- package/fixtures/expected/code-table-receipt.long-item-name.wpc1252.hex +1 -1
- package/fixtures/expected/code-table-receipt.sale-cash.iso8859_15.hex +1 -1
- package/fixtures/expected/code-table-receipt.sale-cash.pc437.hex +1 -1
- package/fixtures/expected/code-table-receipt.sale-cash.pc850.hex +1 -1
- package/fixtures/expected/code-table-receipt.sale-cash.pc858.hex +1 -1
- package/fixtures/expected/code-table-receipt.sale-cash.replacement.hex +1 -1
- package/fixtures/expected/code-table-receipt.sale-cash.wpc1252.hex +1 -1
- package/fixtures/expected/code-table-receipt.special-characters.iso8859_15.hex +1 -1
- package/fixtures/expected/code-table-receipt.special-characters.pc437.hex +1 -1
- package/fixtures/expected/code-table-receipt.special-characters.pc850.hex +1 -1
- package/fixtures/expected/code-table-receipt.special-characters.pc858.hex +1 -1
- package/fixtures/expected/code-table-receipt.special-characters.replacement.hex +1 -1
- package/fixtures/expected/code-table-receipt.special-characters.wpc1252.hex +1 -1
- package/fixtures/expected/code-table-receipt.test-cashregister-sale.iso8859_15.hex +1 -1
- package/fixtures/expected/code-table-receipt.test-cashregister-sale.pc437.hex +1 -1
- package/fixtures/expected/code-table-receipt.test-cashregister-sale.pc850.hex +1 -1
- package/fixtures/expected/code-table-receipt.test-cashregister-sale.pc858.hex +1 -1
- package/fixtures/expected/code-table-receipt.test-cashregister-sale.replacement.hex +1 -1
- package/fixtures/expected/code-table-receipt.test-cashregister-sale.wpc1252.hex +1 -1
- package/fixtures/expected/discount-lines.grid32.txt +1 -1
- package/fixtures/expected/discount-lines.grid48.txt +1 -1
- package/fixtures/expected/discount-lines.lines.json +1 -1
- package/fixtures/expected/discount-lines.sheet32.json +1 -1
- package/fixtures/expected/discount-lines.sheet48.json +1 -1
- package/fixtures/expected/discount-owner-tip.grid32.txt +1 -1
- package/fixtures/expected/discount-owner-tip.grid48.txt +1 -1
- package/fixtures/expected/discount-owner-tip.lines.json +1 -1
- package/fixtures/expected/discount-owner-tip.sheet32.json +1 -1
- package/fixtures/expected/discount-owner-tip.sheet48.json +1 -1
- package/fixtures/expected/discount-simple.grid32.txt +1 -1
- package/fixtures/expected/discount-simple.grid48.txt +1 -1
- package/fixtures/expected/discount-simple.lines.json +1 -1
- package/fixtures/expected/discount-simple.sheet32.json +1 -1
- package/fixtures/expected/discount-simple.sheet48.json +1 -1
- package/fixtures/expected/discount-tip.grid32.txt +1 -1
- package/fixtures/expected/discount-tip.grid48.txt +1 -1
- package/fixtures/expected/discount-tip.lines.json +1 -1
- package/fixtures/expected/discount-tip.sheet32.json +1 -1
- package/fixtures/expected/discount-tip.sheet48.json +1 -1
- package/fixtures/expected/discount-value-voucher.grid32.txt +1 -1
- package/fixtures/expected/discount-value-voucher.grid48.txt +1 -1
- package/fixtures/expected/discount-value-voucher.lines.json +1 -1
- package/fixtures/expected/discount-value-voucher.sheet32.json +1 -1
- package/fixtures/expected/discount-value-voucher.sheet48.json +1 -1
- package/fixtures/expected/duplicate.cancellation-full.hex +44 -0
- package/fixtures/expected/duplicate.cancellation-partial.hex +33 -0
- package/fixtures/expected/duplicate.sale-cash-mm58.hex +28 -0
- package/fixtures/expected/duplicate.sale-cash-twice.hex +35 -0
- package/fixtures/expected/duplicate.sale-cash.hex +35 -0
- package/fixtures/expected/duplicate.shift-close.hex +43 -0
- package/fixtures/expected/duplicate.summer-time-last-second.hex +28 -0
- package/fixtures/expected/duplicate.summer-time-start.hex +35 -0
- package/fixtures/expected/duplicate.test-cashregister-sale-logo.hex +189 -0
- package/fixtures/expected/duplicate.voucher-multi-purpose-redeem.hex +37 -0
- package/fixtures/expected/duplicate.voucher-service-redeem-logo.hex +119 -0
- package/fixtures/expected/duplicate.winter-time-first-second.hex +28 -0
- package/fixtures/expected/duplicate.zero-start.hex +40 -0
- package/fixtures/expected/long-item-name.grid32.txt +1 -1
- package/fixtures/expected/long-item-name.grid48.txt +1 -1
- package/fixtures/expected/long-item-name.lines.json +1 -1
- package/fixtures/expected/long-item-name.sheet32.json +1 -1
- package/fixtures/expected/long-item-name.sheet48.json +1 -1
- package/fixtures/expected/sale-card.grid32.txt +1 -1
- package/fixtures/expected/sale-card.grid48.txt +1 -1
- package/fixtures/expected/sale-card.lines.json +1 -1
- package/fixtures/expected/sale-card.sheet32.json +1 -1
- package/fixtures/expected/sale-card.sheet48.json +1 -1
- package/fixtures/expected/sale-cash.grid32.txt +1 -1
- package/fixtures/expected/sale-cash.grid48.txt +1 -1
- package/fixtures/expected/sale-cash.lines.json +1 -1
- package/fixtures/expected/sale-cash.sheet32.json +1 -1
- package/fixtures/expected/sale-cash.sheet48.json +1 -1
- package/fixtures/expected/sale-small-business.grid32.txt +1 -1
- package/fixtures/expected/sale-small-business.grid48.txt +1 -1
- package/fixtures/expected/sale-small-business.lines.json +1 -1
- package/fixtures/expected/sale-small-business.sheet32.json +1 -1
- package/fixtures/expected/sale-small-business.sheet48.json +1 -1
- package/fixtures/expected/signature-outage-sale.grid32.txt +1 -1
- package/fixtures/expected/signature-outage-sale.grid48.txt +1 -1
- package/fixtures/expected/signature-outage-sale.lines.json +1 -1
- package/fixtures/expected/signature-outage-sale.sheet32.json +1 -1
- package/fixtures/expected/signature-outage-sale.sheet48.json +1 -1
- package/fixtures/expected/split-card-card-cash.grid32.txt +1 -1
- package/fixtures/expected/split-card-card-cash.grid48.txt +1 -1
- package/fixtures/expected/split-card-card-cash.lines.json +1 -1
- package/fixtures/expected/split-card-card-cash.sheet32.json +1 -1
- package/fixtures/expected/split-card-card-cash.sheet48.json +1 -1
- package/fixtures/expected/split-cash-change.grid32.txt +1 -1
- package/fixtures/expected/split-cash-change.grid48.txt +1 -1
- package/fixtures/expected/split-cash-change.lines.json +1 -1
- package/fixtures/expected/split-cash-change.sheet32.json +1 -1
- package/fixtures/expected/split-cash-change.sheet48.json +1 -1
- package/fixtures/expected/split-long-amount.grid32.txt +1 -1
- package/fixtures/expected/split-long-amount.grid48.txt +1 -1
- package/fixtures/expected/split-long-amount.lines.json +1 -1
- package/fixtures/expected/split-long-amount.sheet32.json +1 -1
- package/fixtures/expected/split-long-amount.sheet48.json +1 -1
- package/fixtures/expected/split-one-card-tip.grid32.txt +1 -1
- package/fixtures/expected/split-one-card-tip.grid48.txt +1 -1
- package/fixtures/expected/split-one-card-tip.lines.json +1 -1
- package/fixtures/expected/split-one-card-tip.sheet32.json +1 -1
- package/fixtures/expected/split-one-card-tip.sheet48.json +1 -1
- package/fixtures/expected/split-table-round-tip.grid32.txt +1 -1
- package/fixtures/expected/split-table-round-tip.grid48.txt +1 -1
- package/fixtures/expected/split-table-round-tip.lines.json +1 -1
- package/fixtures/expected/split-table-round-tip.sheet32.json +1 -1
- package/fixtures/expected/split-table-round-tip.sheet48.json +1 -1
- package/fixtures/expected/split-tip-card.grid32.txt +1 -1
- package/fixtures/expected/split-tip-card.grid48.txt +1 -1
- package/fixtures/expected/split-tip-card.lines.json +1 -1
- package/fixtures/expected/split-tip-card.sheet32.json +1 -1
- package/fixtures/expected/split-tip-card.sheet48.json +1 -1
- package/fixtures/expected/split-two-cards-same-provider.grid32.txt +1 -1
- package/fixtures/expected/split-two-cards-same-provider.grid48.txt +1 -1
- package/fixtures/expected/split-two-cards-same-provider.lines.json +1 -1
- package/fixtures/expected/split-two-cards-same-provider.sheet32.json +1 -1
- package/fixtures/expected/split-two-cards-same-provider.sheet48.json +1 -1
- package/fixtures/expected/test-cashregister-sale.grid32.txt +1 -1
- package/fixtures/expected/test-cashregister-sale.grid48.txt +1 -1
- package/fixtures/expected/test-cashregister-sale.lines.json +1 -1
- package/fixtures/expected/test-cashregister-sale.sheet32.json +1 -1
- package/fixtures/expected/test-cashregister-sale.sheet48.json +1 -1
- package/fixtures/expected/test-signature-sale.grid32.txt +1 -1
- package/fixtures/expected/test-signature-sale.grid48.txt +1 -1
- package/fixtures/expected/test-signature-sale.lines.json +1 -1
- package/fixtures/expected/test-signature-sale.sheet32.json +1 -1
- package/fixtures/expected/test-signature-sale.sheet48.json +1 -1
- package/fixtures/expected/training.grid32.txt +1 -1
- package/fixtures/expected/training.grid48.txt +1 -1
- package/fixtures/expected/training.lines.json +1 -1
- package/fixtures/expected/training.sheet32.json +1 -1
- package/fixtures/expected/training.sheet48.json +1 -1
- package/fixtures/expected/voucher-multi-purpose-sale.grid32.txt +1 -2
- package/fixtures/expected/voucher-multi-purpose-sale.grid48.txt +1 -1
- package/fixtures/expected/voucher-multi-purpose-sale.lines.json +1 -1
- package/fixtures/expected/voucher-multi-purpose-sale.sheet32.json +1 -7
- package/fixtures/expected/voucher-multi-purpose-sale.sheet48.json +1 -1
- package/fixtures/expected/voucher-single-purpose-redeem-exempt.grid32.txt +1 -1
- package/fixtures/expected/voucher-single-purpose-redeem-exempt.grid48.txt +1 -1
- package/fixtures/expected/voucher-single-purpose-redeem-exempt.lines.json +1 -1
- package/fixtures/expected/voucher-single-purpose-redeem-exempt.sheet32.json +1 -1
- package/fixtures/expected/voucher-single-purpose-redeem-exempt.sheet48.json +1 -1
- package/fixtures/expected/voucher-single-purpose-redeem.grid32.txt +1 -1
- package/fixtures/expected/voucher-single-purpose-redeem.grid48.txt +1 -1
- package/fixtures/expected/voucher-single-purpose-redeem.lines.json +1 -1
- package/fixtures/expected/voucher-single-purpose-redeem.sheet32.json +1 -1
- package/fixtures/expected/voucher-single-purpose-redeem.sheet48.json +1 -1
- package/fixtures/expected/voucher-single-purpose-sale.grid32.txt +2 -3
- package/fixtures/expected/voucher-single-purpose-sale.grid48.txt +2 -2
- package/fixtures/expected/voucher-single-purpose-sale.lines.json +2 -2
- package/fixtures/expected/voucher-single-purpose-sale.sheet32.json +2 -8
- package/fixtures/expected/voucher-single-purpose-sale.sheet48.json +2 -2
- package/fixtures/expected/zero-annual.grid32.txt +1 -1
- package/fixtures/expected/zero-annual.grid48.txt +1 -1
- package/fixtures/expected/zero-annual.lines.json +1 -1
- package/fixtures/expected/zero-annual.sheet32.json +1 -1
- package/fixtures/expected/zero-annual.sheet48.json +1 -1
- package/fixtures/expected/zero-final.grid32.txt +1 -1
- package/fixtures/expected/zero-final.grid48.txt +1 -1
- package/fixtures/expected/zero-final.lines.json +1 -1
- package/fixtures/expected/zero-final.sheet32.json +1 -1
- package/fixtures/expected/zero-final.sheet48.json +1 -1
- package/fixtures/expected/zero-manual.grid32.txt +1 -1
- package/fixtures/expected/zero-manual.grid48.txt +1 -1
- package/fixtures/expected/zero-manual.lines.json +1 -1
- package/fixtures/expected/zero-manual.sheet32.json +1 -1
- package/fixtures/expected/zero-manual.sheet48.json +1 -1
- package/fixtures/expected/zero-monthly.grid32.txt +1 -1
- package/fixtures/expected/zero-monthly.grid48.txt +1 -1
- package/fixtures/expected/zero-monthly.lines.json +1 -1
- package/fixtures/expected/zero-monthly.sheet32.json +1 -1
- package/fixtures/expected/zero-monthly.sheet48.json +1 -1
- package/fixtures/expected/zero-outage-end.grid32.txt +1 -1
- package/fixtures/expected/zero-outage-end.grid48.txt +1 -1
- package/fixtures/expected/zero-outage-end.lines.json +1 -1
- package/fixtures/expected/zero-outage-end.sheet32.json +1 -1
- package/fixtures/expected/zero-outage-end.sheet48.json +1 -1
- package/fixtures/expected/zero-start.grid32.txt +1 -1
- package/fixtures/expected/zero-start.grid48.txt +1 -1
- package/fixtures/expected/zero-start.lines.json +1 -1
- package/fixtures/expected/zero-start.sheet32.json +1 -1
- package/fixtures/expected/zero-start.sheet48.json +1 -1
- package/fixtures/hobex-hps-codes.json +1 -1
- package/fixtures/invoice-api.schema.json +1 -1
- package/fixtures/invoice-texts.json +1 -1
- package/fixtures/manifest.json +260 -260
- package/fixtures/pos-texts.json +205 -1
- package/fixtures/receipt-due-voucher-generated.json +1 -1
- package/fixtures/receipt-outputs-cases.json +2778 -0
- package/fixtures/receipts/cancellation-discount.json +1 -1
- package/fixtures/receipts/cancellation-full.json +1 -1
- package/fixtures/receipts/cancellation-partial.json +1 -1
- package/fixtures/receipts/cancellation-split-full.json +1 -1
- package/fixtures/receipts/cancellation-split-partial.json +1 -1
- package/fixtures/receipts/card-custom.json +1 -1
- package/fixtures/receipts/card-gptom-ios.json +1 -1
- package/fixtures/receipts/card-gptom.json +1 -1
- package/fixtures/receipts/card-hobex-cloud.json +1 -1
- package/fixtures/receipts/card-hobex-hps.json +1 -1
- package/fixtures/receipts/card-mypos.json +1 -1
- package/fixtures/receipts/card-stripe-eps.json +1 -1
- package/fixtures/receipts/card-stripe.json +1 -1
- package/fixtures/receipts/card-sumup.json +1 -1
- package/fixtures/receipts/discount-lines.json +1 -1
- package/fixtures/receipts/discount-owner-tip.json +1 -1
- package/fixtures/receipts/discount-simple.json +1 -1
- package/fixtures/receipts/discount-tip.json +1 -1
- package/fixtures/receipts/discount-value-voucher.json +1 -1
- package/fixtures/receipts/long-item-name.json +1 -1
- package/fixtures/receipts/sale-card.json +1 -1
- package/fixtures/receipts/sale-cash.json +1 -1
- package/fixtures/receipts/sale-small-business.json +1 -1
- package/fixtures/receipts/signature-outage-sale.json +1 -1
- package/fixtures/receipts/split-card-card-cash.json +1 -1
- package/fixtures/receipts/split-cash-change.json +1 -1
- package/fixtures/receipts/split-long-amount.json +1 -1
- package/fixtures/receipts/split-one-card-tip.json +1 -1
- package/fixtures/receipts/split-table-round-tip.json +1 -1
- package/fixtures/receipts/split-tip-card.json +1 -1
- package/fixtures/receipts/split-two-cards-same-provider.json +1 -1
- package/fixtures/receipts/test-cashregister-sale.json +1 -1
- package/fixtures/receipts/test-signature-sale.json +1 -1
- package/fixtures/receipts/training.json +1 -1
- package/fixtures/receipts/zero-annual.json +1 -1
- package/fixtures/receipts/zero-final.json +1 -1
- package/fixtures/receipts/zero-manual.json +1 -1
- package/fixtures/receipts/zero-monthly.json +1 -1
- package/fixtures/receipts/zero-outage-end.json +1 -1
- package/fixtures/receipts/zero-start.json +1 -1
- package/fixtures/surface.json +25 -5
- package/fixtures/v3/README.md +10 -3
- package/fixtures/v3/antworten/belege.json +623 -125
- package/fixtures/v3/antworten/belegmail.json +2 -2
- package/fixtures/v3/antworten/kasse-belege.json +622 -122
- package/fixtures/v3/antworten/kasse.json +407 -31
- package/fixtures/v3/antworten/lager.json +1 -1
- package/fixtures/v3/antworten/rechnungen.json +4 -4
- package/fixtures/v3/antworten/storno.json +211 -3
- package/fixtures/v3/stored/belege.json +2 -2
- package/fixtures/v3/stored/kasse.json +114 -4
- package/fixtures/v3/stored/rechnungen.json +17 -17
- package/fixtures/v3/v3-vokabular.json +224 -19
- package/fixtures/v3/zahlbetrag-faelle.json +1070 -4
- package/package.json +3 -1
- package/dist/cjs/stored/gutscheine.d.ts +0 -3
- package/dist/cjs/stored/gutscheine.js +0 -60
- package/dist/esm/stored/gutscheine.d.ts +0 -3
- package/dist/esm/stored/gutscheine.js +0 -56
|
@@ -453,19 +453,31 @@ function barZeilen(zahlung) {
|
|
|
453
453
|
*/
|
|
454
454
|
function zahlungsZeilen(receipt) {
|
|
455
455
|
const zahlungen = receipt.payments;
|
|
456
|
+
// Trägt der Beleg eine Gutschein-Zahlungszeile, entfällt, was 0 Cent kostet
|
|
457
|
+
// (§ 132a Abs. 3 BAO: die Zahlungsart ist kein Pflichtinhalt, der Betrag bleibt).
|
|
458
|
+
const mitGutschein = receipt.vouchers.some((v) => v.action === index_js_1.VoucherAction.redeem && v.type !== index_js_1.VoucherType.promo);
|
|
456
459
|
if (zahlungen == null || zahlungen.length === 0) {
|
|
460
|
+
if (mitGutschein && (0, index_js_2.receiptSumCents)(receipt) === 0)
|
|
461
|
+
return [];
|
|
457
462
|
return [paarZeile('Zahlungsart:', zahlungsartText(receipt.paymentMethod))];
|
|
458
463
|
}
|
|
459
464
|
if (zahlungen.length === 1) {
|
|
460
465
|
const zahlung = zahlungen[0];
|
|
466
|
+
if (mitGutschein && zahlung.amountCents === 0)
|
|
467
|
+
return [];
|
|
461
468
|
return [paarZeile('Zahlungsart:', zahlungsartText(zahlung.method)), ...zahlungTrinkgeldZeilen(zahlung), ...barZeilen(zahlung)];
|
|
462
469
|
}
|
|
470
|
+
// Mehrere Zahlungen: mit Gutschein entfallen die mit 0 Cent (Nummer bleibt die des Kartenblocks).
|
|
471
|
+
const alle = zahlungen.map((zahlung, i) => ({ zahlung, i }));
|
|
472
|
+
const liste = mitGutschein ? alle.filter(({ zahlung }) => zahlung.amountCents !== 0) : alle;
|
|
473
|
+
if (liste.length === 0)
|
|
474
|
+
return [];
|
|
463
475
|
const zeilen = [textZeile('Zahlungsarten:')];
|
|
464
|
-
|
|
476
|
+
for (const { zahlung, i } of liste) {
|
|
465
477
|
zeilen.push(paarZeile(zahlungNummerText(zahlung, i), `${formatCents(zahlung.amountCents)} €`, 8, 4));
|
|
466
478
|
zeilen.push(...zahlungTrinkgeldZeilen(zahlung));
|
|
467
479
|
zeilen.push(...barZeilen(zahlung));
|
|
468
|
-
}
|
|
480
|
+
}
|
|
469
481
|
return zeilen;
|
|
470
482
|
}
|
|
471
483
|
// -------------------------------------------------------- Kleinunternehmer
|
|
@@ -554,10 +566,12 @@ function gutscheinText(voucher) {
|
|
|
554
566
|
text += 'Wertgutschein';
|
|
555
567
|
}
|
|
556
568
|
else if (voucher.type === index_js_1.VoucherType.promo) {
|
|
557
|
-
text += '
|
|
569
|
+
text += 'Aktionsgutschein';
|
|
558
570
|
}
|
|
559
571
|
const name = voucher.name;
|
|
560
|
-
|
|
572
|
+
// Alte Belege nennen den Aktionsgutschein noch „Promotionsgutschein": auch dieser Name steht allein.
|
|
573
|
+
if (name != null && (name.toLowerCase().includes(text.toLowerCase())
|
|
574
|
+
|| (voucher.type === index_js_1.VoucherType.promo && name.toLowerCase().includes('promotionsgutschein')))) {
|
|
561
575
|
return name;
|
|
562
576
|
}
|
|
563
577
|
// Der Betrag steht in derselben Zeile rechts in der Betragsspalte — ihn
|
|
@@ -566,7 +580,7 @@ function gutscheinText(voucher) {
|
|
|
566
580
|
// identifiziert den Gutschein (Mehrzweck: der Kunde will wissen, WELCHER
|
|
567
581
|
// eingeloest wurde).
|
|
568
582
|
if (voucher.code != null && voucher.code !== '') {
|
|
569
|
-
text += ` ${voucher
|
|
583
|
+
text += ` ${codeKurz(voucher)}`;
|
|
570
584
|
}
|
|
571
585
|
if (name != null && name.length > 0) {
|
|
572
586
|
text += ` - ${name}`;
|
|
@@ -584,21 +598,20 @@ function gutscheinText(voucher) {
|
|
|
584
598
|
* Leistung Zeile dieses Gutscheins Text „ Einzweck, versteuert mit
|
|
585
599
|
* Beleg K1-ID-4711“ (bzw. „Leistung, …“, „…, befreit
|
|
586
600
|
* verkauft (Kleinunternehmer)“, 47 Zeichen: passt auf
|
|
587
|
-
* 80 mm) und 8:4 „ Rest am Gutschein“ | „19,50
|
|
601
|
+
* 80 mm) und 8:4 „ Rest am Gutschein“ | „19,50 €“ bzw.
|
|
588
602
|
* „2 Stück“
|
|
589
603
|
* Einloesung Mehrzweck nach „Zwischensumme“ 8:4 „Gutschein ····-9DWT“ |
|
|
590
604
|
* „-17,50 €“ und „ Rest am Gutschein“ | „32,50 €“
|
|
591
605
|
* Auszahlung 8:4 „Auszahlung Gutschein ····-9DWT“ | „-12,00 D“,
|
|
592
606
|
* Text „ Grund: <Grund>“
|
|
593
|
-
* Aktion Rabattzeile wie bisher (
|
|
607
|
+
* Aktion Rabattzeile wie bisher (Aktionsgutschein)
|
|
594
608
|
*
|
|
595
609
|
* Vermerke sind Textzeilen mit zwei fuehrenden Leerzeichen; das Raster bricht
|
|
596
610
|
* sie mit demselben Einzug um (grid.ts, haengender Einzug), auf 58 mm etwa
|
|
597
611
|
* „ Einzweck, versteuert mit“ / „ Beleg K1-ID-4711“.
|
|
598
612
|
*
|
|
599
|
-
* Die Zusatzzeilen kommen nur aus dem Eintrag: ein Beleg
|
|
600
|
-
*
|
|
601
|
-
* der Position, functions/beleg-layout.js `gutscheineFuerPaket`), zeigt seine
|
|
613
|
+
* Die Zusatzzeilen kommen nur aus dem Eintrag: ein Beleg ohne Eintrag (aeltere
|
|
614
|
+
* Belege, bei denen der Code schon an der Position steht) zeigt seine
|
|
602
615
|
* Positionen wie jede andere Position. Ein Betrag zaehlt immer genau einmal:
|
|
603
616
|
* Positionen in der Steuertabelle, Eintraege mit `zeroRateBucket` nie.
|
|
604
617
|
*/
|
|
@@ -611,12 +624,22 @@ function istMehrzweckMitCode(voucher) {
|
|
|
611
624
|
return voucher.type === index_js_1.VoucherType.value && voucher.voucherType === index_js_1.VoucherType.multi_purpose;
|
|
612
625
|
}
|
|
613
626
|
/**
|
|
614
|
-
* Code fuer die Belegzeile: die Maske
|
|
615
|
-
*
|
|
616
|
-
*
|
|
627
|
+
* Code fuer die Belegzeile: immer die kurze Maske `····-XXXX` aus dem Code-Ende
|
|
628
|
+
* (auch wenn ein alter Beleg die lange `····-····-XXXX` im Eintrag traegt),
|
|
629
|
+
* ohne den Platzhalter `no-code`, den der Server Alt-Eintraegen ohne Code
|
|
630
|
+
* setzt (index.js checkVouchersIsValid). Leer, wenn es keinen gibt.
|
|
617
631
|
*/
|
|
618
632
|
function gutscheinCodeZusatz(voucher) {
|
|
619
|
-
return typeof voucher.code === 'string' && voucher.code !== '' && voucher.code !== 'no-code' ? ` ${voucher
|
|
633
|
+
return typeof voucher.code === 'string' && voucher.code !== '' && voucher.code !== 'no-code' ? ` ${codeKurz(voucher)}` : '';
|
|
634
|
+
}
|
|
635
|
+
/**
|
|
636
|
+
* Maskierte Codes (`····-····-XXXX` alt, `····-XXXX` neu) drucken immer kurz;
|
|
637
|
+
* ein Alt-Code ohne Maske (z. B. `GS-1`) bleibt, wie er ist.
|
|
638
|
+
*/
|
|
639
|
+
function codeKurz(voucher) {
|
|
640
|
+
const code = voucher.code ?? '';
|
|
641
|
+
const endung = gutscheinEndung(voucher);
|
|
642
|
+
return code.includes('····') && endung != null ? `····-${endung}` : code;
|
|
620
643
|
}
|
|
621
644
|
/** Die vier letzten Zeichen des Codes (`codeSuffix`, sonst aus der Maske), oder null. */
|
|
622
645
|
function gutscheinEndung(voucher) {
|
|
@@ -630,7 +653,7 @@ const MEHRZWECK_UST_TEXT = ' USt bei Einlösung';
|
|
|
630
653
|
* Eintrag? Jede Position hoechstens einem Eintrag, Eintraege in ihrer
|
|
631
654
|
* Reihenfolge (der Server haengt die Positionen in derselben Reihenfolge an).
|
|
632
655
|
* Verkauf: erste freie Position der Art mit demselben Betrag und ohne Code im
|
|
633
|
-
* Namen (wie
|
|
656
|
+
* Namen (wie die Zuordnung des Servers). Einloesung: freie Positionen
|
|
634
657
|
* mit genau dem Namen `Gutschein ····-<Endung>`, Auszahlung: `Auszahlung
|
|
635
658
|
* Gutschein ····-<Endung>` (gutschein-beleg.plane) -- der Reihe nach, bis
|
|
636
659
|
* ihr Betrag den des Eintrags erreicht (ein Kleinunternehmer-Einzweck oder
|
|
@@ -708,14 +731,14 @@ function gutscheinPositionsZeilen(item, satz, zu) {
|
|
|
708
731
|
else if (v.exempt === true) {
|
|
709
732
|
zeilen.push(textZeile(` ${art}, befreit verkauft (Kleinunternehmer)`));
|
|
710
733
|
}
|
|
711
|
-
// Rest: Betrag
|
|
712
|
-
//
|
|
734
|
+
// Rest: Betrag mit „€“ wie beim Mehrzweckgutschein, Stueck rechtsbuendig.
|
|
735
|
+
// Die Gesamtzahl kennt der Beleg nicht.
|
|
713
736
|
if (v.type === index_js_1.VoucherType.service) {
|
|
714
737
|
if (Number.isInteger(v.remainingQuantityAfter))
|
|
715
738
|
zeilen.push(paarZeile(' Rest am Gutschein', `${v.remainingQuantityAfter} Stück`, 8, 4));
|
|
716
739
|
}
|
|
717
740
|
else if (Number.isInteger(v.balanceAfterCents)) {
|
|
718
|
-
zeilen.push(paarZeile(' Rest am Gutschein', `${formatCents(v.balanceAfterCents)}
|
|
741
|
+
zeilen.push(paarZeile(' Rest am Gutschein', `${formatCents(v.balanceAfterCents)} €`, 8, 4));
|
|
719
742
|
}
|
|
720
743
|
return zeilen;
|
|
721
744
|
}
|
|
@@ -1105,7 +1128,7 @@ function buildReceiptLayout(receipt, company, options = {}) {
|
|
|
1105
1128
|
lines.push(...(art === 'discount' ? rabattZeilen(item.name, teile) : trinkgeldZeilen(item.name, teile)));
|
|
1106
1129
|
}
|
|
1107
1130
|
// --- Gutscheine: verkaufte Wertgutscheine sind Umsatz zu 0 %, eingeloeste
|
|
1108
|
-
//
|
|
1131
|
+
// Aktionsgutscheine mindern die Steuergruppen anteilig.
|
|
1109
1132
|
// Am Storno-Beleg zaehlen Wertgutscheine mit umgekehrtem Vorzeichen
|
|
1110
1133
|
// (receiptValueVoucherSign): der verkaufte wird zurueckgezahlt.
|
|
1111
1134
|
// Eintraege mit `zeroRateBucket` stehen schon als Position (0-%-Topf).
|
|
@@ -1135,7 +1158,7 @@ function buildReceiptLayout(receipt, company, options = {}) {
|
|
|
1135
1158
|
lines.push(textZeile(MEHRZWECK_UST_TEXT));
|
|
1136
1159
|
}
|
|
1137
1160
|
if (voucher.action === index_js_1.VoucherAction.redeem && voucher.type === index_js_1.VoucherType.promo) {
|
|
1138
|
-
// Am Storno-Beleg steht der
|
|
1161
|
+
// Am Storno-Beleg steht der Aktionsgutschein nur als Bezug: den Rabatt
|
|
1139
1162
|
// nimmt dort die Position „Gutschein-Ausgleich“ zurueck (receiptSubSumCents).
|
|
1140
1163
|
if (wgVz === 1)
|
|
1141
1164
|
promoCents += wert;
|
|
@@ -1255,7 +1278,7 @@ function buildReceiptLayout(receipt, company, options = {}) {
|
|
|
1255
1278
|
return { lines, paperSize, ruleset };
|
|
1256
1279
|
}
|
|
1257
1280
|
/**
|
|
1258
|
-
* Verteilt einen eingeloesten
|
|
1281
|
+
* Verteilt einen eingeloesten Aktionsgutschein anteilig auf die
|
|
1259
1282
|
* Steuergruppen — Zwilling von `print_paper.dart` (Zeilen 296-325).
|
|
1260
1283
|
*
|
|
1261
1284
|
* Der Gutschein mindert keinen einzelnen Artikel, sondern den Umsatz: jede
|
|
@@ -120,8 +120,12 @@ export type RegisterLoginMode = 'select_user' | 'pin';
|
|
|
120
120
|
export interface RegisterDeviceUsers {
|
|
121
121
|
/** Im Modus `pin` bewusst leer — Namen haben am nur-PIN-Geraet nichts verloren. */
|
|
122
122
|
users: RegisterUserSummary[];
|
|
123
|
-
/**
|
|
124
|
-
|
|
123
|
+
/**
|
|
124
|
+
* Kassen-Einstellungen (betriebsweit + Geraet), gemischt mit den Standardwerten.
|
|
125
|
+
* Ohne `vouchers`: die Antwort des Servers fuehrt den Block nicht, er kommt
|
|
126
|
+
* mit `getPosSettings`; ein Vorgabe-Block waere erfunden.
|
|
127
|
+
*/
|
|
128
|
+
settings: Omit<PosSettings, 'vouchers'>;
|
|
125
129
|
/** Belegkopf-Daten des Betriebs (Name, Anschrift, UID, Fusszeilen), ohne Geheimnisse. */
|
|
126
130
|
receiptHeader: ReceiptCompany | null;
|
|
127
131
|
/**
|
|
@@ -215,7 +215,7 @@ async function listRegisterUsersForDevice(options) {
|
|
|
215
215
|
};
|
|
216
216
|
});
|
|
217
217
|
const settingsRoh = daten?.settings;
|
|
218
|
-
const settings = (0, client_js_1.posSettingsFromWire)(settingsRoh !== null && typeof settingsRoh === 'object' ? settingsRoh : null);
|
|
218
|
+
const { vouchers: _keinBlock, ...settings } = (0, client_js_1.posSettingsFromWire)(settingsRoh !== null && typeof settingsRoh === 'object' ? settingsRoh : null);
|
|
219
219
|
const kopf = daten?.receiptHeader;
|
|
220
220
|
const receiptHeader = kopf && typeof kopf === 'object' ? (0, receipt_company_js_1.fromReceiptCompanyPayload)(kopf) : null;
|
|
221
221
|
return {
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.layoutWieServer = layoutWieServer;
|
|
4
4
|
const layout_js_1 = require("../receipt/layout.js");
|
|
5
|
-
const gutscheine_js_1 = require("./gutscheine.js");
|
|
6
5
|
/**
|
|
7
6
|
* Layout wie `beleg-layout.layoutFuerBeleg`: 80 mm, Regelwerk mindestens das
|
|
8
7
|
* aktuelle. Kann der Server es nicht bauen, liefert er `null` (dann baut
|
|
@@ -11,9 +10,9 @@ const gutscheine_js_1 = require("./gutscheine.js");
|
|
|
11
10
|
function layoutWieServer(b, regelwerk) {
|
|
12
11
|
const ruleset = Math.max(Number(regelwerk) || 1, layout_js_1.CURRENT_LAYOUT_RULESET);
|
|
13
12
|
try {
|
|
14
|
-
// Wie layoutFuerBeleg
|
|
15
|
-
//
|
|
16
|
-
return (0, layout_js_1.buildReceiptLayout)(
|
|
13
|
+
// Wie layoutFuerBeleg seit dem Paket 0.34.0 des Servers: der Beleg geht
|
|
14
|
+
// unveraendert ans Paket (keine Aufbereitung der Gutscheine mehr).
|
|
15
|
+
return (0, layout_js_1.buildReceiptLayout)(b.receipt, b.company, {
|
|
17
16
|
paperSize: 'mm80', ruleset, testCashregister: b.testCashregister, testSignature: b.testSignature, registrationInfo: b.registrationInfo,
|
|
18
17
|
});
|
|
19
18
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Fingerabdruck des Vertrags-Exports, aus dem diese Datei stammt (`_quelle.sha256`). */
|
|
2
|
-
export declare const VOKABULAR_QUELLE = "
|
|
2
|
+
export declare const VOKABULAR_QUELLE = "328c8d0ff0f496f8f6b7d9ed78673e7666980e38586ec7efacb442e6906d898a";
|
|
3
3
|
/** Schema-Notation des Vertrags: Blatt 'aussen': 'innen', Objekt { __: 'innen', ... }, Liste [ { __: 'innen', ... } ]. */
|
|
4
4
|
export type SchemaEintrag = string | SchemaObjekt | readonly [SchemaObjekt];
|
|
5
5
|
export interface SchemaObjekt {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.KATALOGE = exports.ARTIKEL_FELDER = exports.SCHEMAS = exports.VOKABULAR_QUELLE = void 0;
|
|
6
6
|
/** Fingerabdruck des Vertrags-Exports, aus dem diese Datei stammt (`_quelle.sha256`). */
|
|
7
|
-
exports.VOKABULAR_QUELLE = "
|
|
7
|
+
exports.VOKABULAR_QUELLE = "328c8d0ff0f496f8f6b7d9ed78673e7666980e38586ec7efacb442e6906d898a";
|
|
8
8
|
/** Schema je Endpunkt (aussen -> innen) und Wertverweise auf die Kataloge. */
|
|
9
9
|
exports.SCHEMAS = {
|
|
10
10
|
"getReceipt": {
|
|
@@ -53,6 +53,7 @@ exports.SCHEMAS = {
|
|
|
53
53
|
"codeSuffix": "codeEnde",
|
|
54
54
|
"faceValueCents": "nennwertCents",
|
|
55
55
|
"quantity": "stueck",
|
|
56
|
+
"articleName": "artikelName",
|
|
56
57
|
"validity": {
|
|
57
58
|
"__": "gueltigkeit",
|
|
58
59
|
"pattern": "muster",
|
|
@@ -61,6 +62,15 @@ exports.SCHEMAS = {
|
|
|
61
62
|
"validUntil": "gueltigBis"
|
|
62
63
|
}
|
|
63
64
|
}
|
|
65
|
+
],
|
|
66
|
+
"outputs": [
|
|
67
|
+
{
|
|
68
|
+
"__": "ausgaben",
|
|
69
|
+
"kind": "art",
|
|
70
|
+
"result": "ergebnis",
|
|
71
|
+
"by": "durch",
|
|
72
|
+
"count": "anzahl"
|
|
73
|
+
}
|
|
64
74
|
]
|
|
65
75
|
},
|
|
66
76
|
"werte": {
|
|
@@ -75,6 +85,12 @@ exports.SCHEMAS = {
|
|
|
75
85
|
},
|
|
76
86
|
"issuedVouchers[].validity.pattern": {
|
|
77
87
|
"$catalog": "GUTSCHEIN_MUSTER"
|
|
88
|
+
},
|
|
89
|
+
"outputs[].kind": {
|
|
90
|
+
"$catalog": "AUSGABE_ART"
|
|
91
|
+
},
|
|
92
|
+
"outputs[].result": {
|
|
93
|
+
"$catalog": "AUSGABE_ERGEBNIS"
|
|
78
94
|
}
|
|
79
95
|
}
|
|
80
96
|
},
|
|
@@ -157,7 +173,10 @@ exports.SCHEMAS = {
|
|
|
157
173
|
"fullscreen": "vollbild",
|
|
158
174
|
"clearTendered": "gegebenLeeren",
|
|
159
175
|
"clearCart": "korbLeeren",
|
|
160
|
-
"splitPayment": "getrennt"
|
|
176
|
+
"splitPayment": "getrennt",
|
|
177
|
+
"shiftStatus": "kassenstand",
|
|
178
|
+
"openDrawer": "ladeOeffnen",
|
|
179
|
+
"voucherPayout": "gutscheinAuszahlen"
|
|
161
180
|
},
|
|
162
181
|
"printerEnabled": "druckerAn",
|
|
163
182
|
"printerType": "druckerArt",
|
|
@@ -301,6 +320,19 @@ exports.ARTIKEL_FELDER = [
|
|
|
301
320
|
];
|
|
302
321
|
/** Wertkataloge innen (deutsch) -> aussen (englisch). */
|
|
303
322
|
exports.KATALOGE = {
|
|
323
|
+
"AUSGABE_ART": {
|
|
324
|
+
"erstdruck": "print",
|
|
325
|
+
"duplikat": "reprint",
|
|
326
|
+
"mail": "email",
|
|
327
|
+
"link_geteilt": "link_shared",
|
|
328
|
+
"pdf_geteilt": "pdf_shared",
|
|
329
|
+
"abruf": "opened"
|
|
330
|
+
},
|
|
331
|
+
"AUSGABE_ERGEBNIS": {
|
|
332
|
+
"ok": "ok",
|
|
333
|
+
"fehler": "failed",
|
|
334
|
+
"unklar": "unclear"
|
|
335
|
+
},
|
|
304
336
|
"E1A_GRUPPE": {
|
|
305
337
|
"erloese": "revenue",
|
|
306
338
|
"erloese_waren": "revenue_goods",
|
package/dist/cjs/version.d.ts
CHANGED
package/dist/cjs/version.js
CHANGED
package/dist/esm/client/api.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { type HobexPayOptions, type HobexRefundOptions } from '../payments/hobex
|
|
|
4
4
|
import { type TransportOptions } from './transport.js';
|
|
5
5
|
import { type CashregisterReportPeriod, type ReportV2, type ReportV2Options } from './reports.js';
|
|
6
6
|
import { type CashboxStatus, type SignatureStatus } from './status.js';
|
|
7
|
-
import { type SendReceiptEmailOptions, type SendReceiptEmailResult, type ListMyReceiptsOptions, type ReceiptList, type ReceiptWithCompany, type SellReceiptOptions, type CancelReceiptOptions, type CancelReceiptResult } from './receipts.js';
|
|
7
|
+
import { type SendReceiptEmailOptions, type SendReceiptEmailResult, type LogReceiptOutputsOptions, type LogReceiptOutputsResult, type ListMyReceiptsOptions, type ReceiptList, type ReceiptWithCompany, type SellReceiptOptions, type CancelReceiptOptions, type CancelReceiptResult } from './receipts.js';
|
|
8
8
|
/**
|
|
9
9
|
* Schlichte Factory ueber den Endpunkt-Funktionen: bindet einen Transport
|
|
10
10
|
* einmal und liefert die Aufrufe ohne den wiederkehrenden ersten Parameter.
|
|
@@ -48,6 +48,8 @@ export interface KasseneckApi {
|
|
|
48
48
|
getFirstReceiptDate(): Promise<ReportMonth>;
|
|
49
49
|
/** Beleg als Link auf die oeffentliche Belegseite per E-Mail schicken. */
|
|
50
50
|
sendReceiptEmail(options: SendReceiptEmailOptions): Promise<SendReceiptEmailResult>;
|
|
51
|
+
/** Drucke und Teilen eines Belegs an das Protokoll „Ausgaben“ melden (nur Kassenweg). */
|
|
52
|
+
logReceiptOutputs(options: LogReceiptOutputsOptions): Promise<LogReceiptOutputsResult>;
|
|
51
53
|
/** Belegliste einer Kasse samt Kennzahlen (nur mit ID-Token, siehe receipts.ts). */
|
|
52
54
|
listMyReceipts(options: ListMyReceiptsOptions): Promise<ReceiptList>;
|
|
53
55
|
/** Kassen des angemeldeten Benutzers (nur mit ID-Token, siehe cashregisters.ts). */
|
package/dist/esm/client/api.js
CHANGED
|
@@ -3,7 +3,7 @@ import { hobexPay, hobexRefund } from '../payments/hobex.js';
|
|
|
3
3
|
import { createTransport, createBinaryTransport } from './transport.js';
|
|
4
4
|
import { downloadDailyReport, downloadMonthlyReport, getCashregisterReport, getReportV2 } from './reports.js';
|
|
5
5
|
import { getCashboxStatus, getSignatureStatus } from './status.js';
|
|
6
|
-
import { sellReceipt, sellReceiptWithCompany, cancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, sendReceiptEmail, } from './receipts.js';
|
|
6
|
+
import { sellReceipt, sellReceiptWithCompany, cancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, sendReceiptEmail, logReceiptOutputs, } from './receipts.js';
|
|
7
7
|
import { listMyCashregisters } from './cashregisters.js';
|
|
8
8
|
import { renewRegisterSession, endRegisterSession } from '../register/session.js';
|
|
9
9
|
export function createKasseneckApi(options) {
|
|
@@ -22,6 +22,7 @@ export function createKasseneckApi(options) {
|
|
|
22
22
|
getFirstReceiptDate: () => getFirstReceiptDate(rufen),
|
|
23
23
|
listMyReceipts: (o) => listMyReceipts(rufen, o),
|
|
24
24
|
sendReceiptEmail: (o) => sendReceiptEmail(rufen, o),
|
|
25
|
+
logReceiptOutputs: (o) => logReceiptOutputs(rufen, o),
|
|
25
26
|
listMyCashregisters: () => listMyCashregisters(rufen),
|
|
26
27
|
getReportV2: (o) => getReportV2(rufen, o),
|
|
27
28
|
getCashregisterReport: (options) => getCashregisterReport(rufenBinaer, options),
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* umhuellt, muss ihn weiterhin absetzen koennen.
|
|
14
14
|
*/
|
|
15
15
|
import type { PdfOrData, TransportBodyFields, TransportCallOptions } from './transport.js';
|
|
16
|
-
export declare const ALL_CALLS: readonly ["activateCashregister", "cancelInvoice", "cancelReceipt", "createCreditNote", "createCustomer", "createCustomerCashregister", "createPartnerCustomer", "checkPartnerCustomerEmail", "createPartnerWebhook", "createPaymentLinkStripe", "createPrintJob", "createReceipt", "deletePartnerWebhook", "downloadDailyReport", "downloadReport", "endRegisterSession", "financeWebService", "generateFullReceiptId", "getCashregisterReport", "getCustomer", "getCustomerCredentials", "getCustomerSignatureStatus", "getFirstReceiptDate", "getInvoice", "getInvoicePdf", "getInvoiceSetupStatus", "getInvoiceXml", "getKasseSettings", "getPartnerCustomer", "getPartnerInfo", "getPrintJob", "getReceipt", "getReportV2", "hobexPayApi", "hobexRefundApi", "issueInvoice", "listCustomerCashregisters", "listInvoices", "listBrands", "listMyArticleGroups", "listMyArticles", "listMyCashregisters", "listMyPrinters", "listMyReceipts", "listMyStock", "listMyStockLocations", "listMyTipRecipients", "listPartnerCustomers", "listPartnerWebhookDeliveries", "listPartnerWebhooks", "listRegisterUsersForDevice", "listRegisterSessionsForDevice", "pairRegisterDevice", "recordInvoicePayment", "registerPinLogin", "registerUserLogin", "renewRegisterSession", "reportCustomerContract", "requestCustomerSignature", "searchCustomers", "sendPartnerCustomerFonLink", "sendPartnerWebhookTest", "sendReceiptEmail", "setMyCashregisterStockLocation", "setMyKasseLogo", "setMyKasseSettings", "setMyRegisterDeviceSettings", "stripeCaptureIntent", "unpairRegisterDevice", "rotatePartnerWebhookSecret", "updateCustomer", "updatePartnerWebhook", "getArticle", "listArticles", "lookupArticleByCode", "listLocations", "getStock", "listStock", "listStockMovements", "createWebhook", "updateWebhook", "deleteWebhook", "listWebhooks", "sendWebhookTest", "rotateWebhookSecret", "listWebhookDeliveries", "createArticle", "updateArticle", "deactivateArticle", "receiveGoods", "transferStock", "recordStockLoss", "changeStockCondition", "reverseStockMovement", "createReservation", "extendReservation", "releaseReservation", "getReservation", "listReservations", "createVariantGroup", "updateVariantGroup", "getVariantGroup", "listVariantGroups", "addVariant", "createStocktake", "listStocktakes", "getStocktake", "listStocktakeItems", "recordStocktakeCount", "voidStocktakeCount", "listStocktakeCounts", "reviewStocktake", "recountStocktake", "closeStocktake", "cancelStocktake", "getStocktakePdf", "orderSignatureCard", "getSignatureCardOrder", "listMyStocktakes", "listMyStocktakeItems", "listMyStocktakeCounts", "recordMyStocktakeCount", "voidMyStocktakeCount", "checkVoucher", "reprintVoucherLabel", "getMyDrawerState", "openMyShift", "recordMyCashMovement", "logMyDrawerOpenings", "getMyShiftReport", "closeMyShift"];
|
|
16
|
+
export declare const ALL_CALLS: readonly ["activateCashregister", "cancelInvoice", "cancelReceipt", "createCreditNote", "createCustomer", "createCustomerCashregister", "createPartnerCustomer", "checkPartnerCustomerEmail", "createPartnerWebhook", "createPaymentLinkStripe", "createPrintJob", "createReceipt", "deletePartnerWebhook", "downloadDailyReport", "downloadReport", "endRegisterSession", "financeWebService", "generateFullReceiptId", "getCashregisterReport", "getCustomer", "getCustomerCredentials", "getCustomerSignatureStatus", "getFirstReceiptDate", "getInvoice", "getInvoicePdf", "getInvoiceSetupStatus", "getInvoiceXml", "getKasseSettings", "getPartnerCustomer", "getPartnerInfo", "getPrintJob", "getReceipt", "getReportV2", "hobexPayApi", "hobexRefundApi", "issueInvoice", "listCustomerCashregisters", "listInvoices", "listBrands", "listMyArticleGroups", "listMyArticles", "listMyCashregisters", "listMyPrinters", "listMyReceipts", "listMyStock", "listMyStockLocations", "listMyTipRecipients", "listPartnerCustomers", "listPartnerWebhookDeliveries", "listPartnerWebhooks", "listRegisterUsersForDevice", "listRegisterSessionsForDevice", "pairRegisterDevice", "recordInvoicePayment", "registerPinLogin", "registerUserLogin", "renewRegisterSession", "reportCustomerContract", "requestCustomerSignature", "searchCustomers", "sendPartnerCustomerFonLink", "sendPartnerWebhookTest", "sendReceiptEmail", "setMyCashregisterStockLocation", "setMyKasseLogo", "setMyKasseSettings", "setMyRegisterDeviceSettings", "stripeCaptureIntent", "unpairRegisterDevice", "rotatePartnerWebhookSecret", "updateCustomer", "updatePartnerWebhook", "getArticle", "listArticles", "lookupArticleByCode", "listLocations", "getStock", "listStock", "listStockMovements", "createWebhook", "updateWebhook", "deleteWebhook", "listWebhooks", "sendWebhookTest", "rotateWebhookSecret", "listWebhookDeliveries", "createArticle", "updateArticle", "deactivateArticle", "receiveGoods", "transferStock", "recordStockLoss", "changeStockCondition", "reverseStockMovement", "createReservation", "extendReservation", "releaseReservation", "getReservation", "listReservations", "createVariantGroup", "updateVariantGroup", "getVariantGroup", "listVariantGroups", "addVariant", "createStocktake", "listStocktakes", "getStocktake", "listStocktakeItems", "recordStocktakeCount", "voidStocktakeCount", "listStocktakeCounts", "reviewStocktake", "recountStocktake", "closeStocktake", "cancelStocktake", "getStocktakePdf", "orderSignatureCard", "getSignatureCardOrder", "listMyStocktakes", "listMyStocktakeItems", "listMyStocktakeCounts", "recordMyStocktakeCount", "voidMyStocktakeCount", "checkVoucher", "reprintVoucherLabel", "getMyDrawerState", "openMyShift", "recordMyCashMovement", "logMyDrawerOpenings", "getMyShiftReport", "closeMyShift", "logReceiptOutputs"];
|
|
17
17
|
export type ApiCall = typeof ALL_CALLS[number];
|
|
18
18
|
/**
|
|
19
19
|
* Die oeffentlichen Endpunkte unter `/v3` (`https://api.kasseneck.at/v3/<name>`),
|
|
@@ -28,7 +28,7 @@ export declare const PUBLIC_CALLS: readonly ["createReceipt", "getReceipt", "can
|
|
|
28
28
|
* `endpoints.register`. Sechs davon sind zugleich oeffentlich; die Kasse ruft
|
|
29
29
|
* sie trotzdem ueber diesen Weg (ein Dialekt je Client, Nachtrag §5.2).
|
|
30
30
|
*/
|
|
31
|
-
export declare const POS_CALLS: readonly ["pairRegisterDevice", "listRegisterUsersForDevice", "listRegisterSessionsForDevice", "registerUserLogin", "registerPinLogin", "renewRegisterSession", "endRegisterSession", "unpairRegisterDevice", "listMyCashregisters", "listMyReceipts", "getReceipt", "createReceipt", "generateFullReceiptId", "cancelReceipt", "sendReceiptEmail", "listMyArticleGroups", "listMyArticles", "getKasseSettings", "setMyKasseSettings", "setMyKasseLogo", "setMyRegisterDeviceSettings", "listMyPrinters", "createPrintJob", "getPrintJob", "listMyTipRecipients", "listMyStockLocations", "listMyStock", "setMyCashregisterStockLocation", "listMyStocktakes", "listMyStocktakeItems", "listMyStocktakeCounts", "recordMyStocktakeCount", "voidMyStocktakeCount", "checkVoucher", "reprintVoucherLabel", "getMyDrawerState", "openMyShift", "recordMyCashMovement", "logMyDrawerOpenings", "getMyShiftReport", "closeMyShift"];
|
|
31
|
+
export declare const POS_CALLS: readonly ["pairRegisterDevice", "listRegisterUsersForDevice", "listRegisterSessionsForDevice", "registerUserLogin", "registerPinLogin", "renewRegisterSession", "endRegisterSession", "unpairRegisterDevice", "listMyCashregisters", "listMyReceipts", "getReceipt", "createReceipt", "generateFullReceiptId", "cancelReceipt", "sendReceiptEmail", "listMyArticleGroups", "listMyArticles", "getKasseSettings", "setMyKasseSettings", "setMyKasseLogo", "setMyRegisterDeviceSettings", "listMyPrinters", "createPrintJob", "getPrintJob", "listMyTipRecipients", "listMyStockLocations", "listMyStock", "setMyCashregisterStockLocation", "listMyStocktakes", "listMyStocktakeItems", "listMyStocktakeCounts", "recordMyStocktakeCount", "voidMyStocktakeCount", "checkVoucher", "reprintVoucherLabel", "getMyDrawerState", "openMyShift", "recordMyCashMovement", "logMyDrawerOpenings", "getMyShiftReport", "closeMyShift", "logReceiptOutputs"];
|
|
32
32
|
export type PublicCall = typeof PUBLIC_CALLS[number];
|
|
33
33
|
export type PosCall = typeof POS_CALLS[number];
|
|
34
34
|
/**
|
|
@@ -49,7 +49,7 @@ export type PosCall = typeof POS_CALLS[number];
|
|
|
49
49
|
* [ALL_CALLS], [PUBLIC_CALLS] und [POS_CALLS] steht entweder hier oder in
|
|
50
50
|
* [CALLS_WITHOUT_EFFECT] (Waechter `test/ausgang-einordnung.test.ts`).
|
|
51
51
|
*/
|
|
52
|
-
export declare const UNKNOWN_OUTCOME_CALLS: readonly ["activateCashregister", "addVariant", "cancelInvoice", "cancelReceipt", "cancelStocktake", "changeStockCondition", "closeMyShift", "closeStocktake", "createArticle", "createCreditNote", "createCustomer", "createCustomerCashregister", "createInvoiceItem", "createPartnerCustomer", "createPartnerWebhook", "createPrintJob", "createReceipt", "createReservation", "createStocktake", "createVariantGroup", "createWebhook", "deactivateArticle", "deletePartnerWebhook", "deleteWebhook", "extendReservation", "financeWebService", "hobexPayApi", "hobexRefundApi", "issueInvoice", "logMyDrawerOpenings", "openMyShift", "orderSignatureCard", "pairRegisterDevice", "receiveGoods", "recordInvoicePayment", "recordMyCashMovement", "recordMyStocktakeCount", "recordStockLoss", "recordStocktakeCount", "recountStocktake", "releaseReservation", "reportCustomerContract", "requestCustomerSignature", "reverseStockMovement", "reviewStocktake", "revokeCustomerMandate", "rotatePartnerWebhookSecret", "rotateWebhookSecret", "sendPartnerCustomerFonLink", "sendPartnerWebhookTest", "sendReceiptEmail", "sendWebhookTest", "setCustomerMandate", "setMyCashregisterStockLocation", "setMyKasseLogo", "setMyKasseSettings", "setMyRegisterDeviceSettings", "stripeCaptureIntent", "transferStock", "unpairRegisterDevice", "updateArticle", "updateCustomer", "updateInvoiceItem", "updatePartnerWebhook", "updateVariantGroup", "updateWebhook", "voidMyStocktakeCount", "voidStocktakeCount", "withdrawInvoiceItem"];
|
|
52
|
+
export declare const UNKNOWN_OUTCOME_CALLS: readonly ["activateCashregister", "addVariant", "cancelInvoice", "cancelReceipt", "cancelStocktake", "changeStockCondition", "closeMyShift", "closeStocktake", "createArticle", "createCreditNote", "createCustomer", "createCustomerCashregister", "createInvoiceItem", "createPartnerCustomer", "createPartnerWebhook", "createPrintJob", "createReceipt", "createReservation", "createStocktake", "createVariantGroup", "createWebhook", "deactivateArticle", "deletePartnerWebhook", "deleteWebhook", "extendReservation", "financeWebService", "hobexPayApi", "hobexRefundApi", "issueInvoice", "logMyDrawerOpenings", "logReceiptOutputs", "openMyShift", "orderSignatureCard", "pairRegisterDevice", "receiveGoods", "recordInvoicePayment", "recordMyCashMovement", "recordMyStocktakeCount", "recordStockLoss", "recordStocktakeCount", "recountStocktake", "releaseReservation", "reportCustomerContract", "requestCustomerSignature", "reverseStockMovement", "reviewStocktake", "revokeCustomerMandate", "rotatePartnerWebhookSecret", "rotateWebhookSecret", "sendPartnerCustomerFonLink", "sendPartnerWebhookTest", "sendReceiptEmail", "sendWebhookTest", "setCustomerMandate", "setMyCashregisterStockLocation", "setMyKasseLogo", "setMyKasseSettings", "setMyRegisterDeviceSettings", "stripeCaptureIntent", "transferStock", "unpairRegisterDevice", "updateArticle", "updateCustomer", "updateInvoiceItem", "updatePartnerWebhook", "updateVariantGroup", "updateWebhook", "voidMyStocktakeCount", "voidStocktakeCount", "withdrawInvoiceItem"];
|
|
53
53
|
/** Warum ein Aufruf keine Wirkung hat, die ein Zeitlimit offen lassen koennte. */
|
|
54
54
|
export type CallWithoutEffectReason = 'read' | 'repeatable';
|
|
55
55
|
/**
|
|
@@ -85,10 +85,10 @@ export declare const CALLS_WITHOUT_EFFECT: Readonly<Record<string, CallWithoutEf
|
|
|
85
85
|
* absetzt, sagt es mit `hasEffect: true`.
|
|
86
86
|
*/
|
|
87
87
|
export declare function isUnknownOutcomeCall(name: string): boolean;
|
|
88
|
-
/** Einer der
|
|
88
|
+
/** Einer der 42 Aufrufe des Kassenwegs. */
|
|
89
89
|
export declare function isPosCall(name: string): boolean;
|
|
90
90
|
/**
|
|
91
|
-
* Nur ueber den Kassenweg erreichbar (
|
|
91
|
+
* Nur ueber den Kassenweg erreichbar (36 Namen): unter `api.kasseneck.at/v3`
|
|
92
92
|
* gibt es sie nicht. Der Transport schickt sie darum ohne eigene Basis an
|
|
93
93
|
* [POS_BASE_URL] statt an die oeffentliche Basis.
|
|
94
94
|
*/
|
|
@@ -138,6 +138,8 @@ export const ALL_CALLS = [
|
|
|
138
138
|
'logMyDrawerOpenings',
|
|
139
139
|
'getMyShiftReport',
|
|
140
140
|
'closeMyShift',
|
|
141
|
+
// Ausgaben eines Belegs (Drucke, Teilen) melden: nur ueber den Kassenweg.
|
|
142
|
+
'logReceiptOutputs',
|
|
141
143
|
];
|
|
142
144
|
/**
|
|
143
145
|
* Die oeffentlichen Endpunkte unter `/v3` (`https://api.kasseneck.at/v3/<name>`),
|
|
@@ -313,6 +315,8 @@ export const POS_CALLS = [
|
|
|
313
315
|
'logMyDrawerOpenings',
|
|
314
316
|
'getMyShiftReport',
|
|
315
317
|
'closeMyShift',
|
|
318
|
+
// Ausgaben eines Belegs melden: nur ueber den Kassenweg.
|
|
319
|
+
'logReceiptOutputs',
|
|
316
320
|
];
|
|
317
321
|
/**
|
|
318
322
|
* Die Aufrufe **mit Wirkung**, alphabetisch: sie legen etwas an, aendern oder
|
|
@@ -363,6 +367,7 @@ export const UNKNOWN_OUTCOME_CALLS = [
|
|
|
363
367
|
'hobexRefundApi',
|
|
364
368
|
'issueInvoice',
|
|
365
369
|
'logMyDrawerOpenings',
|
|
370
|
+
'logReceiptOutputs',
|
|
366
371
|
'openMyShift',
|
|
367
372
|
'orderSignatureCard',
|
|
368
373
|
'pairRegisterDevice',
|
|
@@ -516,12 +521,12 @@ export function isUnknownOutcomeCall(name) {
|
|
|
516
521
|
const OEFFENTLICH = new Set(PUBLIC_CALLS);
|
|
517
522
|
const KASSENWEG = new Set(POS_CALLS);
|
|
518
523
|
const NUR_KASSE = new Set(POS_CALLS.filter((name) => !OEFFENTLICH.has(name)));
|
|
519
|
-
/** Einer der
|
|
524
|
+
/** Einer der 42 Aufrufe des Kassenwegs. */
|
|
520
525
|
export function isPosCall(name) {
|
|
521
526
|
return KASSENWEG.has(name);
|
|
522
527
|
}
|
|
523
528
|
/**
|
|
524
|
-
* Nur ueber den Kassenweg erreichbar (
|
|
529
|
+
* Nur ueber den Kassenweg erreichbar (36 Namen): unter `api.kasseneck.at/v3`
|
|
525
530
|
* gibt es sie nicht. Der Transport schickt sie darum ohne eigene Basis an
|
|
526
531
|
* [POS_BASE_URL] statt an die oeffentliche Basis.
|
|
527
532
|
*/
|
|
@@ -2,7 +2,7 @@ export { type AuthCredentials, type KasseneckAuth, type ApiKeyAuthOptions, type
|
|
|
2
2
|
export { DEFAULT_BASE_URL, POS_BASE_URL, DEFAULT_TIMEOUT_MS, type HttpResponseLike, type HttpRequestInit, type FetchLike, type TransportOptions, type TransportBodyFields, type TransportCallOptions, type KasseneckTransport, type KasseneckBinaryTransport, type KasseneckPdfOrDataTransport, type PdfOrData, createTransport, createBinaryTransport, createPdfOrDataTransport, } from './transport.js';
|
|
3
3
|
export { ALL_CALLS, type ApiCall, PUBLIC_CALLS, POS_CALLS, UNKNOWN_OUTCOME_CALLS, type PublicCall, type PosCall, } from './aufrufe.js';
|
|
4
4
|
export { KasseneckApiError, KasseneckAuthError, KasseneckHttpError, KasseneckNetworkError, KasseneckValidationError, type ValidationScope, type KasseneckError, type HttpFailureReason, type CauseDigest, type ErrorOutcome, CLIENT_ERROR_CODES, type ClientErrorCode, isKasseneckApiError, isKasseneckAuthError, isKasseneckHttpError, isKasseneckNetworkError, isKasseneckValidationError, isOutcomeUnknown, } from './errors.js';
|
|
5
|
-
export { type ReceiptCommonOptions, type SellReceiptOptions, type TipOptions, type TipRecipientShare, type CancelReceiptOptions, type ReceiptWithCompany, sellReceipt, sellReceiptWithCompany, paymentsExpectedCents, cardRefundReference, receiptLayoutFromResult, cancelReceipt, type CancelReceiptResult, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, type ListMyReceiptsOptions, type ReceiptList, type ReceiptListStats, checkVoucherCombinationError, type SendReceiptEmailOptions, type SendReceiptEmailResult, sendReceiptEmail, } from './receipts.js';
|
|
5
|
+
export { type ReceiptCommonOptions, type SellReceiptOptions, type TipOptions, type TipRecipientShare, type CancelReceiptOptions, type ReceiptWithCompany, sellReceipt, sellReceiptWithCompany, paymentsExpectedCents, cardRefundReference, receiptLayoutFromResult, cancelReceipt, type CancelReceiptResult, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, type ListMyReceiptsOptions, type ReceiptList, type ReceiptListStats, checkVoucherCombinationError, type SendReceiptEmailOptions, type SendReceiptEmailResult, sendReceiptEmail, type ReceiptOutputEntry, type LogReceiptOutputsOptions, type LogReceiptOutputsResult, type RejectedReceiptOutput, logReceiptOutputs, } from './receipts.js';
|
|
6
6
|
export { listMyCashregisters } from './cashregisters.js';
|
|
7
7
|
export { downloadDailyReport, downloadMonthlyReport, getCashregisterReport, getReportV2, type CashregisterReportPeriod, type ReportV2, type ReportV2Metadata, type ReportV2Options } from './reports.js';
|
|
8
8
|
export { type CashboxStatus, type SignatureStatus, getCashboxStatus, getSignatureStatus, } from './status.js';
|
package/dist/esm/client/index.js
CHANGED
|
@@ -2,7 +2,7 @@ export { apiKeyAuth, registerUserAuth, } from './auth.js';
|
|
|
2
2
|
export { DEFAULT_BASE_URL, POS_BASE_URL, DEFAULT_TIMEOUT_MS, createTransport, createBinaryTransport, createPdfOrDataTransport, } from './transport.js';
|
|
3
3
|
export { ALL_CALLS, PUBLIC_CALLS, POS_CALLS, UNKNOWN_OUTCOME_CALLS, } from './aufrufe.js';
|
|
4
4
|
export { KasseneckApiError, KasseneckAuthError, KasseneckHttpError, KasseneckNetworkError, KasseneckValidationError, CLIENT_ERROR_CODES, isKasseneckApiError, isKasseneckAuthError, isKasseneckHttpError, isKasseneckNetworkError, isKasseneckValidationError, isOutcomeUnknown, } from './errors.js';
|
|
5
|
-
export { sellReceipt, sellReceiptWithCompany, paymentsExpectedCents, cardRefundReference, receiptLayoutFromResult, cancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, checkVoucherCombinationError, sendReceiptEmail, } from './receipts.js';
|
|
5
|
+
export { sellReceipt, sellReceiptWithCompany, paymentsExpectedCents, cardRefundReference, receiptLayoutFromResult, cancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, checkVoucherCombinationError, sendReceiptEmail, logReceiptOutputs, } from './receipts.js';
|
|
6
6
|
export { listMyCashregisters } from './cashregisters.js';
|
|
7
7
|
export { downloadDailyReport, downloadMonthlyReport, getCashregisterReport, getReportV2 } from './reports.js';
|
|
8
8
|
export { getCashboxStatus, getSignatureStatus, } from './status.js';
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ReceiptType, type ReceiptTypeKey, KeckPaymentMethod, type KeckPaymentMethodKey } from '../enums/index.js';
|
|
2
2
|
import { type Receipt, type ReceiptCompany, type ReceiptItem, type Voucher, type ReceiptSummary, type ReportMonth, type CancellationItem, type CancellationOf, type CancellationReason, type TipRefundSource, type ReturnDisposition, type ReceiptPaymentInput, type RegistrationInfo, type ReceiptEmailVia } from '../models/index.js';
|
|
3
|
+
import { type ReceiptOutput, type ReceiptOutputEntryErrorCode, type ReceiptOutputLogKind, type ReceiptOutputResult } from '../models/receipt-output.js';
|
|
3
4
|
import type { InternerTransport } from './aufrufe.js';
|
|
4
5
|
import { type ReceiptLayout } from '../receipt/layout.js';
|
|
5
6
|
import type { PosPaperSize } from '../printing/escpos.js';
|
|
@@ -140,8 +141,9 @@ export type CancelReceiptOptions = {
|
|
|
140
141
|
/**
|
|
141
142
|
* Rueckzahlung je Zahlung (Betraege negativ, `refundOf` = `id` der
|
|
142
143
|
* Originalzahlung). Ohne Angabe spiegelt der Server die Restbetraege jeder
|
|
143
|
-
* Originalzahlung
|
|
144
|
-
*
|
|
144
|
+
* Originalzahlung (Ausnahme Storno einer Gutschein-Auszahlung: genau eine
|
|
145
|
+
* positive Barzahlung ohne `refundOf`); ein Teilstorno eines Belegs mit
|
|
146
|
+
* mehreren Zahlungen braucht sie (`cancellation_payments_required`).
|
|
145
147
|
*
|
|
146
148
|
* **Karten-Storno:** `provider`, `providerPaymentId` und `providerData`
|
|
147
149
|
* beschreiben die ERSTATTUNG am Terminal, nie die Originalzahlung. Die
|
|
@@ -216,6 +218,13 @@ export interface ReceiptWithCompany {
|
|
|
216
218
|
* setzen das Logo in genau dieser Stufe; fehlt der Wert, gilt `M`.
|
|
217
219
|
*/
|
|
218
220
|
logoScale: SheetLogoSize;
|
|
221
|
+
/**
|
|
222
|
+
* Ausgaben des Belegs (`data.outputs`, nur `getReceipt` unter `/v3`): die
|
|
223
|
+
* neuesten 20, neueste zuerst. Fehlt, wenn die Antwort keine Liste traegt
|
|
224
|
+
* (Verkauf, `/api`). Gelesen nach [ReceiptOutput]; ein kaputter Eintrag
|
|
225
|
+
* faellt weg, der Beleg bleibt lesbar.
|
|
226
|
+
*/
|
|
227
|
+
outputs?: ReceiptOutput[];
|
|
219
228
|
}
|
|
220
229
|
/**
|
|
221
230
|
* Das Zeilenmodell zum Drucken und Anzeigen eines Belegs aus einer Antwort.
|
|
@@ -402,6 +411,80 @@ export interface SendReceiptEmailResult {
|
|
|
402
411
|
* eine zweite Mail und zaehlt auf die Schleuse.
|
|
403
412
|
*/
|
|
404
413
|
export declare function sendReceiptEmail(transport: InternerTransport, options: SendReceiptEmailOptions): Promise<SendReceiptEmailResult>;
|
|
414
|
+
/**
|
|
415
|
+
* Eine Ausgabe, wie die Kasse sie puffert und meldet: ein Druck oder ein
|
|
416
|
+
* Teilen des Belegs. Siehe [logReceiptOutputs].
|
|
417
|
+
*/
|
|
418
|
+
export interface ReceiptOutputEntry {
|
|
419
|
+
/**
|
|
420
|
+
* Idempotenzschluessel des Eintrags, am Geraet beim Puffern vergeben und
|
|
421
|
+
* beim Nachsenden unveraendert: ein zweites Melden legt keinen zweiten
|
|
422
|
+
* Eintrag an. 8–64 Zeichen `[A-Za-z0-9_-]` (Regel des Servers); ein anderer
|
|
423
|
+
* Schluessel wirft vor dem Senden.
|
|
424
|
+
*/
|
|
425
|
+
key: string;
|
|
426
|
+
/** Beleg in der Kasse der Anmeldung; ein Beleg einer anderen Kasse ist `receipt_not_found`. */
|
|
427
|
+
receiptId: string;
|
|
428
|
+
/** `print` (Erstdruck), `reprint` (Duplikat, gedruckt mit `markAsDuplicate`), `link_shared`, `pdf_shared`. */
|
|
429
|
+
kind: ReceiptOutputLogKind;
|
|
430
|
+
/**
|
|
431
|
+
* Zeitpunkt am Geraet: Millisekunden seit 1970 oder ISO 8601 **mit Zone**
|
|
432
|
+
* (`new Date().toISOString()`); Text ohne Zone wirft vor dem Senden. Eine
|
|
433
|
+
* falsch gehende Geraeteuhr lehnt der Server nicht ab: er klemmt die Zeit auf
|
|
434
|
+
* Belegzeit bis Eingang.
|
|
435
|
+
*/
|
|
436
|
+
at: number | string;
|
|
437
|
+
/**
|
|
438
|
+
* Ergebnis eines Drucks: `ok`, `failed` (sicher nicht gedruckt) oder
|
|
439
|
+
* `unclear` (Ausgang offen). Pflicht bei `print` und `reprint` (sonst lehnt
|
|
440
|
+
* der Server den Eintrag mit `validation` ab); beim Teilen ohne Angabe `ok`.
|
|
441
|
+
*/
|
|
442
|
+
result?: ReceiptOutputResult;
|
|
443
|
+
}
|
|
444
|
+
/** Eingabe von [logReceiptOutputs]. Die Kasse bindet die Anmeldung (wie bei [sendReceiptEmail]). */
|
|
445
|
+
export interface LogReceiptOutputsOptions {
|
|
446
|
+
/** 1–50 Eintraege ([RECEIPT_OUTPUT_ENTRIES_MAX]); ein groesserer Puffer geht in mehreren Aufrufen hinaus. */
|
|
447
|
+
entries: ReceiptOutputEntry[];
|
|
448
|
+
}
|
|
449
|
+
/** Ein abgelehnter Eintrag: dauerhaft, aus dem Puffer nehmen und nicht noch einmal senden. */
|
|
450
|
+
export interface RejectedReceiptOutput {
|
|
451
|
+
key: string;
|
|
452
|
+
/** Aus [RECEIPT_OUTPUT_ENTRY_ERROR_CODES]; ein Code, den das Paket nicht kennt, bleibt lesbar. */
|
|
453
|
+
code: ReceiptOutputEntryErrorCode | (string & {});
|
|
454
|
+
}
|
|
455
|
+
/** Antwort von [logReceiptOutputs]. */
|
|
456
|
+
export interface LogReceiptOutputsResult {
|
|
457
|
+
/** Angenommene Eintraege, auch die schon frueher gemeldeten (gleicher Schluessel). */
|
|
458
|
+
accepted: number;
|
|
459
|
+
rejected: RejectedReceiptOutput[];
|
|
460
|
+
}
|
|
461
|
+
/**
|
|
462
|
+
* Meldet Drucke und das Teilen eines Belegs an das Protokoll „Ausgaben“
|
|
463
|
+
* (Endpunkt `logReceiptOutputs`, nur ueber den Kassenweg `/api/v3`; mit
|
|
464
|
+
* `registerUserAuth` und mit `apiKeyAuth`). Registrierkassen-Erlass
|
|
465
|
+
* BMF-AV Nr. 2/2026, Abschnitt 4.2: die Belegerteilung ist zu dokumentieren.
|
|
466
|
+
* Der Beleg selbst bleibt unberuehrt; das Protokoll steht nie im DEP.
|
|
467
|
+
*
|
|
468
|
+
* **Ein Eintrag scheitert nie die anderen.** Der Server nimmt jeden Eintrag
|
|
469
|
+
* einzeln an oder lehnt ihn mit Code ab (`rejected`, Codes
|
|
470
|
+
* [RECEIPT_OUTPUT_ENTRY_ERROR_CODES]); nach einer Erfolgsantwort ist jeder
|
|
471
|
+
* gesendete Eintrag erledigt. Die Kasse puffert die Eintraege (offline,
|
|
472
|
+
* Neustart) und sendet sie spaeter; der Puffer blockiert nie Druck oder Teilen.
|
|
473
|
+
*
|
|
474
|
+
* **Wiederholen ist gefahrlos:** jeder Eintrag traegt seinen Schluessel. Bei
|
|
475
|
+
* unklarem Ausgang (`outcome: 'unknown'`) dieselben Eintraege mit denselben
|
|
476
|
+
* Schluesseln noch einmal senden.
|
|
477
|
+
*
|
|
478
|
+
* **Vor dem Senden abgewiesen** wird nur, was die ganze Anfrage scheitern
|
|
479
|
+
* liesse oder ohne Netz sicher falsch ist: keine oder mehr als 50 Eintraege,
|
|
480
|
+
* ein unbekanntes Feld (oben oder im Eintrag), ein fehlender Beleg, ein
|
|
481
|
+
* Schluessel ausserhalb der Regel des Servers, eine Art oder ein Ergebnis
|
|
482
|
+
* ausserhalb des Katalogs, eine Zeit, die weder ganze Millisekunden noch
|
|
483
|
+
* ISO 8601 mit Zone ist. `email` und `opened` gehen hinaus und kommen als
|
|
484
|
+
* `invalid_output_kind` zurueck: so verwirft der Puffer genau diesen Eintrag.
|
|
485
|
+
* Fehler der ganzen Anfrage: [RECEIPT_OUTPUT_ERROR_CODES].
|
|
486
|
+
*/
|
|
487
|
+
export declare function logReceiptOutputs(transport: InternerTransport, options: LogReceiptOutputsOptions): Promise<LogReceiptOutputsResult>;
|
|
405
488
|
/**
|
|
406
489
|
* Prueft die Gutschein-Kombination eines Belegs und liefert den ersten
|
|
407
490
|
* Regelverstoss als Text (oder `null`) — Zwilling von
|