diff options
Diffstat (limited to 'src/ui/ui_invoices.cpp')
| -rw-r--r-- | src/ui/ui_invoices.cpp | 81 |
1 files changed, 58 insertions, 23 deletions
diff --git a/src/ui/ui_invoices.cpp b/src/ui/ui_invoices.cpp index fe4f5a8..8ee099c 100644 --- a/src/ui/ui_invoices.cpp +++ b/src/ui/ui_invoices.cpp @@ -1,4 +1,7 @@ #include <stdio.h> +#include <time.h> + +#include "ImGuiDatePicker/ImGuiDatePicker.hpp" #include "strops.hpp" #include "ui.hpp" @@ -9,7 +12,7 @@ static view_state current_view_state = view_state::LIST; static invoice active_invoice; -extern void draw_contact_form(contact* buffer, bool viewing_only = false); +void draw_contact_form_ex(contact* buffer, bool viewing_only = false, bool with_autocomplete = false, bool* on_autocomplete = 0); void ui_setup_invoices() { @@ -17,23 +20,16 @@ void ui_setup_invoices() active_invoice = administration_create_empty_invoice(); } -bool draw_invoice_form(invoice* buffer, bool back_button_enabled = true, bool viewing_only = false) +void draw_invoice_form(invoice* buffer, bool viewing_only = false) { - if (back_button_enabled) - { - if (ImGui::Button(localize("form.back"))) { - current_view_state = view_state::LIST; - return false; - } - } - ImGui::Spacing(); - float widthAvailable = ImGui::GetContentRegionAvail().x; + //float widthAvailable = ImGui::GetContentRegionAvail().x; + ImGui::BeginDisabled(); // 1. Identifier - //ImGui::BeginDisabled(); //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); @@ -42,20 +38,54 @@ bool draw_invoice_form(invoice* buffer, bool back_button_enabled = true, bool vi ImGui::Separator(); + // 4. Customer information ImGui::Text("Customer information"); - draw_contact_form(&buffer->customer); - strops_copy(buffer->customer_id, buffer->customer.id, sizeof(buffer->customer_id)); + bool on_autocomplete; + draw_contact_form_ex(&buffer->customer, false, true, &on_autocomplete); + + if (on_autocomplete) { + strops_copy(buffer->customer_id, buffer->customer.id, sizeof(buffer->customer_id)); + } ImGui::Separator(); + // 5. Invoice issued at + ImGui::BeginDisabled(); + tm issued_at_date = *gmtime(&buffer->issued_at); + if (ImGui::DatePicker("##issuedAt", issued_at_date)) + { + buffer->issued_at = mktime(&issued_at_date); + } + ImGui::SameLine(); + ImGui::Text("Invoice issued at"); + ImGui::EndDisabled(); + + // 6. Invoice expires at + ImGui::BeginDisabled(); + tm expires_at_date = *gmtime(&buffer->expires_at); + if (ImGui::DatePicker("##expiresAt", expires_at_date)) + { + buffer->expires_at = mktime(&expires_at_date); + } + ImGui::SameLine(); + ImGui::Text("Invoice expires at"); + ImGui::EndDisabled(); + + // 7. Product/service delivered at + tm delivered_at_date = *gmtime(&buffer->delivered_at); + if (ImGui::DatePicker("##deliveredAt", delivered_at_date)) + { + buffer->delivered_at = mktime(&delivered_at_date); + } + ImGui::SameLine(); + ImGui::Text("Product/service delivered at"); + //ImGui::SetNextItemWidth(widthAvailable*0.5f); //ImGui::InputTextWithHint("Invoice number", "Invoice number", buffer->sequential_number, IM_ARRAYSIZE(buffer->sequential_number)); //ImGui::SameLine();ui_helper_draw_required_tag(); - //if (!viewing_only) ImGui::EndDisabled(); - - return false; + if (viewing_only) ImGui::EndDisabled(); } void draw_invoices_list() @@ -75,12 +105,17 @@ void ui_draw_invoices() switch(current_view_state) { case view_state::LIST: draw_invoices_list(); break; - case view_state::CREATE: - if (draw_invoice_form(&active_invoice)) - { - //administration_create_invoice(active_invoice); + 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::EDIT: break; case view_state::VIEW: break; |
