@kreiseck/kasseneck-api 1.1.1 → 1.2.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.
Files changed (123) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +70 -0
  3. package/dist/cjs/client/aufrufe.d.ts +5 -5
  4. package/dist/cjs/client/aufrufe.js +21 -2
  5. package/dist/cjs/client/errors.d.ts +1 -1
  6. package/dist/cjs/client/errors.js +2 -1
  7. package/dist/cjs/client/receipts.d.ts +9 -1
  8. package/dist/cjs/client/receipts.js +18 -3
  9. package/dist/cjs/client/transport.d.ts +3 -3
  10. package/dist/cjs/client/transport.js +2 -2
  11. package/dist/cjs/index.d.ts +2 -2
  12. package/dist/cjs/index.js +6 -3
  13. package/dist/cjs/invoice/index.d.ts +2 -2
  14. package/dist/cjs/invoice/index.js +3 -1
  15. package/dist/cjs/invoice/typen.d.ts +13 -2
  16. package/dist/cjs/invoice/vertrag.d.ts +10 -1
  17. package/dist/cjs/invoice/vertrag.js +39 -2
  18. package/dist/cjs/models/cancellation.d.ts +14 -2
  19. package/dist/cjs/models/cancellation.js +15 -1
  20. package/dist/cjs/models/cashregister.d.ts +3 -0
  21. package/dist/cjs/models/cashregister.js +1 -0
  22. package/dist/cjs/models/index.d.ts +1 -1
  23. package/dist/cjs/models/index.js +4 -2
  24. package/dist/cjs/models/payment-errors.d.ts +1 -1
  25. package/dist/cjs/models/payment-errors.js +1 -0
  26. package/dist/cjs/models/receipt-email.d.ts +1 -1
  27. package/dist/cjs/models/receipt-email.js +1 -0
  28. package/dist/cjs/models/receipt-errors.d.ts +1 -1
  29. package/dist/cjs/models/receipt-errors.js +1 -0
  30. package/dist/cjs/models/receipt-item.d.ts +9 -0
  31. package/dist/cjs/models/receipt-item.js +5 -0
  32. package/dist/cjs/models/receipt.d.ts +1 -1
  33. package/dist/cjs/models/receipt.js +6 -1
  34. package/dist/cjs/pos/artikel.d.ts +14 -0
  35. package/dist/cjs/pos/artikel.js +13 -2
  36. package/dist/cjs/pos/errors.d.ts +3 -3
  37. package/dist/cjs/pos/errors.js +6 -2
  38. package/dist/cjs/pos/index.d.ts +5 -2
  39. package/dist/cjs/pos/index.js +13 -2
  40. package/dist/cjs/pos/lager.d.ts +95 -0
  41. package/dist/cjs/pos/lager.js +160 -0
  42. package/dist/cjs/register/errors.d.ts +1 -1
  43. package/dist/cjs/register/errors.js +1 -0
  44. package/dist/cjs/register/pairing.d.ts +27 -1
  45. package/dist/cjs/register/pairing.js +18 -1
  46. package/dist/cjs/stored/draht.d.ts +4 -2
  47. package/dist/cjs/stored/draht.js +46 -5
  48. package/dist/cjs/stored/vokabular.d.ts +1 -1
  49. package/dist/cjs/stored/vokabular.js +5 -3
  50. package/dist/cjs/version.d.ts +1 -1
  51. package/dist/cjs/version.js +1 -1
  52. package/dist/esm/client/aufrufe.d.ts +5 -5
  53. package/dist/esm/client/aufrufe.js +21 -2
  54. package/dist/esm/client/errors.d.ts +1 -1
  55. package/dist/esm/client/errors.js +2 -1
  56. package/dist/esm/client/receipts.d.ts +9 -1
  57. package/dist/esm/client/receipts.js +19 -4
  58. package/dist/esm/client/transport.d.ts +3 -3
  59. package/dist/esm/client/transport.js +2 -2
  60. package/dist/esm/index.d.ts +2 -2
  61. package/dist/esm/index.js +2 -2
  62. package/dist/esm/invoice/index.d.ts +2 -2
  63. package/dist/esm/invoice/index.js +1 -1
  64. package/dist/esm/invoice/typen.d.ts +13 -2
  65. package/dist/esm/invoice/vertrag.d.ts +10 -1
  66. package/dist/esm/invoice/vertrag.js +38 -1
  67. package/dist/esm/models/cancellation.d.ts +14 -2
  68. package/dist/esm/models/cancellation.js +13 -0
  69. package/dist/esm/models/cashregister.d.ts +3 -0
  70. package/dist/esm/models/cashregister.js +1 -0
  71. package/dist/esm/models/index.d.ts +1 -1
  72. package/dist/esm/models/index.js +1 -1
  73. package/dist/esm/models/payment-errors.d.ts +1 -1
  74. package/dist/esm/models/payment-errors.js +1 -0
  75. package/dist/esm/models/receipt-email.d.ts +1 -1
  76. package/dist/esm/models/receipt-email.js +1 -0
  77. package/dist/esm/models/receipt-errors.d.ts +1 -1
  78. package/dist/esm/models/receipt-errors.js +1 -0
  79. package/dist/esm/models/receipt-item.d.ts +9 -0
  80. package/dist/esm/models/receipt-item.js +5 -0
  81. package/dist/esm/models/receipt.d.ts +1 -1
  82. package/dist/esm/models/receipt.js +6 -1
  83. package/dist/esm/pos/artikel.d.ts +14 -0
  84. package/dist/esm/pos/artikel.js +13 -3
  85. package/dist/esm/pos/errors.d.ts +3 -3
  86. package/dist/esm/pos/errors.js +6 -2
  87. package/dist/esm/pos/index.d.ts +5 -2
  88. package/dist/esm/pos/index.js +6 -2
  89. package/dist/esm/pos/lager.d.ts +95 -0
  90. package/dist/esm/pos/lager.js +154 -0
  91. package/dist/esm/register/errors.d.ts +1 -1
  92. package/dist/esm/register/errors.js +1 -0
  93. package/dist/esm/register/pairing.d.ts +27 -1
  94. package/dist/esm/register/pairing.js +17 -1
  95. package/dist/esm/stored/draht.d.ts +4 -2
  96. package/dist/esm/stored/draht.js +45 -4
  97. package/dist/esm/stored/vokabular.d.ts +1 -1
  98. package/dist/esm/stored/vokabular.js +5 -3
  99. package/dist/esm/version.d.ts +1 -1
  100. package/dist/esm/version.js +1 -1
  101. package/fixtures/hobex-hps-codes.json +1 -1
  102. package/fixtures/invoice-api-examples/cancel-error-return-disposition.json +17 -0
  103. package/fixtures/invoice-api-examples/credit-error-return-disposition.json +26 -0
  104. package/fixtures/invoice-api-examples/credit-return-disposition.json +23 -0
  105. package/fixtures/invoice-api-examples/issue-error-return-disposition.json +25 -0
  106. package/fixtures/invoice-api-examples/issue-error-stock-id.json +27 -0
  107. package/fixtures/invoice-api-examples/issue-stock.json +22 -0
  108. package/fixtures/invoice-api.schema.json +37 -1
  109. package/fixtures/invoice-texts.json +1 -1
  110. package/fixtures/pos-texts.json +1 -1
  111. package/fixtures/surface.json +48 -4
  112. package/fixtures/v3/antworten/belege.json +1 -1
  113. package/fixtures/v3/antworten/belegmail.json +1 -1
  114. package/fixtures/v3/antworten/kasse-belege.json +1 -1
  115. package/fixtures/v3/antworten/kasse.json +662 -3
  116. package/fixtures/v3/antworten/rechnungen.json +1 -1
  117. package/fixtures/v3/antworten/storno.json +1 -1
  118. package/fixtures/v3/stored/belege.json +1 -1
  119. package/fixtures/v3/stored/kasse.json +58 -3
  120. package/fixtures/v3/stored/rechnungen.json +1 -1
  121. package/fixtures/v3/v3-vokabular.json +249 -16
  122. package/fixtures/v3/zahlbetrag-faelle.json +1 -1
  123. package/package.json +1 -1
