summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/test_core.c120
1 files changed, 120 insertions, 0 deletions
diff --git a/tests/test_core.c b/tests/test_core.c
index 6f114b9..bb31fc7 100644
--- a/tests/test_core.c
+++ b/tests/test_core.c
@@ -996,6 +996,16 @@ int main(void)
CHECK_STR(d, "error.code", "NOT_FOUND");
yyjson_doc_free(d);
+ /* voucher.list reports the attachment count */
+ d = call(reqf("{\"v\":1,\"id\":\"61i\",\"cmd\":\"voucher.list\","
+ "\"session\":\"%s\",\"org\":%d,\"args\":{\"limit\":5}}",
+ g_session, (int)org_id));
+ CHECK_OK(d);
+ CHECK(jint(d, "result.items.0.attachment_count") >= 1);
+ CHECK(jint(d, "result.items.1.attachment_count") == 0);
+ CHECK(jint(d, "result.items.2.attachment_count") >= 1);
+ yyjson_doc_free(d);
+
/* correction */
d = call(reqf("{\"v\":1,\"id\":\"62\",\"cmd\":\"voucher.correct\","
"\"session\":\"%s\",\"org\":%d,\"args\":{\"voucher\":%lld,"
@@ -1518,6 +1528,116 @@ int main(void)
CHECK(n05 == 1);
yyjson_doc_free(d);
+ /* ---------------- bokslut: dispositions, tax, transfer ---------- */
+ d = call(reqf("{\"v\":1,\"id\":\"120\",\"cmd\":\"bokslut.post\","
+ "\"session\":\"%s\",\"org\":%d,\"dry_run\":true,\"args\":"
+ "{\"tax_rate\":20.6}}",
+ g_session, (int)vat_org));
+ CHECK_OK(d);
+ CHECK(jint(d, "result.result_before_ore") == 132000);
+ CHECK(jint(d, "result.taxable_ore") == 132000);
+ CHECK(jint(d, "result.tax_ore") == 27192);
+ CHECK(jint(d, "result.result_after_ore") == 104808);
+ CHECK(yyjson_arr_size(jget(d, "result.vouchers")) == 2);
+ yyjson_doc_free(d);
+
+ d = call(reqf("{\"v\":1,\"id\":\"121\",\"cmd\":\"bokslut.post\","
+ "\"session\":\"%s\",\"org\":%d,\"args\":"
+ "{\"tax_rate\":20.6,\"periodiseringsfond_ore\":50000}}",
+ g_session, (int)vat_org));
+ CHECK_OK(d);
+ CHECK(jint(d, "result.entries_ore") == -50000);
+ CHECK(jint(d, "result.taxable_ore") == 82000);
+ CHECK(jint(d, "result.tax_ore") == 16892);
+ CHECK(jint(d, "result.result_after_ore") == 65108);
+ CHECK(yyjson_arr_size(jget(d, "result.vouchers")) == 3);
+ yyjson_doc_free(d);
+
+ d = call(reqf("{\"v\":1,\"id\":\"122\",\"cmd\":\"report.balance_sheet\","
+ "\"session\":\"%s\",\"org\":%d}",
+ g_session, (int)vat_org));
+ CHECK_OK(d);
+ CHECK(find_amount(d, "result.equity.accounts", "account", "2110",
+ "amount_ore") == 50000);
+ CHECK(find_amount(d, "result.liabilities.accounts", "account", "2512",
+ "amount_ore") == 16892);
+ CHECK(find_amount(d, "result.equity.accounts", "account", "2099",
+ "amount_ore") == 65108);
+ yyjson_doc_free(d);
+
+ d = call(reqf("{\"v\":1,\"id\":\"123\",\"cmd\":\"bokslut.post\","
+ "\"session\":\"%s\",\"org\":%d,\"args\":"
+ "{\"entries\":[{\"debit_account\":\"8910\","
+ "\"amount_ore\":100}]}}",
+ g_session, (int)vat_org));
+ CHECK_STR(d, "error.code", "INVALID_ARGS");
+ yyjson_doc_free(d);
+
+ /* ---------------- SRU (INK2/INK2R/INK2S) ----------------------- */
+ d = call(reqf("{\"v\":1,\"id\":\"124\",\"cmd\":\"org.update\","
+ "\"session\":\"%s\",\"org\":%d,\"args\":"
+ "{\"org_nr\":\"559331-2126\",\"postal_code\":\"192 48\","
+ "\"city\":\"Sollentuna\"}}",
+ g_session, (int)vat_org));
+ CHECK_OK(d);
+ yyjson_doc_free(d);
+
+ d = call(reqf("{\"v\":1,\"id\":\"125\",\"cmd\":\"sru.export\","
+ "\"session\":\"%s\",\"org\":%d,\"args\":"
+ "{\"adjustments\":[{\"code\":\"7653\","
+ "\"amount_ore\":10000}]}}",
+ g_session, (int)vat_org));
+ CHECK_OK(d);
+ CHECK_STR(d, "result.period", "2026P4");
+ CHECK_STR(d, "result.blankett", "INK2-2026P4");
+ char *sb64 = jstr(d, "result.blanketter.content_base64");
+ unsigned char *srub = NULL;
+ size_t srul = 0;
+ CHECK(sb64 && util_b64_decode(sb64, strlen(sb64), &srub, &srul) == 0);
+ char *sru = xmalloc(srul + 1);
+ memcpy(sru, srub, srul);
+ sru[srul] = '\0';
+ free(srub);
+ CHECK(strstr(sru, "#BLANKETT INK2-2026P4") != NULL);
+ CHECK(strstr(sru, "#BLANKETT INK2R-2026P4") != NULL);
+ CHECK(strstr(sru, "#BLANKETT INK2S-2026P4") != NULL);
+ CHECK(strstr(sru, "#UPPGIFT 7011 20260101") != NULL);
+ CHECK(strstr(sru, "#UPPGIFT 7410 1500") != NULL);
+ CHECK(strstr(sru, "#UPPGIFT 7513 80") != NULL);
+ CHECK(strstr(sru, "#UPPGIFT 7525 500") != NULL);
+ CHECK(strstr(sru, "#UPPGIFT 7528 168") != NULL);
+ CHECK(strstr(sru, "#UPPGIFT 7450 651") != NULL);
+ CHECK(strstr(sru, "#UPPGIFT 7281 1875") != NULL);
+ CHECK(strstr(sru, "#UPPGIFT 7369 355") != NULL);
+ CHECK(strstr(sru, "#UPPGIFT 7321 500") != NULL);
+ CHECK(strstr(sru, "#UPPGIFT 7302 651") != NULL);
+ CHECK(strstr(sru, "#UPPGIFT 7650 651") != NULL);
+ CHECK(strstr(sru, "#UPPGIFT 7651 168") != NULL);
+ CHECK(strstr(sru, "#UPPGIFT 7653 100") != NULL);
+ CHECK(strstr(sru, "#UPPGIFT 7670 919") != NULL);
+ CHECK(strstr(sru, "#UPPGIFT 7104 919") != NULL);
+ CHECK(strstr(sru, "#FIL_SLUT") != NULL);
+ free(sru);
+ yyjson_doc_free(d);
+
+ d = call(reqf("{\"v\":1,\"id\":\"126\",\"cmd\":\"sru.export\","
+ "\"session\":\"%s\",\"org\":%d,\"args\":{}}",
+ g_session, (int)vat_org));
+ CHECK_OK(d);
+ sb64 = jstr(d, "result.info.content_base64");
+ srub = NULL;
+ srul = 0;
+ CHECK(sb64 && util_b64_decode(sb64, strlen(sb64), &srub, &srul) == 0);
+ sru = xmalloc(srul + 1);
+ memcpy(sru, srub, srul);
+ sru[srul] = '\0';
+ free(srub);
+ CHECK(strstr(sru, "#ORGNR 165593312126") != NULL);
+ CHECK(strstr(sru, "#POSTORT Sollentuna") != NULL);
+ CHECK(strstr(sru, "#FILNAMN BLANKETTER.SRU") != NULL);
+ free(sru);
+ yyjson_doc_free(d);
+
/* close fiscal year and verify hard stop */
d = call(reqf("{\"v\":1,\"id\":\"73\",\"cmd\":\"fiscal_year.close\","
"\"session\":\"%s\",\"org\":%d,\"args\":{\"id\":%lld,"