summaryrefslogtreecommitdiff
path: root/src/administration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/administration.cpp')
-rw-r--r--src/administration.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/administration.cpp b/src/administration.cpp
index e77dfdb..5476718 100644
--- a/src/administration.cpp
+++ b/src/administration.cpp
@@ -44,6 +44,7 @@ time_t administration::get_default_invoice_expire_duration() // TODO depricated
return (30 * 24 * 60 * 60); // 30 days
}
+static void administration_recalculate_billing_item_totals(billing_item* item);
static char* get_default_currency_for_country(char* country_code);
static void create_default_cost_centers()
@@ -1363,6 +1364,8 @@ static void administration_recalculate_invoice_totals(invoice* invoice)
while (list_iterator_hasnext(&invoice->billing_items)) {
billing_item* c = (billing_item *)list_iterator_next(&invoice->billing_items);
+ administration_recalculate_billing_item_totals(c);
+
invoice->orig_tax += c->tax;
invoice->orig_total += c->total;
invoice->orig_net += c->net;
@@ -1555,6 +1558,16 @@ invoice administration::invoice_create_copy(invoice* inv)
return new_inv;
}
+void administration::invoice_recalculate_totals()
+{
+ list_iterator_start(&g_administration.invoices);
+ while (list_iterator_hasnext(&g_administration.invoices)) {
+ invoice* c = (invoice *)list_iterator_next(&g_administration.invoices);
+ administration_recalculate_invoice_totals(c);
+ }
+ list_iterator_stop(&g_administration.invoices);
+}
+
u32 administration::invoice_count()
{
return list_size(&g_administration.invoices);