summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/administration.cpp18
-rw-r--r--src/locales/en.cpp37
-rw-r--r--src/ui/ui_invoices.cpp55
3 files changed, 74 insertions, 36 deletions
diff --git a/src/administration.cpp b/src/administration.cpp
index ace1383..66e4a46 100644
--- a/src/administration.cpp
+++ b/src/administration.cpp
@@ -293,6 +293,7 @@ void administration_create()
g_administration.next_sequence_number = 1;
list_init(&g_administration.invoices);
+ list_init(&g_administration.expenses);
list_init(&g_administration.contacts);
list_init(&g_administration.projects);
list_init(&g_administration.tax_brackets);
@@ -318,6 +319,7 @@ static void administration_destroy_list(list_t *list)
void administration_destroy()
{
administration_destroy_list(&g_administration.invoices);
+ administration_destroy_list(&g_administration.expenses);
administration_destroy_list(&g_administration.contacts);
administration_destroy_list(&g_administration.projects);
administration_destroy_list(&g_administration.tax_brackets);
@@ -1033,14 +1035,14 @@ char* administration_invoice_get_status_string(invoice* invoice)
{
switch(invoice->status)
{
- case invoice_status::INVOICE_CONCEPT: return "invoice.state.concept";
- case invoice_status::INVOICE_SENT: return "invoice.state.sent";
- case invoice_status::INVOICE_REMINDED: return "invoice.state.reminded";
- case invoice_status::INVOICE_PAID: return "invoice.state.paid";
- case invoice_status::INVOICE_EXPIRED: return "invoice.state.expired";
- case invoice_status::INVOICE_CANCELLED: return "invoice.state.cancelled";
- case invoice_status::INVOICE_REFUNDED: return "invoice.state.refunded";
- case invoice_status::INVOICE_CORRECTED: return "invoice.state.corrected";
+ case invoice_status::INVOICE_CONCEPT: return "invoice.status.concept";
+ case invoice_status::INVOICE_SENT: return "invoice.status.sent";
+ case invoice_status::INVOICE_REMINDED: return "invoice.status.reminded";
+ case invoice_status::INVOICE_PAID: return "invoice.status.paid";
+ case invoice_status::INVOICE_EXPIRED: return "invoice.status.expired";
+ case invoice_status::INVOICE_CANCELLED: return "invoice.status.cancelled";
+ case invoice_status::INVOICE_REFUNDED: return "invoice.status.refunded";
+ case invoice_status::INVOICE_CORRECTED: return "invoice.status.corrected";
default: assert(0); break;
}
return "";
diff --git a/src/locales/en.cpp b/src/locales/en.cpp
index 5aba4e2..9badbc1 100644
--- a/src/locales/en.cpp
+++ b/src/locales/en.cpp
@@ -114,6 +114,43 @@ locale_entry en_locales[] = {
{"settings.vat.table.rates", "Rates"},
{"settings.costcenters.table.code", "Code"},
{"settings.costcenters.table.description", "Description"},
+
+ // Invoice strings.
+ {"invoice.form.costcenter", "Cost center"},
+ {"invoice.form.project", "Project"},
+ {"invoice.form.invoicenumber", "Invoice number"},
+ {"invoice.form.supplier", "Supplier"},
+ {"invoice.form.issuedat", "Invoice issued at"},
+ {"invoice.form.expiresat", "Invoice expires at"},
+ {"invoice.form.deliveredat", "Product/service delivered at"},
+ {"invoice.form.billinginformation", "Billing information"},
+ {"invoice.form.triangulation", "Shipping information differs from billing information (triangulation)"},
+ {"invoice.form.shippinginformation", "Shipping information"},
+ {"invoice.form.add", "+ Billing item"},
+ {"invoice.form.currency", "Currency"},
+
+ {"invoice.table.invoicenumber", "Invoice number"},
+ {"invoice.table.amount", "Amount"},
+ {"invoice.table.description", "Description"},
+ {"invoice.table.price", "Price"},
+ {"invoice.table.discount", "Discount"},
+ {"invoice.table.net", "Net"},
+ {"invoice.table.tax%", "Tax %"},
+ {"invoice.table.tax", "Tax"},
+ {"invoice.table.total", "Total"},
+ {"invoice.table.customer", "Customer"},
+ {"invoice.table.addressee", "Addressee"},
+ {"invoice.table.issuedat", "Issued At"},
+ {"invoice.table.status", "Status"},
+
+ {"invoice.status.concept", "Concept"},
+ {"invoice.status.sent", "Sent"},
+ {"invoice.status.reminded", "Reminded"},
+ {"invoice.status.paid", "Paid"},
+ {"invoice.status.expired", "Expired"},
+ {"invoice.status.cancelled", "Cancelled"},
+ {"invoice.status.refunded", "Refunded"},
+ {"invoice.status.corrected", "Corrected"},
};
const int en_locale_count = sizeof(en_locales) / sizeof(en_locales[0]); \ No newline at end of file
diff --git a/src/ui/ui_invoices.cpp b/src/ui/ui_invoices.cpp
index 320392a..5dd2286 100644
--- a/src/ui/ui_invoices.cpp
+++ b/src/ui/ui_invoices.cpp
@@ -176,7 +176,7 @@ void draw_costcenter_selector(char* costcenter_id)
}
int selected_costcenter_index = -1;
- if (ImGui::BeginCombo("Cost center", selected_costcenter == NULL ? NULL : localize(selected_costcenter->description)))
+ if (ImGui::BeginCombo(localize("invoice.form.costcenter"), selected_costcenter == NULL ? NULL : localize(selected_costcenter->description)))
{
for (u32 n = 0; n < costcenter_count; n++)
{
@@ -213,7 +213,7 @@ void draw_project_selector(char* project_id)
}
int selected_project_index = -1;
- if (ImGui::BeginCombo("Project", selected_project == NULL ? NULL : selected_project->description))
+ if (ImGui::BeginCombo(localize("invoice.form.project"), selected_project == NULL ? NULL : selected_project->description))
{
for (u32 n = 0; n < project_count; n++)
{
@@ -238,16 +238,15 @@ static void draw_invoice_items_form(invoice* invoice)
if (ImGui::BeginTable("TableBillingItems", 9, ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg)) {
ImGui::TableSetupColumn("##actions", ImGuiTableColumnFlags_WidthFixed, 20);
- ImGui::TableSetupColumn("Amount", ImGuiTableColumnFlags_WidthFixed, 80);
- ImGui::TableSetupColumn("Description");
- ImGui::TableSetupColumn("Price", ImGuiTableColumnFlags_WidthFixed, 100);
- ImGui::TableSetupColumn("Discount", ImGuiTableColumnFlags_WidthFixed, 100);
- ImGui::TableSetupColumn("Net", ImGuiTableColumnFlags_WidthFixed, 100);
- ImGui::TableSetupColumn("Tax %", ImGuiTableColumnFlags_WidthFixed, 120);
- ImGui::TableSetupColumn("Tax", ImGuiTableColumnFlags_WidthFixed, 100);
- ImGui::TableSetupColumn("Total", ImGuiTableColumnFlags_WidthFixed, 100);
-
- //ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthFixed, 100);
+ ImGui::TableSetupColumn(localize("invoice.table.amount"), ImGuiTableColumnFlags_WidthFixed, 80);
+ ImGui::TableSetupColumn(localize("invoice.table.description"));
+ ImGui::TableSetupColumn(localize("invoice.table.price"), ImGuiTableColumnFlags_WidthFixed, 100);
+ ImGui::TableSetupColumn(localize("invoice.table.discount"), ImGuiTableColumnFlags_WidthFixed, 100);
+ ImGui::TableSetupColumn(localize("invoice.table.net"), ImGuiTableColumnFlags_WidthFixed, 100);
+ ImGui::TableSetupColumn(localize("invoice.table.tax%"), ImGuiTableColumnFlags_WidthFixed, 120);
+ ImGui::TableSetupColumn(localize("invoice.table.tax"), ImGuiTableColumnFlags_WidthFixed, 100);
+ ImGui::TableSetupColumn(localize("invoice.table.total"), ImGuiTableColumnFlags_WidthFixed, 100);
+
ImGui::TableHeadersRow();
for (u32 i = 0; i < invoice_items; i++)
@@ -360,10 +359,10 @@ static void draw_invoice_form(invoice* buffer, bool viewing_only = false)
//ImGui::InputText(localize("contact.form.identifier"), buffer->id, IM_ARRAYSIZE(buffer->id));
// 2. Sequential number
- ImGui::Text("Invoice number: %s", buffer->sequential_number);
+ ImGui::Text("%s: %s", localize("invoice.form.invoicenumber"), buffer->sequential_number);
// 3. Supplier (you)
- ImGui::Text("Supplier: %s", buffer->supplier.name);
+ ImGui::Text("%s: %s", localize("invoice.form.supplier"), buffer->supplier.name);
// 4. Invoice issued at
tm issued_at_date = *gmtime(&buffer->issued_at);
@@ -372,7 +371,7 @@ static void draw_invoice_form(invoice* buffer, bool viewing_only = false)
buffer->issued_at = mktime(&issued_at_date);
}
ImGui::SameLine();
- ImGui::Text("Invoice issued at");
+ ImGui::Text(localize("invoice.form.issuedat"));
// 5. Invoice expires at
tm expires_at_date = *gmtime(&buffer->expires_at);
@@ -381,7 +380,7 @@ static void draw_invoice_form(invoice* buffer, bool viewing_only = false)
buffer->expires_at = mktime(&expires_at_date);
}
ImGui::SameLine();
- ImGui::Text("Invoice expires at");
+ ImGui::Text(localize("invoice.form.expiresat"));
if (!viewing_only) ImGui::EndDisabled();
// 6. Product/service delivered at
@@ -391,12 +390,12 @@ static void draw_invoice_form(invoice* buffer, bool viewing_only = false)
buffer->delivered_at = mktime(&delivered_at_date);
}
ImGui::SameLine();
- ImGui::Text("Product/service delivered at");
+ ImGui::Text(localize("invoice.form.deliveredat"));
ImGui::Separator();
// 7. Customer information
- ImGui::Text("Billing information");
+ ImGui::Text(localize("invoice.form.billinginformation"));
bool on_autocomplete;
draw_contact_form_ex(&buffer->customer, false, true, &on_autocomplete);
@@ -416,10 +415,10 @@ static void draw_invoice_form(invoice* buffer, bool viewing_only = false)
}
// 8. (optional) shipping address.
- ImGui::Checkbox("Shipping information differs from billing information (triangulation)", &buffer->is_triangulation);
+ ImGui::Checkbox(localize("invoice.form.triangulation"), &buffer->is_triangulation);
if (buffer->is_triangulation) {
ImGui::Spacing();
- ImGui::Text("Shipping information");
+ ImGui::Text(localize("invoice.form.shippinginformation"));
draw_contact_form_ex(&buffer->addressee, 0,0,0);
}
ImGui::Separator();
@@ -438,7 +437,7 @@ static void draw_invoice_form(invoice* buffer, bool viewing_only = false)
// 11. New billing item button.
bool max_items_reached = administration_billing_item_count(buffer) >= MAX_BILLING_ITEMS;
if (max_items_reached) ImGui::BeginDisabled();
- if (ImGui::Button(localize("+ Billing item")))
+ if (ImGui::Button(localize(localize("invoice.form.add"))))
{
billing_item item = administration_billing_item_create_empty();
administration_billing_item_add_to_invoice(buffer, item);
@@ -447,7 +446,7 @@ static void draw_invoice_form(invoice* buffer, bool viewing_only = false)
// 12. Dropdown for invoice currency.
ImGui::SameLine();
- ImGui::Text("| Currency: ");
+ ImGui::Text("| %s: ", localize("invoice.form.currency"));
ImGui::SameLine();
if (draw_currency_selector(buffer->currency))
{
@@ -500,12 +499,12 @@ static void ui_draw_invoices_list()
if (ImGui::BeginTable("TableInvoices", 7, ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg)) {
- ImGui::TableSetupColumn("Invoice Number", ImGuiTableColumnFlags_WidthFixed, 120);
- ImGui::TableSetupColumn("Customer");
- ImGui::TableSetupColumn("Addressee");
- ImGui::TableSetupColumn("Issued At");
- ImGui::TableSetupColumn("Total");
- ImGui::TableSetupColumn("Status");
+ ImGui::TableSetupColumn(localize("invoice.table.invoicenumber"), ImGuiTableColumnFlags_WidthFixed, 120);
+ ImGui::TableSetupColumn(localize("invoice.table.customer"));
+ ImGui::TableSetupColumn(localize("invoice.table.addressee"));
+ ImGui::TableSetupColumn(localize("invoice.table.issuedat"));
+ ImGui::TableSetupColumn(localize("invoice.table.total"));
+ ImGui::TableSetupColumn(localize("invoice.table.status"));
ImGui::TableSetupColumn("");
ImGui::TableHeadersRow();