diff --git a/backend/src/utils/export/datev.ts b/backend/src/utils/export/datev.ts index 3a13cb4..7b176ce 100644 --- a/backend/src/utils/export/datev.ts +++ b/backend/src/utils/export/datev.ts @@ -80,6 +80,20 @@ const formatDatevDate = (date: dayjs.ConfigType, format: string) => { return parsed.isValid() ? parsed.tz(DATEV_TIMEZONE).format(format) : ""; }; +const getIncomingInvoiceTaxReview = (account: any) => { + const taxRate = account.taxType === "19" ? 19 : account.taxType === "7" ? 7 : null; + if (taxRate === null) return null; + + const amountNet = Number(account.amountNet); + const amountTax = Number(account.amountTax); + if (!Number.isFinite(amountNet) || !Number.isFinite(amountTax)) return null; + + const calculatedTax = Number((amountNet * (taxRate / 100)).toFixed(2)); + if (Math.abs(amountTax - calculatedTax) < 0.005) return null; + + return `USt pruefen ${displayCurrency(amountTax, true)}`; +}; + const getCreatedDocumentRevenueLines = (document: any) => { const totals = getCreatedDocumentTotal(document); @@ -369,7 +383,8 @@ export async function buildExportZip( let amountGross =/* account.amountGross ? account.amountGross : */(account.amountNet || 0) + (account.amountTax || 0); let shSelector = Math.sign(amountGross) === -1 ? "H" : "S"; - let text = `ER ${ii.reference}: ${escapeString(ii.description)}`.substring(0,59); + const taxReview = getIncomingInvoiceTaxReview(account); + let text = `${taxReview ? `${taxReview} - ` : ""}ER ${ii.reference}: ${escapeString(ii.description)}`.substring(0,59); const vend = ii.vendor; // durch Mapping verfügbar bookingLines.push(`${Math.abs(amountGross).toFixed(2).replace(".",",")};"${shSelector}";;;;;${accountData.number};${vend?.vendorNumber || ""};"${buschluessel}";${formatDatevDate(ii.date, "DDMM")};"${ii.reference}";;;"${text}";;;;;;${file ? `"BEDI ""${file.id}"""` : ""};"Geschäftspartner";"${vend?.name || ""}";"Kundennummer";"${vend?.vendorNumber || ""}";"Belegnummer";"${ii.reference}";"Leistungsdatum";"${formatDatevDate(ii.date, "DD.MM.YYYY")}";"Belegdatum";"${formatDatevDate(ii.date, "DD.MM.YYYY")}";;;;;;;;;;"";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;"";;;;;;;`);