diff options
Diffstat (limited to 'src/administration.cpp')
| -rw-r--r-- | src/administration.cpp | 18 |
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); |
