#include #include #include "ImGuiDatePicker/ImGuiDatePicker.hpp" #include "strops.hpp" #include "ui.hpp" #include "imgui.h" #include "administration.hpp" #include "locales.hpp" static view_state current_view_state = view_state::LIST; static invoice active_invoice; void draw_contact_form_ex(contact* buffer, bool viewing_only = false, bool with_autocomplete = false, bool* on_autocomplete = 0); void ui_setup_invoices() { current_view_state = view_state::LIST; active_invoice = administration_create_empty_invoice(); } void draw_invoice_form(invoice* buffer, bool viewing_only = false) { //float widthAvailable = ImGui::GetContentRegionAvail().x; ImGui::BeginDisabled(); // 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); // 3. Supplier (you) ImGui::Text("Supplier: %s", buffer->supplier.name); ImGui::Separator(); // 4. Customer information ImGui::Text("Customer information"); 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(); } void draw_invoices_list() { // Table header controls: create button and pagination. if (ImGui::Button(localize("form.create"))) { current_view_state = view_state::CREATE; active_invoice = administration_create_empty_invoice(); active_invoice.supplier = administration_get_company_info(); strops_copy(active_invoice.supplier_id, active_invoice.supplier.id, sizeof(active_invoice.supplier_id)); } } 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::EDIT: break; case view_state::VIEW: break; } }