/** * Kasse — die Antwortform von `listMyCashregisters` (functions/index.js). * * Das Dart-Vorbild (`Cashregister` in kasseneck_api/lib/models/cashregister.dart) * liest das **Datenbankdokument** direkt ueber das SDK der Echtzeit-Datenbank und * kommt deshalb an `token` und `aes_key`. Dieses Paket spricht das Backend * ausschliesslich ueber die HTTPS-Endpunkte, und die geben beides nicht her: * * - **`aes_key` steht in dieser Antwort ueberhaupt nicht** (nur im * Admin-Export). Ein Feld dafuer versprach hier einen `string` und lieferte * `undefined` — deshalb gibt es keines mehr. * - **`token` ist fuer Kassen-Benutzer bewusst `null`**: im Browser traegt die * Sitzung die Identitaet, und ein einmal ausgelieferter Kassen-Token liesse * sich ohne Sitzung und ohne PIN weiterverwenden (so steht es im Backend an * der Stelle selbst). * * `create_time` kommt aus `isoTs(...)` und ist **`null`**, wenn das Dokument * keinen Zeitstempel traegt. Aus `null` wird hier kein Zeitpunkt: `new Date(null)` * ergaebe still den 1.1.1970, und ein erfundenes Datum ist schlechter als ein * fehlendes. * * Aus demselben Grund fehlt `userId`: das Dart-Vorbild traegt es, weil es den * **Pfad** in der Datenbank kennt (`users/{uid}/cashregisters/{id}`). In dieser * Antwort steht es nicht, und ein Kassen-Benutzer erfaehrt die Kennung seines * Betriebs bewusst nie — sie steckt allein im Token. */ export interface Cashregister { id: string; /** Anzeigename der Kasse, sofern gepflegt. */ label?: string; /** Freie Beschreibung, sofern gepflegt. */ description?: string; /** Anlagezeitpunkt; fehlt, wenn die Antwort keinen lesbaren traegt. */ createTime?: Date; /** Kassen-Token; fuer Kassen-Benutzer nie enthalten (siehe Klassenkommentar). */ token?: string; /** Zugeordnete Signatureinheit. */ signatureId?: string; /** Lager-Standort der Kasse (Lager-Kern Stufe 2); fehlt = Standard-Standort des Betriebs. */ stockLocationId?: string; /** * Eigene Abmelde-Werte dieser Kasse; fehlt, wenn die Kasse keine eigenen hat * (dann gelten die Werte des Betriebs). */ autoLogout?: CashregisterAutoLogout; onboarding: CashregisterOnboarding; } /** * Automatisches Abmelden an der Kasse. Beide Felder sind einzeln optional: der * Server sendet nur, was die Kasse selbst gesetzt hat. */ export interface CashregisterAutoLogout { /** Abmeldung nach Leerlauf in Minuten; `0` = aus. */ autoLogoutMinutes?: 0 | 1 | 5 | 15 | 30; /** Nach jedem Verkauf abmelden. */ logoutAfterSale?: boolean; } /** * Stand der Inbetriebnahme (RKSV): Kasse bei FinanzOnline registriert, * Startbeleg erzeugt, Startbeleg uebermittelt. Die drei Kennzeichen entscheiden * in der Browser-Kasse, ob ueberhaupt schon kassiert werden darf. */ export interface CashregisterOnboarding { cashboxRegistered: boolean; startReceiptCreated: boolean; startReceiptTransmitted: boolean; cashboxRegisteredAt?: Date; startReceiptCreatedAt?: Date; startReceiptTransmittedAt?: Date; } /** Nutzlast-Form, die dieses Paket liest — die Feldnamen von `listMyCashregisters`. */ export interface CashregisterPayload { id?: string | null; label?: string | null; description?: string | null; create_time?: string | null; signature_id?: string | null; stockLocationId?: string | null; autoLogout?: CashregisterAutoLogoutPayload | null; token?: string | null; onboarding?: CashregisterOnboardingPayload | null; } /** `autoLogout` am Draht `/v3`; die Namen sind dieselben wie am Modell. */ export interface CashregisterAutoLogoutPayload { autoLogoutMinutes?: number | null; logoutAfterSale?: boolean | null; } /** * `onboarding` am Draht `/v3` (fixtures/v3/antworten/kasse.json): der * Startbeleg heisst dort `start_receipt_*`. Die inneren Namen * `startbeleg_*` sendet nur `/v1`; wer sie hier laese, meldete jede Kasse * als „Startbeleg fehlt“. */ export interface CashregisterOnboardingPayload { cashbox_registered?: boolean | null; start_receipt_created?: boolean | null; start_receipt_transmitted?: boolean | null; cashbox_registered_at?: string | null; start_receipt_created_at?: string | null; start_receipt_transmitted_at?: string | null; } /** * Liest eine Kasse aus der Antwort. `id` gewinnt aus der Nutzlast, faellt aber * auf den uebergebenen Wert zurueck — die Liste fuehrt die Dokument-ID mit, * ein einzeln gelesenes Dokument nicht. */ export declare function fromCashregisterPayload(payload: CashregisterPayload, id: string): Cashregister;