diff options
| author | Anders Betts <anders.betts@gmail.com> | 2026-09-17 23:02:41 +0200 |
|---|---|---|
| committer | Anders Betts <anders.betts@gmail.com> | 2026-09-17 23:02:41 +0200 |
| commit | 2a98cce8434f7ea27f777d9e6422a1eb92ba8be7 (patch) | |
| tree | ac380bc2e3e64f73adac50fbb63a7cbf1348e417 /tests/test_core.c | |
| parent | 0241122e05ac0bd174d4ec43a5882397c146aa89 (diff) | |
| download | bokf-2a98cce8434f7ea27f777d9e6422a1eb92ba8be7.tar.gz bokf-2a98cce8434f7ea27f777d9e6422a1eb92ba8be7.zip | |
sie: import CRLF, #RAR 0, zero rows; skip #IB with prior historyv0.1.6
- tokenizer treats CR as whitespace; closing brace matches with CRLF
- only #RAR with year indicator 0 selects the fiscal year
- zero-amount #TRANS rows are dropped instead of violating the schema
- #IB becomes an IB voucher only when the year has no earlier history
Diffstat (limited to 'tests/test_core.c')
| -rw-r--r-- | tests/test_core.c | 70 |
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\"," |
