summaryrefslogtreecommitdiff
path: root/src/administration.cpp
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrikboy@gmail.com>2025-09-14 15:27:51 +0200
committerAldrik Ramaekers <aldrikboy@gmail.com>2025-09-14 15:27:51 +0200
commit76d3082e5b89fe54acaaaaadd201ccc92f4f346e (patch)
tree32d5212d87bc0b4cab06bcbe923f7eeb019268b0 /src/administration.cpp
parent38019a9693375ac6719ffec43bff63774e142387 (diff)
tests for administration io
Diffstat (limited to 'src/administration.cpp')
-rw-r--r--src/administration.cpp75
1 files changed, 50 insertions, 25 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++;