@kreiseck/kasseneck-api 1.17.0 → 1.18.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/dist/cjs/client/list-receipts.d.ts +3 -0
- package/dist/cjs/client/list-receipts.js +6 -0
- package/dist/cjs/client/receipts.d.ts +6 -0
- package/dist/cjs/client/receipts.js +6 -0
- package/dist/cjs/client/reports.d.ts +10 -9
- package/dist/cjs/client/reports.js +10 -9
- package/dist/cjs/models/index.d.ts +1 -0
- package/dist/cjs/models/index.js +6 -1
- package/dist/cjs/models/manual-receipt.d.ts +45 -0
- package/dist/cjs/models/manual-receipt.js +58 -0
- package/dist/cjs/models/receipt-summary.d.ts +4 -0
- package/dist/cjs/models/receipt-summary.js +6 -0
- package/dist/cjs/models/receipt.d.ts +4 -0
- package/dist/cjs/models/receipt.js +6 -0
- package/dist/cjs/receipt/layout.js +57 -0
- package/dist/cjs/stored/vokabular.d.ts +1 -1
- package/dist/cjs/stored/vokabular.js +23 -2
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/client/list-receipts.d.ts +3 -0
- package/dist/esm/client/list-receipts.js +6 -0
- package/dist/esm/client/receipts.d.ts +6 -0
- package/dist/esm/client/receipts.js +6 -0
- package/dist/esm/client/reports.d.ts +10 -9
- package/dist/esm/client/reports.js +10 -9
- package/dist/esm/models/index.d.ts +1 -0
- package/dist/esm/models/index.js +1 -0
- package/dist/esm/models/manual-receipt.d.ts +45 -0
- package/dist/esm/models/manual-receipt.js +53 -0
- package/dist/esm/models/receipt-summary.d.ts +4 -0
- package/dist/esm/models/receipt-summary.js +6 -0
- package/dist/esm/models/receipt.d.ts +4 -0
- package/dist/esm/models/receipt.js +6 -0
- package/dist/esm/receipt/layout.js +57 -0
- package/dist/esm/stored/vokabular.d.ts +1 -1
- package/dist/esm/stored/vokabular.js +23 -2
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/fixtures/expected/manual-receipt-range-device-failure-count.grid32.txt +36 -0
- package/fixtures/expected/manual-receipt-range-device-failure-count.grid48.txt +36 -0
- package/fixtures/expected/manual-receipt-range-device-failure-count.lines.json +299 -0
- package/fixtures/expected/manual-receipt-range-device-failure-count.sheet32.json +242 -0
- package/fixtures/expected/manual-receipt-range-device-failure-count.sheet48.json +242 -0
- package/fixtures/expected/manual-receipt-range-device-failure-no-count.grid32.txt +36 -0
- package/fixtures/expected/manual-receipt-range-device-failure-no-count.grid48.txt +36 -0
- package/fixtures/expected/manual-receipt-range-device-failure-no-count.lines.json +299 -0
- package/fixtures/expected/manual-receipt-range-device-failure-no-count.sheet32.json +242 -0
- package/fixtures/expected/manual-receipt-range-device-failure-no-count.sheet48.json +242 -0
- package/fixtures/expected/manual-receipt-range-network-outage-count.grid32.txt +33 -0
- package/fixtures/expected/manual-receipt-range-network-outage-count.grid48.txt +33 -0
- package/fixtures/expected/manual-receipt-range-network-outage-count.lines.json +259 -0
- package/fixtures/expected/manual-receipt-range-network-outage-count.sheet32.json +224 -0
- package/fixtures/expected/manual-receipt-range-network-outage-count.sheet48.json +224 -0
- package/fixtures/expected/manual-receipt-range-network-outage-no-count.grid32.txt +33 -0
- package/fixtures/expected/manual-receipt-range-network-outage-no-count.grid48.txt +33 -0
- package/fixtures/expected/manual-receipt-range-network-outage-no-count.lines.json +259 -0
- package/fixtures/expected/manual-receipt-range-network-outage-no-count.sheet32.json +224 -0
- package/fixtures/expected/manual-receipt-range-network-outage-no-count.sheet48.json +224 -0
- package/fixtures/expected/manual-receipt-range-other-count.grid32.txt +36 -0
- package/fixtures/expected/manual-receipt-range-other-count.grid48.txt +36 -0
- package/fixtures/expected/manual-receipt-range-other-count.lines.json +299 -0
- package/fixtures/expected/manual-receipt-range-other-count.sheet32.json +242 -0
- package/fixtures/expected/manual-receipt-range-other-count.sheet48.json +242 -0
- package/fixtures/expected/manual-receipt-range-other-no-count.grid32.txt +36 -0
- package/fixtures/expected/manual-receipt-range-other-no-count.grid48.txt +36 -0
- package/fixtures/expected/manual-receipt-range-other-no-count.lines.json +299 -0
- package/fixtures/expected/manual-receipt-range-other-no-count.sheet32.json +242 -0
- package/fixtures/expected/manual-receipt-range-other-no-count.sheet48.json +242 -0
- package/fixtures/expected/manual-receipt-range-power-outage-count.grid32.txt +37 -0
- package/fixtures/expected/manual-receipt-range-power-outage-count.grid48.txt +37 -0
- package/fixtures/expected/manual-receipt-range-power-outage-count.lines.json +305 -0
- package/fixtures/expected/manual-receipt-range-power-outage-count.sheet32.json +248 -0
- package/fixtures/expected/manual-receipt-range-power-outage-count.sheet48.json +248 -0
- package/fixtures/expected/manual-receipt-range-power-outage-no-count.grid32.txt +37 -0
- package/fixtures/expected/manual-receipt-range-power-outage-no-count.grid48.txt +37 -0
- package/fixtures/expected/manual-receipt-range-power-outage-no-count.lines.json +305 -0
- package/fixtures/expected/manual-receipt-range-power-outage-no-count.sheet32.json +248 -0
- package/fixtures/expected/manual-receipt-range-power-outage-no-count.sheet48.json +248 -0
- package/fixtures/expected/manual-receipt-range-system-outage-count.grid32.txt +33 -0
- package/fixtures/expected/manual-receipt-range-system-outage-count.grid48.txt +33 -0
- package/fixtures/expected/manual-receipt-range-system-outage-count.lines.json +259 -0
- package/fixtures/expected/manual-receipt-range-system-outage-count.sheet32.json +224 -0
- package/fixtures/expected/manual-receipt-range-system-outage-count.sheet48.json +224 -0
- package/fixtures/expected/manual-receipt-range-system-outage-no-count.grid32.txt +33 -0
- package/fixtures/expected/manual-receipt-range-system-outage-no-count.grid48.txt +33 -0
- package/fixtures/expected/manual-receipt-range-system-outage-no-count.lines.json +259 -0
- package/fixtures/expected/manual-receipt-range-system-outage-no-count.sheet32.json +224 -0
- package/fixtures/expected/manual-receipt-range-system-outage-no-count.sheet48.json +224 -0
- package/fixtures/expected/manual-receipt-single-device-failure-no-time.grid32.txt +31 -0
- package/fixtures/expected/manual-receipt-single-device-failure-no-time.grid48.txt +31 -0
- package/fixtures/expected/manual-receipt-single-device-failure-no-time.lines.json +253 -0
- package/fixtures/expected/manual-receipt-single-device-failure-no-time.sheet32.json +212 -0
- package/fixtures/expected/manual-receipt-single-device-failure-no-time.sheet48.json +212 -0
- package/fixtures/expected/manual-receipt-single-device-failure-time.grid32.txt +31 -0
- package/fixtures/expected/manual-receipt-single-device-failure-time.grid48.txt +31 -0
- package/fixtures/expected/manual-receipt-single-device-failure-time.lines.json +253 -0
- package/fixtures/expected/manual-receipt-single-device-failure-time.sheet32.json +212 -0
- package/fixtures/expected/manual-receipt-single-device-failure-time.sheet48.json +212 -0
- package/fixtures/expected/manual-receipt-single-network-outage-no-time.grid32.txt +32 -0
- package/fixtures/expected/manual-receipt-single-network-outage-no-time.grid48.txt +31 -0
- package/fixtures/expected/manual-receipt-single-network-outage-no-time.lines.json +253 -0
- package/fixtures/expected/manual-receipt-single-network-outage-no-time.sheet32.json +218 -0
- package/fixtures/expected/manual-receipt-single-network-outage-no-time.sheet48.json +212 -0
- package/fixtures/expected/manual-receipt-single-network-outage-time.grid32.txt +32 -0
- package/fixtures/expected/manual-receipt-single-network-outage-time.grid48.txt +31 -0
- package/fixtures/expected/manual-receipt-single-network-outage-time.lines.json +253 -0
- package/fixtures/expected/manual-receipt-single-network-outage-time.sheet32.json +218 -0
- package/fixtures/expected/manual-receipt-single-network-outage-time.sheet48.json +212 -0
- package/fixtures/expected/manual-receipt-single-other-no-time.grid32.txt +35 -0
- package/fixtures/expected/manual-receipt-single-other-no-time.grid48.txt +34 -0
- package/fixtures/expected/manual-receipt-single-other-no-time.lines.json +299 -0
- package/fixtures/expected/manual-receipt-single-other-no-time.sheet32.json +236 -0
- package/fixtures/expected/manual-receipt-single-other-no-time.sheet48.json +230 -0
- package/fixtures/expected/manual-receipt-single-other-time.grid32.txt +35 -0
- package/fixtures/expected/manual-receipt-single-other-time.grid48.txt +34 -0
- package/fixtures/expected/manual-receipt-single-other-time.lines.json +299 -0
- package/fixtures/expected/manual-receipt-single-other-time.sheet32.json +236 -0
- package/fixtures/expected/manual-receipt-single-other-time.sheet48.json +230 -0
- package/fixtures/expected/manual-receipt-single-outside-premises-no-time.grid32.txt +31 -0
- package/fixtures/expected/manual-receipt-single-outside-premises-no-time.grid48.txt +31 -0
- package/fixtures/expected/manual-receipt-single-outside-premises-no-time.lines.json +247 -0
- package/fixtures/expected/manual-receipt-single-outside-premises-no-time.sheet32.json +212 -0
- package/fixtures/expected/manual-receipt-single-outside-premises-no-time.sheet48.json +212 -0
- package/fixtures/expected/manual-receipt-single-outside-premises-time.grid32.txt +31 -0
- package/fixtures/expected/manual-receipt-single-outside-premises-time.grid48.txt +31 -0
- package/fixtures/expected/manual-receipt-single-outside-premises-time.lines.json +247 -0
- package/fixtures/expected/manual-receipt-single-outside-premises-time.sheet32.json +212 -0
- package/fixtures/expected/manual-receipt-single-outside-premises-time.sheet48.json +212 -0
- package/fixtures/expected/manual-receipt-single-power-outage-no-time.grid32.txt +35 -0
- package/fixtures/expected/manual-receipt-single-power-outage-no-time.grid48.txt +34 -0
- package/fixtures/expected/manual-receipt-single-power-outage-no-time.lines.json +299 -0
- package/fixtures/expected/manual-receipt-single-power-outage-no-time.sheet32.json +236 -0
- package/fixtures/expected/manual-receipt-single-power-outage-no-time.sheet48.json +230 -0
- package/fixtures/expected/manual-receipt-single-power-outage-time.grid32.txt +35 -0
- package/fixtures/expected/manual-receipt-single-power-outage-time.grid48.txt +34 -0
- package/fixtures/expected/manual-receipt-single-power-outage-time.lines.json +299 -0
- package/fixtures/expected/manual-receipt-single-power-outage-time.sheet32.json +236 -0
- package/fixtures/expected/manual-receipt-single-power-outage-time.sheet48.json +230 -0
- package/fixtures/expected/manual-receipt-single-small-business.grid32.txt +34 -0
- package/fixtures/expected/manual-receipt-single-small-business.grid48.txt +33 -0
- package/fixtures/expected/manual-receipt-single-small-business.lines.json +257 -0
- package/fixtures/expected/manual-receipt-single-small-business.sheet32.json +230 -0
- package/fixtures/expected/manual-receipt-single-small-business.sheet48.json +224 -0
- package/fixtures/expected/manual-receipt-single-system-outage-no-time.grid32.txt +32 -0
- package/fixtures/expected/manual-receipt-single-system-outage-no-time.grid48.txt +31 -0
- package/fixtures/expected/manual-receipt-single-system-outage-no-time.lines.json +253 -0
- package/fixtures/expected/manual-receipt-single-system-outage-no-time.sheet32.json +218 -0
- package/fixtures/expected/manual-receipt-single-system-outage-no-time.sheet48.json +212 -0
- package/fixtures/expected/manual-receipt-single-system-outage-time.grid32.txt +32 -0
- package/fixtures/expected/manual-receipt-single-system-outage-time.grid48.txt +31 -0
- package/fixtures/expected/manual-receipt-single-system-outage-time.lines.json +253 -0
- package/fixtures/expected/manual-receipt-single-system-outage-time.sheet32.json +218 -0
- package/fixtures/expected/manual-receipt-single-system-outage-time.sheet48.json +212 -0
- package/fixtures/expected/zero-outage-end-period.grid32.txt +35 -0
- package/fixtures/expected/zero-outage-end-period.grid48.txt +31 -0
- package/fixtures/expected/zero-outage-end-period.lines.json +230 -0
- package/fixtures/expected/zero-outage-end-period.sheet32.json +236 -0
- package/fixtures/expected/zero-outage-end-period.sheet48.json +212 -0
- 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 +192 -0
- package/fixtures/pos-texts.json +1 -1
- package/fixtures/receipts/manual-receipt-range-device-failure-count.json +56 -0
- package/fixtures/receipts/manual-receipt-range-device-failure-no-count.json +55 -0
- package/fixtures/receipts/manual-receipt-range-network-outage-count.json +50 -0
- package/fixtures/receipts/manual-receipt-range-network-outage-no-count.json +49 -0
- package/fixtures/receipts/manual-receipt-range-other-count.json +57 -0
- package/fixtures/receipts/manual-receipt-range-other-no-count.json +56 -0
- package/fixtures/receipts/manual-receipt-range-power-outage-count.json +56 -0
- package/fixtures/receipts/manual-receipt-range-power-outage-no-count.json +55 -0
- package/fixtures/receipts/manual-receipt-range-system-outage-count.json +50 -0
- package/fixtures/receipts/manual-receipt-range-system-outage-no-count.json +49 -0
- package/fixtures/receipts/manual-receipt-single-device-failure-no-time.json +48 -0
- package/fixtures/receipts/manual-receipt-single-device-failure-time.json +49 -0
- package/fixtures/receipts/manual-receipt-single-network-outage-no-time.json +49 -0
- package/fixtures/receipts/manual-receipt-single-network-outage-time.json +50 -0
- package/fixtures/receipts/manual-receipt-single-other-no-time.json +55 -0
- package/fixtures/receipts/manual-receipt-single-other-time.json +56 -0
- package/fixtures/receipts/manual-receipt-single-outside-premises-no-time.json +48 -0
- package/fixtures/receipts/manual-receipt-single-outside-premises-time.json +49 -0
- package/fixtures/receipts/manual-receipt-single-power-outage-no-time.json +54 -0
- package/fixtures/receipts/manual-receipt-single-power-outage-time.json +55 -0
- package/fixtures/receipts/manual-receipt-single-small-business.json +48 -0
- package/fixtures/receipts/manual-receipt-single-system-outage-no-time.json +49 -0
- package/fixtures/receipts/manual-receipt-single-system-outage-time.json +50 -0
- package/fixtures/receipts/zero-outage-end-period.json +43 -0
- package/fixtures/surface.json +1 -1
- package/fixtures/v3/README.md +8 -1
- package/fixtures/v3/antworten/belege.json +484 -3
- package/fixtures/v3/antworten/belegmail.json +5 -2
- package/fixtures/v3/antworten/berichte.json +151 -0
- package/fixtures/v3/antworten/kasse-belege.json +436 -3
- package/fixtures/v3/antworten/kasse.json +3 -3
- package/fixtures/v3/antworten/lager.json +1 -1
- package/fixtures/v3/antworten/rechnungen.json +5 -2
- package/fixtures/v3/antworten/storno.json +5 -2
- package/fixtures/v3/stored/belege.json +60 -3
- package/fixtures/v3/stored/kasse.json +3 -3
- package/fixtures/v3/stored/rechnungen.json +5 -2
- package/fixtures/v3/v3-vokabular.json +178 -9
- package/fixtures/v3/zahlbetrag-faelle.json +5 -2
- package/package.json +1 -1
|
@@ -173,6 +173,12 @@ export function createReceiptParams(options) {
|
|
|
173
173
|
if (options.customProjectId != null) {
|
|
174
174
|
params['customProjectId'] = options.customProjectId;
|
|
175
175
|
}
|
|
176
|
+
if (options.manualReceipt != null) {
|
|
177
|
+
if (typ !== ReceiptType.standard) {
|
|
178
|
+
throw eingabefehler(`manualReceipt ist nur bei receiptType standard moeglich, nicht bei "${typ.value}".`);
|
|
179
|
+
}
|
|
180
|
+
params['manualReceipt'] = options.manualReceipt;
|
|
181
|
+
}
|
|
176
182
|
if (options.customerDetails != null) {
|
|
177
183
|
params['customerDetails'] = options.customerDetails.join('\n');
|
|
178
184
|
}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { type Receipt, type ReceiptCompany, type ReportMonth } from '../models/index.js';
|
|
2
2
|
import type { InternerBinaerTransport, InternerTransport } from './aufrufe.js';
|
|
3
3
|
/**
|
|
4
|
-
* Bericht-Downloads — Zwilling von `
|
|
5
|
-
*
|
|
4
|
+
* Bericht-Downloads — Zwilling von `getCashregisterReport`,
|
|
5
|
+
* `downloadDailyReport` und `downloadMonthlyReport` in
|
|
6
|
+
* kasseneck_api/lib/kasseneck_api.dart.
|
|
6
7
|
*
|
|
7
|
-
* **
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
8
|
+
* **Alle drei liefern ein PDF, also Binaerdaten.** `response.text()` waere hier
|
|
9
|
+
* falsch: es deutet die Bytes als UTF-8 und ersetzt jedes Byte ueber 0x7F
|
|
10
|
+
* durch U+FFFD, ein so "heruntergeladener" Bericht liesse sich in keinem
|
|
11
|
+
* Betrachter oeffnen. Gelesen wird `arrayBuffer()`, geliefert `Uint8Array`;
|
|
12
|
+
* eine Ablehnung mit HTTP 200 und Huelle (`period_not_closed`) wird zum Fehler
|
|
13
|
+
* (siehe [createBinaryTransport] in transport.ts). Der Dart-Zwilling reichte
|
|
14
|
+
* sie bis 11.8.0 als PDF durch und prueft seit 11.8.1 ebenso die ersten Bytes.
|
|
14
15
|
*
|
|
15
16
|
* **Kassen-Benutzer-Weg (`registerUserAuth`, Browser-Kasse):** Keiner der
|
|
16
17
|
* beiden Download-Endpunkte setzt `allowRegisterUser`; sie funktionieren nur
|
|
@@ -2,16 +2,17 @@ import { fromReceiptCompanyPayload, fromReceiptPayload, } from '../models/index.
|
|
|
2
2
|
import { toViennaWallClock } from '../vienna-time.js';
|
|
3
3
|
import { KasseneckValidationError } from './errors.js';
|
|
4
4
|
/**
|
|
5
|
-
* Bericht-Downloads — Zwilling von `
|
|
6
|
-
*
|
|
5
|
+
* Bericht-Downloads — Zwilling von `getCashregisterReport`,
|
|
6
|
+
* `downloadDailyReport` und `downloadMonthlyReport` in
|
|
7
|
+
* kasseneck_api/lib/kasseneck_api.dart.
|
|
7
8
|
*
|
|
8
|
-
* **
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
9
|
+
* **Alle drei liefern ein PDF, also Binaerdaten.** `response.text()` waere hier
|
|
10
|
+
* falsch: es deutet die Bytes als UTF-8 und ersetzt jedes Byte ueber 0x7F
|
|
11
|
+
* durch U+FFFD, ein so "heruntergeladener" Bericht liesse sich in keinem
|
|
12
|
+
* Betrachter oeffnen. Gelesen wird `arrayBuffer()`, geliefert `Uint8Array`;
|
|
13
|
+
* eine Ablehnung mit HTTP 200 und Huelle (`period_not_closed`) wird zum Fehler
|
|
14
|
+
* (siehe [createBinaryTransport] in transport.ts). Der Dart-Zwilling reichte
|
|
15
|
+
* sie bis 11.8.0 als PDF durch und prueft seit 11.8.1 ebenso die ersten Bytes.
|
|
15
16
|
*
|
|
16
17
|
* **Kassen-Benutzer-Weg (`registerUserAuth`, Browser-Kasse):** Keiner der
|
|
17
18
|
* beiden Download-Endpunkte setzt `allowRegisterUser`; sie funktionieren nur
|
|
@@ -10,6 +10,7 @@ export { RECEIPT_OUTPUT_KINDS, type ReceiptOutputKind, RECEIPT_OUTPUT_LOG_KINDS,
|
|
|
10
10
|
export { type ReceiptCompany, type ReceiptCompanyPayload, fromReceiptCompanyPayload, receiptCompanyTaxInfo, } from './receipt-company.js';
|
|
11
11
|
export { type Cashregister, type CashregisterOnboarding, type CashregisterPayload, type CashregisterOnboardingPayload, type CashregisterAutoLogout, type CashregisterAutoLogoutPayload, fromCashregisterPayload, } from './cashregister.js';
|
|
12
12
|
export { type ReceiptSummary, type ReceiptSummaryPayload, fromReceiptSummaryPayload, type ZeroKind, ZERO_KINDS, isZeroKind } from './receipt-summary.js';
|
|
13
|
+
export { type ManualReceipt, type ManualReceiptReason, MANUAL_RECEIPT_REASONS, readManualReceipt, type ManualReceiptErrorCode, MANUAL_RECEIPT_ERROR_CODES, isManualReceiptErrorCode, } from './manual-receipt.js';
|
|
13
14
|
export { type ReportMonth, reportMonthFromDate, previousReportMonth, nextReportMonth, reportMonthKey, reportMonthReadable, } from './report-month.js';
|
|
14
15
|
export { type StripeUrlSession, type StripeUrlSessionPayload, toStripeUrlSessionPayload, fromStripeUrlSessionPayload, } from './stripe-url-session.js';
|
|
15
16
|
export { type HobexReceipt, type HobexReceiptPayload, toHobexReceiptPayload, fromHobexReceiptPayload, hobexReceiptToCardPaymentData, hobexReceiptNeedsSignature, } from './hobex-receipt.js';
|
package/dist/esm/models/index.js
CHANGED
|
@@ -10,6 +10,7 @@ export { RECEIPT_OUTPUT_KINDS, RECEIPT_OUTPUT_LOG_KINDS, RECEIPT_OUTPUT_RESULTS,
|
|
|
10
10
|
export { fromReceiptCompanyPayload, receiptCompanyTaxInfo, } from './receipt-company.js';
|
|
11
11
|
export { fromCashregisterPayload, } from './cashregister.js';
|
|
12
12
|
export { fromReceiptSummaryPayload, ZERO_KINDS, isZeroKind } from './receipt-summary.js';
|
|
13
|
+
export { MANUAL_RECEIPT_REASONS, readManualReceipt, MANUAL_RECEIPT_ERROR_CODES, isManualReceiptErrorCode, } from './manual-receipt.js';
|
|
13
14
|
export { reportMonthFromDate, previousReportMonth, nextReportMonth, reportMonthKey, reportMonthReadable, } from './report-month.js';
|
|
14
15
|
export { toStripeUrlSessionPayload, fromStripeUrlSessionPayload, } from './stripe-url-session.js';
|
|
15
16
|
export { toHobexReceiptPayload, fromHobexReceiptPayload, hobexReceiptToCardPaymentData, hobexReceiptNeedsSignature, } from './hobex-receipt.js';
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nacherfassung eines Handbelegs (`manualReceipt` am Beleg, Backend
|
|
3
|
+
* `handbeleg`): Nach einem Ausfall der Kasse oder einer Leistung ausser Haus
|
|
4
|
+
* wird der handschriftliche Beleg (Paragon) in der Kasse nacherfasst. Der
|
|
5
|
+
* Beleg traegt dann Nummer, Datum und Grund des Handbelegs; sein eigener
|
|
6
|
+
* Zeitstempel bleibt der Zeitpunkt der Nacherfassung (kein Rueckdatieren).
|
|
7
|
+
*
|
|
8
|
+
* Rechtsgrundlage: § 17 Abs 5 RKSV, Registrierkassenerlass Abschnitt 3.6.1
|
|
9
|
+
* (Ausfall, Tagessammelbeleg erlaubt) und 6.7 (ausser Haus, jeder Beleg
|
|
10
|
+
* einzeln; nicht fuer Taxi und Mietwagen, § 7 Abs 2 BarUV).
|
|
11
|
+
* Geprueft wird am Server; dieses Paket liest nur und reicht die Eingabe weiter.
|
|
12
|
+
*/
|
|
13
|
+
/** Gruende einer Nacherfassung: fuenf Ausfall-Gruende und die Leistung ausser Haus. */
|
|
14
|
+
export declare const MANUAL_RECEIPT_REASONS: readonly ["network_outage", "power_outage", "device_failure", "system_outage", "other", "outside_premises"];
|
|
15
|
+
export type ManualReceiptReason = (typeof MANUAL_RECEIPT_REASONS)[number];
|
|
16
|
+
export interface ManualReceipt {
|
|
17
|
+
/** Nummer des Handbelegs (eigene Nummernreihe des Paragons, nie die Kassennummer). */
|
|
18
|
+
number: string;
|
|
19
|
+
/** Letzte Nummer: macht den Beleg zum Tagessammelbeleg (nur nach einem Ausfall). */
|
|
20
|
+
numberTo?: string;
|
|
21
|
+
/** Zahl der Handbelege im Tagessammelbeleg. */
|
|
22
|
+
count?: number;
|
|
23
|
+
/** Tag des Handbelegs, `YYYY-MM-DD` (Wiener Tag). */
|
|
24
|
+
date: string;
|
|
25
|
+
/** Uhrzeit des Handbelegs, `HH:MM`. */
|
|
26
|
+
time?: string;
|
|
27
|
+
/** Grund; ein Wert, den dieses Paket nicht kennt, bleibt als roher Text lesbar. */
|
|
28
|
+
reason: ManualReceiptReason | string;
|
|
29
|
+
/** Eigener Text, nur beim Grund `other`. */
|
|
30
|
+
note?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Liest `manualReceipt` vom Draht. Ohne Nummer, Datum oder Grund gibt es
|
|
34
|
+
* keinen Handbeleg (`undefined`); ein einzelnes Zusatzfeld in falscher Form
|
|
35
|
+
* faellt weg, statt den Beleg scheitern zu lassen.
|
|
36
|
+
*/
|
|
37
|
+
export declare function readManualReceipt(roh: unknown): ManualReceipt | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Fehlercodes von `createReceipt` zur Nacherfassung (Vertrag `errorCodes.manualReceipt`).
|
|
40
|
+
* `manual_receipt_duplicate` traegt in `details.receiptId` den Beleg, der den Handbeleg
|
|
41
|
+
* schon nacherfasst hat: nicht erneut senden, sondern diesen Beleg nehmen.
|
|
42
|
+
*/
|
|
43
|
+
export declare const MANUAL_RECEIPT_ERROR_CODES: readonly ["invalid_manual_receipt", "manual_receipt_not_allowed", "manual_receipt_date_in_future", "manual_receipt_range_not_allowed", "manual_receipt_duplicate"];
|
|
44
|
+
export type ManualReceiptErrorCode = (typeof MANUAL_RECEIPT_ERROR_CODES)[number];
|
|
45
|
+
export declare function isManualReceiptErrorCode(value: unknown): value is ManualReceiptErrorCode;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nacherfassung eines Handbelegs (`manualReceipt` am Beleg, Backend
|
|
3
|
+
* `handbeleg`): Nach einem Ausfall der Kasse oder einer Leistung ausser Haus
|
|
4
|
+
* wird der handschriftliche Beleg (Paragon) in der Kasse nacherfasst. Der
|
|
5
|
+
* Beleg traegt dann Nummer, Datum und Grund des Handbelegs; sein eigener
|
|
6
|
+
* Zeitstempel bleibt der Zeitpunkt der Nacherfassung (kein Rueckdatieren).
|
|
7
|
+
*
|
|
8
|
+
* Rechtsgrundlage: § 17 Abs 5 RKSV, Registrierkassenerlass Abschnitt 3.6.1
|
|
9
|
+
* (Ausfall, Tagessammelbeleg erlaubt) und 6.7 (ausser Haus, jeder Beleg
|
|
10
|
+
* einzeln; nicht fuer Taxi und Mietwagen, § 7 Abs 2 BarUV).
|
|
11
|
+
* Geprueft wird am Server; dieses Paket liest nur und reicht die Eingabe weiter.
|
|
12
|
+
*/
|
|
13
|
+
/** Gruende einer Nacherfassung: fuenf Ausfall-Gruende und die Leistung ausser Haus. */
|
|
14
|
+
export const MANUAL_RECEIPT_REASONS = [
|
|
15
|
+
'network_outage', 'power_outage', 'device_failure', 'system_outage', 'other', 'outside_premises',
|
|
16
|
+
];
|
|
17
|
+
const istText = (w) => typeof w === 'string' && w !== '';
|
|
18
|
+
/**
|
|
19
|
+
* Liest `manualReceipt` vom Draht. Ohne Nummer, Datum oder Grund gibt es
|
|
20
|
+
* keinen Handbeleg (`undefined`); ein einzelnes Zusatzfeld in falscher Form
|
|
21
|
+
* faellt weg, statt den Beleg scheitern zu lassen.
|
|
22
|
+
*/
|
|
23
|
+
export function readManualReceipt(roh) {
|
|
24
|
+
if (roh === null || typeof roh !== 'object' || Array.isArray(roh))
|
|
25
|
+
return undefined;
|
|
26
|
+
const o = roh;
|
|
27
|
+
if (!istText(o['number']) || !istText(o['date']) || !istText(o['reason']))
|
|
28
|
+
return undefined;
|
|
29
|
+
return {
|
|
30
|
+
number: o['number'],
|
|
31
|
+
...(istText(o['numberTo']) ? { numberTo: o['numberTo'] } : {}),
|
|
32
|
+
...(typeof o['count'] === 'number' && Number.isInteger(o['count']) ? { count: o['count'] } : {}),
|
|
33
|
+
date: o['date'],
|
|
34
|
+
...(istText(o['time']) ? { time: o['time'] } : {}),
|
|
35
|
+
reason: o['reason'],
|
|
36
|
+
...(istText(o['note']) ? { note: o['note'] } : {}),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Fehlercodes von `createReceipt` zur Nacherfassung (Vertrag `errorCodes.manualReceipt`).
|
|
41
|
+
* `manual_receipt_duplicate` traegt in `details.receiptId` den Beleg, der den Handbeleg
|
|
42
|
+
* schon nacherfasst hat: nicht erneut senden, sondern diesen Beleg nehmen.
|
|
43
|
+
*/
|
|
44
|
+
export const MANUAL_RECEIPT_ERROR_CODES = Object.freeze([
|
|
45
|
+
'invalid_manual_receipt',
|
|
46
|
+
'manual_receipt_not_allowed',
|
|
47
|
+
'manual_receipt_date_in_future',
|
|
48
|
+
'manual_receipt_range_not_allowed',
|
|
49
|
+
'manual_receipt_duplicate',
|
|
50
|
+
]);
|
|
51
|
+
export function isManualReceiptErrorCode(value) {
|
|
52
|
+
return typeof value === 'string' && MANUAL_RECEIPT_ERROR_CODES.includes(value);
|
|
53
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { KeckPaymentMethod, ReceiptType } from '../enums/index.js';
|
|
2
2
|
import { type CancellationStatus } from './cancellation.js';
|
|
3
3
|
import { type ReceiptPayment, type ReceiptPaymentPayload } from './receipt-payment.js';
|
|
4
|
+
import { type ManualReceipt } from './manual-receipt.js';
|
|
4
5
|
/**
|
|
5
6
|
* Belegzeile einer Liste — die Form, die `listMyReceipts` liefert
|
|
6
7
|
* (`projectReceiptForCustomer` in functions/index.js).
|
|
@@ -77,6 +78,8 @@ export interface ReceiptSummary {
|
|
|
77
78
|
* (`providerPaymentId`, `providerData`) bleiben im Backend.
|
|
78
79
|
*/
|
|
79
80
|
payments?: ReceiptPayment[];
|
|
81
|
+
/** Nur an nacherfassten Belegen: der Handbeleg. */
|
|
82
|
+
manualReceipt?: ManualReceipt;
|
|
80
83
|
}
|
|
81
84
|
export interface ReceiptSummaryPayload {
|
|
82
85
|
receiptId?: string | null;
|
|
@@ -105,5 +108,6 @@ export interface ReceiptSummaryPayload {
|
|
|
105
108
|
cancellationStatus?: string | null;
|
|
106
109
|
zeroKind?: string | null;
|
|
107
110
|
payments?: ReceiptPaymentPayload[] | null;
|
|
111
|
+
manualReceipt?: unknown;
|
|
108
112
|
}
|
|
109
113
|
export declare function fromReceiptSummaryPayload(payload: ReceiptSummaryPayload): ReceiptSummary;
|
|
@@ -3,6 +3,7 @@ import { euroToCents } from '../money.js';
|
|
|
3
3
|
import { readEnumKey } from './enum-payload.js';
|
|
4
4
|
import { CANCELLATION_STATUSES } from './cancellation.js';
|
|
5
5
|
import { fromReceiptPaymentPayload } from './receipt-payment.js';
|
|
6
|
+
import { readManualReceipt } from './manual-receipt.js';
|
|
6
7
|
/**
|
|
7
8
|
* Belegzeile einer Liste — die Form, die `listMyReceipts` liefert
|
|
8
9
|
* (`projectReceiptForCustomer` in functions/index.js).
|
|
@@ -53,8 +54,13 @@ export function fromReceiptSummaryPayload(payload) {
|
|
|
53
54
|
: { cancellationStatus: isCancellationStatus(payload.cancellationStatus) ? payload.cancellationStatus : 'unknown' }),
|
|
54
55
|
...(isZeroKind(payload.zeroKind) ? { zeroKind: payload.zeroKind } : {}),
|
|
55
56
|
...(Array.isArray(payload.payments) ? { payments: payload.payments.map(fromReceiptPaymentPayload) } : {}),
|
|
57
|
+
...handbelegFeld(payload.manualReceipt),
|
|
56
58
|
};
|
|
57
59
|
}
|
|
60
|
+
function handbelegFeld(roh) {
|
|
61
|
+
const manualReceipt = readManualReceipt(roh);
|
|
62
|
+
return manualReceipt ? { manualReceipt } : {};
|
|
63
|
+
}
|
|
58
64
|
function isCancellationStatus(wert) {
|
|
59
65
|
return typeof wert === 'string' && CANCELLATION_STATUSES.includes(wert);
|
|
60
66
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ReceiptType, KeckPaymentMethod, CreditCardProvider } from '../enums/index.js';
|
|
2
|
+
import { type ManualReceipt } from './manual-receipt.js';
|
|
2
3
|
import { type ReceiptItem, type ReceiptItemPayload, type ReceiptItemPayloadRead } from './receipt-item.js';
|
|
3
4
|
import { type Voucher, type VoucherPayload } from './voucher.js';
|
|
4
5
|
import { type Cancellation, type CancellationOf, type CancellationReason } from './cancellation.js';
|
|
@@ -74,6 +75,8 @@ export interface Receipt {
|
|
|
74
75
|
layoutRuleset?: number;
|
|
75
76
|
/** Nur an Nullbelegen: Registrierdaten fuer den Block „Prüfangaben“. */
|
|
76
77
|
registrationInfo?: RegistrationInfo;
|
|
78
|
+
/** Nur an nacherfassten Belegen: der Handbeleg (siehe [ManualReceipt]). */
|
|
79
|
+
manualReceipt?: ManualReceipt;
|
|
77
80
|
}
|
|
78
81
|
/** Registrierdaten von Signaturkarte und Kasse (Zeitstempel oder `null`, wenn unbekannt). */
|
|
79
82
|
export interface RegistrationInfo {
|
|
@@ -125,6 +128,7 @@ export interface ReceiptPayloadRead extends Omit<ReceiptPayload, 'items' | 'vouc
|
|
|
125
128
|
cardRegisteredAt?: string | null;
|
|
126
129
|
cashregisterRegisteredAt?: string | null;
|
|
127
130
|
} | null;
|
|
131
|
+
manualReceipt?: unknown;
|
|
128
132
|
}
|
|
129
133
|
/**
|
|
130
134
|
* Schreibt die Nutzlast in der **neuen** Form — sie **normalisiert, statt zu
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ReceiptType, KeckPaymentMethod, CreditCardProvider, VoucherAction, VoucherType } from '../enums/index.js';
|
|
2
2
|
import { readEnumKey, requireEnumKey } from './enum-payload.js';
|
|
3
|
+
import { readManualReceipt } from './manual-receipt.js';
|
|
3
4
|
import { toReceiptItemPayload, fromReceiptItemPayload, receiptItemTotalCents, } from './receipt-item.js';
|
|
4
5
|
import { toVoucherPayload, fromVoucherPayload } from './voucher.js';
|
|
5
6
|
import { isReturnDisposition } from './cancellation.js';
|
|
@@ -87,8 +88,13 @@ export function fromReceiptPayload(payload) {
|
|
|
87
88
|
...(payload.registrationInfo != null && typeof payload.registrationInfo === 'object'
|
|
88
89
|
? { registrationInfo: readRegistrationInfo(payload.registrationInfo) }
|
|
89
90
|
: {}),
|
|
91
|
+
...handbelegFeld(payload.manualReceipt),
|
|
90
92
|
};
|
|
91
93
|
}
|
|
94
|
+
function handbelegFeld(roh) {
|
|
95
|
+
const manualReceipt = readManualReceipt(roh);
|
|
96
|
+
return manualReceipt ? { manualReceipt } : {};
|
|
97
|
+
}
|
|
92
98
|
/** Registrierdaten lesen; ein fehlender oder leerer Zeitstempel wird `null`. */
|
|
93
99
|
export function readRegistrationInfo(roh) {
|
|
94
100
|
const zeit = (v) => (typeof v === 'string' && v !== '' ? v : null);
|
|
@@ -924,6 +924,49 @@ function stornoGrundText(code) {
|
|
|
924
924
|
export function receiptIsSmallBusinessConsistent(receipt) {
|
|
925
925
|
return receipt.items.every((it) => Number(steuersatz(it.vat).rate) === 0);
|
|
926
926
|
}
|
|
927
|
+
/** Grund-Zeile nach einem Ausfall der Kasse; `other` druckt den eigenen Text. */
|
|
928
|
+
const NACHERFASSUNG_GRUND = {
|
|
929
|
+
network_outage: 'Internet', power_outage: 'Strom', device_failure: 'Gerät defekt', system_outage: 'Störung',
|
|
930
|
+
};
|
|
931
|
+
/** `YYYY-MM-DD` als `TT.MM.JJJJ`; anderes bleibt, wie es kam. */
|
|
932
|
+
function handbelegDatum(tag) {
|
|
933
|
+
const m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(tag);
|
|
934
|
+
return m ? `${m[3]}.${m[2]}.${m[1]}` : tag;
|
|
935
|
+
}
|
|
936
|
+
/**
|
|
937
|
+
* Block „NACHERFASSUNG“ (manualReceipt) unter dem Kopf: Art, Grund, Nummer
|
|
938
|
+
* und Tag des Handbelegs bzw. der Handbelege eines Tagessammelbelegs, dazu
|
|
939
|
+
* der Hinweis, dass der Beleg fuer die USt ein Duplikat ist
|
|
940
|
+
* (Registrierkassenerlass 3.3 Faelle 5 und 6, 2.4.11). Der Zeitstempel des Belegs bleibt der der
|
|
941
|
+
* Nacherfassung und steht wie immer unter „Datum:“. Kleinunternehmer
|
|
942
|
+
* (keine USt am Beleg) bekommen den USt-Hinweis nicht.
|
|
943
|
+
*/
|
|
944
|
+
function nacherfassungBlock(receipt, company) {
|
|
945
|
+
const m = receipt.manualReceipt;
|
|
946
|
+
if (!m)
|
|
947
|
+
return [];
|
|
948
|
+
const aus = [bannerZeile('NACHERFASSUNG')];
|
|
949
|
+
aus.push(textZeile(m.reason === 'outside_premises' ? 'Leistung außer Haus' : 'nach Ausfall der Kasse', 'center'));
|
|
950
|
+
const grund = m.reason === 'other' ? m.note : NACHERFASSUNG_GRUND[m.reason];
|
|
951
|
+
if (grund)
|
|
952
|
+
aus.push(textZeile(`Grund: ${grund}`, 'center'));
|
|
953
|
+
aus.push({ kind: 'space', lines: 1 });
|
|
954
|
+
const tag = handbelegDatum(m.date);
|
|
955
|
+
if (m.numberTo) {
|
|
956
|
+
aus.push(textZeile('Tagessammelbeleg', 'center'));
|
|
957
|
+
aus.push(textZeile(`Handbelege Nr. ${m.number} bis ${m.numberTo}`, 'center'));
|
|
958
|
+
aus.push(textZeile(`${m.count ? `${m.count} Belege ` : ''}vom ${tag}`, 'center'));
|
|
959
|
+
if (!company.isSmallBusiness)
|
|
960
|
+
aus.push(textZeile('USt: Duplikat der Handbelege', 'center'));
|
|
961
|
+
}
|
|
962
|
+
else {
|
|
963
|
+
aus.push(textZeile(`Handbeleg Nr. ${m.number}`, 'center'));
|
|
964
|
+
aus.push(textZeile(`vom ${tag}${m.time ? `, ${m.time} Uhr` : ''}`, 'center'));
|
|
965
|
+
if (!company.isSmallBusiness)
|
|
966
|
+
aus.push(textZeile('USt: Duplikat des Handbelegs', 'center'));
|
|
967
|
+
}
|
|
968
|
+
return aus;
|
|
969
|
+
}
|
|
927
970
|
/**
|
|
928
971
|
* Belegart-Block unter dem Betriebskopf: Titel als Banner, Untertitel als
|
|
929
972
|
* zentrierte Textzeilen. Verkaufsbelege bekommen keinen Block.
|
|
@@ -1011,6 +1054,12 @@ export function buildReceiptLayout(receipt, company, options = {}) {
|
|
|
1011
1054
|
lines.push({ kind: 'space', lines: 1 });
|
|
1012
1055
|
lines.push(...belegart);
|
|
1013
1056
|
}
|
|
1057
|
+
// --- Nacherfassung eines Handbelegs unter dem Kopf, vor den Pflichtangaben
|
|
1058
|
+
const nacherfassung = nullbeleg ? [] : nacherfassungBlock(receipt, company);
|
|
1059
|
+
if (nacherfassung.length > 0) {
|
|
1060
|
+
lines.push({ kind: 'space', lines: 1 });
|
|
1061
|
+
lines.push(...nacherfassung);
|
|
1062
|
+
}
|
|
1014
1063
|
// --- Nullbeleg: reduziert (§ 132a Abs. 3 BAO / RKSV § 11 Abs. 1 -- Pflichtangaben
|
|
1015
1064
|
// ja, Positionen/MwSt-Tabelle/Zahlungsart/Fusszeilen nein).
|
|
1016
1065
|
if (nullbeleg) {
|
|
@@ -1026,6 +1075,14 @@ export function buildReceiptLayout(receipt, company, options = {}) {
|
|
|
1026
1075
|
lines.push(...pruefangabenBlock(receipt, options.registrationInfo ?? null));
|
|
1027
1076
|
}
|
|
1028
1077
|
lines.push({ kind: 'space', lines: 1 });
|
|
1078
|
+
// Sammelbeleg nach Signaturausfall: Beginn und Ende des Ausfalls muessen aus
|
|
1079
|
+
// dem Beleg hervorgehen (Registrierkassenerlass 3.6.1); der Server legt sie als
|
|
1080
|
+
// legalMessage ab. Andere Nullbelege nennen ihren Anlass schon im Titel.
|
|
1081
|
+
if (receipt.zeroKind === 'outage_end' && receipt.legalMessage.length > 0) {
|
|
1082
|
+
for (const zeile of receipt.legalMessage)
|
|
1083
|
+
lines.push(textZeile(zeile, 'center'));
|
|
1084
|
+
lines.push({ kind: 'space', lines: 1 });
|
|
1085
|
+
}
|
|
1029
1086
|
if (receiptSignatureFailed(receipt)) {
|
|
1030
1087
|
lines.push(textZeile(SIGNATUR_AUSGEFALLEN, 'center'));
|
|
1031
1088
|
lines.push({ kind: 'space', lines: 1 });
|
|
@@ -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 = "c14617ec83a2eac2bdffc6794cc2c7f72ae04504259a55313f01fe83747fa565";
|
|
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 {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Erzeugt von scripts/stored-vokabular.mjs aus fixtures/v3/v3-vokabular.json.
|
|
2
2
|
// Nicht von Hand aendern: test/stored.test.ts vergleicht mit dem Vertrag.
|
|
3
3
|
/** Fingerabdruck des Vertrags-Exports, aus dem diese Datei stammt (`_quelle.sha256`). */
|
|
4
|
-
export const VOKABULAR_QUELLE = "
|
|
4
|
+
export const VOKABULAR_QUELLE = "c14617ec83a2eac2bdffc6794cc2c7f72ae04504259a55313f01fe83747fa565";
|
|
5
5
|
/** Schema je Endpunkt (aussen -> innen) und Wertverweise auf die Kataloge. */
|
|
6
6
|
export const SCHEMAS = {
|
|
7
7
|
"getReceipt": {
|
|
@@ -21,7 +21,17 @@ export const SCHEMAS = {
|
|
|
21
21
|
"receivedImmediately": "sofortErhalten",
|
|
22
22
|
"keptByEmployee": "direkt"
|
|
23
23
|
}
|
|
24
|
-
]
|
|
24
|
+
],
|
|
25
|
+
"manualReceipt": {
|
|
26
|
+
"__": "handbeleg",
|
|
27
|
+
"number": "nummer",
|
|
28
|
+
"numberTo": "nummerBis",
|
|
29
|
+
"count": "anzahl",
|
|
30
|
+
"date": "datum",
|
|
31
|
+
"time": "uhrzeit",
|
|
32
|
+
"reason": "grund",
|
|
33
|
+
"note": "grundText"
|
|
34
|
+
}
|
|
25
35
|
},
|
|
26
36
|
"taxNumber": "taxnr",
|
|
27
37
|
"vatId": "uid",
|
|
@@ -77,6 +87,9 @@ export const SCHEMAS = {
|
|
|
77
87
|
"receipt.cancellationReason": {
|
|
78
88
|
"$catalog": "STORNO_GRUND"
|
|
79
89
|
},
|
|
90
|
+
"receipt.manualReceipt.reason": {
|
|
91
|
+
"$catalog": "HANDBELEG_GRUND"
|
|
92
|
+
},
|
|
80
93
|
"layout.lines[].tone": {
|
|
81
94
|
"$catalog": "LAYOUT_TON"
|
|
82
95
|
},
|
|
@@ -567,6 +580,14 @@ export const KATALOGE = {
|
|
|
567
580
|
"unbefristet": "unlimited",
|
|
568
581
|
"jahre": "years"
|
|
569
582
|
},
|
|
583
|
+
"HANDBELEG_GRUND": {
|
|
584
|
+
"internet": "network_outage",
|
|
585
|
+
"strom": "power_outage",
|
|
586
|
+
"geraet": "device_failure",
|
|
587
|
+
"stoerung": "system_outage",
|
|
588
|
+
"sonstiges": "other",
|
|
589
|
+
"ausser_haus": "outside_premises"
|
|
590
|
+
},
|
|
570
591
|
"KASSE_BETRIEB_WERTE.cardProvider": {
|
|
571
592
|
"keiner": "none",
|
|
572
593
|
"extern": "external",
|
package/dist/esm/version.d.ts
CHANGED
package/dist/esm/version.js
CHANGED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Blumen G'schenk e.U.
|
|
2
|
+
Hauptplatz 1
|
|
3
|
+
4830 Hallstatt
|
|
4
|
+
ATU12345675
|
|
5
|
+
+43 6134 12345
|
|
6
|
+
|
|
7
|
+
================================
|
|
8
|
+
NACHERFASSUNG
|
|
9
|
+
================================
|
|
10
|
+
nach Ausfall der Kasse
|
|
11
|
+
Grund: Gerät defekt
|
|
12
|
+
|
|
13
|
+
Tagessammelbeleg
|
|
14
|
+
Handbelege Nr. B-380 bis B-411
|
|
15
|
+
32 Belege vom 21.11.2026
|
|
16
|
+
USt: Duplikat der Handbelege
|
|
17
|
+
|
|
18
|
+
Datum: 22.11.2026 08:30:55
|
|
19
|
+
Kassen-ID: KASSE1
|
|
20
|
+
Beleg-ID: AT0-KASSE1-117
|
|
21
|
+
|
|
22
|
+
1 x Umsatz 13 % 318,70 C
|
|
23
|
+
lt. Handbelegen
|
|
24
|
+
1 x Umsatz 20 % 46,00 A
|
|
25
|
+
lt. Handbelegen
|
|
26
|
+
|
|
27
|
+
MwSt% MwSt Netto Brutto
|
|
28
|
+
C 13% 36,66 282,04 318,70
|
|
29
|
+
A 20% 7,67 38,33 46,00
|
|
30
|
+
--------------------------------
|
|
31
|
+
Gesamt: 364,70 €
|
|
32
|
+
Zahlungsart: Barzahlung
|
|
33
|
+
|
|
34
|
+
[QR-Code]
|
|
35
|
+
|
|
36
|
+
Danke und schöne Tage
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Blumen G'schenk e.U.
|
|
2
|
+
Hauptplatz 1
|
|
3
|
+
4830 Hallstatt
|
|
4
|
+
ATU12345675
|
|
5
|
+
+43 6134 12345
|
|
6
|
+
|
|
7
|
+
================================================
|
|
8
|
+
NACHERFASSUNG
|
|
9
|
+
================================================
|
|
10
|
+
nach Ausfall der Kasse
|
|
11
|
+
Grund: Gerät defekt
|
|
12
|
+
|
|
13
|
+
Tagessammelbeleg
|
|
14
|
+
Handbelege Nr. B-380 bis B-411
|
|
15
|
+
32 Belege vom 21.11.2026
|
|
16
|
+
USt: Duplikat der Handbelege
|
|
17
|
+
|
|
18
|
+
Datum: 22.11.2026 08:30:55
|
|
19
|
+
Kassen-ID: KASSE1
|
|
20
|
+
Beleg-ID: AT0-KASSE1-117
|
|
21
|
+
|
|
22
|
+
1 x Umsatz 13 % lt. 318,70 C
|
|
23
|
+
Handbelegen
|
|
24
|
+
1 x Umsatz 20 % lt. 46,00 A
|
|
25
|
+
Handbelegen
|
|
26
|
+
|
|
27
|
+
MwSt% MwSt Netto Brutto
|
|
28
|
+
C 13% 36,66 282,04 318,70
|
|
29
|
+
A 20% 7,67 38,33 46,00
|
|
30
|
+
------------------------------------------------
|
|
31
|
+
Gesamt: 364,70 €
|
|
32
|
+
Zahlungsart: Barzahlung
|
|
33
|
+
|
|
34
|
+
[QR-Code]
|
|
35
|
+
|
|
36
|
+
Danke und schöne Tage
|