@@ -10,10 +10,12 @@ export declare function regel(eintrag: SchemaEintrag): {
10
10
  };
11
11
  /** Innere Namen einer Schema-Ebene (was der Server innen an dieser Stelle kennt). */
12
12
  export declare function innereNamen(schema: SchemaObjekt): Map<string, string>;
13
+ /** Rueckgabe-Wahl innen -> aussen (Katalog RUECKGABE; stored.test.ts vergleicht mit dem Vertrag). */
14
+ export declare const _RUECKGABE_NACH_AUSSEN: Readonly<Record<string, string>>;
13
15
  /**
14
16
  * Ein Belegdokument, wie Handler und Rand es vor der Uebersetzung sehen:
15
- * ohne Storno-Marke (storno-core.ohneInterneStornoFelder, Rand
16
- * ohneStornoMarke). Alles andere bleibt woertlich, auch `pruefangaben` im
17
+ * ohne Storno-Marke und Lager-Standort (storno-core.ohneInterneBelegFelder,
18
+ * Rand ohneStornoMarke). Alles andere bleibt woertlich, auch `pruefangaben` im
17
19
  * Beleg selbst (der Server reicht sie so durch). Wirft, wenn es kein
18
20
  * Belegdokument ist.
19
21
  */
@@ -81,7 +81,7 @@ const aeussereWerte = (name) => new Set(Object.values(KATALOGE[name] ?? {}));
81
81
  /**
82
82
  * Interne Marke der Storno-Reservierung: `stornoMarke` am Storno-Beleg,
83
83
  * `marke` im Bezug und in `cancellations[]`. Handler
84
- * (storno-core.ohneInterneStornoFelder) und Rand (ohneStornoMarke) nehmen sie
84
+ * (storno-core.ohneInterneBelegFelder) und Rand (ohneStornoMarke) nehmen sie
85
85
  * heraus; der Vertrag nennt die Namen nicht (nur `$function: belegJeKanal`).
86
86
  */
