@kreiseck/kasseneck-api 0.17.0 → 0.19.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 (50) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/README.md +26 -0
  3. package/dist/cjs/client/aufrufe.d.ts +1 -1
  4. package/dist/cjs/client/aufrufe.js +1 -0
  5. package/dist/cjs/payments/hobex-hps/index.d.ts +1 -1
  6. package/dist/cjs/payments/hobex-hps/index.js +3 -1
  7. package/dist/cjs/payments/hobex-hps/payments.d.ts +11 -0
  8. package/dist/cjs/payments/hobex-hps/payments.js +73 -4
  9. package/dist/cjs/payments/hobex-hps/tecs-codes.d.ts +16 -0
  10. package/dist/cjs/payments/hobex-hps/tecs-codes.js +366 -0
  11. package/dist/cjs/payments/hobex-hps/transaction-response.d.ts +56 -8
  12. package/dist/cjs/payments/hobex-hps/transaction-response.js +135 -65
  13. package/dist/cjs/rechnung/api.d.ts +3 -1
  14. package/dist/cjs/rechnung/api.js +1 -0
  15. package/dist/cjs/rechnung/endpunkte.d.ts +11 -1
  16. package/dist/cjs/rechnung/endpunkte.js +22 -0
  17. package/dist/cjs/rechnung/index.d.ts +3 -3
  18. package/dist/cjs/rechnung/index.js +4 -1
  19. package/dist/cjs/rechnung/typen.d.ts +48 -1
  20. package/dist/cjs/rechnung/vertrag.d.ts +24 -2
  21. package/dist/cjs/rechnung/vertrag.js +43 -1
  22. package/dist/esm/client/aufrufe.d.ts +1 -1
  23. package/dist/esm/client/aufrufe.js +1 -0
  24. package/dist/esm/payments/hobex-hps/index.d.ts +1 -1
  25. package/dist/esm/payments/hobex-hps/index.js +1 -1
  26. package/dist/esm/payments/hobex-hps/payments.d.ts +11 -0
  27. package/dist/esm/payments/hobex-hps/payments.js +74 -5
  28. package/dist/esm/payments/hobex-hps/tecs-codes.d.ts +16 -0
  29. package/dist/esm/payments/hobex-hps/tecs-codes.js +363 -0
  30. package/dist/esm/payments/hobex-hps/transaction-response.d.ts +56 -8
  31. package/dist/esm/payments/hobex-hps/transaction-response.js +133 -65
  32. package/dist/esm/rechnung/api.d.ts +3 -1
  33. package/dist/esm/rechnung/api.js +2 -1
  34. package/dist/esm/rechnung/endpunkte.d.ts +11 -1
  35. package/dist/esm/rechnung/endpunkte.js +21 -0
  36. package/dist/esm/rechnung/index.d.ts +3 -3
  37. package/dist/esm/rechnung/index.js +2 -2
  38. package/dist/esm/rechnung/typen.d.ts +48 -1
  39. package/dist/esm/rechnung/vertrag.d.ts +24 -2
  40. package/dist/esm/rechnung/vertrag.js +42 -0
  41. package/fixtures/hobex-hps-codes.json +4075 -52
  42. package/fixtures/kasse-texte.json +1 -1
  43. package/fixtures/oberflaeche.json +16 -3
  44. package/fixtures/rechnung-api-beispiele/issue-bezahlt.json +32 -0
  45. package/fixtures/rechnung-api-beispiele/issue-fehler-zahlungsart.json +26 -0
  46. package/fixtures/rechnung-api-beispiele/zahlung-fehler-ohne-schluessel.json +14 -0
  47. package/fixtures/rechnung-api-beispiele/zahlung-nachtrag.json +14 -0
  48. package/fixtures/rechnung-api.schema.json +82 -2
  49. package/fixtures/rechnung-texte.json +1 -1
  50. package/package.json +1 -1
@@ -32,6 +32,7 @@ export const RECHNUNG_AUFRUFE = [
32
32
  'getInvoiceXml',
33
33
  'getInvoiceSetupStatus',
34
34
  'listBrands',
35
+ 'recordInvoicePayment',
35
36
  ];
36
37
  /**
37
38
  * Stabile Fehlercodes. Das Fremdsystem verzweigt am Code, der Text darf sich
@@ -57,6 +58,8 @@ export const INVOICE_ERROR_CODES = [
57
58
  'invoice_setup_incomplete',
58
59
  'language_not_allowed',
59
60
  'brand_not_found',
61
+ 'not_payable',
62
+ 'payment_exceeds_invoice',
60
63
  ];
61
64
  /** Gruende einer Gutschrift. Der Server druckt den deutschen Anzeigetext. */
