aboutsummaryrefslogtreecommitdiff
path: root/tests/test_core.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_core.c')
-rw-r--r--tests/test_core.c70
1 files changed, 70 insertions, 0 deletions
diff --git a/tests/test_core.c b/tests/test_core.c
index a9910e9..bf5bfe4 100644
--- a/tests/test_core.c
+++ b/tests/test_core.c
@@ -1143,6 +1143,76 @@ int main(void)
CHECK(!jbool(d, "ok"));
yyjson_doc_free(d);
+ /* CRLF, #RAR -1 ignored, zero-amount rows dropped */
+ {
+ static const char sie_crlf[] =
+ "#FLAGGA 0\r\n"
+ "#FORMAT PC8\r\n"
+ "#SIETYP 4\r\n"
+ "#FNAMN \"CRLF AB\"\r\n"
+ "#RAR 0 20240101 20241231\r\n"
+ "#RAR -1 20230101 20231231\r\n"
+ "#KONTO 1930 \"Företagskonto\"\r\n"
+ "#KONTO 2010 \"Eget kapital\"\r\n"
+ "#VER \"A\" \"1\" 20240201 \"Insättning\"\r\n"
+ "{\r\n"
+ "#TRANS 1930 {} 1000.00\r\n"
+ "#TRANS 2010 {} -1000.00\r\n"
+ "#TRANS 2010 {} 0.00\r\n"
+ "}\r\n";
+ char *b64 = util_b64((const unsigned char *)sie_crlf,
+ strlen(sie_crlf));
+ d = call_sie_import(g_session, org2, b64, 0);
+ CHECK_OK(d);
+ CHECK(jint(d, "result.vouchers") == 1);
+ int64_t fy_a = jint(d, "result.fiscal_year_id");
+ yyjson_doc_free(d);
+ free(b64);
+
+ d = call(reqf("{\"v\":1,\"id\":\"77a\",\"cmd\":\"fiscal_year.get\","
+ "\"session\":\"%s\",\"org\":%d,\"args\":{\"id\":%lld}}",
+ g_session, (int)org2, (long long)fy_a));
+ CHECK_OK(d);
+ CHECK_STR(d, "result.start_date", "2024-01-01");
+ CHECK_STR(d, "result.end_date", "2024-12-31");
+ yyjson_doc_free(d);
+ }
+
+ /* a later year's #IB must not duplicate carried balances */
+ {
+ static const char sie_year2[] =
+ "#FLAGGA 0\n"
+ "#FORMAT PC8\n"
+ "#SIETYP 4\n"
+ "#FNAMN \"CRLF AB\"\n"
+ "#RAR 0 20250101 20251231\n"
+ "#IB 0 1930 1000.00\n"
+ "#IB 0 2010 -1000.00\n"
+ "#VER \"A\" \"1\" 20250201 \"Insättning\"\n"
+ "{\n"
+ "#TRANS 1930 {} 50.00\n"
+ "#TRANS 2010 {} -50.00\n"
+ "}\n";
+ char *b64 = util_b64((const unsigned char *)sie_year2,
+ strlen(sie_year2));
+ d = call_sie_import(g_session, org2, b64, 0);
+ CHECK_OK(d);
+ int64_t fy_b = jint(d, "result.fiscal_year_id");
+ yyjson_doc_free(d);
+ free(b64);
+
+ d = call(reqf("{\"v\":1,\"id\":\"77b\",\"cmd\":\"report.trial_balance\","
+ "\"session\":\"%s\",\"org\":%d,\"args\":"
+ "{\"fiscal_year\":%lld}}",
+ g_session, (int)org2, (long long)fy_b));
+ CHECK_OK(d);
+ CHECK(find_amount(d, "result.accounts", "account", "1930",
+ "ib_ore") == 100000);
+ CHECK(find_amount(d, "result.accounts", "account", "1930",
+ "ub_ore") == 105000);
+ yyjson_doc_free(d);
+ }
+
/* ---------------- settings: default series ----------------------- */
d = call(reqf("{\"v\":1,\"id\":\"95\",\"cmd\":\"settings.get\","