UNPKG

@tsclass/tsclass

Version:

Provides TypeScript definitions for various business, financial, networking, content, and other common classes.

206 lines (180 loc) 5.26 kB
import { business, finance } from '../index.js'; import type { TCurrency } from './currency.js'; /** * Status of an accounting document * * draft: Document is in preparation (Entwurf) * issued: Document has been issued/sent (Ausgestellt) * paid: Document has been paid (Bezahlt) * canceled: Document has been canceled (Storniert) * refunded: Payment has been refunded (Erstattet) */ export type TAccountingDocStatus = 'draft' | 'issued' | 'paid' | 'canceled' | 'refunded'; /** * Type of accounting document * * invoice: Standard invoice (Rechnung) * creditnote: Credit note (Gutschrift als Rechnungskorrektur) * debitnote: Debit note (Lastschrift/Belastungsanzeige) * self-billed-invoice: Self-billed invoice (Gutschrift im Gutschriftverfahren) */ export type TAccountingDocType = 'invoice' | 'creditnote' | 'debitnote' | 'self-billed-invoice'; /** * Item in an accounting document * (Position in einer Rechnung/Gutschrift/Lastschrift) */ export type TAccountingDocItem = { position: number; name: string; articleNumber?: string; unitType: string; unitQuantity: number; unitNetPrice: number; vatPercentage: number; }; /** * Reference to a related document * (Referenz zu einem zugehörigen Dokument) */ export type TRelatedDocument = { /** * Type of relationship * (Art der Beziehung) */ relationType: 'corrects' | 'replaces' | 'references'; /** * ID of the related document * (ID des zugehörigen Dokuments) */ documentId: string; /** * Issue date of the related document * (Ausstellungsdatum des zugehörigen Dokuments) */ issueDate?: number; }; /** * Base type for all accounting documents (Basis-Typ für alle Buchungsdokumente) */ export type TAccountingDocEnvelope< TYPE extends TAccountingDocType, FIELDS, > = business.TLetterEnvelope< 'accounting-doc', { /** * Unique identifier of the accounting document * (Eindeutige Kennung des Buchungsdokuments) */ accountingDocId: string; /** * Type of accounting document * (Art des Buchungsdokuments) */ accountingDocType: TYPE; /** * Current status of the accounting document * (Aktueller Status des Buchungsdokuments) */ accountingDocStatus: TAccountingDocStatus; /** * Line items of the accounting document * (Positionen des Buchungsdokuments) */ items: TAccountingDocItem[]; /** * Period of performance/service delivery * (Leistungszeitraum) */ periodOfPerformance?: { from: number; to: number; }; /** * Date of delivery or service completion * (Lieferdatum oder Leistungsdatum) */ deliveryDate?: number; /** * Payment due in days after issue * (Zahlungsfrist in Tagen) */ dueInDays: number; /** * Whether reverse charge applies (VAT liability shifted to recipient) * (Steuerschuldnerschaft des Leistungsempfängers) */ reverseCharge: boolean; /** * Reference provided by the buyer to identify the document * (Referenz des Käufers zur Identifizierung des Dokuments) */ buyerReference?: string; /** * Electronic address information, needed for CII/XRechnung support * (Elektronische Adressinformationen, benötigt für CII/XRechnung) */ electronicAddress?: { scheme: string; value: string; }; /** * References to related documents (e.g., an invoice referenced by a credit note) * (Referenzen zu zugehörigen Dokumenten) */ relatedDocuments?: TRelatedDocument[]; /** * Result of document printing/generation * (Ergebnis der Dokumentenerstellung) */ printResult?: { pdfBufferString: string; totalNet: number; totalGross: number; vatGroups: { percentage: number; items: TAccountingDocItem[]; }[]; }; /** * Additional notes or comments * (Zusätzliche Anmerkungen oder Kommentare) */ notes: string[]; /** * Payment options information * (Zahlungsoptionen) */ paymentOptions?: finance.IPaymentOptionInfo; /** * Currency used in the document * (Verwendete Währung) */ currency: TCurrency; } & FIELDS >; /** * Credit Note - document reducing amount owed * (Gutschrift - Dokument zur Minderung einer Forderung) */ export type TCreditNote = TAccountingDocEnvelope<'creditnote', {}>; /** * Debit Note - document increasing amount owed * (Lastschrift/Belastungsanzeige - Dokument zur Erhöhung einer Forderung) */ export type TDebitNote = TAccountingDocEnvelope<'debitnote', {}>; /** * Standard Invoice * (Standardrechnung) */ export type TInvoice = TAccountingDocEnvelope<'invoice', {}>; /** * Self-billed Invoice - invoice created by the buyer * (Gutschrift im Gutschriftverfahren - vom Käufer erstellte Rechnung) */ export type TSelfBilledInvoice = TAccountingDocEnvelope<'self-billed-invoice', {}>; /** * Union type for all accounting document types * (Vereinigungstyp für alle Buchungsdokumentarten) */ export type TAccountingDoc = TCreditNote | TDebitNote | TInvoice | TSelfBilledInvoice;