diff options
Diffstat (limited to 'src/administration.cpp')
| -rw-r--r-- | src/administration.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/administration.cpp b/src/administration.cpp index d01ec61..93af778 100644 --- a/src/administration.cpp +++ b/src/administration.cpp @@ -1045,6 +1045,45 @@ tax_rate administration::tax_rate_create_empty() return result; } +a_err administration::tax_rate_remove(tax_rate data) +{ + list_iterator_start(&g_administration.tax_rates); + while (list_iterator_hasnext(&g_administration.tax_rates)) { + tax_rate* c = (tax_rate *)list_iterator_next(&g_administration.tax_rates); + + if (strcmp(c->internal_code, data.internal_code) == 0) + { + list_iterator_stop(&g_administration.tax_rates); + if (list_delete(&g_administration.tax_rates, c) != 0) return A_ERR_GENERIC; + + char filename[MAX_LEN_PATH]; + strops::format(filename, sizeof(filename), "T/%s", c->internal_code); + if (data_deleted_event_callback) data_deleted_event_callback(filename); + return A_ERR_SUCCESS; + } + } + list_iterator_stop(&g_administration.tax_rates); + + return A_ERR_NOT_FOUND; +} + +a_err administration::tax_rate_exists(tax_rate data) +{ + list_iterator_start(&g_administration.tax_rates); + while (list_iterator_hasnext(&g_administration.tax_rates)) { + tax_rate c = *(tax_rate *)list_iterator_next(&g_administration.tax_rates); + + if (strcmp(c.internal_code, data.internal_code) == 0) + { + list_iterator_stop(&g_administration.tax_rates); + return A_ERR_SUCCESS; + } + } + list_iterator_stop(&g_administration.tax_rates); + + return A_ERR_NOT_FOUND; +} + a_err administration::tax_rate_get_by_shorthandle(tax_rate* buffer, char* handle) { assert(buffer); |
