@kreiseck/kasseneck-api 0.12.0 → 0.13.1

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 (52) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/README.md +26 -0
  3. package/dist/cjs/client/api.d.ts +3 -1
  4. package/dist/cjs/client/api.js +1 -0
  5. package/dist/cjs/client/aufrufe.d.ts +1 -1
  6. package/dist/cjs/client/aufrufe.js +1 -0
  7. package/dist/cjs/client/index.d.ts +1 -1
  8. package/dist/cjs/client/index.js +2 -1
  9. package/dist/cjs/client/receipts.d.ts +57 -0
  10. package/dist/cjs/client/receipts.js +49 -0
  11. package/dist/cjs/index.d.ts +2 -2
  12. package/dist/cjs/index.js +5 -2
  13. package/dist/cjs/models/index.d.ts +1 -0
  14. package/dist/cjs/models/index.js +4 -1
  15. package/dist/cjs/models/receipt-email.d.ts +22 -0
  16. package/dist/cjs/models/receipt-email.js +32 -0
  17. package/dist/cjs/payments/hobex-hps/errors.d.ts +11 -0
  18. package/dist/cjs/payments/hobex-hps/errors.js +16 -0
  19. package/dist/cjs/payments/hobex-hps/index.d.ts +1 -1
  20. package/dist/cjs/payments/hobex-hps/index.js +2 -1
  21. package/dist/cjs/payments/hobex-hps/payments.js +6 -1
  22. package/dist/cjs/payments/hobex-hps/transaction-response.d.ts +12 -0
  23. package/dist/cjs/payments/hobex-hps/transaction-response.js +13 -1
  24. package/dist/cjs/payments/index.d.ts +1 -1
  25. package/dist/cjs/payments/index.js +2 -1
  26. package/dist/esm/client/api.d.ts +3 -1
  27. package/dist/esm/client/api.js +2 -1
  28. package/dist/esm/client/aufrufe.d.ts +1 -1
  29. package/dist/esm/client/aufrufe.js +1 -0
  30. package/dist/esm/client/index.d.ts +1 -1
  31. package/dist/esm/client/index.js +1 -1
  32. package/dist/esm/client/receipts.d.ts +57 -0
  33. package/dist/esm/client/receipts.js +48 -0
  34. package/dist/esm/index.d.ts +2 -2
  35. package/dist/esm/index.js +2 -2
  36. package/dist/esm/models/index.d.ts +1 -0
  37. package/dist/esm/models/index.js +1 -0
  38. package/dist/esm/models/receipt-email.d.ts +22 -0
  39. package/dist/esm/models/receipt-email.js +28 -0
  40. package/dist/esm/payments/hobex-hps/errors.d.ts +11 -0
  41. package/dist/esm/payments/hobex-hps/errors.js +17 -1
  42. package/dist/esm/payments/hobex-hps/index.d.ts +1 -1
  43. package/dist/esm/payments/hobex-hps/index.js +1 -1
  44. package/dist/esm/payments/hobex-hps/payments.js +6 -1
  45. package/dist/esm/payments/hobex-hps/transaction-response.d.ts +12 -0
  46. package/dist/esm/payments/hobex-hps/transaction-response.js +12 -0
  47. package/dist/esm/payments/index.d.ts +1 -1
  48. package/dist/esm/payments/index.js +1 -1
  49. package/fixtures/hobex-hps-codes.json +1 -1
  50. package/fixtures/kasse-texte.json +1 -1
  51. package/fixtures/oberflaeche.json +2 -1
  52. package/package.json +1 -1
@@ -42,4 +42,4 @@
42
42
  export { StripeLinkMode, type StripeLinkModeKey } from '../enums/index.js';
43
43
  export { type CreateStripeLinkOptions, type StripeCaptureResult, createStripeLink, stripeCaptureIntent, } from './stripe.js';
44
44
  export { type HobexPayOptions, type HobexRefundOptions, type HobexTransactionIdOptions, hobexPay, hobexRefund, newHobexTransactionId, } from './hobex.js';
45
- export { type CardPaymentOutcome, type HpsConnectClient, type HpsConnectClientOptions, type HpsConnectFetch, type HpsConnectFetchResponse, type HpsConnectPaymentOptions, type HpsConnectTarget, type HpsConnectTransactionOptions, type HpsCode, type HpsCodeEffect, type HpsCodeReason, type HpsCodeSource, type HpsMeasuredCode, type HpsPaymentEvent, type HpsPaymentEventKind, type HpsPaymentObserver, type HpsPaymentOptions, type HpsPayments, type HpsPaymentResult, type HpsPaymentsOptions, type HpsTransactionIdGeneratorOptions, type HpsTransactionResponse, ABORTED_CODE, APPROVED_CODE, CARD_NOT_PRESENT_CODE, createHpsConnectClient, createHpsPayments, createHpsTransactionIdGenerator, HPS_CODES, HPS_MEASURED_CODES, HPS_REASON_HINTS, hpsCodeInfo, hpsCodeReason, HpsClarifyTimeoutError, HpsConnectException, HpsConnectTerminalError, HpsConnectTransportError, HpsPreflightError, HpsTransactionIdError, INVALID_TRANSACTION_CODE, isApproved, isConclusive, isConclusiveAsStatus, isHostUncertain, isHostUncertainResult, isInProgress, isNoStatement, isNotAbortable, isTechnicalError, isUnknownCode, isValidHpsTransactionId, mayRetrySafely, MAX_TRANSACTION_ID_LENGTH, newHpsTransactionId, NOT_ABORTABLE_CODE, NO_STATEMENT_CODE, parseHpsTransactionResponse, PREFLIGHT_CONNECT_CODES, TECHNICAL_ERROR_CODE, TERMINAL_BUSY_HTTP_STATUS, TRANSACTION_CANCELED_CODE, } from './hobex-hps/index.js';
45
+ export { type CardPaymentOutcome, type HpsConnectClient, type HpsConnectClientOptions, type HpsConnectFetch, type HpsConnectFetchResponse, type HpsConnectPaymentOptions, type HpsConnectTarget, type HpsConnectTransactionOptions, type HpsCode, type HpsCodeEffect, type HpsCodeReason, type HpsCodeSource, type HpsMeasuredCode, type HpsPaymentEvent, type HpsPaymentEventKind, type HpsPaymentObserver, type HpsPaymentOptions, type HpsPayments, type HpsPaymentResult, type HpsPaymentsOptions, type HpsTransactionIdGeneratorOptions, type HpsTransactionResponse, ABORTED_CODE, APPROVED_CODE, CARD_NOT_PRESENT_CODE, createHpsConnectClient, createHpsPayments, createHpsTransactionIdGenerator, HPS_CODES, HPS_MEASURED_CODES, HPS_REASON_HINTS, hpsCodeInfo, hpsCodeReason, HpsClarifyTimeoutError, HpsConnectException, HpsConnectTerminalError, HpsConnectTransportError, HpsPreflightError, HpsTransactionIdError, INVALID_TRANSACTION_CODE, isApproved, isConclusive, isConclusiveAsStatus, isHostUncertain, isHostUncertainResult, isInProgress, isNoStatement, isNotAbortable, isTechnicalError, isUnknownCode, isValidHpsTransactionId, mayRetrySafely, MAX_TRANSACTION_ID_LENGTH, newHpsTransactionId, NOT_ABORTABLE_CODE, NO_STATEMENT_CODE, parseHpsTransactionResponse, PREFLIGHT_CONNECT_CODES, TECHNICAL_ERROR_CODE, NOT_FOUND_HTTP_STATUS, TERMINAL_BUSY_HTTP_STATUS, TRANSACTION_CANCELED_CODE, } from './hobex-hps/index.js';
@@ -41,7 +41,7 @@
41
41
  * nichts zu entscheiden.
42
42
  */
43
43
  Object.defineProperty(exports, "__esModule", { value: true });
