summaryrefslogtreecommitdiff
path: root/src/cmd_settings.c
diff options
context:
space:
mode:
authorAnders Betts <anders.betts@gmail.com>2026-09-21 21:43:44 +0200
committerAnders Betts <anders.betts@gmail.com>2026-09-21 21:43:44 +0200
commit62a92f0af0442c78277c3c97c9efe6fef8145625 (patch)
tree3802a62904880da22bf84a44e9ece3cdff9cd8aa /src/cmd_settings.c
parentf1eeb15781a044a9451ee08b91c63feb395b4767 (diff)
downloadbokf-62a92f0af0442c78277c3c97c9efe6fef8145625.tar.gz
bokf-62a92f0af0442c78277c3c97c9efe6fef8145625.zip
settings: per-feature voucher series and console invoice number; tui: F9 hintsv0.1.60
Diffstat (limited to 'src/cmd_settings.c')
-rw-r--r--src/cmd_settings.c44
1 files changed, 38 insertions, 6 deletions
diff --git a/src/cmd_settings.c b/src/cmd_settings.c
index 066dc55..28167de 100644
--- a/src/cmd_settings.c
+++ b/src/cmd_settings.c
@@ -20,6 +20,9 @@ static yyjson_mut_val *h_settings_get(struct req *r)
yyjson_mut_val *o = yyjson_mut_obj(r->rdoc);
int have_default = 0, have_bank = 0, have_receivable = 0, have_revenue = 0;
int have_password = 0, have_security = 0;
+ int have_voucher = 0, have_invoice = 0, have_payroll = 0;
+ int have_bokslut = 0, have_ib = 0;
+ char legacy_series[16] = "A";
sqlite3_stmt *st = NULL;
if (sqlite3_prepare_v2(
r->db, "SELECT key,value FROM settings WHERE org_id=?1", -1, &st,
@@ -35,22 +38,46 @@ static yyjson_mut_val *h_settings_get(struct req *r)
}
yyjson_mut_obj_add(o, yyjson_mut_strcpy(r->rdoc, k),
yyjson_mut_strcpy(r->rdoc, v ? v : ""));
- if (strcmp(k, "default_series") == 0)
+ if (strcmp(k, "default_series") == 0) {
have_default = 1;
- if (strcmp(k, "bank_account") == 0)
+ if (v && *v)
+ snprintf(legacy_series, sizeof legacy_series, "%s", v);
+ } else if (strcmp(k, "series_voucher") == 0) {
+ have_voucher = 1;
+ } else if (strcmp(k, "series_invoice") == 0) {
+ have_invoice = 1;
+ } else if (strcmp(k, "series_payroll") == 0) {
+ have_payroll = 1;
+ } else if (strcmp(k, "series_bokslut") == 0) {
+ have_bokslut = 1;
+ } else if (strcmp(k, "series_ib") == 0) {
+ have_ib = 1;
+ } else if (strcmp(k, "bank_account") == 0) {
have_bank = 1;
- if (strcmp(k, "invoice_receivable_account") == 0)
+ } else if (strcmp(k, "invoice_receivable_account") == 0) {
have_receivable = 1;
- if (strcmp(k, "invoice_revenue_account") == 0)
+ } else if (strcmp(k, "invoice_revenue_account") == 0) {
have_revenue = 1;
- if (strcmp(k, "smtp_security") == 0)
+ } else if (strcmp(k, "smtp_security") == 0) {
have_security = 1;
+ }
}
}
sqlite3_finalize(st);
}
if (!have_default)
yyjson_mut_obj_add_strcpy(r->rdoc, o, "default_series", "A");
+ if (!have_voucher)
+ yyjson_mut_obj_add_strcpy(r->rdoc, o, "series_voucher",
+ legacy_series);
+ if (!have_invoice)
+ yyjson_mut_obj_add_strcpy(r->rdoc, o, "series_invoice", "F");
+ if (!have_payroll)
+ yyjson_mut_obj_add_strcpy(r->rdoc, o, "series_payroll", "L");
+ if (!have_bokslut)
+ yyjson_mut_obj_add_strcpy(r->rdoc, o, "series_bokslut", "Å");
+ if (!have_ib)
+ yyjson_mut_obj_add_strcpy(r->rdoc, o, "series_ib", "IB");
if (!have_bank)
yyjson_mut_obj_add_strcpy(r->rdoc, o, "bank_account", "1930");
if (!have_receivable)
@@ -135,7 +162,12 @@ static yyjson_mut_val *h_settings_set(struct req *r)
}
size_t maxlen;
int digits_only = 0, bankgiro = 0, port = 0, security = 0;
- if (strcmp(key, "default_series") == 0)
+ if (strcmp(key, "default_series") == 0 ||
+ strcmp(key, "series_voucher") == 0 ||
+ strcmp(key, "series_invoice") == 0 ||
+ strcmp(key, "series_payroll") == 0 ||
+ strcmp(key, "series_bokslut") == 0 ||
+ strcmp(key, "series_ib") == 0)
maxlen = 8;
else if (strcmp(key, "attachment_dir") == 0 ||
strcmp(key, "smtp_host") == 0 ||