summaryrefslogtreecommitdiff
path: root/src/ui/ui_invoices.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/ui_invoices.cpp')
-rw-r--r--src/ui/ui_invoices.cpp81
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;