From 885f413e9ae887979a59d0ca7238246429dd81ad Mon Sep 17 00:00:00 2001 From: Aldrik Ramaekers Date: Wed, 17 Sep 2025 10:30:27 +0200 Subject: set invoice finals if invoice currency != main currency --- src/administration.cpp | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'src/administration.cpp') diff --git a/src/administration.cpp b/src/administration.cpp index 0233213..ccbd284 100644 --- a/src/administration.cpp +++ b/src/administration.cpp @@ -1554,21 +1554,28 @@ invoice administration_invoice_create_empty() static void administration_recalculate_invoice_totals(invoice* invoice) { - invoice->tax = 0.0f; - invoice->total = 0.0f; - invoice->net = 0.0f; - invoice->allowance = 0.0f; + invoice->orig_tax = 0.0f; + invoice->orig_total = 0.0f; + invoice->orig_net = 0.0f; + invoice->orig_allowance = 0.0f; list_iterator_start(&invoice->billing_items); while (list_iterator_hasnext(&invoice->billing_items)) { billing_item* c = (billing_item *)list_iterator_next(&invoice->billing_items); - invoice->tax += c->tax; - invoice->total += c->total; - invoice->net += c->net; - invoice->allowance += c->allowance; + invoice->orig_tax += c->tax; + invoice->orig_total += c->total; + invoice->orig_net += c->net; + invoice->orig_allowance += c->allowance; } list_iterator_stop(&invoice->billing_items); + + if (strcmp(invoice->currency, administration_get_default_currency()) == 0) { + invoice->tax = invoice->orig_tax; + invoice->total = invoice->orig_total; + invoice->net = invoice->orig_net; + invoice->allowance = invoice->orig_allowance; + } } void administration_invoice_set_currency(invoice* invoice, char* currency) -- cgit v1.2.3-70-g09d2