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