44
- exports.TRANSACTION_CANCELED_CODE = exports.TERMINAL_BUSY_HTTP_STATUS = exports.TECHNICAL_ERROR_CODE = exports.PREFLIGHT_CONNECT_CODES = exports.parseHpsTransactionResponse = exports.NO_STATEMENT_CODE = exports.NOT_ABORTABLE_CODE = exports.newHpsTransactionId = exports.MAX_TRANSACTION_ID_LENGTH = exports.mayRetrySafely = exports.isValidHpsTransactionId = exports.isUnknownCode = exports.isTechnicalError = exports.isNotAbortable = exports.isNoStatement = exports.isInProgress = exports.isHostUncertainResult = exports.isHostUncertain = exports.isConclusiveAsStatus = exports.isConclusive = exports.isApproved = exports.INVALID_TRANSACTION_CODE = exports.HpsTransactionIdError = exports.HpsPreflightError = exports.HpsConnectTransportError = exports.HpsConnectTerminalError = exports.HpsConnectException = exports.HpsClarifyTimeoutError = exports.hpsCodeReason = exports.hpsCodeInfo = exports.HPS_REASON_HINTS = exports.HPS_MEASURED_CODES = exports.HPS_CODES = exports.createHpsTransactionIdGenerator = exports.createHpsPayments = exports.createHpsConnectClient = exports.CARD_NOT_PRESENT_CODE = exports.APPROVED_CODE = exports.ABORTED_CODE = exports.newHobexTransactionId = exports.hobexRefund = exports.hobexPay = exports.stripeCaptureIntent = exports.createStripeLink = exports.StripeLinkMode = void 0;
44
+ exports.TRANSACTION_CANCELED_CODE = exports.TERMINAL_BUSY_HTTP_STATUS = exports.NOT_FOUND_HTTP_STATUS = exports.TECHNICAL_ERROR_CODE = exports.PREFLIGHT_CONNECT_CODES = exports.parseHpsTransactionResponse = exports.NO_STATEMENT_CODE = exports.NOT_ABORTABLE_CODE = exports.newHpsTransactionId = exports.MAX_TRANSACTION_ID_LENGTH = exports.mayRetrySafely = exports.isValidHpsTransactionId = exports.isUnknownCode = exports.isTechnicalError = exports.isNotAbortable = exports.isNoStatement = exports.isInProgress = exports.isHostUncertainResult = exports.isHostUncertain = exports.isConclusiveAsStatus = exports.isConclusive = exports.isApproved = exports.INVALID_TRANSACTION_CODE = exports.HpsTransactionIdError = exports.HpsPreflightError = exports.HpsConnectTransportError = exports.HpsConnectTerminalError = exports.HpsConnectException = exports.HpsClarifyTimeoutError = exports.hpsCodeReason = exports.hpsCodeInfo = exports.HPS_REASON_HINTS = exports.HPS_MEASURED_CODES = exports.HPS_CODES = exports.createHpsTransactionIdGenerator = exports.createHpsPayments = exports.createHpsConnectClient = exports.CARD_NOT_PRESENT_CODE = exports.APPROVED_CODE = exports.ABORTED_CODE = exports.newHobexTransactionId = exports.hobexRefund = exports.hobexPay = exports.stripeCaptureIntent = exports.createStripeLink = exports.StripeLinkMode = void 0;
45
45
  var index_js_1 = require("../enums/index.js");
46
46
  Object.defineProperty(exports, "StripeLinkMode", { enumerable: true, get: function () { return index_js_1.StripeLinkMode; } });
47
47
  var stripe_js_1 = require("./stripe.js");