87
87
  const STORNO_MARKE = 'stornoMarke';
@@ -92,6 +92,44 @@ const ohneMarke = (o) => {
92
92
  const { [MARKE]: _m, ...rest } = o;
93
93
  return rest;
94
94
  };
95
+ /**
96
+ * Interne Dokumentfelder eines Belegs, die keine Antwort traegt (Zwilling von
97
+ * storno-core.INTERNE_BELEG_FELDER): der Lager-Standort der Kasse, den
98
+ * createReceipt fuer die Lagerbuchung an den Beleg kopiert.
99
+ */
100
+ const INTERNE_BELEG_FELDER = ['lagerStandortId'];
101
+ /** Rueckgabe-Wahl innen -> aussen (Katalog RUECKGABE; stored.test.ts vergleicht mit dem Vertrag). */
102
+ export const _RUECKGABE_NACH_AUSSEN = Object.freeze({ lager: 'restock', defekt: 'defective', entsorgt: 'disposed' });
103
+ /**
104
+ * Zwilling von `rueckgabeUmbenennen` (Rand): `rueckgabe` heisst aussen
105
+ * `returnDisposition`, an Ort und Stelle; ein Wert ausserhalb des Katalogs
106
+ * faellt weg (der Server schreibt dafuer eine Warnzeile).
107
+ */
108
+ function rueckgabeUmbenennen(o) {
109
+ if (!istObjekt(o) || !hat(o, 'rueckgabe'))
110
+ return o;
111
+ const raus = {};
112
+ for (const [k, w] of Object.entries(o)) {
113
+ if (k !== 'rueckgabe') {
114
+ raus[k] = w;
115
+ continue;
116
+ }
117
+ if (typeof w === 'string' && hat(_RUECKGABE_NACH_AUSSEN, w))
118
+ raus.returnDisposition = _RUECKGABE_NACH_AUSSEN[w];
119
+ }
120
+ return raus;
121
+ }
122
+ const zeilenMitRueckgabe = (items) => (Array.isArray(items) ? items.map(rueckgabeUmbenennen) : items);
123
+ /** Zwilling von `belegRueckgabeNachAussen`: Storno-Zeilen und Eintraege in `cancellations[]`. */
124
+ function belegRueckgabeNachAussen(beleg) {
125
+ const raus = { ...beleg };
126
+ if (Array.isArray(beleg.items))
127
+ raus.items = zeilenMitRueckgabe(beleg.items);
128
+ if (Array.isArray(beleg.cancellations)) {
129
+ raus.cancellations = beleg.cancellations.map((c) => (istObjekt(c) && Array.isArray(c.items) ? { ...c, items: zeilenMitRueckgabe(c.items) } : c));
130
+ }
131
+ return raus;
132
+ }
95
133
  /**
96
134
  * Zwilling von `beleg-pruefangaben.alsIso`: leer (auch 0, '') -> null;
97
135
  * Firestore-Zeitstempel, Zahl oder Zeichenkette -> ISO-Zeitpunkt in UTC;
@@ -109,8 +147,8 @@ function alsIso(ts) {
109
147
  }
110
148
  /**
111
149
  * Ein Belegdokument, wie Handler und Rand es vor der Uebersetzung sehen:
112
- * ohne Storno-Marke (storno-core.ohneInterneStornoFelder, Rand
113
- * ohneStornoMarke). Alles andere bleibt woertlich, auch `pruefangaben` im
150
+ * ohne Storno-Marke und Lager-Standort (storno-core.ohneInterneBelegFelder,
151
+ * Rand ohneStornoMarke). Alles andere bleibt woertlich, auch `pruefangaben` im
114
152
  * Beleg selbst (der Server reicht sie so durch). Wirft, wenn es kein
115
153
  * Belegdokument ist.
116
154
  */
