diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/administration.cpp | 23 | ||||
| -rw-r--r-- | src/locales/en.cpp | 1 | ||||
| -rw-r--r-- | src/ui/ui_expenses.cpp | 36 | ||||
| -rw-r--r-- | src/ui/ui_invoices.cpp | 36 |
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(); } |
