summaryrefslogtreecommitdiff
path: root/src/administration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/administration.cpp')
-rw-r--r--src/administration.cpp23
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)