diff options
| author | Aldrik Ramaekers <aldrikboy@gmail.com> | 2025-09-14 15:27:51 +0200 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrikboy@gmail.com> | 2025-09-14 15:27:51 +0200 |
| commit | 76d3082e5b89fe54acaaaaadd201ccc92f4f346e (patch) | |
| tree | 32d5212d87bc0b4cab06bcbe923f7eeb019268b0 /src | |
| parent | 38019a9693375ac6719ffec43bff63774e142387 (diff) | |
tests for administration io
Diffstat (limited to 'src')
| -rw-r--r-- | src/administration.cpp | 75 | ||||
| -rw-r--r-- | src/administration_writer.cpp | 12 | ||||
| -rw-r--r-- | src/main.cpp | 2 | ||||
| -rw-r--r-- | src/ui/ui_settings.cpp | 4 |
4 files changed, 53 insertions, 40 deletions
diff --git a/src/administration.cpp b/src/administration.cpp index 2a18747..c5f863b 100644 --- a/src/administration.cpp +++ b/src/administration.cpp @@ -443,29 +443,11 @@ void administration_set_project_changed_event_callback(project_changed_event ev) // Setup functions. // ======================= -void administration_create_from_file(char* save_file) -{ - strops_copy(g_administration.path, save_file, sizeof(g_administration.path)); - strops_copy(g_administration.program_version, PROGRAM_VERSION, sizeof(g_administration.program_version)); -} - -void administration_create_empty(char* save_file) -{ - g_administration.next_id = 2; - g_administration.next_sequence_number = 1; - - strops_copy(g_administration.path, save_file, sizeof(g_administration.path)); - strops_copy(g_administration.program_version, PROGRAM_VERSION, sizeof(g_administration.program_version)); - administration_company_info_set(administration_contact_create_empty()); - - administration_create_default_tax_brackets(); - administration_create_default_cost_centers(); - - //administration_create_debug_data(); -} +static bool is_initialized = false; void administration_create() { + is_initialized = true; STOPWATCH_START; list_init(&g_administration.invoices); @@ -491,6 +473,7 @@ static void administration_destroy_list(list_t *list) void administration_destroy() { + is_initialized = false; administration_destroy_list(&g_administration.invoices); administration_destroy_list(&g_administration.contacts); administration_destroy_list(&g_administration.projects); @@ -498,6 +481,33 @@ void administration_destroy() administration_destroy_list(&g_administration.cost_centers); } +void administration_create_from_file(char* save_file) +{ + if (is_initialized) administration_destroy(); + administration_create(); + + strops_copy(g_administration.path, save_file, sizeof(g_administration.path)); + strops_copy(g_administration.program_version, PROGRAM_VERSION, sizeof(g_administration.program_version)); +} + +void administration_create_empty(char* save_file) +{ + if (is_initialized) administration_destroy(); + administration_create(); + + g_administration.next_id = 2; + g_administration.next_sequence_number = 1; + + strops_copy(g_administration.path, save_file, sizeof(g_administration.path)); + strops_copy(g_administration.program_version, PROGRAM_VERSION, sizeof(g_administration.program_version)); + administration_company_info_set(administration_contact_create_empty()); + + administration_create_default_tax_brackets(); + administration_create_default_cost_centers(); + + //administration_create_debug_data(); +} + // Other functions. // ======================= bool administration_has_save_path() @@ -1181,6 +1191,16 @@ project administration_project_create_empty() // Tax bracket functions. // ======================= + +country_tax_bracket administration_tax_bracket_create_empty() +{ + country_tax_bracket result; + memset(&result, 0, sizeof(country_tax_bracket)); + snprintf(result.id, sizeof(result.id), "T/%d", administration_create_id()); + snprintf(result.category_code, sizeof(result.category_code), "S"); // S = standard rate. + return result; +} + static bool administration_get_tax_bracket_by_id(country_tax_bracket* buffer, char* id) { assert(buffer); @@ -1201,7 +1221,7 @@ static bool administration_get_tax_bracket_by_id(country_tax_bracket* buffer, ch } // TODO refactor -bool administration_tax_bracket_get_by_id(char* id, country_tax_bracket* buffer) +bool administration_tax_bracket_get_by_id(country_tax_bracket* buffer, char* id) { return administration_get_tax_bracket_by_id(buffer, id); } @@ -1227,7 +1247,6 @@ bool administration_tax_bracket_add(country_tax_bracket data) { country_tax_bracket* tb = (country_tax_bracket*)malloc(sizeof(country_tax_bracket)); memcpy((void*)tb, (void*)&data, sizeof(country_tax_bracket)); - snprintf(tb->id, sizeof(tb->id), "T/%d", administration_create_id()); list_append(&g_administration.tax_brackets, tb); @@ -1303,6 +1322,14 @@ u32 administration_cost_center_count() return list_size(&g_administration.cost_centers); } +cost_center administration_cost_center_create_empty() +{ + cost_center cc; + memset(&cc, 0, sizeof(cost_center)); + snprintf(cc.id, sizeof(cc.id), "E/%d", administration_create_id()); + return cc; +} + bool administration_cost_center_get_by_id(cost_center* buffer, char* id) { assert(buffer); @@ -1384,9 +1411,7 @@ bool administration_cost_center_add(cost_center data) if (found) return false; cost_center* tb = (cost_center*)malloc(sizeof(cost_center)); - snprintf(tb->id, sizeof(tb->id), "E/%d", administration_create_id()); - memcpy(tb->description, data.description, sizeof(tb->description)); - memcpy(tb->code, data.code, sizeof(tb->code)); + memcpy((void*)tb, (void*)&data, sizeof(cost_center)); list_append(&g_administration.cost_centers, tb); g_administration.next_id++; diff --git a/src/administration_writer.cpp b/src/administration_writer.cpp index 779a5f1..4d4f5fe 100644 --- a/src/administration_writer.cpp +++ b/src/administration_writer.cpp @@ -6,7 +6,6 @@ #include <threads.h> #include "log.hpp" -#include "ui.hpp" #include "strops.hpp" #include "administration_reader.hpp" #include "administration_writer.hpp" @@ -15,12 +14,6 @@ mtx_t _save_file_mutex; -bool administration_writer_save_project_blocking(project project); -bool administration_writer_save_cost_center_blocking(cost_center cost); -bool administration_writer_save_tax_bracket_blocking(country_tax_bracket bracket); -bool administration_writer_save_contact_blocking(contact c); -bool administration_writer_save_invoice_blocking(invoice inv); - static void on_administration_data_changed() { administration_writer_save_all_administration_info_blocking(); @@ -370,7 +363,7 @@ bool administration_writer_save_invoice_blocking(invoice inv) billing_item bi = billing_item_buffer[i]; country_tax_bracket bracket; - administration_tax_bracket_get_by_id(bi.tax_bracket_id, &bracket); + administration_tax_bracket_get_by_id(&bracket, bi.tax_bracket_id); strops_replace(billing_item_file_content, billing_item_buf_length, "{{CURRENCY}}", inv.currency); strops_replace(billing_item_file_content, billing_item_buf_length, "{{LINE_ID}}", bi.id); @@ -698,14 +691,11 @@ static int administration_writer_write_all_t(void *arg) { mtx_unlock(&_save_file_mutex); - ui_set_status_loading(false); return result; } bool administration_writer_save_all_async() { - ui_set_status_loading(true); - thrd_t thr; if (thrd_create(&thr, administration_writer_write_all_t, 0) != thrd_success) { return false; diff --git a/src/main.cpp b/src/main.cpp index d579a19..ba7a2e5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -91,7 +91,6 @@ int main() timer_lib_initialize(); administration_writer_create(); - administration_create(); // Main loop bool done = false; @@ -147,7 +146,6 @@ int main() g_SwapChainOccluded = (hr == DXGI_STATUS_OCCLUDED); } - administration_destroy(); administration_writer_destroy(); timer_lib_shutdown(); diff --git a/src/ui/ui_settings.cpp b/src/ui/ui_settings.cpp index dfe6b96..ae251d9 100644 --- a/src/ui/ui_settings.cpp +++ b/src/ui/ui_settings.cpp @@ -98,7 +98,7 @@ static void ui_draw_vat_rates() if (ImGui::Button(btn_name, ImVec2(20,20))) { is_adding_item = true; is_editing_item = false; - memset(&new_tax_bracket, 0, sizeof(new_tax_bracket)); + new_tax_bracket = administration_tax_bracket_create_empty(); strops_copy(new_tax_bracket.country_code, c.country_code, 3); } ImGui::PopStyleVar(); @@ -308,9 +308,9 @@ static void ui_draw_cost_centers() // If not adding a new item already, show create button at bottom of list. if (!is_adding_item && ImGui::Button(localize("form.create"))) { + new_cost_center = administration_cost_center_create_empty(); is_adding_item = true; is_editing_item = false; - memset(&new_cost_center, 0, sizeof(new_cost_center)); } } |