62
65
  export const CREDIT_NOTE_REASONS = [
@@ -80,6 +83,18 @@ export const EINVOICE_FORMATS = ['ubl', 'cii'];
80
83
  * oesterreichisch formatiert.
81
84
  */
82
85
  export const INVOICE_LANGUAGES = ['de', 'en'];
86
+ /**
87
+ * Wie eine Rechnung bezahlt wurde. Der Vermerk ist Buchhaltung, kein Beleg:
88
+ * `cash` wird gebucht, die Antwort traegt dann zusaetzlich den Hinweis
89
+ * `cash_receipt_required` — eine Barzahlung ist ein Barumsatz und braucht
90
+ * einen Beleg (§ 132a BAO), bei Registrierkassenpflicht ueber die Kasse.
91
+ */
92
+ export const INVOICE_PAYMENT_METHODS = ['transfer', 'card', 'online', 'cash'];
93
+ /**
94
+ * Hinweise, die eine erfolgreiche Antwort zusaetzlich tragen kann (`data.notice`).
95
+ * Sie sind keine Fehler: der Aufruf hat gewirkt, es gibt nur etwas zu wissen.
96
+ */
97
+ export const INVOICE_NOTICE_CODES = ['cash_receipt_required'];
83
98
  /**
84
99
  * Einheiten einer Position. Die API nimmt nur diese Schluessel an; gedruckt
85
100
  * wird das Kuerzel in der Sprache der Rechnung (`RECHNUNG_TEXTE`,
@@ -261,6 +276,19 @@ export const POSITION_FELDER = Object.freeze({
261
276
  discountPct: { typ: 'number', pflicht: false, min: 0, max: 100, nachkomma: 2 },
262
277
  });
263
278
  const positionen = { typ: 'list', pflicht: true, min: 1, max: 500, eintrag: { typ: 'object', pflicht: true, felder: POSITION_FELDER } };
279
+ /**
280
+ * Eine Zahlung zu einer Rechnung. Ohne `amountCents` gilt der volle
281
+ * Bruttobetrag, ohne `paidAt` der heutige Wiener Tag. `reference` ist die
282
+ * Zahlungskennung des Fremdsystems (z. B. `pi_3Q...`) — sie wird gespeichert,
283
+ * aber **nicht gedruckt**: die Rechnung wird aufbewahrt und vervielfaeltigt,
284
+ * und dem Empfaenger nuetzt sie nichts.
285
+ */
286
+ export const PAYMENT_FELDER = Object.freeze({
287
+ method: { typ: 'enum', pflicht: true, werte: INVOICE_PAYMENT_METHODS },
288
+ amountCents: { typ: 'integer', pflicht: false, min: 1, max: 100_000_000 },
289
+ paidAt: datum(),
290
+ reference: text(100),
291
+ });
264
292
  export const RECHNUNG_ANFRAGEN = Object.freeze({
265
293
  createCustomer: {
266
294
  customer: { typ: 'object', pflicht: true, felder: KUNDE_FELDER },
@@ -302,6 +330,12 @@ export const RECHNUNG_ANFRAGEN = Object.freeze({
302
330
  language: { typ: 'enum', pflicht: false, werte: INVOICE_LANGUAGES },
303
331
  /** Marke (Kennung aus `listBrands`); sonst die Standardmarke. */
304
332
  brandId: id,
333
+ /**
334
+ * Schon bezahlt: die Zahlung entsteht in **derselben** Transaktion wie das
335
+ * Festschreiben. Sonst gaebe es einen Moment, in dem die Rechnung offen ist
336
+ * und ein sofort geholtes PDF Zahlungsinformationen traegt.
337
+ */
338
+ payment: { typ: 'object', pflicht: false, felder: PAYMENT_FELDER },
305
339
  },
306
340
  cancelInvoice: {
307
341
  idempotencyKey: idempotencyKey(true),
@@ -340,6 +374,14 @@ export const RECHNUNG_ANFRAGEN = Object.freeze({
340
374
  },
341
375
  getInvoiceSetupStatus: {},
342
376
  listBrands: {},
377
+ recordInvoicePayment: {
378
+ idempotencyKey: idempotencyKey(true),
379
+ invoiceId: idPflicht,
380
+ method: { typ: 'enum', pflicht: true, werte: INVOICE_PAYMENT_METHODS },
381
+ amountCents: { typ: 'integer', pflicht: false, min: 1, max: 100_000_000 },
382
+ paidAt: datum(),
383
+ reference: text(100),
384
+ },
343
385
  });
344
386
  /** Genau eines dieser Felder muss gesetzt sein (je Aufruf, je Gruppe). */
345
387
  export const RECHNUNG_GENAU_EINS = Object.freeze({