TEST _nl_tax_1a(void) { administration::create_default(test_file_path); administration::company_info_set(_create_nl_business()); 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")); 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"); 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"); ASSERT_EQ(tl2->total_tax, 50.0f * 0.21f); PASS(); } TEST _nl_tax_1b(void) { administration::create_default(test_file_path); administration::company_info_set(_create_nl_business()); 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")); 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"); 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"); ASSERT_EQ(tl2->total_tax, 25.0f * 0.09f); PASS(); } TEST _nl_tax_1d(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], "1d"); 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()); 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")); 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"); 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"); ASSERT_EQ(tl2->total_tax, 0.0f); PASS(); } SUITE(nl_tax_statement) { RUN_TEST(_nl_tax_1a); RUN_TEST(_nl_tax_1b); RUN_TEST(_nl_tax_1d); RUN_TEST(_nl_tax_1e); }