@@ -89,5 +89,6 @@ Object.defineProperty(exports, "NO_STATEMENT_CODE", { enumerable: true, get: fun
89
89
  Object.defineProperty(exports, "parseHpsTransactionResponse", { enumerable: true, get: function () { return index_js_2.parseHpsTransactionResponse; } });
90
90
  Object.defineProperty(exports, "PREFLIGHT_CONNECT_CODES", { enumerable: true, get: function () { return index_js_2.PREFLIGHT_CONNECT_CODES; } });
91
91
  Object.defineProperty(exports, "TECHNICAL_ERROR_CODE", { enumerable: true, get: function () { return index_js_2.TECHNICAL_ERROR_CODE; } });
92
+ Object.defineProperty(exports, "NOT_FOUND_HTTP_STATUS", { enumerable: true, get: function () { return index_js_2.NOT_FOUND_HTTP_STATUS; } });
92
93
  Object.defineProperty(exports, "TERMINAL_BUSY_HTTP_STATUS", { enumerable: true, get: function () { return index_js_2.TERMINAL_BUSY_HTTP_STATUS; } });
93
94
  Object.defineProperty(exports, "TRANSACTION_CANCELED_CODE", { enumerable: true, get: function () { return index_js_2.TRANSACTION_CANCELED_CODE; } });
@@ -3,7 +3,7 @@ import { type CreateStripeLinkOptions, type StripeCaptureResult } from '../payme
3
3
  import { type HobexPayOptions, type HobexRefundOptions } from '../payments/hobex.js';
4
4
  import { type TransportOptions } from './transport.js';
5
5
  import { type CashboxStatus, type SignatureStatus } from './status.js';
6
- import { type ListMyReceiptsOptions, type ReceiptList, type ReceiptWithCompany, type SellReceiptOptions, type CancelReceiptOptions, type CancelReceiptResult, type CreateCancelReceiptOptions } from './receipts.js';
6
+ import { type SendReceiptEmailOptions, type SendReceiptEmailResult, type ListMyReceiptsOptions, type ReceiptList, type ReceiptWithCompany, type SellReceiptOptions, type CancelReceiptOptions, type CancelReceiptResult, type CreateCancelReceiptOptions } from './receipts.js';
7
7
  /**
8
8
  * Schlichte Factory ueber den Endpunkt-Funktionen: bindet einen Transport
9
9
  * einmal und liefert die Aufrufe ohne den wiederkehrenden ersten Parameter.
@@ -47,6 +47,8 @@ export interface KasseneckApi {
47
47
  generateFullReceiptId(receiptId: string): Promise<string>;
48
48
  /** Berichtsmonat des ersten Belegs (nicht fuer den Kassen-Benutzer-Weg). */
49
49
  getFirstReceiptDate(): Promise<ReportMonth>;
50
+ /** Beleg als Link auf die oeffentliche Belegseite per E-Mail schicken. */
51
+ sendReceiptEmail(options: SendReceiptEmailOptions): Promise<SendReceiptEmailResult>;
50
52
  /** Belegliste einer Kasse samt Kennzahlen (nur mit ID-Token, siehe receipts.ts). */
51
53
  listMyReceipts(options: ListMyReceiptsOptions): Promise<ReceiptList>;
52
54
  /** Kassen des angemeldeten Benutzers (nur mit ID-Token, siehe cashregisters.ts). */
@@ -3,7 +3,7 @@ import { hobexPay, hobexRefund } from '../payments/hobex.js';
3
3
  import { createTransport, createBinaryTransport } from './transport.js';
4
4
  import { downloadDailyReport, downloadMonthlyReport } from './reports.js';
5
5
  import { getCashboxStatus, getSignatureStatus } from './status.js';
6
- import { sellReceipt, sellReceiptWithCompany, cancelReceipt, createCancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, } from './receipts.js';
6
+ import { sellReceipt, sellReceiptWithCompany, cancelReceipt, createCancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, sendReceiptEmail, } from './receipts.js';
7
7
  import { listMyCashregisters } from './cashregisters.js';
8
8
  import { renewRegisterSession, endRegisterSession } from '../register/session.js';
9
9
  export function createKasseneckApi(options) {
@@ -22,6 +22,7 @@ export function createKasseneckApi(options) {
22
22
  generateFullReceiptId: (receiptId) => generateFullReceiptId(rufen, receiptId),
23
23
  getFirstReceiptDate: () => getFirstReceiptDate(rufen),
24
24
  listMyReceipts: (o) => listMyReceipts(rufen, o),
25
+ sendReceiptEmail: (o) => sendReceiptEmail(rufen, o),
25
26
  listMyCashregisters: () => listMyCashregisters(rufen),
26
27
  downloadDailyReport: (date) => downloadDailyReport(rufenBinaer, date),
27
28
  downloadMonthlyReport: (reportMonth) => downloadMonthlyReport(rufenBinaer, reportMonth),
@@ -13,7 +13,7 @@
13
13
  * umhuellt, muss ihn weiterhin absetzen koennen.
14
14
  */
15
15
  import type { TransportBodyFields } from './transport.js';
16
- export declare const AUFRUFE: readonly ["activateCashregister", "cancelReceipt", "createCustomerCashregister", "createPartnerCustomer", "checkPartnerCustomerEmail", "createPartnerWebhook", "createPaymentLinkStripe", "createPrintJob", "createReceipt", "deletePartnerWebhook", "downloadDailyReport", "downloadReport", "endRegisterSession", "financeWebService", "generateFullReceiptId", "getCustomerCredentials", "getCustomerSignatureStatus", "getFirstReceiptDate", "getKasseSettings", "getPartnerCustomer", "getPartnerInfo", "getPrintJob", "getReceipt", "hobexPayApi", "hobexRefundApi", "listCustomerCashregisters", "listMyArticleGroups", "listMyArticles", "listMyCashregisters", "listMyPrinters", "listMyReceipts", "listMyTipRecipients", "listPartnerCustomers", "listPartnerWebhookDeliveries", "listPartnerWebhooks", "listRegisterUsersForDevice", "listRegisterSessionsForDevice", "pairRegisterDevice", "registerPinLogin", "registerUserLogin", "renewRegisterSession", "requestCustomerSignature", "sendPartnerCustomerFonLink", "sendPartnerWebhookTest", "setMyKasseSettings", "setMyRegisterDeviceSettings", "stripeCaptureIntent", "unpairRegisterDevice", "rotatePartnerWebhookSecret", "updatePartnerWebhook"];
16
+ export declare const AUFRUFE: readonly ["activateCashregister", "cancelReceipt", "createCustomerCashregister", "createPartnerCustomer", "checkPartnerCustomerEmail", "createPartnerWebhook", "createPaymentLinkStripe", "createPrintJob", "createReceipt", "deletePartnerWebhook", "downloadDailyReport", "downloadReport", "endRegisterSession", "financeWebService", "generateFullReceiptId", "getCustomerCredentials", "getCustomerSignatureStatus", "getFirstReceiptDate", "getKasseSettings", "getPartnerCustomer", "getPartnerInfo", "getPrintJob", "getReceipt", "hobexPayApi", "hobexRefundApi", "listCustomerCashregisters", "listMyArticleGroups", "listMyArticles", "listMyCashregisters", "listMyPrinters", "listMyReceipts", "listMyTipRecipients", "listPartnerCustomers", "listPartnerWebhookDeliveries", "listPartnerWebhooks", "listRegisterUsersForDevice", "listRegisterSessionsForDevice", "pairRegisterDevice", "registerPinLogin", "registerUserLogin", "renewRegisterSession", "requestCustomerSignature", "sendPartnerCustomerFonLink", "sendPartnerWebhookTest", "sendReceiptEmail", "setMyKasseSettings", "setMyRegisterDeviceSettings", "stripeCaptureIntent", "unpairRegisterDevice", "rotatePartnerWebhookSecret", "updatePartnerWebhook"];
17
17
  export type Aufruf = typeof AUFRUFE[number];
18
18
  /** Wie [KasseneckTransport], nur mit bekanntem Aufrufnamen. Nicht exportiert nach aussen. */
19
19
  export type InternerTransport = <T = unknown>(functionName: Aufruf, params?: Record<string, unknown>, extraBodyFields?: TransportBodyFields, secretParams?: readonly string[]) => Promise<T>;
@@ -43,6 +43,7 @@ export const AUFRUFE = [
43
43
  'requestCustomerSignature',
44
44
  'sendPartnerCustomerFonLink',
45
45
  'sendPartnerWebhookTest',
46
+ 'sendReceiptEmail',
46
47
  'setMyKasseSettings',
47
48
  'setMyRegisterDeviceSettings',
48
49
  'stripeCaptureIntent',
@@ -2,7 +2,7 @@ export { type AuthCredentials, type KasseneckAuth, type ApiKeyAuthOptions, type
2
2
  export { DEFAULT_BASE_URL, DEFAULT_TIMEOUT_MS, type HttpResponseLike, type HttpRequestInit, type FetchLike, type TransportOptions, type TransportBodyFields, type KasseneckTransport, type KasseneckBinaryTransport, createTransport, createBinaryTransport, } from './transport.js';
3
3
  export { AUFRUFE, type Aufruf, } from './aufrufe.js';
4
4
  export { KasseneckApiError, KasseneckAuthError, KasseneckHttpError, KasseneckNetworkError, KasseneckValidationError, type ValidationScope, type KasseneckError, type HttpFailureReason, type CauseDigest, isKasseneckApiError, isKasseneckAuthError, isKasseneckHttpError, isKasseneckNetworkError, isKasseneckValidationError, } from './errors.js';
5
- export { type ReceiptCommonOptions, type SellReceiptOptions, type TipOptions, type TipRecipientShare, type CancelReceiptOptions, type CreateCancelReceiptOptions, type ReceiptWithCompany, sellReceipt, sellReceiptWithCompany, cancelReceipt, type CancelReceiptResult, createCancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, type ListMyReceiptsOptions, type ReceiptList, type ReceiptListStats, checkVoucherCombinationError, } from './receipts.js';
5
+ export { type ReceiptCommonOptions, type SellReceiptOptions, type TipOptions, type TipRecipientShare, type CancelReceiptOptions, type CreateCancelReceiptOptions, type ReceiptWithCompany, sellReceipt, sellReceiptWithCompany, cancelReceipt, type CancelReceiptResult, createCancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, type ListMyReceiptsOptions, type ReceiptList, type ReceiptListStats, checkVoucherCombinationError, type SendReceiptEmailOptions, type SendReceiptEmailResult, sendReceiptEmail, } from './receipts.js';
6
6
  export { listMyCashregisters } from './cashregisters.js';
7
7
  export { downloadDailyReport, downloadMonthlyReport } from './reports.js';
8
8
  export { type CashboxStatus, type SignatureStatus, getCashboxStatus, getSignatureStatus, } from './status.js';
@@ -2,7 +2,7 @@ export { apiKeyAuth, registerUserAuth, } from './auth.js';
2
2
  export { DEFAULT_BASE_URL, DEFAULT_TIMEOUT_MS, createTransport, createBinaryTransport, } from './transport.js';
3
3
  export { AUFRUFE, } from './aufrufe.js';
4
4
  export { KasseneckApiError, KasseneckAuthError, KasseneckHttpError, KasseneckNetworkError, KasseneckValidationError, isKasseneckApiError, isKasseneckAuthError, isKasseneckHttpError, isKasseneckNetworkError, isKasseneckValidationError, } from './errors.js';
5
- export { sellReceipt, sellReceiptWithCompany, cancelReceipt, createCancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, checkVoucherCombinationError, } from './receipts.js';
5
+ export { sellReceipt, sellReceiptWithCompany, cancelReceipt, createCancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, checkVoucherCombinationError, sendReceiptEmail, } from './receipts.js';
6
6
  export { listMyCashregisters } from './cashregisters.js';
7
7
  export { downloadDailyReport, downloadMonthlyReport } from './reports.js';
8
8
  export { getCashboxStatus, getSignatureStatus, } from './status.js';
@@ -285,6 +285,63 @@ export declare function generateFullReceiptId(rufen: InternerTransport, receiptI
285
285
  * (siehe Modulkommentar oben). Mit `apiKeyAuth` ist er offen.
286
286
  */
287
287
  export declare function getFirstReceiptDate(rufen: InternerTransport): Promise<ReportMonth>;
288
+ /**
289
+ * Beleg per E-Mail an den Endkunden — die Eingabe von [sendReceiptEmail].
290
+ *
291
+ * `cashregisterId` steht hier bewusst **nicht**: der Geraeteweg bindet die
292
+ * Kasse ueber die Kopfzeile `cashregister-token`, der Kassen-Benutzer-Weg
293
+ * ueber den Parameter, den `registerUserAuth` ohnehin schon setzt. Eine
294
+ * dritte Stelle waere nur eine Gelegenheit, eine andere Kasse zu behaupten,
295
+ * als die, an der man angemeldet ist — und das Backend nimmt den Belegpfad aus
296
+ * der angemeldeten Kasse, nicht aus der Nutzlast.
297
+ */
298
+ export interface SendReceiptEmailOptions {
299
+ /** Verschluesselte Volltext-Belegnummer (siehe [generateFullReceiptId]). */
300
+ fullReceiptId: string;
301
+ /** Empfaengeradresse, wie der Gast sie am Tresen nennt. */
302
+ to: string;
303
+ /**
304
+ * Sprache der Mail. Heute wertet das Backend genau `'de'` aus; der Parameter
305
+ * steht im Vertrag, damit eine zweite Sprache spaeter kein neuer Vertrag ist.
306
+ * Ohne Angabe geht das Feld gar nicht erst hinaus.
307
+ */
308
+ sprache?: string;
309
+ }
310
+ /** Was der Versand bestaetigt (Backend: beleg-mail-endpoints.js). */
311
+ export interface SendReceiptEmailResult {
312
+ /** Adresse in der Form, in der das Backend sie protokolliert hat (getrimmt, klein). */
313
+ to: string;
314
+ /** Zeitpunkt des Versands, ISO mit Wiener Zonenoffset (`2026-09-11T14:05:00+02:00`). */
315
+ at: string;
316
+ /**
317
+ * Versandweg: `eigen` (Postfach des Betriebs), `plattform` oder
318
+ * `plattform-fallback`. `null`, wenn die Antwort ihn nicht nennt — das ist
319
+ * eine Auskunft ueber den Weg, keine ueber den Erfolg, und darf den
320
+ * bestaetigten Versand nicht zu einem Fehler machen.
321
+ */
322
+ via: string | null;
323
+ }
324
+ /**
325
+ * Schickt einen bereits ausgestellten Beleg als **Link auf die oeffentliche
326
+ * Belegseite** an eine Adresse (Endpunkt `sendReceiptEmail`, Backend
327
+ * beleg-mail-endpoints.js). Kein PDF im Anhang: die Belegseite fuehrt dasselbe
328
+ * Zeilenmodell wie Bildschirm und Bon und liefert dort auf Wunsch ein PDF.
329
+ *
330
+ * **Der Beleg bleibt unberuehrt** (BAO §131/RKSV): das Versandprotokoll fuehrt
331
+ * das Backend in einer Unter-Sammlung neben dem Beleg.
332
+ *
333
+ * **Am Code entscheiden, nie am Text:** fachliche Fehler kommen als
334
+ * [KasseneckApiError] mit `code` aus [RECEIPT_EMAIL_ERROR_CODES] heraus —
335
+ * `adresse_ungueltig`, `beleg_nicht_gefunden` (auch fuer einen Beleg einer
336
+ * fremden Kasse: das Backend gibt darueber bewusst keine Auskunft), `zu_oft`
337
+ * (5 Mails je Beleg in 24 Stunden, 30 je Kasse und Stunde) und
338
+ * `versand_fehlgeschlagen`. Dieses Paket reicht sie unveraendert durch und
339
+ * legt keine eigenen Codes an.
340
+ *
341
+ * **Kein Wiederholen ohne Zutun des Bedieners:** ein zweiter Versuch schickt
342
+ * eine zweite Mail und zaehlt auf die Schleuse.
343
+ */
344
+ export declare function sendReceiptEmail(rufen: InternerTransport, options: SendReceiptEmailOptions): Promise<SendReceiptEmailResult>;
288
345
  /**
289
346
  * Prueft die Gutschein-Kombination eines Belegs und liefert den ersten
290
347
  * Regelverstoss als Text (oder `null`) — Zwilling von
@@ -313,6 +313,54 @@ export async function getFirstReceiptDate(rufen) {
313
313
  throw antwortfehler('getFirstReceiptDate', 'Antwort enthaelt keinen lesbaren Zeitstempel');
314
314
  }
315
315
  }
316
+ /**
317
+ * Schickt einen bereits ausgestellten Beleg als **Link auf die oeffentliche
318
+ * Belegseite** an eine Adresse (Endpunkt `sendReceiptEmail`, Backend
319
+ * beleg-mail-endpoints.js). Kein PDF im Anhang: die Belegseite fuehrt dasselbe
320
+ * Zeilenmodell wie Bildschirm und Bon und liefert dort auf Wunsch ein PDF.
321
+ *
322
+ * **Der Beleg bleibt unberuehrt** (BAO §131/RKSV): das Versandprotokoll fuehrt
323
+ * das Backend in einer Unter-Sammlung neben dem Beleg.
324
+ *
325
+ * **Am Code entscheiden, nie am Text:** fachliche Fehler kommen als
326
+ * [KasseneckApiError] mit `code` aus [RECEIPT_EMAIL_ERROR_CODES] heraus —
327
+ * `adresse_ungueltig`, `beleg_nicht_gefunden` (auch fuer einen Beleg einer
328
+ * fremden Kasse: das Backend gibt darueber bewusst keine Auskunft), `zu_oft`
329
+ * (5 Mails je Beleg in 24 Stunden, 30 je Kasse und Stunde) und
330
+ * `versand_fehlgeschlagen`. Dieses Paket reicht sie unveraendert durch und
331
+ * legt keine eigenen Codes an.
332
+ *
333
+ * **Kein Wiederholen ohne Zutun des Bedieners:** ein zweiter Versuch schickt
334
+ * eine zweite Mail und zaehlt auf die Schleuse.
335
+ */
336
+ export async function sendReceiptEmail(rufen, options) {
337
+ // Getrimmt, weil beides von Hand oder per Scanner ins Feld kommt und ein
338
+ // angehaengtes Leerzeichen sonst als ungueltige Adresse zurueckkaeme --
339
+ // nach einem Aufruf, der schon eine Zeile im Protokoll gekostet hat.
340
+ const fullReceiptId = typeof options.fullReceiptId === 'string' ? options.fullReceiptId.trim() : '';
341
+ const to = typeof options.to === 'string' ? options.to.trim() : '';
342
+ if (fullReceiptId === '') {
343
+ throw new KasseneckValidationError('sendReceiptEmail', 'fullReceiptId fehlt', 'request');
344
+ }
345
+ if (to === '') {
346
+ throw new KasseneckValidationError('sendReceiptEmail', 'to fehlt (Empfaengeradresse)', 'request');
347
+ }
348
+ // Die Adresse selbst wird hier NICHT geprueft: das Backend prueft sie mit
349
+ // kreiseck_validator und antwortet mit `adresse_ungueltig`. Eine zweite,
350
+ // eigene Regel im Paket koennte strenger sein als die des Backends und eine
351
+ // gueltige Adresse abweisen, ohne dass jemand die Abweichung bemerkt.
352
+ const params = { fullReceiptId, to };
353
+ if (options.sprache !== undefined && options.sprache !== '')
354
+ params.sprache = options.sprache;
355
+ const daten = await rufen('sendReceiptEmail', params);
356
+ if (typeof daten?.to !== 'string' || daten.to === '') {
357
+ throw antwortfehler('sendReceiptEmail', 'Antwort nennt keine Empfaengeradresse (data.to fehlt)');
358
+ }
359
+ if (typeof daten.at !== 'string' || daten.at === '') {
360
+ throw antwortfehler('sendReceiptEmail', 'Antwort nennt keinen Zeitpunkt (data.at fehlt)');
361
+ }
362
+ return { to: daten.to, at: daten.at, via: typeof daten.via === 'string' && daten.via !== '' ? daten.via : null };
363
+ }
316
364
  /**
317
365
  * Prueft die Gutschein-Kombination eines Belegs und liefert den ersten
318
366
  * Regelverstoss als Text (oder `null`) — Zwilling von
@@ -1,5 +1,5 @@
1
1
  export { ReceiptType, type ReceiptTypeKey, VatRate, type VatRateKey, KeckPaymentMethod, type KeckPaymentMethodKey, CreditCardProvider, type CreditCardProviderKey, VoucherType, type VoucherTypeKey, VoucherAction, type VoucherActionKey, StripeLinkMode, type StripeLinkModeKey, } from './enums/index.js';
2
- export { type ReceiptItem, type ReceiptItemPayload, type ReceiptItemPayloadRead, toReceiptItemPayload, fromReceiptItemPayload, receiptItemTotalCents, receiptItemIsValid, negateReceiptItem, type TipRecipient, isTipItem, type Voucher, type VoucherPayload, toVoucherPayload, fromVoucherPayload, voucherIsValid, type Receipt, type ReceiptPayload, type ReceiptPayloadRead, toReceiptPayload, fromReceiptPayload, receiptSubSumCents, receiptSumCents, type CancellationOf, type CancellationItem, type Cancellation, type CancellationReason, type CancellationErrorCode, CANCELLATION_REASONS, CANCELLATION_ERROR_CODES, CANCELLATION_RESERVATION_MS, isCancellationReason, isCancellationErrorCode, remainingQuantities, type ReceiptCompany, type ReceiptCompanyPayload, fromReceiptCompanyPayload, receiptCompanyTaxInfo, type Cashregister, type CashregisterOnboarding, type CashregisterPayload, type CashregisterOnboardingPayload, fromCashregisterPayload, type ReceiptSummary, type ReceiptSummaryPayload, fromReceiptSummaryPayload, type ZeroKind, ZERO_KINDS, istZeroKind, type ReportMonth, reportMonthFromDate, previousReportMonth, nextReportMonth, reportMonthKey, reportMonthReadable, type StripeUrlSession, type StripeUrlSessionPayload, toStripeUrlSessionPayload, fromStripeUrlSessionPayload, type HobexReceipt, type HobexReceiptPayload, toHobexReceiptPayload, fromHobexReceiptPayload, hobexReceiptToCardPaymentData, hobexReceiptNeedsSignature, } from './models/index.js';
3
- export { type AuthCredentials, type KasseneckAuth, type ApiKeyAuthOptions, type RegisterUserAuthOptions, apiKeyAuth, registerUserAuth, DEFAULT_BASE_URL, DEFAULT_TIMEOUT_MS, type HttpResponseLike, type HttpRequestInit, type FetchLike, type TransportOptions, type TransportBodyFields, type KasseneckTransport, type KasseneckBinaryTransport, AUFRUFE, type Aufruf, createTransport, createBinaryTransport, KasseneckApiError, KasseneckAuthError, KasseneckHttpError, KasseneckNetworkError, KasseneckValidationError, type ValidationScope, type KasseneckError, type HttpFailureReason, type CauseDigest, isKasseneckApiError, isKasseneckAuthError, isKasseneckHttpError, isKasseneckNetworkError, isKasseneckValidationError, type ReceiptCommonOptions, type SellReceiptOptions, type TipOptions, type TipRecipientShare, type CancelReceiptOptions, type CancelReceiptResult, type CreateCancelReceiptOptions, type ReceiptWithCompany, sellReceipt, sellReceiptWithCompany, cancelReceipt, createCancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, type ListMyReceiptsOptions, type ReceiptList, type ReceiptListStats, listMyCashregisters, checkVoucherCombinationError, downloadDailyReport, downloadMonthlyReport, type CashboxStatus, type SignatureStatus, getCashboxStatus, getSignatureStatus, type KasseneckApi, createKasseneckApi, } from './client/index.js';
2
+ export { type ReceiptItem, type ReceiptItemPayload, type ReceiptItemPayloadRead, toReceiptItemPayload, fromReceiptItemPayload, receiptItemTotalCents, receiptItemIsValid, negateReceiptItem, type TipRecipient, isTipItem, type Voucher, type VoucherPayload, toVoucherPayload, fromVoucherPayload, voucherIsValid, type Receipt, type ReceiptPayload, type ReceiptPayloadRead, toReceiptPayload, fromReceiptPayload, receiptSubSumCents, receiptSumCents, type CancellationOf, type CancellationItem, type Cancellation, type CancellationReason, type CancellationErrorCode, CANCELLATION_REASONS, CANCELLATION_ERROR_CODES, CANCELLATION_RESERVATION_MS, isCancellationReason, isCancellationErrorCode, type ReceiptEmailErrorCode, RECEIPT_EMAIL_ERROR_CODES, isReceiptEmailErrorCode, remainingQuantities, type ReceiptCompany, type ReceiptCompanyPayload, fromReceiptCompanyPayload, receiptCompanyTaxInfo, type Cashregister, type CashregisterOnboarding, type CashregisterPayload, type CashregisterOnboardingPayload, fromCashregisterPayload, type ReceiptSummary, type ReceiptSummaryPayload, fromReceiptSummaryPayload, type ZeroKind, ZERO_KINDS, istZeroKind, type ReportMonth, reportMonthFromDate, previousReportMonth, nextReportMonth, reportMonthKey, reportMonthReadable, type StripeUrlSession, type StripeUrlSessionPayload, toStripeUrlSessionPayload, fromStripeUrlSessionPayload, type HobexReceipt, type HobexReceiptPayload, toHobexReceiptPayload, fromHobexReceiptPayload, hobexReceiptToCardPaymentData, hobexReceiptNeedsSignature, } from './models/index.js';
3
+ export { type AuthCredentials, type KasseneckAuth, type ApiKeyAuthOptions, type RegisterUserAuthOptions, apiKeyAuth, registerUserAuth, DEFAULT_BASE_URL, DEFAULT_TIMEOUT_MS, type HttpResponseLike, type HttpRequestInit, type FetchLike, type TransportOptions, type TransportBodyFields, type KasseneckTransport, type KasseneckBinaryTransport, AUFRUFE, type Aufruf, createTransport, createBinaryTransport, KasseneckApiError, KasseneckAuthError, KasseneckHttpError, KasseneckNetworkError, KasseneckValidationError, type ValidationScope, type KasseneckError, type HttpFailureReason, type CauseDigest, isKasseneckApiError, isKasseneckAuthError, isKasseneckHttpError, isKasseneckNetworkError, isKasseneckValidationError, type ReceiptCommonOptions, type SellReceiptOptions, type TipOptions, type TipRecipientShare, type CancelReceiptOptions, type CancelReceiptResult, type CreateCancelReceiptOptions, type ReceiptWithCompany, sellReceipt, sellReceiptWithCompany, cancelReceipt, createCancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, type ListMyReceiptsOptions, type ReceiptList, type ReceiptListStats, listMyCashregisters, checkVoucherCombinationError, type SendReceiptEmailOptions, type SendReceiptEmailResult, sendReceiptEmail, downloadDailyReport, downloadMonthlyReport, type CashboxStatus, type SignatureStatus, getCashboxStatus, getSignatureStatus, type KasseneckApi, createKasseneckApi, } from './client/index.js';
4
4
  export { parseServerTimeStamp, toViennaWallClock, type ViennaWallClock } from './vienna-time.js';
5
5
  export { type KasseSettingsBetrieb, type KasseSettingsGeraet, type KasseSettings, type ArticleGroup, type KasseArtikel, KASSE_BETRIEB_STANDARD, KASSE_GERAET_STANDARD, mergeKasseSettings, fromArticleGroupPayload, fromKasseArtikelPayload, listMyArticleGroups, listMyArticles, getKasseSettings, setMyKasseSettings, setMyRegisterDeviceSettings, verteileRabatt, cancelScopeOf, receiptsScopeOf, } from './kasse/index.js';
package/dist/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { ReceiptType, VatRate, KeckPaymentMethod, CreditCardProvider, VoucherType, VoucherAction, StripeLinkMode, } from './enums/index.js';
2
- export { toReceiptItemPayload, fromReceiptItemPayload, receiptItemTotalCents, receiptItemIsValid, negateReceiptItem, isTipItem, toVoucherPayload, fromVoucherPayload, voucherIsValid, toReceiptPayload, fromReceiptPayload, receiptSubSumCents, receiptSumCents, CANCELLATION_REASONS, CANCELLATION_ERROR_CODES, CANCELLATION_RESERVATION_MS, isCancellationReason, isCancellationErrorCode, remainingQuantities, fromReceiptCompanyPayload, receiptCompanyTaxInfo, fromCashregisterPayload, fromReceiptSummaryPayload, ZERO_KINDS, istZeroKind, reportMonthFromDate, previousReportMonth, nextReportMonth, reportMonthKey, reportMonthReadable, toStripeUrlSessionPayload, fromStripeUrlSessionPayload, toHobexReceiptPayload, fromHobexReceiptPayload, hobexReceiptToCardPaymentData, hobexReceiptNeedsSignature, } from './models/index.js';
3
- export { apiKeyAuth, registerUserAuth, DEFAULT_BASE_URL, DEFAULT_TIMEOUT_MS, AUFRUFE, createTransport, createBinaryTransport, KasseneckApiError, KasseneckAuthError, KasseneckHttpError, KasseneckNetworkError, KasseneckValidationError, isKasseneckApiError, isKasseneckAuthError, isKasseneckHttpError, isKasseneckNetworkError, isKasseneckValidationError, sellReceipt, sellReceiptWithCompany, cancelReceipt, createCancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, listMyCashregisters, checkVoucherCombinationError, downloadDailyReport, downloadMonthlyReport, getCashboxStatus, getSignatureStatus, createKasseneckApi, } from './client/index.js';
2
+ export { toReceiptItemPayload, fromReceiptItemPayload, receiptItemTotalCents, receiptItemIsValid, negateReceiptItem, isTipItem, toVoucherPayload, fromVoucherPayload, voucherIsValid, toReceiptPayload, fromReceiptPayload, receiptSubSumCents, receiptSumCents, CANCELLATION_REASONS, CANCELLATION_ERROR_CODES, CANCELLATION_RESERVATION_MS, isCancellationReason, isCancellationErrorCode, RECEIPT_EMAIL_ERROR_CODES, isReceiptEmailErrorCode, remainingQuantities, fromReceiptCompanyPayload, receiptCompanyTaxInfo, fromCashregisterPayload, fromReceiptSummaryPayload, ZERO_KINDS, istZeroKind, reportMonthFromDate, previousReportMonth, nextReportMonth, reportMonthKey, reportMonthReadable, toStripeUrlSessionPayload, fromStripeUrlSessionPayload, toHobexReceiptPayload, fromHobexReceiptPayload, hobexReceiptToCardPaymentData, hobexReceiptNeedsSignature, } from './models/index.js';
3
+ export { apiKeyAuth, registerUserAuth, DEFAULT_BASE_URL, DEFAULT_TIMEOUT_MS, AUFRUFE, createTransport, createBinaryTransport, KasseneckApiError, KasseneckAuthError, KasseneckHttpError, KasseneckNetworkError, KasseneckValidationError, isKasseneckApiError, isKasseneckAuthError, isKasseneckHttpError, isKasseneckNetworkError, isKasseneckValidationError, sellReceipt, sellReceiptWithCompany, cancelReceipt, createCancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, listMyCashregisters, checkVoucherCombinationError, sendReceiptEmail, downloadDailyReport, downloadMonthlyReport, getCashboxStatus, getSignatureStatus, createKasseneckApi, } from './client/index.js';
4
4
  export { parseServerTimeStamp, toViennaWallClock } from './vienna-time.js';
5
5
  export { KASSE_BETRIEB_STANDARD, KASSE_GERAET_STANDARD, mergeKasseSettings, fromArticleGroupPayload, fromKasseArtikelPayload, listMyArticleGroups, listMyArticles, getKasseSettings, setMyKasseSettings, setMyRegisterDeviceSettings, verteileRabatt, cancelScopeOf, receiptsScopeOf, } from './kasse/index.js';
@@ -2,6 +2,7 @@ export { type ReceiptItem, type ReceiptItemPayload, type ReceiptItemPayloadRead,
2
2
  export { type Voucher, type VoucherPayload, toVoucherPayload, fromVoucherPayload, voucherIsValid } from './voucher.js';
3
3
  export { type Receipt, type ReceiptPayload, type ReceiptPayloadRead, toReceiptPayload, fromReceiptPayload, receiptSubSumCents, receiptSumCents, } from './receipt.js';
4
4
  export { type CancellationOf, type CancellationItem, type Cancellation, type CancellationReason, type CancellationErrorCode, CANCELLATION_REASONS, CANCELLATION_ERROR_CODES, CANCELLATION_RESERVATION_MS, isCancellationReason, isCancellationErrorCode, remainingQuantities, } from './cancellation.js';
5
+ export { type ReceiptEmailErrorCode, RECEIPT_EMAIL_ERROR_CODES, isReceiptEmailErrorCode, } from './receipt-email.js';
5
6
  export { type ReceiptCompany, type ReceiptCompanyPayload, fromReceiptCompanyPayload, receiptCompanyTaxInfo, } from './receipt-company.js';
6
7
  export { type Cashregister, type CashregisterOnboarding, type CashregisterPayload, type CashregisterOnboardingPayload, fromCashregisterPayload, } from './cashregister.js';
7
8
  export { type ReceiptSummary, type ReceiptSummaryPayload, fromReceiptSummaryPayload, type ZeroKind, ZERO_KINDS, istZeroKind } from './receipt-summary.js';
@@ -2,6 +2,7 @@ export { toReceiptItemPayload, fromReceiptItemPayload, receiptItemTotalCents, re
2
2
  export { toVoucherPayload, fromVoucherPayload, voucherIsValid } from './voucher.js';
3
3
  export { toReceiptPayload, fromReceiptPayload, receiptSubSumCents, receiptSumCents, } from './receipt.js';
4
4
  export { CANCELLATION_REASONS, CANCELLATION_ERROR_CODES, CANCELLATION_RESERVATION_MS, isCancellationReason, isCancellationErrorCode, remainingQuantities, } from './cancellation.js';
5
+ export { RECEIPT_EMAIL_ERROR_CODES, isReceiptEmailErrorCode, } from './receipt-email.js';
5
6
  export { fromReceiptCompanyPayload, receiptCompanyTaxInfo, } from './receipt-company.js';
6
7
  export { fromCashregisterPayload, } from './cashregister.js';
7
8
  export { fromReceiptSummaryPayload, ZERO_KINDS, istZeroKind } from './receipt-summary.js';
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Beleg per E-Mail — Zwilling von `functions/beleg-mail-core.js`.
3
+ *
4
+ * Hier steht nur der Fehlercode-Katalog: der Aufruf selbst ist
5
+ * [sendReceiptEmail] (client/receipts.ts), und was verschickt wird, ist ein
6
+ * **Link auf die oeffentliche Belegseite** — der Beleg selbst bleibt
7
+ * unberuehrt (BAO §131/RKSV), das Versandprotokoll fuehrt das Backend in einer
8
+ * Unter-Sammlung neben ihm.
9
+ */
10
+ /**
11
+ * Stabile Fehlercodes von `sendReceiptEmail` — Zwilling von
12
+ * `beleg-mail-core.js` FEHLERCODES. Das Backend legt sie bei jedem fachlichen
13
+ * Fehler als `code` neben die Meldung; das Paket reicht sie als
14
+ * [KasseneckApiError.code] durch. **Entscheide am Code, nie am Text** — die
15
+ * deutsche Meldung darf sich aendern, der Code nicht.
16
+ *
17
+ * Nur Auth-/Parameterfehler (Sitzung abgelaufen, Pflichtfeld fehlt) kommen
18
+ * ohne Code; dort bleibt `code` undefined.
19
+ */
20
+ export declare const RECEIPT_EMAIL_ERROR_CODES: readonly ["adresse_ungueltig", "beleg_nicht_gefunden", "zu_oft", "versand_fehlgeschlagen"];
21
+ export type ReceiptEmailErrorCode = (typeof RECEIPT_EMAIL_ERROR_CODES)[number];
22
+ export declare function isReceiptEmailErrorCode(value: unknown): value is ReceiptEmailErrorCode;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Beleg per E-Mail — Zwilling von `functions/beleg-mail-core.js`.
3
+ *
4
+ * Hier steht nur der Fehlercode-Katalog: der Aufruf selbst ist
5
+ * [sendReceiptEmail] (client/receipts.ts), und was verschickt wird, ist ein
6
+ * **Link auf die oeffentliche Belegseite** — der Beleg selbst bleibt
7
+ * unberuehrt (BAO §131/RKSV), das Versandprotokoll fuehrt das Backend in einer
8
+ * Unter-Sammlung neben ihm.
9
+ */
10
+ /**
11
+ * Stabile Fehlercodes von `sendReceiptEmail` — Zwilling von
12
+ * `beleg-mail-core.js` FEHLERCODES. Das Backend legt sie bei jedem fachlichen
13
+ * Fehler als `code` neben die Meldung; das Paket reicht sie als
14
+ * [KasseneckApiError.code] durch. **Entscheide am Code, nie am Text** — die
15
+ * deutsche Meldung darf sich aendern, der Code nicht.
16
+ *
17
+ * Nur Auth-/Parameterfehler (Sitzung abgelaufen, Pflichtfeld fehlt) kommen
18
+ * ohne Code; dort bleibt `code` undefined.
19
+ */
20
+ export const RECEIPT_EMAIL_ERROR_CODES = [
21
+ 'adresse_ungueltig', // Empfaengeradresse unbrauchbar (Pruefung im Backend)
22
+ 'beleg_nicht_gefunden', // Beleg gibt es nicht ODER er gehoert einer anderen Kasse
23
+ 'zu_oft', // Schleuse: 5 Mails je Beleg (24 h), 30 je Kasse und Stunde
24
+ 'versand_fehlgeschlagen', // die Mail selbst ging nicht hinaus
25
+ ];
26
+ export function isReceiptEmailErrorCode(value) {
27
+ return typeof value === 'string' && RECEIPT_EMAIL_ERROR_CODES.includes(value);
28
+ }
@@ -101,6 +101,17 @@ export declare class HpsConnectTerminalError extends HpsConnectException {
101
101
  * niemals umgekehrt.
102
102
  */
103
103
  get isTerminalBusy(): boolean;
104
+ /**
105
+ * `true`, wenn dies ein HTTP `404` beim Terminal-Kontakt ist -- Lesart
106
+ * ungemessen, siehe [NOT_FOUND_HTTP_STATUS] und den Dart-Zwilling
107
+ * (`HpsHttpException.isNotFound`): es kann "diesen Vorgang kenne ich nicht"
108
+ * heissen oder "diesen Endpunkt gibt es hier nicht". `payments.ts` benennt
109
+ * beim Abbruch beide Lesarten, statt eine zu behaupten.
110
+ *
111
+ * Liest, wie [isTerminalBusy], bevorzugt [terminalHttpStatus] und faellt nur
112
+ * ohne dieses Feld auf den Meldungstext zurueck.
113
+ */
114
+ get isNotFound(): boolean;
104
115
  }
105
116
  /**
106
117
  * Connect selbst war nicht erreichbar, oder die Antwort hatte nicht die
@@ -1,4 +1,4 @@
1
- import { TERMINAL_BUSY_HTTP_STATUS } from './transaction-response.js';
1
+ import { NOT_FOUND_HTTP_STATUS, TERMINAL_BUSY_HTTP_STATUS } from './transaction-response.js';
2
2
  /**
3
3
  * Fehlerarten auf dem Weg ueber **Kasseneck Connect** zum hobex-HPS-Terminal.
4
4
  *
@@ -124,6 +124,22 @@ export class HpsConnectTerminalError extends HpsConnectException {
124
124
  }
125
125
  return this.connectCode === 'terminal_error' && new RegExp(`\\(HTTP ${TERMINAL_BUSY_HTTP_STATUS}\\)`).test(this.message);
126
126
  }
127
+ /**
128
+ * `true`, wenn dies ein HTTP `404` beim Terminal-Kontakt ist -- Lesart
129
+ * ungemessen, siehe [NOT_FOUND_HTTP_STATUS] und den Dart-Zwilling
130
+ * (`HpsHttpException.isNotFound`): es kann "diesen Vorgang kenne ich nicht"
131
+ * heissen oder "diesen Endpunkt gibt es hier nicht". `payments.ts` benennt
132
+ * beim Abbruch beide Lesarten, statt eine zu behaupten.
133
+ *
134
+ * Liest, wie [isTerminalBusy], bevorzugt [terminalHttpStatus] und faellt nur
135
+ * ohne dieses Feld auf den Meldungstext zurueck.
136
+ */
137
+ get isNotFound() {
138
+ if (this.terminalHttpStatus !== undefined) {
139
+ return this.terminalHttpStatus === NOT_FOUND_HTTP_STATUS;
140
+ }
141
+ return this.connectCode === 'terminal_error' && new RegExp(`\\(HTTP ${NOT_FOUND_HTTP_STATUS}\\)`).test(this.message);
142
+ }
127
143
  }
128
144
  /**
129
145
  * Connect selbst war nicht erreichbar, oder die Antwort hatte nicht die
@@ -23,5 +23,5 @@ export { type HpsPaymentEvent, type HpsPaymentEventKind, type HpsPaymentObserver
23
23
  export { type CardPaymentOutcome, type HpsPaymentResult, isHostUncertainResult, mayRetrySafely, } from './outcome.js';
24
24
  export { type HpsCancelOptions, type HpsPaymentOptions, type HpsPayments, type HpsPaymentsOptions, type HpsRefundOptions, createHpsPayments, } from './payments.js';
25
25
  export { MAX_TRANSACTION_ID_LENGTH, createHpsTransactionIdGenerator, isValidHpsTransactionId, newHpsTransactionId, type HpsTransactionIdGeneratorOptions, } from './transaction-id.js';
26
- export { ABORTED_CODE, APP_SELECT_FAILED_CODE, APPROVED_CODE, BAD_REQUEST_CODE, CARD_DECLINED_CODE, CARD_INFO_NOT_ENTERED_CODE, CARD_NOT_PRESENT_CODE, CARD_NOT_SUPPORTED_CODE, CARD_READ_FAILED_CODE, CHIP_DATA_MISMATCH_CODE, COMPLETION_FAILED_CODE, DIAGNOSIS_FAILED_CODE, HOST_COMMUNICATION_FAILED_CODE, HOST_STEP_FAILED_CODE, HOST_TIMEOUT_REVERSED_CODE, HPS_CODES, HPS_MEASURED_CODES, HPS_REASON_HINTS, INTERNAL_ERROR_CODE, INVALID_MESSAGE_TYPE_CODE, INVALID_TID_DOCUMENTED_CODE, INVALID_TX_TYPE_CODE, MAX_RETRIES_EXCEEDED_CODE, NOT_FOUND_CODE, PASSWORD_NOT_ENTERED_CODE, REFUND_DISABLED_CODE, REFUND_PASSWORD_INVALID_CODE, SCEP_ENROLLMENT_FAILED_CODE, TERMINAL_BLOCKED_CODE, TERMINAL_BUSY_CODE, TIP_SELECTION_FAILED_CODE, UNSUPPORTED_USER_DATA_CODE, hpsCodeInfo, hpsCodeReason, isHostUncertain, isHostUncertainReason, INVALID_TRANSACTION_CODE, NOT_ABORTABLE_CODE, INVALID_AMOUNT_CODE, AMOUNT_OUT_OF_RANGE_CODE, INVALID_TID_CODE, WRONG_PIN_CODE, NO_STATEMENT_CODE, TECHNICAL_ERROR_CODE, TERMINAL_BUSY_HTTP_STATUS, TRANSACTION_CANCELED_CODE, isApproved, isCanceled, isConclusive, isConclusiveAsStatus, isInProgress, isNoStatement, isNotAbortable, isTechnicalError, isUnknownCode, parseHpsTransactionResponse, type HpsCode, type HpsCodeEffect, type HpsCodeReason, type HpsCodeSource, type HpsMeasuredCode, type HpsTransactionResponse, } from './transaction-response.js';
26
+ export { ABORTED_CODE, APP_SELECT_FAILED_CODE, APPROVED_CODE, BAD_REQUEST_CODE, CARD_DECLINED_CODE, CARD_INFO_NOT_ENTERED_CODE, CARD_NOT_PRESENT_CODE, CARD_NOT_SUPPORTED_CODE, CARD_READ_FAILED_CODE, CHIP_DATA_MISMATCH_CODE, COMPLETION_FAILED_CODE, DIAGNOSIS_FAILED_CODE, HOST_COMMUNICATION_FAILED_CODE, HOST_STEP_FAILED_CODE, HOST_TIMEOUT_REVERSED_CODE, HPS_CODES, HPS_MEASURED_CODES, HPS_REASON_HINTS, INTERNAL_ERROR_CODE, INVALID_MESSAGE_TYPE_CODE, INVALID_TID_DOCUMENTED_CODE, INVALID_TX_TYPE_CODE, MAX_RETRIES_EXCEEDED_CODE, NOT_FOUND_CODE, PASSWORD_NOT_ENTERED_CODE, REFUND_DISABLED_CODE, REFUND_PASSWORD_INVALID_CODE, SCEP_ENROLLMENT_FAILED_CODE, TERMINAL_BLOCKED_CODE, TERMINAL_BUSY_CODE, TIP_SELECTION_FAILED_CODE, UNSUPPORTED_USER_DATA_CODE, hpsCodeInfo, hpsCodeReason, isHostUncertain, isHostUncertainReason, INVALID_TRANSACTION_CODE, NOT_ABORTABLE_CODE, INVALID_AMOUNT_CODE, AMOUNT_OUT_OF_RANGE_CODE, INVALID_TID_CODE, WRONG_PIN_CODE, NO_STATEMENT_CODE, TECHNICAL_ERROR_CODE, NOT_FOUND_HTTP_STATUS, TERMINAL_BUSY_HTTP_STATUS, TRANSACTION_CANCELED_CODE, isApproved, isCanceled, isConclusive, isConclusiveAsStatus, isInProgress, isNoStatement, isNotAbortable, isTechnicalError, isUnknownCode, parseHpsTransactionResponse, type HpsCode, type HpsCodeEffect, type HpsCodeReason, type HpsCodeSource, type HpsMeasuredCode, type HpsTransactionResponse, } from './transaction-response.js';
27
27
  export { hobexReceiptFromHps } from './receipt.js';
@@ -22,5 +22,5 @@ export { HpsClarifyTimeoutError, HpsConnectException, HpsConnectTerminalError, H
22
22
  export { isHostUncertainResult, mayRetrySafely, } from './outcome.js';
23
23
  export { createHpsPayments, } from './payments.js';
24
24
  export { MAX_TRANSACTION_ID_LENGTH, createHpsTransactionIdGenerator, isValidHpsTransactionId, newHpsTransactionId, } from './transaction-id.js';
25
- export { ABORTED_CODE, APP_SELECT_FAILED_CODE, APPROVED_CODE, BAD_REQUEST_CODE, CARD_DECLINED_CODE, CARD_INFO_NOT_ENTERED_CODE, CARD_NOT_PRESENT_CODE, CARD_NOT_SUPPORTED_CODE, CARD_READ_FAILED_CODE, CHIP_DATA_MISMATCH_CODE, COMPLETION_FAILED_CODE, DIAGNOSIS_FAILED_CODE, HOST_COMMUNICATION_FAILED_CODE, HOST_STEP_FAILED_CODE, HOST_TIMEOUT_REVERSED_CODE, HPS_CODES, HPS_MEASURED_CODES, HPS_REASON_HINTS, INTERNAL_ERROR_CODE, INVALID_MESSAGE_TYPE_CODE, INVALID_TID_DOCUMENTED_CODE, INVALID_TX_TYPE_CODE, MAX_RETRIES_EXCEEDED_CODE, NOT_FOUND_CODE, PASSWORD_NOT_ENTERED_CODE, REFUND_DISABLED_CODE, REFUND_PASSWORD_INVALID_CODE, SCEP_ENROLLMENT_FAILED_CODE, TERMINAL_BLOCKED_CODE, TERMINAL_BUSY_CODE, TIP_SELECTION_FAILED_CODE, UNSUPPORTED_USER_DATA_CODE, hpsCodeInfo, hpsCodeReason, isHostUncertain, isHostUncertainReason, INVALID_TRANSACTION_CODE, NOT_ABORTABLE_CODE, INVALID_AMOUNT_CODE, AMOUNT_OUT_OF_RANGE_CODE, INVALID_TID_CODE, WRONG_PIN_CODE, NO_STATEMENT_CODE, TECHNICAL_ERROR_CODE, TERMINAL_BUSY_HTTP_STATUS, TRANSACTION_CANCELED_CODE, isApproved, isCanceled, isConclusive, isConclusiveAsStatus, isInProgress, isNoStatement, isNotAbortable, isTechnicalError, isUnknownCode, parseHpsTransactionResponse, } from './transaction-response.js';
25
+ export { ABORTED_CODE, APP_SELECT_FAILED_CODE, APPROVED_CODE, BAD_REQUEST_CODE, CARD_DECLINED_CODE, CARD_INFO_NOT_ENTERED_CODE, CARD_NOT_PRESENT_CODE, CARD_NOT_SUPPORTED_CODE, CARD_READ_FAILED_CODE, CHIP_DATA_MISMATCH_CODE, COMPLETION_FAILED_CODE, DIAGNOSIS_FAILED_CODE, HOST_COMMUNICATION_FAILED_CODE, HOST_STEP_FAILED_CODE, HOST_TIMEOUT_REVERSED_CODE, HPS_CODES, HPS_MEASURED_CODES, HPS_REASON_HINTS, INTERNAL_ERROR_CODE, INVALID_MESSAGE_TYPE_CODE, INVALID_TID_DOCUMENTED_CODE, INVALID_TX_TYPE_CODE, MAX_RETRIES_EXCEEDED_CODE, NOT_FOUND_CODE, PASSWORD_NOT_ENTERED_CODE, REFUND_DISABLED_CODE, REFUND_PASSWORD_INVALID_CODE, SCEP_ENROLLMENT_FAILED_CODE, TERMINAL_BLOCKED_CODE, TERMINAL_BUSY_CODE, TIP_SELECTION_FAILED_CODE, UNSUPPORTED_USER_DATA_CODE, hpsCodeInfo, hpsCodeReason, isHostUncertain, isHostUncertainReason, INVALID_TRANSACTION_CODE, NOT_ABORTABLE_CODE, INVALID_AMOUNT_CODE, AMOUNT_OUT_OF_RANGE_CODE, INVALID_TID_CODE, WRONG_PIN_CODE, NO_STATEMENT_CODE, TECHNICAL_ERROR_CODE, NOT_FOUND_HTTP_STATUS, TERMINAL_BUSY_HTTP_STATUS, TRANSACTION_CANCELED_CODE, isApproved, isCanceled, isConclusive, isConclusiveAsStatus, isInProgress, isNoStatement, isNotAbortable, isTechnicalError, isUnknownCode, parseHpsTransactionResponse, } from './transaction-response.js';
26
26
  export { hobexReceiptFromHps } from './receipt.js';
@@ -318,7 +318,12 @@ export function createHpsPayments(client, target, options = {}) {
318
318
  res = await withinBudget(elapsedMs, () => client.abort({ ...target, transactionId: id }), abortBudgetMs);
319
319
  }
320
320
  catch (e) {
321
- steps.push(`Abbruch nicht bestaetigt (${describe(e)}) -- ob er wirkte, ist offen, Ausgang wird abgefragt`);
321
+ // Siehe Dart-Zwilling: ein 404 hat zwei Lesarten, und wir kennen die
322
+ // richtige nicht. Der Nachweistext benennt beide und behauptet keine.
323
+ steps.push(e instanceof HpsConnectTerminalError && e.isNotFound
324
+ ? 'Abbruch nicht bestaetigt (HTTP 404) -- das Terminal kennt entweder diesen Vorgang nicht '
325
+ + 'oder den Abbruch-Endpunkt nicht; beides sagt nichts ueber die Zahlung, Ausgang wird abgefragt'
326
+ : `Abbruch nicht bestaetigt (${describe(e)}) -- ob er wirkte, ist offen, Ausgang wird abgefragt`);
322
327
  noteUnexpected(e, id);
323
328
  return null;
324
329
  }
@@ -216,6 +216,18 @@ export declare const INTERNAL_ERROR_CODE = "100999";
216
216
  * getrennte Auswertung.
217
217
  */
218
218
  export declare const TERMINAL_BUSY_HTTP_STATUS = 409;
219
+ /**
220
+ * HTTP `404` beim Terminal-Kontakt. **Lesart ungemessen:** am Produktivgeraet
221
+ * (TID 3556988, Firmware 2.3.9) antwortet `POST /api/transaction/abort/...`
222
+ * damit, am Testgeraet (3600335) nie. Es kann "diesen Vorgang kenne ich nicht"
223
+ * heissen oder "diesen Endpunkt gibt es hier nicht" -- beides sagt nichts ueber
224
+ * die Zahlung. Bei hobex angefragt; bis dahin benennt `payments.ts` beim
225
+ * Abbruch beide Lesarten, statt eine zu behaupten.
226
+ *
227
+ * Wie [TERMINAL_BUSY_HTTP_STATUS] bewusst KEIN Eintrag in [HPS_CODES]: ein
228
+ * HTTP-Status ist kein `responseCode`.
229
+ */
230
+ export declare const NOT_FOUND_HTTP_STATUS = 404;
219
231
  /** Der Eintrag zu [code] in [HPS_CODES], oder `undefined`, wenn seine Bedeutung nicht feststeht. */
220
232
  export declare function hpsCodeInfo(code: string | undefined): HpsCode | undefined;
221
233
  /**
@@ -315,6 +315,18 @@ export const INTERNAL_ERROR_CODE = '100999';
315
315
  * getrennte Auswertung.
316
316
  */
317
317
  export const TERMINAL_BUSY_HTTP_STATUS = 409;
318
+ /**
319
+ * HTTP `404` beim Terminal-Kontakt. **Lesart ungemessen:** am Produktivgeraet
320
+ * (TID 3556988, Firmware 2.3.9) antwortet `POST /api/transaction/abort/...`
321
+ * damit, am Testgeraet (3600335) nie. Es kann "diesen Vorgang kenne ich nicht"
322
+ * heissen oder "diesen Endpunkt gibt es hier nicht" -- beides sagt nichts ueber
323
+ * die Zahlung. Bei hobex angefragt; bis dahin benennt `payments.ts` beim
324
+ * Abbruch beide Lesarten, statt eine zu behaupten.
325
+ *
326
+ * Wie [TERMINAL_BUSY_HTTP_STATUS] bewusst KEIN Eintrag in [HPS_CODES]: ein
327
+ * HTTP-Status ist kein `responseCode`.
328
+ */
329
+ export const NOT_FOUND_HTTP_STATUS = 404;
318
330
  const CODE_BY_ID = new Map(HPS_CODES.map((c) => [c.code, c]));
319
331
  /** Der Eintrag zu [code] in [HPS_CODES], oder `undefined`, wenn seine Bedeutung nicht feststeht. */
320
332
  export function hpsCodeInfo(code) {
@@ -42,4 +42,4 @@
42
42
  export { StripeLinkMode, type StripeLinkModeKey } from '../enums/index.js';
43
43
  export { type CreateStripeLinkOptions, type StripeCaptureResult, createStripeLink, stripeCaptureIntent, } from './stripe.js';
44
44
  export { type HobexPayOptions, type HobexRefundOptions, type HobexTransactionIdOptions, hobexPay, hobexRefund, newHobexTransactionId, } from './hobex.js';
45
- export { type CardPaymentOutcome, type HpsConnectClient, type HpsConnectClientOptions, type HpsConnectFetch, type HpsConnectFetchResponse, type HpsConnectPaymentOptions, type HpsConnectTarget, type HpsConnectTransactionOptions, type HpsCode, type HpsCodeEffect, type HpsCodeReason, type HpsCodeSource, type HpsMeasuredCode, type HpsPaymentEvent, type HpsPaymentEventKind, type HpsPaymentObserver, type HpsPaymentOptions, type HpsPayments, type HpsPaymentResult, type HpsPaymentsOptions, type HpsTransactionIdGeneratorOptions, type HpsTransactionResponse, ABORTED_CODE, APPROVED_CODE, CARD_NOT_PRESENT_CODE, createHpsConnectClient, createHpsPayments, createHpsTransactionIdGenerator, HPS_CODES, HPS_MEASURED_CODES, HPS_REASON_HINTS, hpsCodeInfo, hpsCodeReason, HpsClarifyTimeoutError, HpsConnectException, HpsConnectTerminalError, HpsConnectTransportError, HpsPreflightError, HpsTransactionIdError, INVALID_TRANSACTION_CODE, isApproved, isConclusive, isConclusiveAsStatus, isHostUncertain, isHostUncertainResult, isInProgress, isNoStatement, isNotAbortable, isTechnicalError, isUnknownCode, isValidHpsTransactionId, mayRetrySafely, MAX_TRANSACTION_ID_LENGTH, newHpsTransactionId, NOT_ABORTABLE_CODE, NO_STATEMENT_CODE, parseHpsTransactionResponse, PREFLIGHT_CONNECT_CODES, TECHNICAL_ERROR_CODE, TERMINAL_BUSY_HTTP_STATUS, TRANSACTION_CANCELED_CODE, } from './hobex-hps/index.js';
45
+ export { type CardPaymentOutcome, type HpsConnectClient, type HpsConnectClientOptions, type HpsConnectFetch, type HpsConnectFetchResponse, type HpsConnectPaymentOptions, type HpsConnectTarget, type HpsConnectTransactionOptions, type HpsCode, type HpsCodeEffect, type HpsCodeReason, type HpsCodeSource, type HpsMeasuredCode, type HpsPaymentEvent, type HpsPaymentEventKind, type HpsPaymentObserver, type HpsPaymentOptions, type HpsPayments, type HpsPaymentResult, type HpsPaymentsOptions, type HpsTransactionIdGeneratorOptions, type HpsTransactionResponse, ABORTED_CODE, APPROVED_CODE, CARD_NOT_PRESENT_CODE, createHpsConnectClient, createHpsPayments, createHpsTransactionIdGenerator, HPS_CODES, HPS_MEASURED_CODES, HPS_REASON_HINTS, hpsCodeInfo, hpsCodeReason, HpsClarifyTimeoutError, HpsConnectException, HpsConnectTerminalError, HpsConnectTransportError, HpsPreflightError, HpsTransactionIdError, INVALID_TRANSACTION_CODE, isApproved, isConclusive, isConclusiveAsStatus, isHostUncertain, isHostUncertainResult, isInProgress, isNoStatement, isNotAbortable, isTechnicalError, isUnknownCode, isValidHpsTransactionId, mayRetrySafely, MAX_TRANSACTION_ID_LENGTH, newHpsTransactionId, NOT_ABORTABLE_CODE, NO_STATEMENT_CODE, parseHpsTransactionResponse, PREFLIGHT_CONNECT_CODES, TECHNICAL_ERROR_CODE, NOT_FOUND_HTTP_STATUS, TERMINAL_BUSY_HTTP_STATUS, TRANSACTION_CANCELED_CODE, } from './hobex-hps/index.js';
@@ -42,4 +42,4 @@
42
42
  export { StripeLinkMode } from '../enums/index.js';
43
43
  export { createStripeLink, stripeCaptureIntent, } from './stripe.js';
44
44
  export { hobexPay, hobexRefund, newHobexTransactionId, } from './hobex.js';
45
- export { ABORTED_CODE, APPROVED_CODE, CARD_NOT_PRESENT_CODE, createHpsConnectClient, createHpsPayments, createHpsTransactionIdGenerator, HPS_CODES, HPS_MEASURED_CODES, HPS_REASON_HINTS, hpsCodeInfo, hpsCodeReason, HpsClarifyTimeoutError, HpsConnectException, HpsConnectTerminalError, HpsConnectTransportError, HpsPreflightError, HpsTransactionIdError, INVALID_TRANSACTION_CODE, isApproved, isConclusive, isConclusiveAsStatus, isHostUncertain, isHostUncertainResult, isInProgress, isNoStatement, isNotAbortable, isTechnicalError, isUnknownCode, isValidHpsTransactionId, mayRetrySafely, MAX_TRANSACTION_ID_LENGTH, newHpsTransactionId, NOT_ABORTABLE_CODE, NO_STATEMENT_CODE, parseHpsTransactionResponse, PREFLIGHT_CONNECT_CODES, TECHNICAL_ERROR_CODE, TERMINAL_BUSY_HTTP_STATUS, TRANSACTION_CANCELED_CODE, } from './hobex-hps/index.js';
45
+ export { ABORTED_CODE, APPROVED_CODE, CARD_NOT_PRESENT_CODE, createHpsConnectClient, createHpsPayments, createHpsTransactionIdGenerator, HPS_CODES, HPS_MEASURED_CODES, HPS_REASON_HINTS, hpsCodeInfo, hpsCodeReason, HpsClarifyTimeoutError, HpsConnectException, HpsConnectTerminalError, HpsConnectTransportError, HpsPreflightError, HpsTransactionIdError, INVALID_TRANSACTION_CODE, isApproved, isConclusive, isConclusiveAsStatus, isHostUncertain, isHostUncertainResult, isInProgress, isNoStatement, isNotAbortable, isTechnicalError, isUnknownCode, isValidHpsTransactionId, mayRetrySafely, MAX_TRANSACTION_ID_LENGTH, newHpsTransactionId, NOT_ABORTABLE_CODE, NO_STATEMENT_CODE, parseHpsTransactionResponse, PREFLIGHT_CONNECT_CODES, TECHNICAL_ERROR_CODE, NOT_FOUND_HTTP_STATUS, TERMINAL_BUSY_HTTP_STATUS, TRANSACTION_CANCELED_CODE, } from './hobex-hps/index.js';
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.12.0",
2
+ "version": "0.13.1",
3
3
  "gemessenAn": {
4
4
  "tid": "3600335",
5
5
  "hpsVersion": "1.10.0",
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.12.0",
2
+ "version": "0.13.1",
3
3
  "meldungen": {
4
4
  "netz.keine_verbindung": {
5
5
  "text": "Keine Verbindung zum Server. Bitte die Internetverbindung prüfen und erneut versuchen."
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.12.0",
2
+ "version": "0.13.1",
3
3
  "aufrufe": [
4
4
  "activateCashregister",
5
5
  "cancelReceipt",
@@ -45,6 +45,7 @@
45
45
  "requestCustomerSignature",
46
46
  "sendPartnerCustomerFonLink",
47
47
  "sendPartnerWebhookTest",
48
+ "sendReceiptEmail",
48
49
  "setMyKasseSettings",
49
50
  "setMyRegisterDeviceSettings",
50
51
  "stripeCaptureIntent",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kreiseck/kasseneck-api",
3
- "version": "0.12.0",
3
+ "version": "0.13.1",
4
4
  "description": "JavaScript-Zwilling von kasseneck_api (Flutter) fuer das Kasseneck-Backend",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Kreiseck",