aboutsummaryrefslogtreecommitdiff
path: root/clients
diff options
context:
space:
mode:
Diffstat (limited to 'clients')
-rw-r--r--clients/bokftui.c54
1 files changed, 43 insertions, 11 deletions
diff --git a/clients/bokftui.c b/clients/bokftui.c
index ec7e75a..f00bdc1 100644
--- a/clients/bokftui.c
+++ b/clients/bokftui.c
@@ -4538,6 +4538,11 @@ static void company_screen(struct app *a)
{
static int sel = 0;
const int nf = (int)(sizeof COMPANY_FIELDS / sizeof COMPANY_FIELDS[0]);
+ const int ninv = 2;
+ static const char *const invkeys[2] = { "invoice_bankgiro",
+ "invoice_our_ref" };
+ static const char *const invlabels[2] = { "Bankgiro",
+ "Vår referens (faktura)" };
int owner = a->role[0] && strcmp(a->role, "owner") == 0;
for (;;) {
if (g_quit)
@@ -4548,8 +4553,8 @@ static void company_screen(struct app *a)
free(resp);
return;
}
- char *vals[16];
- struct tui_form_field ff[16];
+ char *vals[20];
+ struct tui_form_field ff[20];
memset(ff, 0, sizeof ff);
for (int i = 0; i < nf; i++) {
char path[64];
@@ -4569,9 +4574,26 @@ static void company_screen(struct app *a)
ff[i].kind = TUI_F_TEXT;
}
free(resp);
- ff[nf].label = "Styrelseledamöter";
- ff[nf].kind = TUI_F_ACTION;
- int r = tui_form_run("Företagsuppgifter", ff, nf + 1, owner, &sel);
+ char *sresp =
+ client_rpc(&a->conn, "settings.get", a->session, a->org, "{}");
+ for (int i = 0; i < ninv; i++) {
+ char path[64];
+ int idx = nf + i;
+ vals[idx] = xcalloc(512, 1);
+ snprintf(path, sizeof path, "result.%s", invkeys[i]);
+ char *v = sresp ? jstr_dup(sresp, path) : NULL;
+ snprintf(vals[idx], 512, "%s", v ? v : "");
+ free(v);
+ ff[idx].label = invlabels[i];
+ ff[idx].value = vals[idx];
+ ff[idx].cap = 512;
+ ff[idx].kind = TUI_F_TEXT;
+ }
+ free(sresp);
+ ff[nf + ninv].label = "Styrelseledamöter";
+ ff[nf + ninv].kind = TUI_F_ACTION;
+ int r = tui_form_run("Företagsuppgifter", ff, nf + ninv + 1, owner,
+ &sel);
if (r >= 0 && r < nf) {
if (!company_field_valid(&COMPANY_FIELDS[r], vals[r])) {
tui_message("Ogiltigt värde", "%s", COMPANY_FIELDS[r].label);
@@ -4594,10 +4616,24 @@ static void company_screen(struct app *a)
show_error("Kunde inte spara", rr);
free(rr);
}
+ } else if (r >= nf && r < nf + ninv) {
+ yyjson_mut_doc *d = yyjson_mut_doc_new(NULL);
+ yyjson_mut_val *o = yyjson_mut_obj(d);
+ yyjson_mut_doc_set_root(d, o);
+ yyjson_mut_obj_add_strcpy(d, o, "key", invkeys[r - nf]);
+ yyjson_mut_obj_add_strcpy(d, o, "value", vals[r]);
+ char *args = yyjson_mut_write(d, 0, NULL);
+ yyjson_mut_doc_free(d);
+ char *rr = client_rpc(&a->conn, "settings.set", a->session,
+ a->org, args);
+ free(args);
+ if (!rr || !client_ok(rr))
+ show_error("Kunde inte spara", rr);
+ free(rr);
}
- if (r == nf)
+ if (r == nf + ninv)
board_screen(a);
- for (int i = 0; i < nf; i++)
+ for (int i = 0; i < nf + ninv; i++)
free(vals[i]);
if (r == TUI_FORM_BACK)
return;
@@ -4607,8 +4643,6 @@ static void company_screen(struct app *a)
static const char *const SETTING_KEYS[] = {
"default_series",
"attachment_dir",
- "invoice_bankgiro",
- "invoice_our_ref",
"invoice_receivable_account",
"invoice_revenue_account",
"smtp_host",
@@ -4622,8 +4656,6 @@ static const char *const SETTING_KEYS[] = {
static const char *const SETTING_LABELS[] = {
"Standardserie",
"Bilagornas mapp",
- "Bankgiro",
- "Vår referens",
"Fordringskonto",
"Intäktskonto",
"SMTP-server",