diff options
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/ui_contacts.cpp | 3 | ||||
| -rw-r--r-- | src/ui/ui_invoices.cpp | 101 |
2 files changed, 66 insertions, 38 deletions
diff --git a/src/ui/ui_contacts.cpp b/src/ui/ui_contacts.cpp index 7d03ba6..eca6ee3 100644 --- a/src/ui/ui_contacts.cpp +++ b/src/ui/ui_contacts.cpp @@ -77,6 +77,8 @@ void ui_setup_contacts() void draw_contact_form_ex(contact* buffer, bool viewing_only = false, bool with_autocomplete = false, bool* on_autocomplete = 0) { + ImGui::PushID(buffer); + ImGui::Spacing(); float widthAvailable = ImGui::GetContentRegionAvail().x; @@ -152,6 +154,7 @@ void draw_contact_form_ex(contact* buffer, bool viewing_only = false, bool with_ ImGui::InputTextWithHint(localize("contact.form.bankaccount"), localize("contact.form.bankaccount"), buffer->bank_account, IM_ARRAYSIZE(buffer->bank_account)); if (viewing_only) ImGui::EndDisabled(); + ImGui::PopID(); } void draw_contact_form(contact* buffer, bool viewing_only = false) diff --git a/src/ui/ui_invoices.cpp b/src/ui/ui_invoices.cpp index 036d85b..8c0943c 100644 --- a/src/ui/ui_invoices.cpp +++ b/src/ui/ui_invoices.cpp @@ -225,14 +225,15 @@ static void draw_invoice_items_form(invoice* invoice) billing_item* buffer = (billing_item*)malloc(sizeof(billing_item) * invoice_items); administration_get_all_billing_items_for_invoice(invoice, buffer); - if (ImGui::BeginTable("TableBillingItems", 8, ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg)) { + 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, 170); + ImGui::TableSetupColumn("Tax %", ImGuiTableColumnFlags_WidthFixed, 120); ImGui::TableSetupColumn("Tax", ImGuiTableColumnFlags_WidthFixed, 100); ImGui::TableSetupColumn("Total", ImGuiTableColumnFlags_WidthFixed, 100); @@ -246,8 +247,14 @@ static void draw_invoice_items_form(invoice* invoice) ImGui::TableNextRow(); ImGui::PushID(i); + + ImGui::TableSetColumnIndex(0); + if (ImGui::Button("X")) + { + administration_remove_billing_item_from_invoice(invoice, item); + } - ImGui::TableSetColumnIndex(0); + ImGui::TableSetColumnIndex(1); ImGui::InputFloat("##amount", &item.amount, 0.0f, 0.0f, "%.0f"); ImGui::SameLine(); @@ -268,13 +275,17 @@ static void draw_invoice_items_form(invoice* invoice) } } - ImGui::TableSetColumnIndex(1); + ImGui::TableSetColumnIndex(2); + ImGui::PushItemWidth(-1); ImGui::InputText("##desc", item.description, IM_ARRAYSIZE(item.description)); + ImGui::PopItemWidth(); - ImGui::TableSetColumnIndex(2); + ImGui::TableSetColumnIndex(3); + ImGui::PushItemWidth(-1); ImGui::InputFloat("##price", &item.net_per_item, 0.0f, 0.0f, "%.2f"); + ImGui::PopItemWidth(); - ImGui::TableSetColumnIndex(3); + ImGui::TableSetColumnIndex(4); ImGui::InputFloat("##discount", &item.discount, 0.0f, 0.0f, "%.0f"); ImGui::SameLine(); @@ -295,16 +306,18 @@ static void draw_invoice_items_form(invoice* invoice) } } - ImGui::TableSetColumnIndex(4); + ImGui::TableSetColumnIndex(5); ImGui::Text("%.2f %s", item.net, item.currency); - ImGui::TableSetColumnIndex(5); + ImGui::TableSetColumnIndex(6); + ImGui::PushItemWidth(-1); draw_tax_bracket_selector(item.tax_bracket_id); + ImGui::PopItemWidth(); - ImGui::TableSetColumnIndex(6); + ImGui::TableSetColumnIndex(7); ImGui::Text("%.2f %s", item.tax, item.currency); - ImGui::TableSetColumnIndex(7); + ImGui::TableSetColumnIndex(8); ImGui::Text("%.2f %s", item.total, item.currency); ImGui::PopID(); @@ -312,6 +325,18 @@ static void draw_invoice_items_form(invoice* invoice) administration_update_billing_item_of_invoice(invoice, item); } + ImGui::TableNextRow(); + ImGui::TableSetBgColor(ImGuiTableBgTarget_RowBg0, IM_COL32(70, 70, 70, 255)); + + ImGui::TableSetColumnIndex(5); + ImGui::Text("%.2f %s", invoice->net, invoice->currency); + + ImGui::TableSetColumnIndex(7); + ImGui::Text("%.2f %s", invoice->tax, invoice->currency); + + ImGui::TableSetColumnIndex(8); + ImGui::Text("%.2f %s", invoice->total, invoice->currency); + ImGui::EndTable(); } } @@ -323,7 +348,6 @@ void draw_invoice_form(invoice* buffer, bool viewing_only = false) // 1. Identifier //ImGui::SetNextItemWidth(widthAvailable*0.2f); //ImGui::InputText(localize("contact.form.identifier"), buffer->id, IM_ARRAYSIZE(buffer->id)); - if (!viewing_only) ImGui::EndDisabled(); // 2. Sequential number ImGui::Text("Invoice number: %s", buffer->sequential_number); @@ -332,7 +356,6 @@ void draw_invoice_form(invoice* buffer, bool viewing_only = false) ImGui::Text("Supplier: %s", buffer->supplier.name); // 4. Invoice issued at - ImGui::BeginDisabled(); tm issued_at_date = *gmtime(&buffer->issued_at); if (ImGui::DatePicker("##issuedAt", issued_at_date)) { @@ -340,10 +363,8 @@ void draw_invoice_form(invoice* buffer, bool viewing_only = false) } ImGui::SameLine(); ImGui::Text("Invoice issued at"); - ImGui::EndDisabled(); // 5. Invoice expires at - ImGui::BeginDisabled(); tm expires_at_date = *gmtime(&buffer->expires_at); if (ImGui::DatePicker("##expiresAt", expires_at_date)) { @@ -374,22 +395,21 @@ void draw_invoice_form(invoice* buffer, bool viewing_only = false) } // 8. (optional) shipping address. - static bool shipping_is_billing_addr = true; - ImGui::Checkbox("Shipping information is billing information", &shipping_is_billing_addr); - if (!shipping_is_billing_addr) { + ImGui::Checkbox("Shipping information differs from billing information (triangulation)", &buffer->is_triangulation); + if (buffer->is_triangulation) { ImGui::Spacing(); ImGui::Text("Shipping information"); - ui_draw_address_form(&buffer->shipping_address); + draw_contact_form_ex(&buffer->addressee, 0,0,0); } ImGui::Separator(); // 9. Project selection - draw_project_selector(buffer->project_id); + //draw_project_selector(buffer->project_id); // 10. Cost center selection - draw_costcenter_selector(buffer->cost_center_id); + //draw_costcenter_selector(buffer->cost_center_id); + //ImGui::Separator(); - ImGui::Separator(); ImGui::Spacing(); ImGui::Spacing(); ImGui::Spacing(); @@ -412,12 +432,8 @@ void draw_invoice_form(invoice* buffer, bool viewing_only = false) // 13. Invoice items form draw_invoice_items_form(buffer); - - ImGui::Separator(); - - // 14. Totals overview. - if (viewing_only) ImGui::EndDisabled(); + //if (viewing_only) ImGui::EndDisabled(); } void draw_invoices_list() @@ -432,23 +448,32 @@ void draw_invoices_list() } } +static void ui_draw_invoice_create() +{ + if (ImGui::Button(localize("form.back"))) { + current_view_state = view_state::LIST; + } + + draw_invoice_form(&active_invoice); + + bool can_save = administration_is_invoice_valid(&active_invoice); + if (!can_save) ImGui::BeginDisabled(); + + ImGui::Spacing(); + if (ImGui::Button(localize("form.save"))) { + administration_add_invoice(&active_invoice); + current_view_state = view_state::LIST; + } + + if (!can_save) ImGui::EndDisabled(); +} + void ui_draw_invoices() { switch(current_view_state) { case view_state::LIST: draw_invoices_list(); break; - case view_state::CREATE: - - if (ImGui::Button(localize("form.back"))) { - current_view_state = view_state::LIST; - } - draw_invoice_form(&active_invoice); - - //if () { - //administration_create_invoice(active_invoice); - //current_view_state = view_state::LIST; - //} - break; + case view_state::CREATE: ui_draw_invoice_create(); break; case view_state::EDIT: break; case view_state::VIEW: break; } |
