summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrikboy@gmail.com>2025-08-10 14:38:09 +0200
committerAldrik Ramaekers <aldrikboy@gmail.com>2025-08-10 14:38:09 +0200
commit0327e06b59aa20dbfec137b2287b950b5cb84960 (patch)
tree468a884cc65647f2f6b980a97dd010c9d0470ef6 /src
parent7a29dfbc37f2440b7e5461e905651b25615d2d02 (diff)
refactors, comments, documentation
Diffstat (limited to 'src')
-rw-r--r--src/administration.cpp3
-rw-r--r--src/locales/en.cpp3
-rw-r--r--src/ui/ui_contacts.cpp56
3 files changed, 46 insertions, 16 deletions
diff --git a/src/administration.cpp b/src/administration.cpp
index 8a0b104..c6ece04 100644
--- a/src/administration.cpp
+++ b/src/administration.cpp
@@ -203,6 +203,9 @@ void administration_create()
list_init(&g_administration.cost_centers);
strops_copy(g_administration.path, "", sizeof(g_administration.path));
+ snprintf(g_administration.company_info.id, sizeof(g_administration.company_info.id), "C/%d", administration_create_id());
+ g_administration.next_id++;
+
administration_create_default_tax_brackets();
administration_create_default_cost_centers();
}
diff --git a/src/locales/en.cpp b/src/locales/en.cpp
index 3c6bafd..5aba4e2 100644
--- a/src/locales/en.cpp
+++ b/src/locales/en.cpp
@@ -84,6 +84,9 @@ locale_entry en_locales[] = {
{"contact.form.address1", "Street name + house number, appt. number, etc."},
{"contact.form.address2", "Zip, city"},
{"contact.form.country", "Country"},
+ {"contact.form.type", "Customer type"},
+ {"contact.form.type.business", "Business"},
+ {"contact.form.type.consumer", "Consumer"},
{"contact.form.taxnumber", "Tax number"},
{"contact.form.businessnumber", "Business number"},
{"contact.form.email", "Email address"},
diff --git a/src/ui/ui_contacts.cpp b/src/ui/ui_contacts.cpp
index e00fb78..0ade9b0 100644
--- a/src/ui/ui_contacts.cpp
+++ b/src/ui/ui_contacts.cpp
@@ -31,29 +31,31 @@ bool draw_contact_form(contact* buffer, bool back_button_enabled = true, bool vi
}
}
ImGui::Spacing();
-
- ImGui::BeginDisabled();
-
float widthAvailable = ImGui::GetContentRegionAvail().x;
- ImGui::SetNextItemWidth(widthAvailable*0.2f);
- ImGui::InputText(localize("contact.form.identifier"), buffer->id, IM_ARRAYSIZE(buffer->id));
- if (!viewing_only) ImGui::EndDisabled();
+ // 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. Full name
ImGui::SetNextItemWidth(widthAvailable*0.5f);
ImGui::InputTextWithHint(localize("contact.form.fullname"), localize("contact.form.fullname"), buffer->name, IM_ARRAYSIZE(buffer->name));
ImGui::SameLine();ui_helper_draw_required_tag();
+ // 3. Address line 1
ImGui::SetNextItemWidth(widthAvailable*0.5f);
ImGui::InputTextWithHint(localize("contact.form.address1"), localize("contact.form.address1"), buffer->address.address1, IM_ARRAYSIZE(buffer->address.address1));
ImGui::SameLine();ui_helper_draw_required_tag();
+ // 4. Address line 2
ImGui::SetNextItemWidth(widthAvailable*0.5f);
ImGui::InputTextWithHint(localize("contact.form.address2"), localize("contact.form.address2"), buffer->address.address2, IM_ARRAYSIZE(buffer->address.address2));
ImGui::SameLine();ui_helper_draw_required_tag();
+ // 5. Country dropdown.
ImGui::SetNextItemWidth(widthAvailable*0.5f);
-
const char* countries[] = { localize("country.AT"),localize("country.BE"),localize("country.BG"),localize("country.HR"),localize("country.CY"),localize("country.CZ"),localize("country.DK"),localize("country.EE"),localize("country.FI"),localize("country.FR"),localize("country.DE"),localize("country.GR"),localize("country.HU"),localize("country.IE"),localize("country.IT"),localize("country.LV"),localize("country.LT"),localize("country.LU"),localize("country.MT"),localize("country.NL"),localize("country.PL"),localize("country.PT"),localize("country.RO"),localize("country.SK"),localize("country.SI"),localize("country.ES"),localize("country.SE") };
const char* country_codes[] = {
"AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR",
@@ -64,7 +66,7 @@ bool draw_contact_form(contact* buffer, bool back_button_enabled = true, bool vi
if (selected_country == 0) {
for (int i = 0; i < country_count; i++)
{
- if (strcmp(country_codes[i], buffer->address.country) == 0)
+ if (strcmp(country_codes[i], buffer->address.country_code) == 0)
{
selected_country = countries[i];
break;
@@ -86,22 +88,40 @@ bool draw_contact_form(contact* buffer, bool back_button_enabled = true, bool vi
ImGui::EndCombo();
}
if (selected_country_index != -1) {
- strops_copy(buffer->address.country, country_codes[selected_country_index], IM_ARRAYSIZE(buffer->address.country));
+ strops_copy(buffer->address.country_code, country_codes[selected_country_index], IM_ARRAYSIZE(buffer->address.country_code));
}
ImGui::SameLine();ui_helper_draw_required_tag();
-
- ImGui::SetNextItemWidth(widthAvailable*0.5f);
- ImGui::InputTextWithHint(localize("contact.form.taxnumber"), localize("contact.form.taxnumber"), buffer->taxid, IM_ARRAYSIZE(buffer->taxid));
-
+
+ // 6. Contact type dropdown.
ImGui::SetNextItemWidth(widthAvailable*0.5f);
- ImGui::InputTextWithHint(localize("contact.form.businessnumber"), localize("contact.form.businessnumber"), buffer->businessid, IM_ARRAYSIZE(buffer->businessid));
-
+ const char* customer_types[2] = { localize("contact.form.type.business"), localize("contact.form.type.consumer") };
+ int currentItem = static_cast<int>(buffer->type);
+ if (ImGui::Combo(localize("contact.form.type"), &currentItem, customer_types, IM_ARRAYSIZE(customer_types)))
+ {
+ buffer->type = static_cast<contact_type>(currentItem);
+ }
+
+ // Fields only required for businesses.
+ if (buffer->type == contact_type::CONTACT_BUSINESS)
+ {
+ // 7. Tax number
+ ImGui::SetNextItemWidth(widthAvailable*0.5f);
+ ImGui::InputTextWithHint(localize("contact.form.taxnumber"), localize("contact.form.taxnumber"), buffer->taxid, IM_ARRAYSIZE(buffer->taxid));
+
+ // 8. Business number / Chamber of commerce
+ ImGui::SetNextItemWidth(widthAvailable*0.5f);
+ ImGui::InputTextWithHint(localize("contact.form.businessnumber"), localize("contact.form.businessnumber"), buffer->businessid, IM_ARRAYSIZE(buffer->businessid));
+ }
+
+ // 9. Email
ImGui::SetNextItemWidth(widthAvailable*0.5f);
ImGui::InputTextWithHint(localize("contact.form.email"), localize("contact.form.email"), buffer->email, IM_ARRAYSIZE(buffer->email));
+ // 10. Phone number
ImGui::SetNextItemWidth(widthAvailable*0.5f);
ImGui::InputTextWithHint(localize("contact.form.phonenumber"), localize("contact.form.phonenumber"), buffer->phone_number, IM_ARRAYSIZE(buffer->phone_number));
+ // 11. Bank account.
ImGui::SetNextItemWidth(widthAvailable*0.5f);
ImGui::InputTextWithHint(localize("contact.form.bankaccount"), localize("contact.form.bankaccount"), buffer->bank_account, IM_ARRAYSIZE(buffer->bank_account));
@@ -109,7 +129,7 @@ bool draw_contact_form(contact* buffer, bool back_button_enabled = true, bool vi
if (!viewing_only) {
bool can_save = strlen(buffer->name) > 0 && strlen(buffer->address.address1) > 0 &&
- strlen(buffer->address.address2) > 0 && strlen(buffer->address.country) > 0;
+ strlen(buffer->address.address2) > 0 && strlen(buffer->address.country_code) > 0;
if (!can_save) ImGui::BeginDisabled();
// Save button
@@ -132,6 +152,7 @@ static void draw_contact_list()
s32 max_page = (administration_get_contact_count() + items_per_page - 1) / items_per_page;
if (max_page == 0) max_page = 1;
+ // Table header controls: create button and pagination.
if (ImGui::Button(localize("form.create")))
{
current_view_state = view_state::CREATE;
@@ -142,6 +163,7 @@ static void draw_contact_list()
if (current_page >= max_page-1) current_page = max_page-1;
if (current_page < 0) current_page = 0;
+ // Navigate to prev page button.
ImGui::SameLine();
bool enable_prev = current_page > 0;
if (!enable_prev) ImGui::BeginDisabled();
@@ -151,6 +173,7 @@ static void draw_contact_list()
ImGui::SameLine();
ImGui::Text("(%d/%d)", current_page+1, max_page);
+ // Navigate to next page button.
ImGui::SameLine();
bool enable_next = current_page < max_page-1;
if (!enable_next) ImGui::BeginDisabled();
@@ -206,6 +229,7 @@ static void draw_contact_list()
}
}
+ // Confirmation popup before contact is deleted definitively.
if (ImGui::BeginPopupModal("ConfirmDeletePopup", nullptr, ImGuiWindowFlags_AlwaysAutoResize|ImGuiWindowFlags_NoMove|ImGuiWindowFlags_NoTitleBar)) {
ImGui::Text(localize("form.confirmDelete"));
ImGui::Separator();