@@ -119,6 +157,8 @@ export function _storedReceiptInner(doc, functionName) {
119
157
  throw new KasseneckValidationError(functionName, 'Kein Belegdokument (receiptId fehlt)', 'response');
120
158
  }
121
159
  const { [STORNO_MARKE]: _s, ...beleg } = doc;
160
+ for (const feld of INTERNE_BELEG_FELDER)
161
+ delete beleg[feld];
122
162
  if (hat(beleg, 'cancellationOf'))
123
163
  beleg.cancellationOf = ohneMarke(beleg.cancellationOf);
124
164
  if (Array.isArray(beleg.cancellations))
@@ -140,7 +180,8 @@ export function pruefangabenDerHuelle(p) {
140
180
  */
141
181
  export function _receiptEnvelopeToWire(huelle) {
142
182
  const schema = SCHEMAS.getReceipt;
143
- return werteNachAussen(schluesselNachAussen(huelle, schema.data), schema.werte);
183
+ const draht = werteNachAussen(schluesselNachAussen(huelle, schema.data), schema.werte);
184
+ return istObjekt(draht.receipt) ? { ...draht, receipt: belegRueckgabeNachAussen(draht.receipt) } : draht;
144
185
  }
145
186
  /**
146
187
  * Ein Belegdokument (`users/{uid}/cashregisters/{id}/receipts/{id}`) in der
@@ -1,5 +1,5 @@
1
1
  /** Fingerabdruck des Vertrags-Exports, aus dem diese Datei stammt (`_quelle.sha256`). */
2
- export declare const VOKABULAR_QUELLE = "29994ca53adc96e7cb49b9e3688b102a69c126544ef092fc6579a2e1fcd0d555";
2
+ export declare const VOKABULAR_QUELLE = "b1049e2f65e9261cf8f729481d9ce1e5afda2cf620333f38ae6bf1afb36c8712";
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 = "29994ca53adc96e7cb49b9e3688b102a69c126544ef092fc6579a2e1fcd0d555";
4
+ export const VOKABULAR_QUELLE = "b1049e2f65e9261cf8f729481d9ce1e5afda2cf620333f38ae6bf1afb36c8712";
5
5
  /** Schema je Endpunkt (aussen -> innen) und Wertverweise auf die Kataloge. */
6
6
  export const SCHEMAS = {
7
7
  "getReceipt": {
@@ -219,7 +219,8 @@ export const SCHEMAS = {
219
219
  "__": "kasse",
220
220
  "visible": "sichtbar",
221
221
  "sort": "sort"
222
- }
222
+ },
223
+ "stockLocationIds": "standorte"
223
224
  }
224
225
  ]
