feat(accounting): Skonto bei Zahlungen auf Ausgangs- und Eingangsbelege buchen
Skonto wird an der Bankzuordnung gespeichert und gleicht den Beleg zusammen mit der Zahlung aus. Der Betrag wird anteilig nach Steuersätzen auf die Skontokonten verteilt (Standard SKR03, je Mandant einstellbar), im DATEV-Export als eigene Buchung je Steuersatz ausgegeben und in der USt-Auswertung im Zeitraum der Zahlung berücksichtigt. Schlussrechnungen verteilen den Skonto auf die Restforderung nach Abzug der Abschläge. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import { getCashDiscountTaxBreakdown } from "./cashDiscount"
|
||||
|
||||
export const BANK_ALLOCATION_TAX_ITEMS = [
|
||||
{ value: "9", label: "19 % Vorsteuer", rate: 19, kind: "input" },
|
||||
{ value: "8", label: "7 % Vorsteuer", rate: 7, kind: "input" },
|
||||
@@ -25,19 +27,19 @@ export function getBankAllocationAmounts(allocation: any) {
|
||||
}
|
||||
|
||||
export function getBankAllocationTaxBreakdown(allocation: any) {
|
||||
const output = { net19: 0, tax19: 0, net7: 0, tax7: 0, net0: 0 }
|
||||
const input = { ...output }
|
||||
// Skonto auf zugeordnete Belege korrigiert die Steuer im Zeitraum der Zahlung.
|
||||
const { output, input } = getCashDiscountTaxBreakdown(allocation)
|
||||
if (!isDirectBankAllocation(allocation)) return { output, input }
|
||||
const { amountNet, amountTax, rate, kind } = getBankAllocationAmounts(allocation)
|
||||
if (kind === "none") return { output, input }
|
||||
const target = kind === "input" ? input : output
|
||||
const sign = kind === "input" ? -1 : 1
|
||||
if (rate === 19) {
|
||||
target.net19 = amountNet * sign
|
||||
target.tax19 = amountTax * sign
|
||||
target.net19 += amountNet * sign
|
||||
target.tax19 += amountTax * sign
|
||||
} else if (rate === 7) {
|
||||
target.net7 = amountNet * sign
|
||||
target.tax7 = amountTax * sign
|
||||
target.net7 += amountNet * sign
|
||||
target.tax7 += amountTax * sign
|
||||
}
|
||||
return { output, input }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user