summaryrefslogtreecommitdiff
path: root/src/administration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/administration.cpp')
-rw-r--r--src/administration.cpp105
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);
}