feat(accounting): Skontobedingungen auf Belegen und automatische Skonto-Vorschläge
Ausgangs- und Eingangsbelege erhalten Skontosatz und Frist, mit Vorgaben bei Kunden und Lieferanten. Das PDF ergänzt automatisch einen Skontohinweis (oder nutzt neue Textvorlagen-Variablen); bei Schlussrechnungen gilt der Skonto für die Restforderung. Skontobedingungen werden aus E-Rechnungen (#SKONTO# und ZUGFeRD) sowie von der KI-Vorbereitung übernommen. Die Bankzuordnung erkennt Zahlungen abzüglich Skonto innerhalb der Frist und bietet sie in der Vorschlagsübersicht direkt an. BWA-Erlöse und -Aufwand berücksichtigen gebuchten Skonto im Zeitraum der Zahlung. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -41,6 +41,13 @@ export const findElectronicInvoiceVendor = async (
|
||||
return null
|
||||
}
|
||||
|
||||
const addDaysToDate = (date: string, days: number) => {
|
||||
const parsed = new Date(`${String(date).slice(0, 10)}T00:00:00Z`)
|
||||
if (Number.isNaN(parsed.getTime())) return null
|
||||
parsed.setUTCDate(parsed.getUTCDate() + days)
|
||||
return parsed.toISOString().slice(0, 10)
|
||||
}
|
||||
|
||||
export const mapElectronicInvoiceToIncomingInvoice = (
|
||||
invoice: ParsedElectronicInvoice,
|
||||
tenantId: number,
|
||||
@@ -64,6 +71,10 @@ export const mapElectronicInvoiceToIncomingInvoice = (
|
||||
reference: invoice.invoiceNumber,
|
||||
date: invoice.invoiceDate,
|
||||
dueDate: invoice.dueDate,
|
||||
cashDiscountPercent: invoice.cashDiscount?.percent ?? null,
|
||||
cashDiscountDueDate: invoice.cashDiscount && invoice.invoiceDate
|
||||
? addDaysToDate(invoice.invoiceDate, invoice.cashDiscount.days)
|
||||
: null,
|
||||
paymentType: paymentTypeByCode[invoice.paymentMeansCode || ""] || "Sonstiges",
|
||||
description: descriptionParts.join("\n"),
|
||||
accounts: invoice.items.map((item) => ({
|
||||
|
||||
Reference in New Issue
Block a user