225
226
  },
@@ -256,7 +257,8 @@ export const ARTIKEL_FELDER = [
256
257
  "revenueGroupId",
257
258
  "active",
258
259
  "groupId",
259
- "tile"
260
+ "tile",
261
+ "stockLocationIds"
260
262
  ];
261
263
  /** Wertkataloge innen (deutsch) -> aussen (englisch). */
262
264
  export const KATALOGE = {
@@ -4,4 +4,4 @@
4
4
  * Client-Version, Nachtrag §6). Ein Test haelt sie gleich mit `package.json`;
5
5
  * beim Anheben der Version beide Stellen aendern.
6
6
  */
7
- export declare const PACKAGE_VERSION = "1.1.1";
7
+ export declare const PACKAGE_VERSION = "1.2.0";
@@ -4,4 +4,4 @@
4
4
  * Client-Version, Nachtrag §6). Ein Test haelt sie gleich mit `package.json`;
5
5
  * beim Anheben der Version beide Stellen aendern.
6
6
  */
7
- export const PACKAGE_VERSION = '1.1.1';
7
+ export const PACKAGE_VERSION = '1.2.0';
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.1.1",
2
+ "version": "1.2.0",
3
3
  "measuredOn": {
4
4
  "tid": "3600335",
5
5
  "hpsVersion": "1.10.0",
@@ -0,0 +1,17 @@
1
+ {
2
+ "endpoint": "cancelInvoice",
3
+ "description": "Unbekannte Rueckgabe-Wahl beim Vollstorno",
4
+ "request": {
5
+ "idempotencyKey": "ex-16",
6
+ "invoiceId": "invoice_example",
7
+ "reason": "return",
8
+ "returnDisposition": "lost"
9
+ },
10
+ "expected": {
11
+ "ok": false,
12
+ "code": "validation",
13
+ "fields": [
14
+ "returnDisposition"
15
+ ]
16
+ }
17
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "endpoint": "createCreditNote",
3
+ "description": "Unbekannte Rueckgabe-Wahl an der Position",
4
+ "request": {
5
+ "idempotencyKey": "ex-15",
6
+ "invoiceId": "invoice_example",
7
+ "reason": "return",
8
+ "items": [
9
+ {
10
+ "description": "Roggenbrot",
11
+ "quantity": 1,
12
+ "unitPriceCents": 450,
13
+ "vatRate": 10,
14
+ "articleId": "rye-bread",
15
+ "returnDisposition": "lost"
16
+ }
17
+ ]
18
+ },
19
+ "expected": {
20
+ "ok": false,
21
+ "code": "validation",
22
+ "fields": [
23
+ "items[0].returnDisposition"
24
+ ]
25
+ }
26
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "endpoint": "createCreditNote",
3
+ "description": "Rueckgabe: Vorgabe zurueck ins Lager, eine Position defekt",
4
+ "request": {
5
+ "idempotencyKey": "ex-14",
6
+ "invoiceId": "invoice_example",
7
+ "reason": "return",
8
+ "returnDisposition": "restock",
9
+ "items": [
10
+ {
11
+ "description": "Roggenbrot",
12
+ "quantity": 1,
13
+ "unitPriceCents": 450,
14
+ "vatRate": 10,
15
+ "articleId": "rye-bread",
16
+ "returnDisposition": "defective"
17
+ }
18
+ ]
19
+ },
20
+ "expected": {
21
+ "ok": true
22
+ }
23
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "endpoint": "issueInvoice",
3
+ "description": "Die Rueckgabe-Wahl gehoert an die Gutschrift, nicht an die Rechnung",
4
+ "request": {
5
+ "idempotencyKey": "ex-17",
6
+ "priceMode": "gross",
7
+ "serviceStart": "2026-10-01",
8
+ "items": [
9
+ {
10
+ "description": "Roggenbrot",
11
+ "quantity": 1,
12
+ "unitPriceCents": 450,
13
+ "vatRate": 10,
14
+ "returnDisposition": "restock"
15
+ }
16
+ ]
17
+ },
18
+ "expected": {
19
+ "ok": false,
20
+ "code": "validation",
21
+ "fields": [
22
+ "items[0].returnDisposition"
23
+ ]
24
+ }
25
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "endpoint": "issueInvoice",
3
+ "description": "Lager-Kennungen ohne Schraegstrich und nicht nur Punkte",
4
+ "request": {
5
+ "idempotencyKey": "ex-18",
6
+ "priceMode": "gross",
7
+ "serviceStart": "2026-10-01",
8
+ "stockLocationId": "..",
9
+ "items": [
10
+ {
11
+ "description": "Roggenbrot",
12
+ "quantity": 1,
13
+ "unitPriceCents": 450,
14
+ "vatRate": 10,
15
+ "articleId": "a/b"
16
+ }
17
+ ]
18
+ },
19
+ "expected": {
20
+ "ok": false,
21
+ "code": "validation",
22
+ "fields": [
23
+ "stockLocationId",
24
+ "items[0].articleId"
25
+ ]
26
+ }
27
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "endpoint": "issueInvoice",
3
+ "description": "Bestandsgefuehrter Artikel, abgebucht vom Lieferwagen",
4
+ "request": {
5
+ "idempotencyKey": "ex-13",
6
+ "priceMode": "gross",
7
+ "serviceStart": "2026-10-01",
8
+ "stockLocationId": "van-1",
9
+ "items": [
10
+ {
11
+ "description": "Roggenbrot",
12
+ "quantity": 2,
13
+ "unitPriceCents": 450,
14
+ "vatRate": 10,
15
+ "articleId": "rye-bread"
16
+ }
17
+ ]
18
+ },
19
+ "expected": {
20
+ "ok": true
21
+ }
22
+ }
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "title": "Kasseneck Rechnungs-API",
4
4
  "version": 2,
5
- "package": "1.1.1",
5
+ "package": "1.2.0",
6
6
  "endpoints": {
7
7
  "createCustomer": {
8
8
  "request": {
@@ -461,6 +461,11 @@
461
461
  "minimum": 0,
462
462
  "maximum": 100,
463
463
  "x-decimals": 2
464
+ },
465
+ "articleId": {
466
+ "type": "string",
467
+ "minLength": 1,
468
+ "maxLength": 128
464
469
  }
465
470
  },
466
471
  "required": [
@@ -505,6 +510,11 @@
505
510
  "minLength": 1,
506
511
  "maxLength": 128
507
512
  },
513
+ "stockLocationId": {
514
+ "type": "string",
515
+ "minLength": 1,
516
+ "maxLength": 128
517
+ },
508
518
  "payment": {
509
519
  "type": "object",
510
520
  "properties": {
@@ -579,6 +589,13 @@
579
589
  "note": {
580
590
  "type": "string",
581
591
  "maxLength": 2000
592
+ },
593
+ "returnDisposition": {
594
+ "enum": [
595
+ "restock",
596
+ "defective",
597
+ "disposed"
598
+ ]
582
599
  }
583
600
  },
584
601
  "required": [
@@ -720,6 +737,18 @@
720
737
  "minimum": 0,
721
738
  "maximum": 100,
722
739
  "x-decimals": 2
740
+ },
741
+ "articleId": {
742
+ "type": "string",
743
+ "minLength": 1,
744
+ "maxLength": 128
745
+ },
746
+ "returnDisposition": {
747
+ "enum": [
748
+ "restock",
749
+ "defective",
750
+ "disposed"
751
+ ]
723
752
  }
724
753
  },
725
754
  "required": [
@@ -741,6 +770,13 @@
741
770
  ],
742
771
  "additionalProperties": false
743
772
  }
773
+ },
774
+ "returnDisposition": {
775
+ "enum": [
776
+ "restock",
777
+ "defective",
778
+ "disposed"
779
+ ]
744
780
  }
