Summenerfassung drastisch vereinfacht
Bernd Wurst

Bernd Wurst commited on 2025-05-04 07:11:14
Zeige 1 geänderte Dateien mit 7 Einfügungen und 13 Löschungen.

... ...
@@ -219,23 +219,16 @@ def InvoiceToXML(invoice):
219 219
                 # O = Outside VAT scope
220 220
                 li.settlement.trade_tax.rate_applicable_percent = Decimal(f"{el['vat'] * 100:.2f}")
221 221
 
222
-                nettopreis = el['price']
223
-                if part.vatType == 'gross':
224
-                    nettopreis = el['price'] / (el['vat'] + 1)
225
-                nettopreis = round(nettopreis, 2)
222
+                nettopreis = round(el['net_price'], 2)
226 223
                 li.agreement.net.amount = nettopreis
227 224
 
228
-                nettosumme = nettopreis * el['count']
229
-                li.settlement.monetary_summation.total_amount = Decimal(f"{nettosumme:.2f}")
225
+                nettosumme = round(el['net_price'] * el['count'], 2)
226
+                li.settlement.monetary_summation.total_amount = nettosumme
230 227
 
231
-                brutto_rechnerisch = round(nettosumme * (el['vat'] + 1), 2)
232 228
                 summe_netto += nettosumme
233
-                if part.vatType == 'net':
234
-                    summe_brutto += el['total'] * (el['vat'] + 1)
235
-                else:
236
-                    summe_brutto += el['total']
237
-                    summe_rundung += (el['total'] - brutto_rechnerisch)
238
-                summe_brutto_rechnerisch += brutto_rechnerisch
229
+                summe_brutto += round(el['gross_price'] * el['count'], 2)
230
+                summe_brutto_rechnerisch += nettosumme * (el['vat'] + 1)
231
+
239 232
                 doc.trade.items.add(li)
240 233
 
241 234
             for pay in part.payments:
... ...
@@ -304,6 +297,7 @@ def InvoiceToXML(invoice):
304 297
     rest = summe_brutto - summe_bezahlt
305 298
     summe_netto = round(summe_netto, 2)
306 299
     summe_ust = round(summe_ust, 2)
300
+    summe_rundung = summe_brutto - round(summe_brutto_rechnerisch, 2)
307 301
     doc.trade.settlement.monetary_summation.line_total = Decimal(f"{summe_netto:.2f}")
308 302
     doc.trade.settlement.monetary_summation.charge_total = Decimal("0.00")
309 303
     doc.trade.settlement.monetary_summation.allowance_total = Decimal("0.00")
310 304