diff options
Diffstat (limited to 'src/administration.cpp')
| -rw-r--r-- | src/administration.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
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) |
