summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/administration.cpp23
-rw-r--r--src/locales/en.cpp1
-rw-r--r--src/ui/ui_expenses.cpp36
-rw-r--r--src/ui/ui_invoices.cpp36
4 files changed, 80 insertions, 16 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)
diff --git a/src/locales/en.cpp b/src/locales/en.cpp
index a5309a3..d70a282 100644
--- a/src/locales/en.cpp
+++ b/src/locales/en.cpp
@@ -141,6 +141,7 @@ locale_entry en_locales[] = {
{"invoice.form.shippinginformation", "Shipping information"},
{"invoice.form.add", "+ Billing item"},
{"invoice.form.currency", "Currency"},
+ {"invoice.form.finalSettlement", "Final settlement in"},
{"invoice.table.invoicenumber", "Invoice number"},
{"invoice.table.amount", "Amount"},
diff --git a/src/ui/ui_expenses.cpp b/src/ui/ui_expenses.cpp
index 96489d3..75bd268 100644
--- a/src/ui/ui_expenses.cpp
+++ b/src/ui/ui_expenses.cpp
@@ -189,7 +189,7 @@ static void draw_expense_items_form(invoice* invoice)
ImGui::PopItemWidth();
ImGui::TableSetColumnIndex(4);
- ImGui::InputFloat("##discount", &item.discount, 0.0f, 0.0f, "%.0f");
+ ImGui::InputFloat("##discount", &item.discount, 0.0f, 0.0f, "%.2f");
ImGui::SameLine();
// Toggle between currency and %
@@ -233,13 +233,41 @@ static void draw_expense_items_form(invoice* invoice)
ImGui::TableSetBgColor(ImGuiTableBgTarget_RowBg0, IM_COL32(70, 70, 70, 255));
ImGui::TableSetColumnIndex(5);
- ImGui::Text("%.2f %s", invoice->net, invoice->currency);
+ ImGui::Text("%.2f %s", invoice->orig_net, invoice->currency);
ImGui::TableSetColumnIndex(7);
- ImGui::Text("%.2f %s", invoice->tax, invoice->currency);
+ ImGui::Text("%.2f %s", invoice->orig_tax, invoice->currency);
ImGui::TableSetColumnIndex(8);
- ImGui::Text("%.2f %s", invoice->total, invoice->currency);
+ ImGui::Text("%.2f %s", invoice->orig_total, invoice->currency);
+
+ if (strcmp(invoice->currency, administration_get_default_currency()) != 0) {
+ ImGui::TableNextRow();
+ ImGui::TableSetBgColor(ImGuiTableBgTarget_RowBg0, IM_COL32(50, 50, 50, 255));
+
+ ImGui::TableSetColumnIndex(2);
+ ImGui::Text("%s %s", localize("invoice.form.finalSettlement"), administration_get_default_currency());
+
+ ImGui::TableSetColumnIndex(4);
+ ImGui::InputFloat("##final_allowance", &invoice->allowance, 0.0f, 0.0f, "%.2f");
+ ImGui::SameLine();
+ ImGui::Text("%s", administration_get_default_currency());
+
+ ImGui::TableSetColumnIndex(5);
+ ImGui::InputFloat("##final_net", &invoice->net, 0.0f, 0.0f, "%.2f");
+ ImGui::SameLine();
+ ImGui::Text("%s", administration_get_default_currency());
+
+ ImGui::TableSetColumnIndex(7);
+ ImGui::InputFloat("##final_tax", &invoice->tax, 0.0f, 0.0f, "%.2f");
+ ImGui::SameLine();
+ ImGui::Text("%s", administration_get_default_currency());
+
+ ImGui::TableSetColumnIndex(8);
+ ImGui::InputFloat("##final_total", &invoice->total, 0.0f, 0.0f, "%.2f");
+ ImGui::SameLine();
+ ImGui::Text("%s", administration_get_default_currency());
+ }
ImGui::EndTable();
}
diff --git a/src/ui/ui_invoices.cpp b/src/ui/ui_invoices.cpp
index f022509..6db7054 100644
--- a/src/ui/ui_invoices.cpp
+++ b/src/ui/ui_invoices.cpp
@@ -223,7 +223,7 @@ static void draw_invoice_items_form(invoice* invoice)
ImGui::PopItemWidth();
ImGui::TableSetColumnIndex(4);
- ImGui::InputFloat("##discount", &item.discount, 0.0f, 0.0f, "%.0f");
+ ImGui::InputFloat("##discount", &item.discount, 0.0f, 0.0f, "%.2f");
ImGui::SameLine();
// Toggle between currency and %
@@ -266,13 +266,41 @@ static void draw_invoice_items_form(invoice* invoice)
ImGui::TableSetBgColor(ImGuiTableBgTarget_RowBg0, IM_COL32(70, 70, 70, 255));
ImGui::TableSetColumnIndex(5);
- ImGui::Text("%.2f %s", invoice->net, invoice->currency);
+ ImGui::Text("%.2f %s", invoice->orig_net, invoice->currency);
ImGui::TableSetColumnIndex(7);
- ImGui::Text("%.2f %s", invoice->tax, invoice->currency);
+ ImGui::Text("%.2f %s", invoice->orig_tax, invoice->currency);
ImGui::TableSetColumnIndex(8);
- ImGui::Text("%.2f %s", invoice->total, invoice->currency);
+ ImGui::Text("%.2f %s", invoice->orig_total, invoice->currency);
+
+ if (strcmp(invoice->currency, administration_get_default_currency()) != 0) {
+ ImGui::TableNextRow();
+ ImGui::TableSetBgColor(ImGuiTableBgTarget_RowBg0, IM_COL32(50, 50, 50, 255));
+
+ ImGui::TableSetColumnIndex(2);
+ ImGui::Text("%s %s", localize("invoice.form.finalSettlement"), administration_get_default_currency());
+
+ ImGui::TableSetColumnIndex(4);
+ ImGui::InputFloat("##final_allowance", &invoice->allowance, 0.0f, 0.0f, "%.2f");
+ ImGui::SameLine();
+ ImGui::Text("%s", administration_get_default_currency());
+
+ ImGui::TableSetColumnIndex(5);
+ ImGui::InputFloat("##final_net", &invoice->net, 0.0f, 0.0f, "%.2f");
+ ImGui::SameLine();
+ ImGui::Text("%s", administration_get_default_currency());
+
+ ImGui::TableSetColumnIndex(7);
+ ImGui::InputFloat("##final_tax", &invoice->tax, 0.0f, 0.0f, "%.2f");
+ ImGui::SameLine();
+ ImGui::Text("%s", administration_get_default_currency());
+
+ ImGui::TableSetColumnIndex(8);
+ ImGui::InputFloat("##final_total", &invoice->total, 0.0f, 0.0f, "%.2f");
+ ImGui::SameLine();
+ ImGui::Text("%s", administration_get_default_currency());
+ }
ImGui::EndTable();
}