summaryrefslogtreecommitdiff
path: root/src/administration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/administration.cpp')
-rw-r--r--src/administration.cpp113
1 files changed, 10 insertions, 103 deletions
diff --git a/src/administration.cpp b/src/administration.cpp
index 93af778..7a10ac0 100644
--- a/src/administration.cpp
+++ b/src/administration.cpp
@@ -1040,8 +1040,6 @@ tax_rate administration::tax_rate_create_empty()
{
tax_rate result;
memops::zero(&result, sizeof(tax_rate));
- strops::format(result.id, sizeof(result.id), "T/%d", create_id());
- strops::format(result.category_code, sizeof(result.category_code), "S"); // S = standard rate.
return result;
}
@@ -1084,43 +1082,14 @@ a_err administration::tax_rate_exists(tax_rate data)
return A_ERR_NOT_FOUND;
}
-a_err administration::tax_rate_get_by_shorthandle(tax_rate* buffer, char* handle)
+a_err administration::tax_rate_get_by_internal_code(tax_rate* buffer, char* id)
{
assert(buffer);
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);
-
- char compare_str[20];
- strops::format(compare_str, 20, "%s/%.2f", c.country_code, c.rate);
- if (strcmp(compare_str, handle) == 0)
- {
- *buffer = c;
- list_iterator_stop(&g_administration.tax_rates);
- return A_ERR_SUCCESS;
- }
- strops::format(compare_str, 20, "%s/%s", c.country_code, c.category_code);
- if (strcmp(compare_str, handle) == 0)
- {
- *buffer = c;
- 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_id(tax_rate* buffer, char* id)
-{
- assert(buffer);
-
- 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.id, id) == 0)
+ if (strcmp(c.internal_code, id) == 0)
{
*buffer = c;
list_iterator_stop(&g_administration.tax_rates);
@@ -1168,34 +1137,7 @@ a_err administration::tax_rate_add(tax_rate data)
return A_ERR_SUCCESS;
}
-u32 administration::tax_rate_get_by_country(tax_rate* buffer, u32 code_count, char** tax_country_codes)
-{
- assert(buffer);
-
- u32 write_cursor = 0;
-
- 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.country_code, "00") == 0) {
- buffer[write_cursor++] = c;
- continue;
- }
-
- for (u32 x = 0; x < code_count; x++) {
- if (strcmp(c.country_code, tax_country_codes[x]) == 0) {
- buffer[write_cursor++] = c;
- continue;
- }
- }
- }
- list_iterator_stop(&g_administration.tax_rates);
-
- return write_cursor;
-}
-
-u32 administration::tax_rate_get_all(tax_rate* buffer)
+u32 administration::tax_rate_get_all(tax_rate* buffer, tax_rate_type type)
{
assert(buffer);
@@ -1204,34 +1146,13 @@ u32 administration::tax_rate_get_all(tax_rate* buffer)
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);
- buffer[write_cursor++] = c;
+ if (c.type == type) buffer[write_cursor++] = c;
}
list_iterator_stop(&g_administration.tax_rates);
return write_cursor;
}
-a_err administration::tax_rate_update(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->id, data.id) == 0) {
- memops::copy(c, &data, sizeof(data));
- list_iterator_stop(&g_administration.tax_rates);
-
- if (taxrate_changed_event_callback) taxrate_changed_event_callback(c);
- if (data_changed_event_callback) data_changed_event_callback();
-
- return A_ERR_SUCCESS;
- }
- }
- list_iterator_stop(&g_administration.tax_rates);
-
- return A_ERR_NOT_FOUND;
-}
-
// Cost center functions.
// =======================
u32 administration::cost_center_count()
@@ -1412,21 +1333,7 @@ static char* get_default_currency_for_country(char* country_code)
bool administration::invoice_has_intra_community_services(invoice* invoice)
{
- list_iterator_start(&invoice->billing_items);
- while (list_iterator_hasnext(&invoice->billing_items)) {
- billing_item* c = (billing_item *)list_iterator_next(&invoice->billing_items);
-
- tax_rate rate;
- a_err found = administration::tax_rate_get_by_id(&rate, c->tax_rate_id);
- if (found == A_ERR_SUCCESS) {
- if (strops::equals(rate.category_code, "K#S")) {
- list_iterator_stop(&invoice->billing_items);
- return true;
- }
- }
- }
- list_iterator_stop(&invoice->billing_items);
-
+ // TODO
return false;
}
@@ -1711,7 +1618,7 @@ bool administration::invoice_get_subtotal_for_tax_rate(invoice* invoice, tax_rat
while (list_iterator_hasnext(&invoice->billing_items)) {
billing_item* c = (billing_item *)list_iterator_next(&invoice->billing_items);
- if (strcmp(c->tax_rate_id, rate.id) == 0)
+ if (strcmp(c->tax_internal_code, rate.internal_code) == 0)
{
result = true;
buffer->tax += c->tax;
@@ -1734,12 +1641,12 @@ u32 administration::invoice_get_tax_rates(invoice* invoice, tax_rate* buffer)
billing_item c = *(billing_item *)list_iterator_next(&invoice->billing_items);
tax_rate rate;
- a_err found = administration::tax_rate_get_by_id(&rate, c.tax_rate_id);
+ a_err found = administration::tax_rate_get_by_internal_code(&rate, c.tax_internal_code);
if (found == A_ERR_SUCCESS) {
bool exists = false;
for (u32 i = 0; i < write_cursor; i++) {
- if (strcmp(buffer[i].id, c.tax_rate_id) == 0) {
+ if (strcmp(buffer[i].internal_code, c.tax_internal_code) == 0) {
exists = true;
break;
}
@@ -1835,7 +1742,7 @@ static void administration_recalculate_billing_item_totals(billing_item* item)
}
tax_rate rate;
- if (administration::tax_rate_get_by_id(&rate, item->tax_rate_id) == A_ERR_SUCCESS)
+ if (administration::tax_rate_get_by_internal_code(&rate, item->tax_internal_code) == A_ERR_SUCCESS)
{
item->tax = item->net * (rate.rate/100.0f);
}
@@ -1915,7 +1822,7 @@ a_err administration::billing_item_is_valid(billing_item item)
{
a_err result = A_ERR_SUCCESS;
if (strlen(item.description) == 0) result |= A_ERR_MISSING_DESCRIPTION;
- if (strlen(item.tax_rate_id) == 0) result |= A_ERR_MISSING_TAX_RATE;
+ if (strlen(item.tax_internal_code) == 0) result |= A_ERR_MISSING_TAX_RATE;
return result;
}