summaryrefslogtreecommitdiff
path: root/src/administration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/administration.cpp')
-rw-r--r--src/administration.cpp18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/administration.cpp b/src/administration.cpp
index ccbd284..404bd1e 100644
--- a/src/administration.cpp
+++ b/src/administration.cpp
@@ -109,7 +109,9 @@ static void administration_get_random_billing_items(invoice* inv)
if (item.net < item.discount) item.discount = 0.0f;
tax_rate buffer[20];
- u32 rate_count = administration_tax_rate_get_by_country(buffer, inv->supplier.address.country_code);
+
+ char* country_codes[1] = {inv->supplier.address.country_code};
+ u32 rate_count = administration_tax_rate_get_by_country(buffer, 1, country_codes);
tax_rate rand_rate = buffer[rand() % rate_count];
strops_copy(item.tax_rate_id, rand_rate.id, MAX_LEN_ID);
@@ -1303,7 +1305,7 @@ a_err administration_tax_rate_add(tax_rate data)
return A_ERR_SUCCESS;
}
-u32 administration_tax_rate_get_by_country(tax_rate* buffer, char* country_code)
+u32 administration_tax_rate_get_by_country(tax_rate* buffer, u32 code_count, char** country_codes)
{
assert(buffer);
@@ -1313,7 +1315,17 @@ u32 administration_tax_rate_get_by_country(tax_rate* buffer, char* country_code)
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, country_code) == 0 || strcmp(c.country_code, "00") == 0) buffer[write_cursor++] = c;
+ 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, country_codes[x]) == 0) {
+ buffer[write_cursor++] = c;
+ continue;
+ }
+ }
}
list_iterator_stop(&g_administration.tax_rates);