summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/nl_tax_tests.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/nl_tax_tests.cpp b/tests/nl_tax_tests.cpp
index bd7b51d..31382ed 100644
--- a/tests/nl_tax_tests.cpp
+++ b/tests/nl_tax_tests.cpp
@@ -106,9 +106,44 @@ TEST _nl_tax_1e(void)
PASS();
}
+TEST _nl_tax_2currency(void)
+{
+ administration::create_default(test_file_path);
+ administration::company_info_set(_create_nl_business());
+
+ 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"));
+
+ float eur_usd_exchange_rate = 1.2f;
+
+ inv.net = 50.0f / eur_usd_exchange_rate;
+ inv.tax = inv.net * 0.21f;
+ inv.allowance = 0.0f;
+ inv.total = inv.net + inv.tax;
+
+ 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");
+ 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");
+ GREATEST_ASSERT_FEQ(tl2->total_tax, inv.tax);
+
+ 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);
+ RUN_TEST(_nl_tax_2currency);
} \ No newline at end of file