@kreiseck/kasseneck-api 0.6.9 → 0.6.45
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/README.md +21 -0
- package/dist/cjs/client/aufrufe.d.ts +21 -0
- package/dist/cjs/client/aufrufe.js +34 -0
- package/dist/cjs/client/cashregisters.d.ts +2 -2
- package/dist/cjs/client/index.d.ts +2 -1
- package/dist/cjs/client/index.js +3 -1
- package/dist/cjs/client/receipts.d.ts +31 -12
- package/dist/cjs/client/receipts.js +51 -0
- package/dist/cjs/client/reports.d.ts +3 -3
- package/dist/cjs/client/status.d.ts +3 -3
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/kasse/artikel.d.ts +3 -3
- package/dist/cjs/kasse/client.d.ts +4 -4
- package/dist/cjs/kasse/drucker.d.ts +4 -4
- package/dist/cjs/kasse/index.d.ts +1 -1
- package/dist/cjs/kasse/index.js +30 -1
- package/dist/cjs/kasse/settings.d.ts +113 -26
- package/dist/cjs/kasse/settings.js +91 -9
- package/dist/cjs/models/index.d.ts +1 -1
- package/dist/cjs/models/index.js +3 -1
- package/dist/cjs/models/receipt-item.d.ts +41 -0
- package/dist/cjs/models/receipt-item.js +41 -1
- package/dist/cjs/models/receipt.d.ts +7 -0
- package/dist/cjs/models/receipt.js +2 -0
- package/dist/cjs/payments/hobex.d.ts +3 -3
- package/dist/cjs/payments/stripe.d.ts +3 -3
- package/dist/cjs/printing/escpos.js +7 -0
- package/dist/cjs/react/index.js +11 -1
- package/dist/cjs/receipt/discount.js +1 -1
- package/dist/cjs/receipt/layout-escpos.js +9 -4
- package/dist/cjs/receipt/layout.d.ts +6 -3
- package/dist/cjs/receipt/layout.js +166 -14
- package/dist/cjs/register/index.d.ts +1 -1
- package/dist/cjs/register/index.js +2 -1
- package/dist/cjs/register/pairing.d.ts +17 -0
- package/dist/cjs/register/pairing.js +28 -3
- package/dist/cjs/register/session.d.ts +3 -3
- package/dist/esm/client/aufrufe.d.ts +21 -0
- package/dist/esm/client/aufrufe.js +31 -0
- package/dist/esm/client/cashregisters.d.ts +2 -2
- package/dist/esm/client/index.d.ts +2 -1
- package/dist/esm/client/index.js +1 -0
- package/dist/esm/client/receipts.d.ts +31 -12
- package/dist/esm/client/receipts.js +51 -0
- package/dist/esm/client/reports.d.ts +3 -3
- package/dist/esm/client/status.d.ts +3 -3
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/kasse/artikel.d.ts +3 -3
- package/dist/esm/kasse/client.d.ts +4 -4
- package/dist/esm/kasse/drucker.d.ts +4 -4
- package/dist/esm/kasse/index.d.ts +1 -1
- package/dist/esm/kasse/index.js +3 -1
- package/dist/esm/kasse/settings.d.ts +113 -26
- package/dist/esm/kasse/settings.js +90 -8
- package/dist/esm/models/index.d.ts +1 -1
- package/dist/esm/models/index.js +1 -1
- package/dist/esm/models/receipt-item.d.ts +41 -0
- package/dist/esm/models/receipt-item.js +39 -1
- package/dist/esm/models/receipt.d.ts +7 -0
- package/dist/esm/models/receipt.js +2 -0
- package/dist/esm/payments/hobex.d.ts +3 -3
- package/dist/esm/payments/stripe.d.ts +3 -3
- package/dist/esm/printing/escpos.js +7 -0
- package/dist/esm/react/index.js +11 -1
- package/dist/esm/receipt/discount.js +1 -1
- package/dist/esm/receipt/layout-escpos.js +9 -4
- package/dist/esm/receipt/layout.d.ts +6 -3
- package/dist/esm/receipt/layout.js +167 -15
- package/dist/esm/register/index.d.ts +1 -1
- package/dist/esm/register/index.js +1 -1
- package/dist/esm/register/pairing.d.ts +17 -0
- package/dist/esm/register/pairing.js +27 -3
- package/dist/esm/register/session.d.ts +3 -3
- package/fixtures/belege/rabatt-chef-trinkgeld.json +89 -0
- package/fixtures/belege/rabatt-einfach.json +50 -0
- package/fixtures/belege/rabatt-trinkgeld.json +75 -0
- package/fixtures/belege/rabatt-wertgutschein.json +70 -0
- package/fixtures/belege/rabattzeilen.json +5 -3
- package/fixtures/belege/storno-rabatt.json +68 -0
- package/fixtures/erwartet/rabatt-chef-trinkgeld.grid32.txt +31 -0
- package/fixtures/erwartet/rabatt-chef-trinkgeld.grid48.txt +30 -0
- package/fixtures/erwartet/rabatt-chef-trinkgeld.lines.json +317 -0
- package/fixtures/erwartet/rabatt-einfach.grid32.txt +26 -0
- package/fixtures/erwartet/rabatt-einfach.grid48.txt +25 -0
- package/fixtures/erwartet/rabatt-einfach.lines.json +250 -0
- package/fixtures/erwartet/rabatt-trinkgeld.grid32.txt +31 -0
- package/fixtures/erwartet/rabatt-trinkgeld.grid48.txt +30 -0
- package/fixtures/erwartet/rabatt-trinkgeld.lines.json +336 -0
- package/fixtures/erwartet/rabatt-wertgutschein.grid32.txt +32 -0
- package/fixtures/erwartet/rabatt-wertgutschein.grid48.txt +31 -0
- package/fixtures/erwartet/rabatt-wertgutschein.lines.json +330 -0
- package/fixtures/erwartet/rabattzeilen.grid32.txt +4 -2
- package/fixtures/erwartet/rabattzeilen.grid48.txt +4 -2
- package/fixtures/erwartet/rabattzeilen.lines.json +18 -8
- package/fixtures/erwartet/storno-rabatt.grid32.txt +34 -0
- package/fixtures/erwartet/storno-rabatt.grid48.txt +32 -0
- package/fixtures/erwartet/storno-rabatt.lines.json +317 -0
- package/fixtures/kasse-settings-standard.json +44 -5
- package/fixtures/manifest.json +34 -4
- package/fixtures/oberflaeche.json +216 -0
- package/package.json +3 -2
|
@@ -38,6 +38,11 @@ import { KASSE_BETRIEB_STANDARD, KASSE_GERAET_STANDARD, mergeKasseSettings, } fr
|
|
|
38
38
|
* es auch halten.
|
|
39
39
|
*/
|
|
40
40
|
const ohneAnmeldung = () => ({ headers: {}, params: {} });
|
|
41
|
+
/** Alle Rechte-Schluessel, die dieses Paket kennt — die Zwillinge pruefen dagegen. */
|
|
42
|
+
export const REGISTER_PERMS = [
|
|
43
|
+
'sell', 'cancel', 'articles', 'layout', 'reports', 'takeover',
|
|
44
|
+
'cancelScope', 'receiptsScope', 'drawer', 'discount', 'tipAssign',
|
|
45
|
+
];
|
|
41
46
|
/** Reichweite lesen, mit der Migration des Backends (register-auth.js). */
|
|
42
47
|
export function cancelScopeOf(perms) {
|
|
43
48
|
if (!perms)
|
|
@@ -62,10 +67,10 @@ export function receiptsScopeOf(perms) {
|
|
|
62
67
|
* [PairedRegisterDevice]).
|
|
63
68
|
*/
|
|
64
69
|
export async function pairRegisterDevice(options) {
|
|
65
|
-
const { code, label, client, geo, ...verbindung } = options;
|
|
70
|
+
const { code, label, client, geo, takeover, ...verbindung } = options;
|
|
66
71
|
pflicht('pairRegisterDevice', 'code', code);
|
|
67
72
|
// Der Code ist das Geheimnis dieses Aufrufs — siehe Modulkommentar.
|
|
68
|
-
const daten = await transportFuer(verbindung)('pairRegisterDevice', { code, label, client, geo: geo ?? undefined }, undefined, [code]);
|
|
73
|
+
const daten = await transportFuer(verbindung)('pairRegisterDevice', { code, label, client, geo: geo ?? undefined, takeover: takeover === true ? true : undefined }, undefined, [code]);
|
|
69
74
|
return {
|
|
70
75
|
deviceId: pflichtfeld('pairRegisterDevice', daten, 'deviceId'),
|
|
71
76
|
deviceSecret: pflichtfeld('pairRegisterDevice', daten, 'deviceSecret'),
|
|
@@ -126,7 +131,26 @@ export async function listRegisterUsersForDevice(options) {
|
|
|
126
131
|
};
|
|
127
132
|
const bd = daten?.betriebsdaten;
|
|
128
133
|
const betriebsdaten = bd && typeof bd === 'object' ? fromReceiptCompanyPayload(bd) : null;
|
|
129
|
-
return {
|
|
134
|
+
return {
|
|
135
|
+
users,
|
|
136
|
+
policy: regel(daten?.policy),
|
|
137
|
+
loginMode: daten?.loginMode === 'pin' ? 'pin' : 'auswahl',
|
|
138
|
+
settings,
|
|
139
|
+
betriebsdaten,
|
|
140
|
+
standortsperre: daten?.standortsperre === true,
|
|
141
|
+
// 0.6.27 ergaenzte nur den TYP — hier fiel das Feld beim Zusammenbau
|
|
142
|
+
// stumm weg, und die Kasse sah nie eine Sperre. Fehlt es (aelteres
|
|
143
|
+
// Backend), bleibt es undefined: dann gilt bereit.
|
|
144
|
+
kasse: kasseBereit(daten?.kasse),
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
function kasseBereit(wert) {
|
|
148
|
+
if (typeof wert !== 'object' || wert === null || Array.isArray(wert))
|
|
149
|
+
return undefined;
|
|
150
|
+
const roh = wert;
|
|
151
|
+
if (typeof roh['bereit'] !== 'boolean')
|
|
152
|
+
return undefined;
|
|
153
|
+
return { bereit: roh['bereit'], grund: typeof roh['grund'] === 'string' ? roh['grund'] : null };
|
|
130
154
|
}
|
|
131
155
|
/** Die Regel aus der Antwort — oder `null`, wenn keine brauchbare kommt. */
|
|
132
156
|
function regel(wert) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { InternerTransport } from '../client/aufrufe.js';
|
|
2
2
|
/**
|
|
3
3
|
* Die beiden Aufrufe der **laufenden** Kassen-Sitzung. Anders als die drei in
|
|
4
4
|
* pairing.ts haben sie eine Identitaet: sie laufen ueber `registerUserAuth`
|
|
@@ -23,7 +23,7 @@ import type { KasseneckTransport } from '../client/transport.js';
|
|
|
23
23
|
* beendet — bitte neu anmelden.") — dann hilft nur eine neue Anmeldung ueber
|
|
24
24
|
* `registerUserLogin`.
|
|
25
25
|
*/
|
|
26
|
-
export declare function renewRegisterSession(rufen:
|
|
26
|
+
export declare function renewRegisterSession(rufen: InternerTransport): Promise<number>;
|
|
27
27
|
/**
|
|
28
28
|
* Sitzung beenden und den Lizenzplatz sofort freigeben — der regulaere Weg des
|
|
29
29
|
* Abmeldens.
|
|
@@ -34,4 +34,4 @@ export declare function renewRegisterSession(rufen: KasseneckTransport): Promise
|
|
|
34
34
|
* einer harmlosen Vertragsaenderung — ausgerechnet beim Abmelden, dem Aufruf,
|
|
35
35
|
* der auch dann durchgehen soll, wenn sonst nichts mehr geht.
|
|
36
36
|
*/
|
|
37
|
-
export declare function endRegisterSession(rufen:
|
|
37
|
+
export declare function endRegisterSession(rufen: InternerTransport): Promise<void>;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"company": {
|
|
3
|
+
"companyName": "Bäckerei Muster",
|
|
4
|
+
"street": "Hauptplatz 1",
|
|
5
|
+
"zip": "4830",
|
|
6
|
+
"city": "Hallstatt",
|
|
7
|
+
"phone": "+43 6134 12345",
|
|
8
|
+
"uid": "ATU12345678",
|
|
9
|
+
"taxnr": "",
|
|
10
|
+
"isSmallBusiness": false,
|
|
11
|
+
"footer1": "Vielen Dank für Ihren Einkauf",
|
|
12
|
+
"footer2": "www.baeckerei-muster.at",
|
|
13
|
+
"thanksMessage": [],
|
|
14
|
+
"showKreiseckLogo": false
|
|
15
|
+
},
|
|
16
|
+
"receipt": {
|
|
17
|
+
"receiptId": "AT0-KASSE1-82",
|
|
18
|
+
"cashregisterId": "KASSE1",
|
|
19
|
+
"timeStamp": "2026-08-13T10:15:30",
|
|
20
|
+
"items": [
|
|
21
|
+
{
|
|
22
|
+
"name": "Semmel",
|
|
23
|
+
"quantity": 4,
|
|
24
|
+
"unitPriceCents": 79,
|
|
25
|
+
"vatRate": 10
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"name": "Kaffee klein",
|
|
29
|
+
"quantity": 1,
|
|
30
|
+
"unitPriceCents": 280,
|
|
31
|
+
"vatRate": 20
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "Rabatt 10 %",
|
|
35
|
+
"quantity": 1,
|
|
36
|
+
"unitPriceCents": -32,
|
|
37
|
+
"vatRate": 10,
|
|
38
|
+
"kind": "discount"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "Rabatt 10 %",
|
|
42
|
+
"quantity": 1,
|
|
43
|
+
"unitPriceCents": -28,
|
|
44
|
+
"vatRate": 20,
|
|
45
|
+
"kind": "discount"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "Trinkgeld",
|
|
49
|
+
"quantity": 1,
|
|
50
|
+
"unitPriceCents": 106,
|
|
51
|
+
"vatRate": 10,
|
|
52
|
+
"kind": "tip",
|
|
53
|
+
"recipient": {
|
|
54
|
+
"registerUserId": "ru2",
|
|
55
|
+
"name": "Chef",
|
|
56
|
+
"owner": true
|
|
57
|
+
},
|
|
58
|
+
"paymentMethod": "cash"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"name": "Trinkgeld",
|
|
62
|
+
"quantity": 1,
|
|
63
|
+
"unitPriceCents": 94,
|
|
64
|
+
"vatRate": 20,
|
|
65
|
+
"kind": "tip",
|
|
66
|
+
"recipient": {
|
|
67
|
+
"registerUserId": "ru2",
|
|
68
|
+
"name": "Chef",
|
|
69
|
+
"owner": true
|
|
70
|
+
},
|
|
71
|
+
"paymentMethod": "cash"
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"vouchers": [],
|
|
75
|
+
"paymentMethod": "cash",
|
|
76
|
+
"turnoverCounterAES256ICM": "UMSATZ",
|
|
77
|
+
"signaturePreviousReceipt": "VORGAENGER",
|
|
78
|
+
"certificateSerialNumber": "6F0404F0",
|
|
79
|
+
"receiptType": "standard",
|
|
80
|
+
"sig": "eyJhbGciOiJFUzI1NiJ9.QVQx.SIGNATURWERT",
|
|
81
|
+
"qr": "_R1-AT1_KASSE1_AT0-KASSE1-42_2026-08-13T10:15:30_5,00_2,70_0,00_0,00_0,00_UMSATZ_VORGAENGER_6F0404F0_SIGNATUR",
|
|
82
|
+
"fullReceiptId": "VOLL",
|
|
83
|
+
"customerDetails": [],
|
|
84
|
+
"legalMessage": []
|
|
85
|
+
},
|
|
86
|
+
"options": {
|
|
87
|
+
"paperSize": "mm80"
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"company": {
|
|
3
|
+
"companyName": "Bäckerei Muster",
|
|
4
|
+
"street": "Hauptplatz 1",
|
|
5
|
+
"zip": "4830",
|
|
6
|
+
"city": "Hallstatt",
|
|
7
|
+
"phone": "+43 6134 12345",
|
|
8
|
+
"uid": "ATU12345678",
|
|
9
|
+
"taxnr": "",
|
|
10
|
+
"isSmallBusiness": false,
|
|
11
|
+
"footer1": "Vielen Dank für Ihren Einkauf",
|
|
12
|
+
"footer2": "www.baeckerei-muster.at",
|
|
13
|
+
"thanksMessage": [],
|
|
14
|
+
"showKreiseckLogo": false
|
|
15
|
+
},
|
|
16
|
+
"receipt": {
|
|
17
|
+
"receiptId": "AT0-KASSE1-83",
|
|
18
|
+
"cashregisterId": "KASSE1",
|
|
19
|
+
"timeStamp": "2026-08-13T10:15:30",
|
|
20
|
+
"items": [
|
|
21
|
+
{
|
|
22
|
+
"name": "Maniküre klassisch",
|
|
23
|
+
"quantity": 1,
|
|
24
|
+
"unitPriceCents": 2900,
|
|
25
|
+
"vatRate": 20
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"name": "Rabatt 15 %",
|
|
29
|
+
"quantity": 1,
|
|
30
|
+
"unitPriceCents": -435,
|
|
31
|
+
"vatRate": 20,
|
|
32
|
+
"kind": "discount"
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"vouchers": [],
|
|
36
|
+
"paymentMethod": "cash",
|
|
37
|
+
"turnoverCounterAES256ICM": "UMSATZ",
|
|
38
|
+
"signaturePreviousReceipt": "VORGAENGER",
|
|
39
|
+
"certificateSerialNumber": "6F0404F0",
|
|
40
|
+
"receiptType": "standard",
|
|
41
|
+
"sig": "eyJhbGciOiJFUzI1NiJ9.QVQx.SIGNATURWERT",
|
|
42
|
+
"qr": "_R1-AT1_KASSE1_AT0-KASSE1-42_2026-08-13T10:15:30_5,00_2,70_0,00_0,00_0,00_UMSATZ_VORGAENGER_6F0404F0_SIGNATUR",
|
|
43
|
+
"fullReceiptId": "VOLL",
|
|
44
|
+
"customerDetails": [],
|
|
45
|
+
"legalMessage": []
|
|
46
|
+
},
|
|
47
|
+
"options": {
|
|
48
|
+
"paperSize": "mm80"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"company": {
|
|
3
|
+
"companyName": "Bäckerei Muster",
|
|
4
|
+
"street": "Hauptplatz 1",
|
|
5
|
+
"zip": "4830",
|
|
6
|
+
"city": "Hallstatt",
|
|
7
|
+
"phone": "+43 6134 12345",
|
|
8
|
+
"uid": "ATU12345678",
|
|
9
|
+
"taxnr": "",
|
|
10
|
+
"isSmallBusiness": false,
|
|
11
|
+
"footer1": "Vielen Dank für Ihren Einkauf",
|
|
12
|
+
"footer2": "www.baeckerei-muster.at",
|
|
13
|
+
"thanksMessage": [],
|
|
14
|
+
"showKreiseckLogo": false
|
|
15
|
+
},
|
|
16
|
+
"receipt": {
|
|
17
|
+
"receiptId": "AT0-KASSE1-62",
|
|
18
|
+
"cashregisterId": "KASSE1",
|
|
19
|
+
"timeStamp": "2026-08-13T10:15:30",
|
|
20
|
+
"items": [
|
|
21
|
+
{
|
|
22
|
+
"name": "Semmel",
|
|
23
|
+
"quantity": 4,
|
|
24
|
+
"unitPriceCents": 79,
|
|
25
|
+
"vatRate": 10
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"name": "Kaffee klein",
|
|
29
|
+
"quantity": 1,
|
|
30
|
+
"unitPriceCents": 280,
|
|
31
|
+
"vatRate": 20
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "Rabatt 10 %",
|
|
35
|
+
"quantity": 1,
|
|
36
|
+
"unitPriceCents": -32,
|
|
37
|
+
"vatRate": 10,
|
|
38
|
+
"kind": "discount"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "Rabatt 10 %",
|
|
42
|
+
"quantity": 1,
|
|
43
|
+
"unitPriceCents": -28,
|
|
44
|
+
"vatRate": 20,
|
|
45
|
+
"kind": "discount"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "Trinkgeld Personal",
|
|
49
|
+
"quantity": 1,
|
|
50
|
+
"unitPriceCents": 100,
|
|
51
|
+
"vatRate": 0,
|
|
52
|
+
"kind": "tip",
|
|
53
|
+
"recipient": {
|
|
54
|
+
"registerUserId": "ru1",
|
|
55
|
+
"name": "Anna"
|
|
56
|
+
},
|
|
57
|
+
"paymentMethod": "cash"
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"vouchers": [],
|
|
61
|
+
"paymentMethod": "cash",
|
|
62
|
+
"turnoverCounterAES256ICM": "UMSATZ",
|
|
63
|
+
"signaturePreviousReceipt": "VORGAENGER",
|
|
64
|
+
"certificateSerialNumber": "6F0404F0",
|
|
65
|
+
"receiptType": "standard",
|
|
66
|
+
"sig": "eyJhbGciOiJFUzI1NiJ9.QVQx.SIGNATURWERT",
|
|
67
|
+
"qr": "_R1-AT1_KASSE1_AT0-KASSE1-42_2026-08-13T10:15:30_5,00_2,70_0,00_0,00_0,00_UMSATZ_VORGAENGER_6F0404F0_SIGNATUR",
|
|
68
|
+
"fullReceiptId": "VOLL",
|
|
69
|
+
"customerDetails": [],
|
|
70
|
+
"legalMessage": []
|
|
71
|
+
},
|
|
72
|
+
"options": {
|
|
73
|
+
"paperSize": "mm80"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"company": {
|
|
3
|
+
"companyName": "Bäckerei Muster",
|
|
4
|
+
"street": "Hauptplatz 1",
|
|
5
|
+
"zip": "4830",
|
|
6
|
+
"city": "Hallstatt",
|
|
7
|
+
"phone": "+43 6134 12345",
|
|
8
|
+
"uid": "ATU12345678",
|
|
9
|
+
"taxnr": "",
|
|
10
|
+
"isSmallBusiness": false,
|
|
11
|
+
"footer1": "Vielen Dank für Ihren Einkauf",
|
|
12
|
+
"footer2": "www.baeckerei-muster.at",
|
|
13
|
+
"thanksMessage": [],
|
|
14
|
+
"showKreiseckLogo": false
|
|
15
|
+
},
|
|
16
|
+
"receipt": {
|
|
17
|
+
"receiptId": "AT0-KASSE1-58",
|
|
18
|
+
"cashregisterId": "KASSE1",
|
|
19
|
+
"timeStamp": "2026-08-13T10:15:30",
|
|
20
|
+
"items": [
|
|
21
|
+
{
|
|
22
|
+
"name": "Semmel",
|
|
23
|
+
"quantity": 4,
|
|
24
|
+
"unitPriceCents": 79,
|
|
25
|
+
"vatRate": 10
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"name": "Kaffee klein",
|
|
29
|
+
"quantity": 1,
|
|
30
|
+
"unitPriceCents": 280,
|
|
31
|
+
"vatRate": 20
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "Rabatt 10 %",
|
|
35
|
+
"quantity": 1,
|
|
36
|
+
"unitPriceCents": -32,
|
|
37
|
+
"vatRate": 10,
|
|
38
|
+
"kind": "discount"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "Rabatt 10 %",
|
|
42
|
+
"quantity": 1,
|
|
43
|
+
"unitPriceCents": -28,
|
|
44
|
+
"vatRate": 20,
|
|
45
|
+
"kind": "discount"
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"vouchers": [
|
|
49
|
+
{
|
|
50
|
+
"type": "value",
|
|
51
|
+
"action": "redeem",
|
|
52
|
+
"valueCents": 300,
|
|
53
|
+
"code": "GS-1"
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"paymentMethod": "cash",
|
|
57
|
+
"turnoverCounterAES256ICM": "UMSATZ",
|
|
58
|
+
"signaturePreviousReceipt": "VORGAENGER",
|
|
59
|
+
"certificateSerialNumber": "6F0404F0",
|
|
60
|
+
"receiptType": "standard",
|
|
61
|
+
"sig": "eyJhbGciOiJFUzI1NiJ9.QVQx.SIGNATURWERT",
|
|
62
|
+
"qr": "_R1-AT1_KASSE1_AT0-KASSE1-42_2026-08-13T10:15:30_5,00_2,70_0,00_0,00_0,00_UMSATZ_VORGAENGER_6F0404F0_SIGNATUR",
|
|
63
|
+
"fullReceiptId": "VOLL",
|
|
64
|
+
"customerDetails": [],
|
|
65
|
+
"legalMessage": []
|
|
66
|
+
},
|
|
67
|
+
"options": {
|
|
68
|
+
"paperSize": "mm80"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -34,13 +34,15 @@
|
|
|
34
34
|
"name": "Rabatt 10 %",
|
|
35
35
|
"quantity": 1,
|
|
36
36
|
"unitPriceCents": -32,
|
|
37
|
-
"vatRate": 10
|
|
37
|
+
"vatRate": 10,
|
|
38
|
+
"kind": "discount"
|
|
38
39
|
},
|
|
39
40
|
{
|
|
40
41
|
"name": "Rabatt 10 %",
|
|
41
42
|
"quantity": 1,
|
|
42
43
|
"unitPriceCents": -28,
|
|
43
|
-
"vatRate": 20
|
|
44
|
+
"vatRate": 20,
|
|
45
|
+
"kind": "discount"
|
|
44
46
|
}
|
|
45
47
|
],
|
|
46
48
|
"vouchers": [],
|
|
@@ -58,4 +60,4 @@
|
|
|
58
60
|
"options": {
|
|
59
61
|
"paperSize": "mm80"
|
|
60
62
|
}
|
|
61
|
-
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"company": {
|
|
3
|
+
"companyName": "Bäckerei Muster",
|
|
4
|
+
"street": "Hauptplatz 1",
|
|
5
|
+
"zip": "4830",
|
|
6
|
+
"city": "Hallstatt",
|
|
7
|
+
"phone": "+43 6134 12345",
|
|
8
|
+
"uid": "ATU12345678",
|
|
9
|
+
"taxnr": "",
|
|
10
|
+
"isSmallBusiness": false,
|
|
11
|
+
"footer1": "Vielen Dank für Ihren Einkauf",
|
|
12
|
+
"footer2": "www.baeckerei-muster.at",
|
|
13
|
+
"thanksMessage": [],
|
|
14
|
+
"showKreiseckLogo": false
|
|
15
|
+
},
|
|
16
|
+
"receipt": {
|
|
17
|
+
"receiptId": "AT0-KASSE1-58",
|
|
18
|
+
"cashregisterId": "KASSE1",
|
|
19
|
+
"timeStamp": "2026-08-13T10:15:30",
|
|
20
|
+
"items": [
|
|
21
|
+
{
|
|
22
|
+
"name": "Semmel",
|
|
23
|
+
"quantity": 4,
|
|
24
|
+
"unitPriceCents": -79,
|
|
25
|
+
"vatRate": 10
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"name": "Kaffee klein",
|
|
29
|
+
"quantity": 1,
|
|
30
|
+
"unitPriceCents": -280,
|
|
31
|
+
"vatRate": 20
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "Rabatt 10 %",
|
|
35
|
+
"quantity": 1,
|
|
36
|
+
"unitPriceCents": 32,
|
|
37
|
+
"vatRate": 10,
|
|
38
|
+
"kind": "discount"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "Rabatt 10 %",
|
|
42
|
+
"quantity": 1,
|
|
43
|
+
"unitPriceCents": 28,
|
|
44
|
+
"vatRate": 20,
|
|
45
|
+
"kind": "discount"
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"vouchers": [],
|
|
49
|
+
"paymentMethod": "cash",
|
|
50
|
+
"turnoverCounterAES256ICM": "UMSATZ",
|
|
51
|
+
"signaturePreviousReceipt": "VORGAENGER",
|
|
52
|
+
"certificateSerialNumber": "6F0404F0",
|
|
53
|
+
"receiptType": "cancellation",
|
|
54
|
+
"sig": "eyJhbGciOiJFUzI1NiJ9.QVQx.SIGNATURWERT",
|
|
55
|
+
"qr": "_R1-AT1_KASSE1_AT0-KASSE1-42_2026-08-13T10:15:30_5,00_2,70_0,00_0,00_0,00_UMSATZ_VORGAENGER_6F0404F0_SIGNATUR",
|
|
56
|
+
"fullReceiptId": "VOLL",
|
|
57
|
+
"customerDetails": [],
|
|
58
|
+
"legalMessage": [],
|
|
59
|
+
"cancellationOf": {
|
|
60
|
+
"receiptId": "AT0-KASSE1-55",
|
|
61
|
+
"fullReceiptId": null
|
|
62
|
+
},
|
|
63
|
+
"cancellationReason": "fehleingabe"
|
|
64
|
+
},
|
|
65
|
+
"options": {
|
|
66
|
+
"paperSize": "mm80"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
Bäckerei Muster
|
|
2
|
+
Hauptplatz 1
|
|
3
|
+
4830 Hallstatt
|
|
4
|
+
ATU12345678
|
|
5
|
+
+43 6134 12345
|
|
6
|
+
|
|
7
|
+
Datum: 13.08.2026 10:15:30
|
|
8
|
+
Kassen-ID: KASSE1
|
|
9
|
+
Beleg-ID: AT0-KASSE1-82
|
|
10
|
+
|
|
11
|
+
4 x Semmel 3,16 B
|
|
12
|
+
je 0,79
|
|
13
|
+
1 x Kaffee klein 2,80 A
|
|
14
|
+
--------------------------------
|
|
15
|
+
Zwischensumme 5,96
|
|
16
|
+
Rabatt 10 % -0,60 *
|
|
17
|
+
* davon -0,28 A, -0,32 B
|
|
18
|
+
Trinkgeld 2,00 *
|
|
19
|
+
* davon 0,94 A, 1,06 B
|
|
20
|
+
|
|
21
|
+
MwSt% MwSt Netto Brutto
|
|
22
|
+
B 10% 0,35 3,55 3,90
|
|
23
|
+
A 20% 0,58 2,88 3,46
|
|
24
|
+
--------------------------------
|
|
25
|
+
Gesamt: 7,36 €
|
|
26
|
+
Zahlungsart: Barzahlung
|
|
27
|
+
|
|
28
|
+
[QR-Code]
|
|
29
|
+
|
|
30
|
+
Vielen Dank für Ihren Einkauf
|
|
31
|
+
www.baeckerei-muster.at
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
Bäckerei Muster
|
|
2
|
+
Hauptplatz 1
|
|
3
|
+
4830 Hallstatt
|
|
4
|
+
ATU12345678
|
|
5
|
+
+43 6134 12345
|
|
6
|
+
|
|
7
|
+
Datum: 13.08.2026 10:15:30
|
|
8
|
+
Kassen-ID: KASSE1
|
|
9
|
+
Beleg-ID: AT0-KASSE1-82
|
|
10
|
+
|
|
11
|
+
4 x Semmel je 0,79 3,16 B
|
|
12
|
+
1 x Kaffee klein 2,80 A
|
|
13
|
+
------------------------------------------------
|
|
14
|
+
Zwischensumme 5,96
|
|
15
|
+
Rabatt 10 % -0,60 *
|
|
16
|
+
* davon -0,28 A, -0,32 B
|
|
17
|
+
Trinkgeld 2,00 *
|
|
18
|
+
* davon 0,94 A, 1,06 B
|
|
19
|
+
|
|
20
|
+
MwSt% MwSt Netto Brutto
|
|
21
|
+
B 10% 0,35 3,55 3,90
|
|
22
|
+
A 20% 0,58 2,88 3,46
|
|
23
|
+
------------------------------------------------
|
|
24
|
+
Gesamt: 7,36 €
|
|
25
|
+
Zahlungsart: Barzahlung
|
|
26
|
+
|
|
27
|
+
[QR-Code]
|
|
28
|
+
|
|
29
|
+
Vielen Dank für Ihren Einkauf
|
|
30
|
+
www.baeckerei-muster.at
|