import { KeckPaymentMethod, ReceiptType } from '../enums/index.js'; import { type CancellationStatus } from './cancellation.js'; import { type ReceiptPayment, type ReceiptPaymentPayload } from './receipt-payment.js'; /** * Belegzeile einer Liste — die Form, die `listMyReceipts` liefert * (`projectReceiptForCustomer` in functions/index.js). * * **Das ist kein [Receipt].** Die Liste traegt bewusst nur, was eine Uebersicht * braucht: keine Positionen, keine Gutscheine, keine Signatur, keinen QR-Code. * Wer einen Beleg nachdrucken oder stornieren will, holt ihn ueber * `getReceipt`/`getReceiptWithCompany` einzeln — dort steht der vollstaendige, * signierte Beleg. * * `total` kommt vom Backend in **Euro** (auf zwei Stellen gerundet, `round2`). * Dieses Paket rechnet ausnahmslos in ganzen Cent, deshalb wird der Betrag * genau hier, an der Antwortgrenze, einmal umgerechnet — wie beim * Hobex-Beleg. * * `receiptType` und `paymentMethod` sind wie ueberall beim Lesen entweder der * bekannte Enum-Eintrag oder der rohe Nutzlast-Schluessel (siehe * enum-payload.ts): eine Liste darf nicht daran scheitern, dass ein einzelner * Beleg eine Zahlungsart traegt, die dieses Paket noch nicht kennt. */ /** Anlass eines Nullbelegs (Backend: cashregister-lifecycle ZERO_KINDS). */ export declare const ZERO_KINDS: readonly ["monthly", "annual", "annual_replacement", "outage_end", "final", "manual"]; export type ZeroKind = (typeof ZERO_KINDS)[number]; export declare function isZeroKind(w: unknown): w is ZeroKind; export interface ReceiptSummary { receiptId: string; /** Fortlaufender Belegzaehler der Kasse; fehlt bei Alt-Belegen. */ counter?: number; receiptType: ReceiptType | string; /** Roher Belegzeitstempel; Deutung ueber `parseServerTimeStamp`. */ timeStamp: string; /** Belegsumme in ganzen Cent. */ totalCents: number; paymentMethod: KeckPaymentMethod | string; /** `'success'`/`'failed'` der FinanzOnline-Uebermittlung, sofern bekannt. */ transmissionStatus?: string; /** Zeitstempel der Uebermittlung, roh wie vom Finanzamt geliefert. */ transmissionTime?: string; /** * Wurde der Beleg mit funktionierender Signatureinheit ausgestellt? Das * Backend meldet hier `signatureSuccess !== false`, also `true`, solange * nichts Gegenteiliges vermerkt ist. */ signatureOk: boolean; /** Nur fuer Kassen-Benutzer geliefert: Positionen kurz (Name, Menge). */ items: Array<{ name: string; quantity: number; }>; /** Bediener am Beleg, wenn bekannt. */ operator?: { uid: string | null; name: string; }; /** Nur am Storno-Beleg: das Original. */ cancellationOf?: { receiptId: string | null; timeStamp?: string; }; cancellationReason?: string; /** * Storno-Stand des Originals: `none`, `partial` oder `full`. Ein Wert, den * dieses Paket nicht kennt, kommt sichtbar als `'unknown'` an, nie still als * `none`: die Kasse bietet dann keinen Storno an, bis sie den Beleg einzeln * liest. Fehlt das Feld in der Antwort, fehlt es auch hier. */ cancellationStatus?: CancellationStatus | 'unknown'; /** Nur am Nullbeleg, nur fuer Kassen-Benutzer: Anlass (monthly, annual, annual_replacement, outage_end, final, manual). */ zeroKind?: ZeroKind; /** * Zahlungsliste, nur bei Belegen, die eine tragen. Die Liste liefert nur * die oeffentlichen Felder (id, method, amountCents, provider, * tenderedCents, changeCents, refundOf, tipCents) — Anbieter-Interna * (`providerPaymentId`, `providerData`) bleiben im Backend. */ payments?: ReceiptPayment[]; } export interface ReceiptSummaryPayload { receiptId?: string | null; counter?: number | null; receiptType?: string | null; timeStamp?: string | null; /** Belegsumme in **Euro** (siehe Klassenkommentar). */ total?: number | null; paymentMethod?: string | null; transmission_status?: string | null; ts_transmission?: string | null; signature_ok?: boolean | null; items?: Array<{ name?: string | null; quantity?: number | null; }> | null; operator?: { uid?: string | null; name?: string | null; } | null; cancellationOf?: { receiptId?: string | null; timeStamp?: string | null; } | null; cancellationReason?: string | null; cancellationStatus?: string | null; zeroKind?: string | null; payments?: ReceiptPaymentPayload[] | null; } export declare function fromReceiptSummaryPayload(payload: ReceiptSummaryPayload): ReceiptSummary;