diff options
Diffstat (limited to 'src/administration.cpp')
| -rw-r--r-- | src/administration.cpp | 105 |
1 files changed, 62 insertions, 43 deletions
diff --git a/src/administration.cpp b/src/administration.cpp index 90fc60a..955e377 100644 --- a/src/administration.cpp +++ b/src/administration.cpp @@ -1043,7 +1043,7 @@ u32 administration_project_count() return list_size(&g_administration.projects); } -bool administration_project_get_by_id(project* buffer, char* id) +a_err administration_project_get_by_id(project* buffer, char* id) { assert(buffer); @@ -1054,12 +1054,12 @@ bool administration_project_get_by_id(project* buffer, char* id) { *buffer = c; list_iterator_stop(&g_administration.projects); - return true; + return a_err::A_ERR_SUCCESS; } } list_iterator_stop(&g_administration.projects); - return false; + return a_err::A_ERR_NOT_FOUND; } u32 administration_project_get_all(project* buffer) @@ -1105,9 +1105,10 @@ void administration_project_cancel(project data) administration_project_update(data); } -bool administration_project_is_valid(project data) +a_err administration_project_is_valid(project data) { - return strlen(data.description) > 0; + if (strlen(data.description) == 0) return a_err::A_ERR_MISSING_DESCRIPTION; + return a_err::A_ERR_SUCCESS; } char* administration_project_get_status_string(project data) @@ -1122,33 +1123,48 @@ char* administration_project_get_status_string(project data) return ""; } -bool administration_project_import(project data) +a_err administration_project_import(project data) { + a_err result = administration_project_is_valid(data); + if (result != a_err::A_ERR_SUCCESS) return result; + project* new_project = (project*)malloc(sizeof(project)); + if (!new_project) return a_err::A_ERR_GENERIC; + memcpy((void*)new_project, (void*)&data, sizeof(project)); - list_append(&g_administration.projects, new_project); + if (!list_append(&g_administration.projects, new_project)) { + return a_err::A_ERR_GENERIC; + } - return true; + return a_err::A_ERR_SUCCESS; } -bool administration_project_add(project data) +a_err administration_project_add(project data) { - if (!administration_project_is_valid(data)) return false; + a_err result = administration_project_is_valid(data); + if (result != a_err::A_ERR_SUCCESS) return result; + project* new_project = (project*)malloc(sizeof(project)); + if (!new_project) return a_err::A_ERR_GENERIC; + memcpy((void*)new_project, (void*)&data, sizeof(project)); - list_append(&g_administration.projects, new_project); + + if (!list_append(&g_administration.projects, new_project)) { + return a_err::A_ERR_GENERIC; + } g_administration.next_id++; if (project_changed_event_callback) project_changed_event_callback(new_project); if (data_changed_event_callback) data_changed_event_callback(); - return true; + return a_err::A_ERR_SUCCESS; } -bool administration_project_update(project data) +a_err administration_project_update(project data) { - if (!administration_project_is_valid(data)) return false; + a_err result = administration_project_is_valid(data); + if (result != a_err::A_ERR_SUCCESS) return result; list_iterator_start(&g_administration.projects); while (list_iterator_hasnext(&g_administration.projects)) { @@ -1161,15 +1177,15 @@ bool administration_project_update(project data) if (project_changed_event_callback) project_changed_event_callback(c); if (data_changed_event_callback) data_changed_event_callback(); - return true; + return a_err::A_ERR_SUCCESS; } } list_iterator_stop(&g_administration.projects); - return false; + return a_err::A_ERR_NOT_FOUND; } -bool administration_project_remove(project data) +a_err administration_project_remove(project data) { list_iterator_start(&g_administration.projects); while (list_iterator_hasnext(&g_administration.projects)) { @@ -1177,17 +1193,17 @@ bool administration_project_remove(project data) if (strcmp(c->id, data.id) == 0) { list_iterator_stop(&g_administration.projects); - list_delete(&g_administration.projects, c); + if (list_delete(&g_administration.projects, c) != 0) return a_err::A_ERR_GENERIC; if (data_deleted_event_callback) data_deleted_event_callback(c->id); free(c); - return true; + return a_err::A_ERR_SUCCESS; } } list_iterator_stop(&g_administration.projects); - return false; + return a_err::A_ERR_NOT_FOUND; } project administration_project_create_empty() @@ -1213,7 +1229,7 @@ country_tax_bracket administration_tax_bracket_create_empty() return result; } -static bool administration_get_tax_bracket_by_id(country_tax_bracket* buffer, char* id) +a_err administration_tax_bracket_get_by_id(country_tax_bracket* buffer, char* id) { assert(buffer); @@ -1224,18 +1240,12 @@ static bool administration_get_tax_bracket_by_id(country_tax_bracket* buffer, ch { *buffer = c; list_iterator_stop(&g_administration.tax_brackets); - return true; + return a_err::A_ERR_SUCCESS; } } list_iterator_stop(&g_administration.tax_brackets); - return false; -} - -// TODO refactor -bool administration_tax_bracket_get_by_id(country_tax_bracket* buffer, char* id) -{ - return administration_get_tax_bracket_by_id(buffer, id); + return a_err::A_ERR_NOT_FOUND; } u32 administration_tax_bracket_count() @@ -1243,24 +1253,30 @@ u32 administration_tax_bracket_count() return list_size(&g_administration.tax_brackets); } -bool administration_tax_bracket_import(country_tax_bracket data) +a_err administration_tax_bracket_import(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)); + if (!tb) return a_err::A_ERR_GENERIC; - list_append(&g_administration.tax_brackets, tb); + memcpy((void*)tb, (void*)&data, sizeof(country_tax_bracket)); + if (!list_append(&g_administration.tax_brackets, tb)) { + return a_err::A_ERR_GENERIC; + } list_attributes_comparator(&g_administration.tax_brackets, compare_tax_countries); list_sort(&g_administration.tax_brackets, -1); - return true; + return a_err::A_ERR_SUCCESS; } -bool administration_tax_bracket_add(country_tax_bracket data) +a_err 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)); + if (!tb) return a_err::A_ERR_GENERIC; - list_append(&g_administration.tax_brackets, tb); + memcpy((void*)tb, (void*)&data, sizeof(country_tax_bracket)); + if (!list_append(&g_administration.tax_brackets, tb)) { + return a_err::A_ERR_GENERIC; + } g_administration.next_id++; @@ -1270,7 +1286,7 @@ bool administration_tax_bracket_add(country_tax_bracket data) if (taxbracket_changed_event_callback) taxbracket_changed_event_callback(&data); if (data_changed_event_callback) data_changed_event_callback(); - return true; + return a_err::A_ERR_SUCCESS; } u32 administration_tax_bracket_get_by_country(country_tax_bracket* buffer, char* country_code) @@ -1306,7 +1322,7 @@ u32 administration_tax_bracket_get_all(country_tax_bracket* buffer) return write_cursor; } -bool administration_tax_bracket_update(country_tax_bracket data) +a_err administration_tax_bracket_update(country_tax_bracket data) { list_iterator_start(&g_administration.tax_brackets); while (list_iterator_hasnext(&g_administration.tax_brackets)) { @@ -1319,12 +1335,12 @@ bool administration_tax_bracket_update(country_tax_bracket data) if (taxbracket_changed_event_callback) taxbracket_changed_event_callback(c); if (data_changed_event_callback) data_changed_event_callback(); - return true; + return a_err::A_ERR_SUCCESS; } } list_iterator_stop(&g_administration.tax_brackets); - return false; + return a_err::A_ERR_NOT_FOUND; } // Cost center functions. @@ -1394,6 +1410,7 @@ static bool administration_get_cost_center_by_code(char* code, cost_center* buff return result; } +// TODO merge these 2 info cost_center_is_valid bool administration_cost_center_verify_description(char* text) { return strlen(text) != 0; @@ -1422,6 +1439,8 @@ bool administration_cost_center_add(cost_center data) bool found = administration_get_cost_center_by_code(data.code, &cs); if (found) return false; + if (!administration_cost_center_verify_description(data.description)) return false; + cost_center* tb = (cost_center*)malloc(sizeof(cost_center)); memcpy((void*)tb, (void*)&data, sizeof(cost_center)); list_append(&g_administration.cost_centers, tb); @@ -1794,8 +1813,8 @@ u32 administration_invoice_get_tax_brackets(invoice* invoice, country_tax_bracke billing_item c = *(billing_item *)list_iterator_next(&invoice->billing_items); country_tax_bracket bracket; - bool found = administration_get_tax_bracket_by_id(&bracket, c.tax_bracket_id); - if (found) { + a_err found = administration_tax_bracket_get_by_id(&bracket, c.tax_bracket_id); + if (found == a_err::A_ERR_SUCCESS) { bool exists = false; for (u32 i = 0; i < write_cursor; i++) { @@ -1895,7 +1914,7 @@ static void administration_recalculate_billing_item_totals(billing_item* item) } country_tax_bracket bracket; - if (administration_get_tax_bracket_by_id(&bracket, item->tax_bracket_id)) + if (administration_tax_bracket_get_by_id(&bracket, item->tax_bracket_id) == a_err::A_ERR_SUCCESS) { item->tax = item->net * (bracket.rate/100.0f); } |