745
781
  },
746
782
  "required": [
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.1.1",
2
+ "version": "1.2.0",
3
3
  "languages": [
4
4
  "de",
5
5
  "en"
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.1.1",
2
+ "version": "1.2.0",
3
3
  "messages": {
4
4
  "network.no_connection": {
5
5
  "text": "Keine Verbindung zum Server. Bitte die Internetverbindung prüfen und erneut versuchen."
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.1.1",
2
+ "version": "1.2.0",
3
3
  "baseUrls": {
4
4
  "public": "https://api.kasseneck.at/v3",
5
5
  "pos": "https://kasse.kasseneck.at/api/v3"
@@ -70,6 +70,8 @@
70
70
  "listMyCashregisters",
71
71
  "listMyPrinters",
72
72
  "listMyReceipts",
73
+ "listMyStock",
74
+ "listMyStockLocations",
73
75
  "listMyTipRecipients",
74
76
  "listRegisterUsersForDevice",
75
77
  "listRegisterSessionsForDevice",
@@ -78,6 +80,7 @@
78
80
  "registerUserLogin",
79
81
  "renewRegisterSession",
80
82
  "sendReceiptEmail",
83
+ "setMyCashregisterStockLocation",
81
84
  "setMyKasseLogo",
82
85
  "setMyKasseSettings",
83
86
  "setMyRegisterDeviceSettings",
@@ -123,6 +126,8 @@
123
126
  "listCustomerCashregisters",
124
127
  "getCustomerCredentials",
125
128
  "reportCustomerContract",
129
+ "getPartnerBilling",
130
+ "getPartnerBillingMonth",
126
131
  "createCustomer",
127
132
  "getCustomer",
128
133
  "updateCustomer",
@@ -136,7 +141,14 @@
136
141
  "getInvoiceXml",
137
142
  "getInvoiceSetupStatus",
138
143
  "listBrands",
139
- "recordInvoicePayment"
144
+ "recordInvoicePayment",
145
+ "createInvoiceItem",
146
+ "updateInvoiceItem",
147
+ "withdrawInvoiceItem",
148
+ "getInvoiceItem",
149
+ "listInvoiceItems",
150
+ "setCustomerMandate",
151
+ "revokeCustomerMandate"
140
152
  ],
141
153
  "pos": [
142
154
  "pairRegisterDevice",
@@ -163,7 +175,10 @@
163
175
  "listMyPrinters",
164
176
  "createPrintJob",
165
177
  "getPrintJob",
166
- "listMyTipRecipients"
178
+ "listMyTipRecipients",
179
+ "listMyStockLocations",
180
+ "listMyStock",
181
+ "setMyCashregisterStockLocation"
167
182
  ]
168
183
  },
169
184
  "enums": {
@@ -334,11 +349,19 @@
334
349
  "receiptsScope",
335
350
  "drawer",
336
351
  "discount",
337
- "tipAssign"
352
+ "tipAssign",
353
+ "stockView",
354
+ "stockCosts",
355
+ "stockMove",
356
+ "stockLoss",
357
+ "stocktakeCount",
358
+ "stocktakeClose",
359
+ "stockLocation"
338
360
  ],
339
361
  "registerErrorCodes": [
340
362
  "account_not_found",
341
363
  "admin_required",
364
+ "api_not_approved",
342
365
  "cashregister_in_use",
343
366
  "cashregister_not_assigned",
344
367
  "cashregister_not_found",
@@ -412,6 +435,7 @@
412
435
  "posErrorCodes": [
413
436
  "account_not_found",
414
437
  "admin_required",
438
+ "api_not_approved",
415
439
  "cashregister_not_assigned",
416
440
  "cashregister_not_found",
417
441
  "cashregister_token_invalid",
@@ -420,6 +444,8 @@
420
444
  "dialect_mismatch",
421
445
  "internal_translation_error",
422
446
  "live_not_enabled",
447
+ "location_inactive",
448
+ "location_not_found",
423
449
  "logo_invalid",
424
450
  "logo_invalid_type",
425
451
  "logo_too_large",
@@ -435,6 +461,7 @@
435
461
  "register_user_not_allowed",
436
462
  "register_user_not_found",
437
463
  "response_translation_failed",
464
+ "server_error",
438
465
  "session_expired",
439
466
  "session_other_cashregister",
440
467
  "unauthorized",
@@ -457,6 +484,17 @@
457
484
  "quantityRules": [
458
485
  "piece",
459
486
  "decimal"
487
+ ],
488
+ "returnDispositions": [
489
+ "restock",
490
+ "defective",
491
+ "disposed"
492
+ ],
493
+ "stockLocationTypes": [
494
+ "warehouse",
495
+ "store",
496
+ "vehicle",
497
+ "other"
460
498
  ]
461
499
  },
462
500
  "partner": {
@@ -761,6 +799,7 @@
761
799
  "invoiceRequestErrorCodes": [
762
800
  "account_not_found",
763
801
  "admin_required",
802
+ "api_not_approved",
764
803
  "cashregister_not_assigned",
765
804
  "cashregister_not_found",
766
805
  "cashregister_token_invalid",
@@ -851,6 +890,11 @@
851
890
  "net",
852
891
  "gross"
853
892
  ],
893
+ "returnDispositions": [
894
+ "restock",
895
+ "defective",
896
+ "disposed"
897
+ ],
854
898
  "taxSchemes": [
855
899
  "normal",
856
900
  "smallBusiness",
@@ -2,7 +2,7 @@
2
2
  "_hinweis": "Vertrags-Export /v3, erzeugt aus den echten Handlern (npm run vertrag:v3 in functions/ und functions-kasse/). Nicht von Hand pflegen.",
3
3
  "_quelle": {
4
4
  "sha256": "61892b91e6a8a0f273dcfdeb63809d92d98fb837a3c0baa782f03b29dd3b8b7a",
5
- "inputsSha256": "eb87e762005b16d104ba737b7d2ba9108eaddf0ed4b6eea9d96817c261759758",
5
+ "inputsSha256": "62e0d9891baa5049aa7634f11fcfd9a44d80b2cb8da79da4fee13140ccd96c2a",
6
6
  "backendPackage": "@kreiseck/kasseneck-api@0.31.0",
7
7
  "inputs": [
8
8
  "docs/api/fehlercodes.json",
@@ -2,7 +2,7 @@
2
2
  "_hinweis": "Vertrags-Export /v3, erzeugt aus den echten Handlern (npm run vertrag:v3 in functions/ und functions-kasse/). Nicht von Hand pflegen.",
3
3
  "_quelle": {
4
4
  "sha256": "265bcf3e14cdea33ec3c4df399eb487d40c0d7793ee23d2ee12bcf664bcad550",
5
- "inputsSha256": "eb87e762005b16d104ba737b7d2ba9108eaddf0ed4b6eea9d96817c261759758",
5
+ "inputsSha256": "62e0d9891baa5049aa7634f11fcfd9a44d80b2cb8da79da4fee13140ccd96c2a",
6
6
  "backendPackage": "@kreiseck/kasseneck-api@0.31.0",
7
7
  "inputs": [
8
8
  "docs/api/fehlercodes.json",
@@ -2,7 +2,7 @@
2
2
  "_hinweis": "Vertrags-Export /v3, erzeugt aus den echten Handlern (npm run vertrag:v3 in functions/ und functions-kasse/). Nicht von Hand pflegen.",
3
3
  "_quelle": {
4
4
  "sha256": "aad7147db385e4a6d88ba5fb59d24c04e7e1f01195778aa70ccdc68fb90adcd7",
5
- "inputsSha256": "eb87e762005b16d104ba737b7d2ba9108eaddf0ed4b6eea9d96817c261759758",
5
+ "inputsSha256": "62e0d9891baa5049aa7634f11fcfd9a44d80b2cb8da79da4fee13140ccd96c2a",
6
6
  "backendPackage": "@kreiseck/kasseneck-api@0.31.0",
7
7
  "inputs": [
8
8
  "docs/api/fehlercodes.json",