Negativposten als Positionsrabatt
Bernd Wurst

Bernd Wurst commited on 2025-05-04 07:46:22
Zeige 1 geänderte Dateien mit 9 Einfügungen und 0 Löschungen.

... ...
@@ -19,6 +19,7 @@ from drafthorse.models.accounting import ApplicableTradeTax
19 19
 from drafthorse.models.tradelines import LineItem
20 20
 from .InvoiceObjects import InvoiceTable, InvoiceText, RECHNUNG, GUTSCHRIFT, KORREKTUR, \
21 21
     VAT_REGULAR, VAT_KLEINUNTERNEHMER, VAT_INNERGEM, PAYMENT_UEBERWEISUNG, PAYMENT_LASTSCHRIFT, UNITS
22
+from drafthorse.models.accounting import TradeAllowanceCharge
22 23
 from drafthorse.models.party import TaxRegistration, URIUniversalCommunication
23 24
 from drafthorse.models.payment import PaymentTerms
24 25
 from drafthorse.models.note import IncludedNote
... ...
@@ -220,6 +221,14 @@ def InvoiceToXML(invoice):
220 221
                 li.settlement.trade_tax.rate_applicable_percent = Decimal(f"{el['vat'] * 100:.2f}")
221 222
 
222 223
                 nettopreis = round(el['net_price'], 2)
224
+                if nettopreis < 0:
225
+                    li.agreement.net.amount = Decimal('0.00')
226
+                    allowance = TradeAllowanceCharge()
227
+                    allowance.indicator = False
228
+                    allowance.actual_amount = round(abs(nettopreis * el['count']), 2)
229
+                    allowance.reason_code = '104' # Code für "Standard discount"
230
+                    li.settlement.allowance_charge.add(allowance)
231
+                else:
223 232
                     li.agreement.net.amount = nettopreis
224 233
 
225 234
                 nettosumme = round(el['net_price'] * el['count'], 2)
226 235