diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/administration.cpp | 47 | ||||
| -rw-r--r-- | src/administration_reader.cpp | 3 | ||||
| -rw-r--r-- | src/ai_providers/openAI.cpp | 1 | ||||
| -rw-r--r-- | src/importer.cpp | 5 | ||||
| -rw-r--r-- | src/ui/ui_settings.cpp | 6 |
5 files changed, 35 insertions, 27 deletions
diff --git a/src/administration.cpp b/src/administration.cpp index b1e3198..d51b1b9 100644 --- a/src/administration.cpp +++ b/src/administration.cpp @@ -130,11 +130,27 @@ void administration_create() list_init(&g_administration.contacts); list_init(&g_administration.projects); list_init(&g_administration.tax_rates); + list_init(&g_administration.all_tax_rates); list_init(&g_administration.cost_centers); strops::copy(g_administration.path, "", sizeof(g_administration.path)); memops::zero(&g_administration.ai_service, sizeof(ai_service)); + // Load all tax rates. + for (s32 i = 0; i < country::get_count(); i++) + { + tax_rate* tax_rates = (tax_rate*)memops::alloc(sizeof(tax_rate) * 400); + u32 tax_rate_count = country::get_available_tax_rates(country::get_code_by_index(i), tax_rates, 400); + + for (u32 x = 0; x < tax_rate_count; x++) + { + tax_rate* rate = (tax_rate*)memops::alloc(sizeof(tax_rate)); + memops::copy(rate, &tax_rates[x], sizeof(tax_rate)); + + list_append(&g_administration.all_tax_rates, rate); + } + } + logger::info("Setup took %.3fms.", STOPWATCH_TIME); } @@ -167,6 +183,7 @@ void administration::destroy() administration_destroy_list(&g_administration.contacts); administration_destroy_list(&g_administration.projects); administration_destroy_list(&g_administration.tax_rates); + administration_destroy_list(&g_administration.all_tax_rates); administration_destroy_list(&g_administration.cost_centers); } @@ -1054,7 +1071,7 @@ tax_rate administration::tax_rate_create_empty() return result; } -a_err administration::tax_rate_remove(tax_rate data) +a_err administration::tax_rate_disable(tax_rate data) { list_iterator_start(&g_administration.tax_rates); while (list_iterator_hasnext(&g_administration.tax_rates)) { @@ -1077,7 +1094,7 @@ a_err administration::tax_rate_remove(tax_rate data) return A_ERR_NOT_FOUND; } -a_err administration::tax_rate_exists(tax_rate data) +a_err administration::tax_rate_is_enabled(tax_rate data) { list_iterator_start(&g_administration.tax_rates); while (list_iterator_hasnext(&g_administration.tax_rates)) { @@ -1098,17 +1115,17 @@ 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); + list_iterator_start(&g_administration.all_tax_rates); + while (list_iterator_hasnext(&g_administration.all_tax_rates)) { + tax_rate c = *(tax_rate *)list_iterator_next(&g_administration.all_tax_rates); if (strops::equals(c.internal_code, id)) { *buffer = c; - list_iterator_stop(&g_administration.tax_rates); + list_iterator_stop(&g_administration.all_tax_rates); return A_ERR_SUCCESS; } } - list_iterator_stop(&g_administration.tax_rates); + list_iterator_stop(&g_administration.all_tax_rates); return A_ERR_NOT_FOUND; } @@ -1131,7 +1148,7 @@ a_err administration::tax_rate_import(tax_rate data) return A_ERR_SUCCESS; } -a_err administration::tax_rate_add(tax_rate data) +a_err administration::tax_rate_enable(tax_rate data) { tax_rate* tb = (tax_rate*)memops::alloc(sizeof(tax_rate)); if (!tb) return A_ERR_GENERIC; @@ -1575,16 +1592,6 @@ invoice administration::invoice_create_copy(invoice* inv) return new_inv; } -void administration::invoice_recalculate_totals() -{ - list_iterator_start(&g_administration.invoices); - while (list_iterator_hasnext(&g_administration.invoices)) { - invoice* c = (invoice *)list_iterator_next(&g_administration.invoices); - administration_recalculate_invoice_totals(c); - } - list_iterator_stop(&g_administration.invoices); -} - u32 administration::invoice_count() { return list_size(&g_administration.invoices); @@ -1775,6 +1782,10 @@ static void administration_recalculate_billing_item_totals(billing_item* item) { item->tax = item->net * (rate.rate/100.0f); } + else + { + assert(0); + } item->total = item->net + item->tax; } diff --git a/src/administration_reader.cpp b/src/administration_reader.cpp index 91325ea..80d0eac 100644 --- a/src/administration_reader.cpp +++ b/src/administration_reader.cpp @@ -116,9 +116,6 @@ bool administration_reader::open_existing(char* file_path) zip_close(zip); - // Tax rates might be loaded after invoices so we need to recalculate all totals. - administration::invoice_recalculate_totals(); - logger::info("Imported '%s' in %.3fms.", file_path, STOPWATCH_TIME); return true; diff --git a/src/ai_providers/openAI.cpp b/src/ai_providers/openAI.cpp index 64e7a6a..3e5104d 100644 --- a/src/ai_providers/openAI.cpp +++ b/src/ai_providers/openAI.cpp @@ -30,6 +30,7 @@ static bool _openAI_batch_query_with_file(char** queries, size_t query_count, ch httplib::SSLClient cli("api.openai.com", 443); thrd_t threads[20]; + assert(query_count <= 20); for (u32 i = 0; i < query_count; i++) { diff --git a/src/importer.cpp b/src/importer.cpp index 4f78d20..e3d8048 100644 --- a/src/importer.cpp +++ b/src/importer.cpp @@ -257,9 +257,8 @@ static int _ai_document_to_invoice_t(void *arg) inv.status = invoice_status::INVOICE_RECEIVED; - // Set customer or supplier depending on incomming or outgoing. - contact my_info = administration::company_info_get(); - //memops::copy(&inv.customer, &my_info, sizeof(contact)); + inv.is_triangulation = !memops::equals(&inv.addressee.address, &inv.customer.address, sizeof(address)); + strops::copy(inv.customer.id, MY_COMPANY_ID, MAX_LEN_ID); // Project and cost centers cannot be interpreted from file so are set to 0. diff --git a/src/ui/ui_settings.cpp b/src/ui/ui_settings.cpp index 51beafe..2a310d3 100644 --- a/src/ui/ui_settings.cpp +++ b/src/ui/ui_settings.cpp @@ -85,10 +85,10 @@ static void draw_vat_rates() ImGui::TableNextRow(); ImGui::TableSetColumnIndex(0); - bool toggle = administration::tax_rate_exists(c) == A_ERR_SUCCESS; + bool toggle = administration::tax_rate_is_enabled(c) == A_ERR_SUCCESS; if (ImGui::Checkbox("##toggle", &toggle)) { - if (toggle) administration::tax_rate_add(c); - else administration::tax_rate_remove(c); + if (toggle) administration::tax_rate_enable(c); + else administration::tax_rate_disable(c); } char localized_code[MAX_LEN_LONG_DESC]; |
