diff options
| author | Aldrik Ramaekers <aldrikboy@gmail.com> | 2025-10-19 16:11:09 +0200 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrikboy@gmail.com> | 2025-10-19 16:11:09 +0200 |
| commit | 1bfeb2751bf07cdc81ea9344ec941e671cb216a8 (patch) | |
| tree | 6bc8c691eba2c6c34c3ad0d272aef9029256b616 /tests | |
| parent | 7dc2a4d511a0f9e30a63be6bc8ecca0bea0b8c3f (diff) | |
update tests for new tax rates
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/administration_rw_tests.cpp | 52 | ||||
| -rw-r--r-- | tests/nl_tax_tests.cpp | 68 | ||||
| -rw-r--r-- | tests/peppol_write_tests.cpp | 10 | ||||
| -rw-r--r-- | tests/test_helper.cpp | 78 |
4 files changed, 94 insertions, 114 deletions
diff --git a/tests/administration_rw_tests.cpp b/tests/administration_rw_tests.cpp index 36353f7..224a689 100644 --- a/tests/administration_rw_tests.cpp +++ b/tests/administration_rw_tests.cpp @@ -26,9 +26,11 @@ TEST _administration_rw_taxrate(void) administration::create_empty(test_file_path); { pw = administration::tax_rate_create_empty(); - strops::copy(pw.country_code, "NL", sizeof(pw.country_code)); pw.rate = 10.0f; + pw.type = tax_rate_type::TAX_RATE_OUTGOING_INVOICE; + strops::copy(pw.internal_code, "NL/21", sizeof(pw.internal_code)); strops::copy(pw.category_code, "S", sizeof(pw.category_code)); + strops::copy(pw.tax_sections[pw.tax_section_count++], "NL/1a", MAX_LEN_SHORT_DESC); count = administration::tax_rate_count(); administration::tax_rate_add(pw); @@ -39,7 +41,7 @@ TEST _administration_rw_taxrate(void) administration_reader::open_existing(test_file_path); { ASSERT_EQ(count+1, administration::tax_rate_count()); - ASSERT_EQ(A_ERR_SUCCESS, administration::tax_rate_get_by_id(&pr, pw.id)); + ASSERT_EQ(A_ERR_SUCCESS, administration::tax_rate_get_by_internal_code(&pr, pw.internal_code)); ASSERT_MEM_EQ(&pw, &pr, sizeof(tax_rate)); } @@ -202,7 +204,7 @@ TEST _assert_invoices_are_equal(invoice inv, invoice invr) ASSERT_EQ(b1->allowance, b2->allowance); ASSERT_EQ(b1->net, b2->net); ASSERT_STR_EQ(b1->currency, b2->currency); - ASSERT_STR_EQ(b1->tax_rate_id, b2->tax_rate_id); + ASSERT_STR_EQ(b1->tax_internal_code, b2->tax_internal_code); ASSERT_EQ(b1->tax, b2->tax); ASSERT_EQ(b1->total, b2->total); } @@ -236,9 +238,10 @@ TEST _administration_rw_b2b_invoice(void) invoice invr; administration_writer::create(); - + administration::create_default(test_file_path); { + add_default_nl_tax_rates(); contact pw1 = _create_nl_business(); contact pw2 = _create_nl_business(); @@ -251,10 +254,10 @@ TEST _administration_rw_b2b_invoice(void) inv.delivered_at = inv.issued_at; inv.expires_at = inv.issued_at + 1000; - administration::billing_item_add_to_invoice(&inv, _create_bi3(&inv)); - administration::billing_item_add_to_invoice(&inv, _create_bi4(&inv)); - administration::billing_item_add_to_invoice(&inv, _create_bi5(&inv)); - administration::billing_item_add_to_invoice(&inv, _create_bi6(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi3()); + administration::billing_item_add_to_invoice(&inv, _create_bi4()); + administration::billing_item_add_to_invoice(&inv, _create_bi5()); + administration::billing_item_add_to_invoice(&inv, _create_bi6()); count = administration::invoice_count(); ASSERT_EQ(administration::invoice_add(&inv), A_ERR_SUCCESS); @@ -279,9 +282,10 @@ TEST _administration_rw_b2c_invoice(void) invoice invr; administration_writer::create(); - + administration::create_default(test_file_path); { + add_default_nl_tax_rates(); contact pw1 = _create_nl_business(); contact pw2 = _create_nl_consumer(); @@ -294,10 +298,10 @@ TEST _administration_rw_b2c_invoice(void) inv.delivered_at = inv.issued_at; inv.expires_at = inv.issued_at + 1000; - administration::billing_item_add_to_invoice(&inv, _create_bi3(&inv)); - administration::billing_item_add_to_invoice(&inv, _create_bi4(&inv)); - administration::billing_item_add_to_invoice(&inv, _create_bi5(&inv)); - administration::billing_item_add_to_invoice(&inv, _create_bi6(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi3()); + administration::billing_item_add_to_invoice(&inv, _create_bi4()); + administration::billing_item_add_to_invoice(&inv, _create_bi5()); + administration::billing_item_add_to_invoice(&inv, _create_bi6()); count = administration::invoice_count(); ASSERT_EQ(administration::invoice_add(&inv), A_ERR_SUCCESS); @@ -322,9 +326,10 @@ TEST _administration_rw_b2b2c_invoice(void) invoice invr; administration_writer::create(); - + administration::create_default(test_file_path); { + add_default_nl_tax_rates(); inv = administration::invoice_create_empty(); inv.supplier = _create_nl_business(); inv.customer = _create_nl_business(); @@ -337,10 +342,10 @@ TEST _administration_rw_b2b2c_invoice(void) inv.delivered_at = inv.issued_at; inv.expires_at = inv.issued_at + 1000; - administration::billing_item_add_to_invoice(&inv, _create_bi3(&inv)); - administration::billing_item_add_to_invoice(&inv, _create_bi4(&inv)); - administration::billing_item_add_to_invoice(&inv, _create_bi5(&inv)); - administration::billing_item_add_to_invoice(&inv, _create_bi6(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi3()); + administration::billing_item_add_to_invoice(&inv, _create_bi4()); + administration::billing_item_add_to_invoice(&inv, _create_bi5()); + administration::billing_item_add_to_invoice(&inv, _create_bi6()); count = administration::invoice_count(); ASSERT_EQ(administration::invoice_add(&inv), A_ERR_SUCCESS); @@ -365,9 +370,10 @@ TEST _administration_rw_b2c_2currency_invoice(void) invoice invr; administration_writer::create(); - + administration::create_default(test_file_path); { + add_default_nl_tax_rates(); contact pw1 = _create_nl_business(); contact pw2 = _create_nl_consumer(); @@ -382,10 +388,10 @@ TEST _administration_rw_b2c_2currency_invoice(void) administration::invoice_set_currency(&inv, "USD"); - administration::billing_item_add_to_invoice(&inv, _create_bi3(&inv)); - administration::billing_item_add_to_invoice(&inv, _create_bi4(&inv)); - administration::billing_item_add_to_invoice(&inv, _create_bi5(&inv)); - administration::billing_item_add_to_invoice(&inv, _create_bi6(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi3()); + administration::billing_item_add_to_invoice(&inv, _create_bi4()); + administration::billing_item_add_to_invoice(&inv, _create_bi5()); + administration::billing_item_add_to_invoice(&inv, _create_bi6()); // Finals are set manually for multi currency invoices. inv.total = 20.0f; diff --git a/tests/nl_tax_tests.cpp b/tests/nl_tax_tests.cpp index 20d70c8..0fce093 100644 --- a/tests/nl_tax_tests.cpp +++ b/tests/nl_tax_tests.cpp @@ -4,22 +4,23 @@ TEST _nl_tax_1a(void) { administration::create_default(test_file_path); administration::company_info_set(_create_nl_business()); + add_default_nl_tax_rates(); invoice inv = _create_nl_b2b_inv_outgoing(); - administration::billing_item_add_to_invoice(&inv, _create_bi(1, 20.0f, "NL/21.00")); - administration::billing_item_add_to_invoice(&inv, _create_bi(1, 30.0f, "NL/21.00")); + administration::billing_item_add_to_invoice(&inv, _create_bi(1, 20.0f, "NL/21")); + administration::billing_item_add_to_invoice(&inv, _create_bi(1, 30.0f, "NL/21")); ASSERT_EQ(administration::invoice_add(&inv), A_ERR_SUCCESS); tax_statement statement; administration::create_tax_statement(&statement); ASSERT_EQ(statement.report_count, 1); - tax_line* tl = administration::get_tax_line_from_report(&statement.reports[0], "1a"); + tax_line* tl = administration::get_tax_line_from_report(&statement.reports[0], "NL/1a"); ASSERT_EQ(tl->total_net, 50.0f); ASSERT_EQ(tl->total_tax, 50.0f * 0.21f); - tax_line* tl2 = administration::get_tax_line_from_report(&statement.reports[0], "5a"); + tax_line* tl2 = administration::get_tax_line_from_report(&statement.reports[0], "NL/5a"); ASSERT_EQ(tl2->total_tax, 50.0f * 0.21f); PASS(); @@ -29,78 +30,49 @@ TEST _nl_tax_1b(void) { administration::create_default(test_file_path); administration::company_info_set(_create_nl_business()); + add_default_nl_tax_rates(); invoice inv = _create_nl_b2b_inv_outgoing(); - administration::billing_item_add_to_invoice(&inv, _create_bi(1, 10.0f, "NL/9.00")); - administration::billing_item_add_to_invoice(&inv, _create_bi(1, 15.0f, "NL/9.00")); + administration::billing_item_add_to_invoice(&inv, _create_bi(1, 10.0f, "NL/9")); + administration::billing_item_add_to_invoice(&inv, _create_bi(1, 15.0f, "NL/9")); ASSERT_EQ(administration::invoice_add(&inv), A_ERR_SUCCESS); tax_statement statement; administration::create_tax_statement(&statement); ASSERT_EQ(statement.report_count, 1); - tax_line* tl = administration::get_tax_line_from_report(&statement.reports[0], "1b"); + tax_line* tl = administration::get_tax_line_from_report(&statement.reports[0], "NL/1b"); ASSERT_EQ(tl->total_net, 25.0f); ASSERT_EQ(tl->total_tax, 25.0f * 0.09f); - tax_line* tl2 = administration::get_tax_line_from_report(&statement.reports[0], "5a"); + tax_line* tl2 = administration::get_tax_line_from_report(&statement.reports[0], "NL/5a"); ASSERT_EQ(tl2->total_tax, 25.0f * 0.09f); PASS(); } -TEST _nl_tax_1c(void) -{ - administration::create_default(test_file_path); - administration::company_info_set(_create_nl_business()); - - tax_rate new_tax_rate = administration::tax_rate_create_empty(); - new_tax_rate.rate = 5.0f; - strops::copy(new_tax_rate.category_code, "S", MAX_LEN_CODE); - strops::copy(new_tax_rate.country_code, "NL", MAX_LEN_COUNTRY_CODE); - administration::tax_rate_add(new_tax_rate); - - invoice inv = _create_nl_b2b_inv_outgoing(); - - administration::billing_item_add_to_invoice(&inv, _create_bi(1, 30.0f, "NL/5.00")); - administration::billing_item_add_to_invoice(&inv, _create_bi(1, 15.0f, "NL/5.00")); - ASSERT_EQ(administration::invoice_add(&inv), A_ERR_SUCCESS); - - tax_statement statement; - administration::create_tax_statement(&statement); - ASSERT_EQ(statement.report_count, 1); - - tax_line* tl = administration::get_tax_line_from_report(&statement.reports[0], "1c"); - ASSERT_EQ(tl->total_net, 45.0f); - ASSERT_EQ(tl->total_tax, 45.0f * 0.05f); - - tax_line* tl2 = administration::get_tax_line_from_report(&statement.reports[0], "5a"); - ASSERT_EQ(tl2->total_tax, 45.0f * 0.05f); - - PASS(); -} - TEST _nl_tax_1e(void) { administration::create_default(test_file_path); administration::company_info_set(_create_nl_business()); + add_default_nl_tax_rates(); invoice inv = _create_nl_b2b_inv_outgoing(); - administration::billing_item_add_to_invoice(&inv, _create_bi(1, 30.0f, "00/E")); - administration::billing_item_add_to_invoice(&inv, _create_bi(1, 50.0f, "00/E")); + administration::billing_item_add_to_invoice(&inv, _create_bi(1, 30.0f, "NL/0")); + administration::billing_item_add_to_invoice(&inv, _create_bi(1, 50.0f, "NL/0")); ASSERT_EQ(administration::invoice_add(&inv), A_ERR_SUCCESS); tax_statement statement; administration::create_tax_statement(&statement); ASSERT_EQ(statement.report_count, 1); - tax_line* tl = administration::get_tax_line_from_report(&statement.reports[0], "1e"); + tax_line* tl = administration::get_tax_line_from_report(&statement.reports[0], "NL/1e"); ASSERT_EQ(tl->total_net, 80.0f); ASSERT_EQ(tl->total_tax, 0.0f); - tax_line* tl2 = administration::get_tax_line_from_report(&statement.reports[0], "5a"); + tax_line* tl2 = administration::get_tax_line_from_report(&statement.reports[0], "NL/5a"); ASSERT_EQ(tl2->total_tax, 0.0f); PASS(); @@ -110,12 +82,13 @@ TEST _nl_tax_2currency(void) { administration::create_default(test_file_path); administration::company_info_set(_create_nl_business()); + add_default_nl_tax_rates(); invoice inv = _create_nl_b2b_inv_outgoing(); administration::invoice_set_currency(&inv, "USD"); - administration::billing_item_add_to_invoice(&inv, _create_bi(1, 20.0f, "NL/21.00")); - administration::billing_item_add_to_invoice(&inv, _create_bi(1, 30.0f, "NL/21.00")); + administration::billing_item_add_to_invoice(&inv, _create_bi(1, 20.0f, "NL/21")); + administration::billing_item_add_to_invoice(&inv, _create_bi(1, 30.0f, "NL/21")); float eur_usd_exchange_rate = 1.2f; @@ -130,11 +103,11 @@ TEST _nl_tax_2currency(void) administration::create_tax_statement(&statement); ASSERT_EQ(statement.report_count, 1); - tax_line* tl = administration::get_tax_line_from_report(&statement.reports[0], "1a"); + tax_line* tl = administration::get_tax_line_from_report(&statement.reports[0], "NL/1a"); GREATEST_ASSERT_FEQ(tl->total_net, inv.net); GREATEST_ASSERT_FEQ(tl->total_tax, inv.tax); - tax_line* tl2 = administration::get_tax_line_from_report(&statement.reports[0], "5a"); + tax_line* tl2 = administration::get_tax_line_from_report(&statement.reports[0], "NL/5a"); GREATEST_ASSERT_FEQ(tl2->total_tax, inv.tax); PASS(); @@ -143,7 +116,6 @@ TEST _nl_tax_2currency(void) SUITE(nl_tax_statement) { RUN_TEST(_nl_tax_1a); RUN_TEST(_nl_tax_1b); - RUN_TEST(_nl_tax_1c); RUN_TEST(_nl_tax_1e); RUN_TEST(_nl_tax_2currency); }
\ No newline at end of file diff --git a/tests/peppol_write_tests.cpp b/tests/peppol_write_tests.cpp index 7caa102..d0bdee5 100644 --- a/tests/peppol_write_tests.cpp +++ b/tests/peppol_write_tests.cpp @@ -6,6 +6,7 @@ TEST _peppol_write_nl2nl_b2b(void) { administration_writer::create(); administration::create_default(test_file_path); + add_default_nl_tax_rates(); invoice inv = administration::invoice_create_empty(); inv.supplier = _create_nl_business(); @@ -16,8 +17,8 @@ TEST _peppol_write_nl2nl_b2b(void) inv.delivered_at = inv.issued_at; inv.expires_at = inv.issued_at + 1000; - administration::billing_item_add_to_invoice(&inv, _create_bi1(&inv)); - administration::billing_item_add_to_invoice(&inv, _create_bi2(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi1()); + administration::billing_item_add_to_invoice(&inv, _create_bi2()); ASSERT_EQ(administration::invoice_add(&inv), A_ERR_SUCCESS); if (_test_peppol_file(inv.id)) { PASS(); } else { FAIL(); } @@ -27,6 +28,7 @@ TEST _peppol_write_nl2nl_b2c(void) { administration_writer::create(); administration::create_default(test_file_path); + add_default_nl_tax_rates(); invoice inv = administration::invoice_create_empty(); inv.supplier = _create_nl_business(); @@ -37,8 +39,8 @@ TEST _peppol_write_nl2nl_b2c(void) inv.delivered_at = inv.issued_at; inv.expires_at = inv.issued_at + 1000; - administration::billing_item_add_to_invoice(&inv, _create_bi1(&inv)); - administration::billing_item_add_to_invoice(&inv, _create_bi2(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi1()); + administration::billing_item_add_to_invoice(&inv, _create_bi2()); ASSERT_EQ(administration::invoice_add(&inv), A_ERR_SUCCESS); if (_test_peppol_file(inv.id)) { PASS(); } else { FAIL(); } diff --git a/tests/test_helper.cpp b/tests/test_helper.cpp index 85d228a..fc09fd6 100644 --- a/tests/test_helper.cpp +++ b/tests/test_helper.cpp @@ -5,6 +5,7 @@ #include "memops.hpp" #include "strops.hpp" +#include "countries.hpp" #include "administration.hpp" #include "administration_reader.hpp" #include "administration_writer.hpp" @@ -48,7 +49,7 @@ static contact _create_nl_consumer() } -static billing_item _create_bi1(invoice *inv) +static billing_item _create_bi1() { billing_item item = administration::billing_item_create_empty(); item.amount = 1; @@ -58,16 +59,14 @@ static billing_item _create_bi1(invoice *inv) item.discount = 2.0f; item.discount_is_percentage = 0; - tax_rate buffer[20]; - char* _country_codes[2] = {inv->supplier.address.country_code, inv->customer.address.country_code}; - u32 tax_rate_count = administration::tax_rate_get_by_country(buffer, 2, _country_codes); - tax_rate rand_rate = buffer[tax_rate_count-1]; - strops::copy(item.tax_internal_code, rand_rate.id, MAX_LEN_ID); + tax_rate rate; + administration::tax_rate_get_by_internal_code(&rate, "NL/21"); + strops::copy(item.tax_internal_code, rate.internal_code, MAX_LEN_SHORT_DESC); return item; } -static billing_item _create_bi2(invoice *inv) +static billing_item _create_bi2() { billing_item item = administration::billing_item_create_empty(); item.amount = 2; @@ -77,16 +76,14 @@ static billing_item _create_bi2(invoice *inv) item.discount = 5.0f; item.discount_is_percentage = 1; - tax_rate buffer[20]; - char* _country_codes[2] = {inv->supplier.address.country_code, inv->customer.address.country_code}; - u32 tax_rate_count = administration::tax_rate_get_by_country(buffer, 2, _country_codes); - tax_rate rand_rate = buffer[tax_rate_count-1]; - strops::copy(item.tax_internal_code, rand_rate.id, MAX_LEN_ID); + tax_rate rate; + administration::tax_rate_get_by_internal_code(&rate, "NL/21"); + strops::copy(item.tax_internal_code, rate.internal_code, MAX_LEN_SHORT_DESC); return item; } -static billing_item _create_bi3(invoice *inv) +static billing_item _create_bi3() { billing_item item = administration::billing_item_create_empty(); item.amount = 1; @@ -96,16 +93,14 @@ static billing_item _create_bi3(invoice *inv) item.discount = 2.0f; item.discount_is_percentage = 0; - tax_rate buffer[20]; - char* _country_codes[2] = {inv->supplier.address.country_code, inv->customer.address.country_code}; - u32 tax_rate_count = administration::tax_rate_get_by_country(buffer, 2, _country_codes); - tax_rate rand_rate = buffer[tax_rate_count-1]; - strops::copy(item.tax_internal_code, rand_rate.id, MAX_LEN_ID); + tax_rate rate; + administration::tax_rate_get_by_internal_code(&rate, "NL/21"); + strops::copy(item.tax_internal_code, rate.internal_code, MAX_LEN_SHORT_DESC); return item; } -static billing_item _create_bi4(invoice *inv) +static billing_item _create_bi4() { billing_item item = administration::billing_item_create_empty(); item.amount = 3; @@ -115,16 +110,14 @@ static billing_item _create_bi4(invoice *inv) item.discount = 0.0f; item.discount_is_percentage = 0; - tax_rate buffer[20]; - char* _country_codes[2] = {inv->supplier.address.country_code, inv->customer.address.country_code}; - u32 tax_rate_count = administration::tax_rate_get_by_country(buffer, 2, _country_codes); - tax_rate rand_rate = buffer[tax_rate_count-1]; - strops::copy(item.tax_internal_code, rand_rate.id, MAX_LEN_ID); + tax_rate rate; + administration::tax_rate_get_by_internal_code(&rate, "NL/21"); + strops::copy(item.tax_internal_code, rate.internal_code, MAX_LEN_SHORT_DESC); return item; } -static billing_item _create_bi5(invoice *inv) +static billing_item _create_bi5() { billing_item item = administration::billing_item_create_empty(); item.amount = 5; @@ -134,16 +127,14 @@ static billing_item _create_bi5(invoice *inv) item.discount = 5.0f; item.discount_is_percentage = 1; - tax_rate buffer[20]; - char* _country_codes[2] = {inv->supplier.address.country_code, inv->customer.address.country_code}; - u32 tax_rate_count = administration::tax_rate_get_by_country(buffer, 2, _country_codes); - tax_rate rand_rate = buffer[tax_rate_count-1]; - strops::copy(item.tax_internal_code, rand_rate.id, MAX_LEN_ID); + tax_rate rate; + administration::tax_rate_get_by_internal_code(&rate, "NL/21"); + strops::copy(item.tax_internal_code, rate.internal_code, MAX_LEN_SHORT_DESC); return item; } -static billing_item _create_bi6(invoice *inv) +static billing_item _create_bi6() { billing_item item = administration::billing_item_create_empty(); item.amount = 10; @@ -153,11 +144,9 @@ static billing_item _create_bi6(invoice *inv) item.discount = 0.0f; item.discount_is_percentage = 0; - tax_rate buffer[20]; - char* _country_codes[2] = {inv->supplier.address.country_code, inv->customer.address.country_code}; - u32 tax_rate_count = administration::tax_rate_get_by_country(buffer, 2, _country_codes); - tax_rate rand_rate = buffer[tax_rate_count-1]; - strops::copy(item.tax_internal_code, rand_rate.id, MAX_LEN_ID); + tax_rate rate; + administration::tax_rate_get_by_internal_code(&rate, "NL/21"); + strops::copy(item.tax_internal_code, rate.internal_code, MAX_LEN_SHORT_DESC); return item; } @@ -172,8 +161,8 @@ static billing_item _create_bi(float amount, float npi, char* taxrate) item.discount = 0.0f; item.discount_is_percentage = 0; tax_rate rate; - //administration::tax_rate_get_by_shorthandle(&rate, taxrate); - strops::copy(item.tax_internal_code, rate.id, MAX_LEN_ID); + administration::tax_rate_get_by_internal_code(&rate, taxrate); + strops::copy(item.tax_internal_code, rate.internal_code, MAX_LEN_SHORT_DESC); return item; } @@ -243,4 +232,15 @@ static bool _test_peppol_file(char* id) } return result; -}
\ No newline at end of file +} + +static void add_default_nl_tax_rates() +{ + tax_rate* tr_buffer = (tax_rate*)memops::alloc(sizeof(tax_rate) * 500); + country::get_available_tax_rates("NL", tr_buffer, 500); + + for (u32 i = 0; i < 10; i++) { + administration::tax_rate_add(tr_buffer[i]); + } + memops::unalloc(tr_buffer); +} |
