diff options
| author | Aldrik Ramaekers <aldrikboy@gmail.com> | 2025-08-10 15:25:22 +0200 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrikboy@gmail.com> | 2025-08-10 15:25:22 +0200 |
| commit | a88456ec309edb6778cf50c139cab6ab8e99e963 (patch) | |
| tree | 10b86e0964bee9a6670b2a064fd9863290eb970b /src/administration.cpp | |
| parent | 0327e06b59aa20dbfec137b2287b950b5cb84960 (diff) | |
move id generation out of UI and into administration
Diffstat (limited to 'src/administration.cpp')
| -rw-r--r-- | src/administration.cpp | 44 |
1 files changed, 38 insertions, 6 deletions
diff --git a/src/administration.cpp b/src/administration.cpp index c6ece04..edbc933 100644 --- a/src/administration.cpp +++ b/src/administration.cpp @@ -9,6 +9,11 @@ administration g_administration; +static s32 administration_create_id() +{ + return g_administration.next_id; +} + #define ADD_BRACKET(_country, _rate, _description)\ {\ country_tax_bracket* tb = (country_tax_bracket*)malloc(sizeof(country_tax_bracket));\ @@ -27,7 +32,6 @@ static int compare_tax_countries(const void *a, const void *b) return strcmp(objA->country_code, objB->country_code); } - static void administration_create_default_tax_brackets() { // General brackets shared between countries. @@ -197,6 +201,9 @@ static void administration_create_default_cost_centers() void administration_create() { + g_administration.next_id = 1; + g_administration.next_sequence_number = 1; + list_init(&g_administration.contacts); list_init(&g_administration.projects); list_init(&g_administration.tax_brackets); @@ -270,11 +277,6 @@ bool administration_remove_contact(contact data) return false; } -s32 administration_create_id() -{ - return g_administration.next_id; -} - u32 administration_get_contact_count() { return list_size(&g_administration.contacts); @@ -543,4 +545,34 @@ bool administration_update_cost_center(cost_center data) list_iterator_stop(&g_administration.cost_centers); return false; +} + +static s32 administration_create_sequence_number() +{ + return g_administration.next_sequence_number; +} + +invoice administration_create_empty_invoice() +{ + invoice result; + memset(&result, 0, sizeof(invoice)); + snprintf(result.id, sizeof(result.id), "I/%d", administration_create_id()); + snprintf(result.sequential_number, sizeof(result.id), "INV%010d", administration_create_sequence_number()); + return result; +} + +contact administration_create_empty_contact() +{ + contact result; + memset(&result, 0, sizeof(contact)); + snprintf(result.id, IM_ARRAYSIZE(result.id), "C/%d", administration_create_id()); + return result; +} + +project administration_create_empty_project() +{ + project result; + memset(&result, 0, sizeof(project)); + snprintf(result.id, IM_ARRAYSIZE(result.id), "P/%d", administration_create_id()); + return project; }
\ No newline at end of file |
