aboutsummaryrefslogtreecommitdiff
path: root/clients/screens_settings.c
diff options
context:
space:
mode:
Diffstat (limited to 'clients/screens_settings.c')
-rw-r--r--clients/screens_settings.c97
1 files changed, 71 insertions, 26 deletions
diff --git a/clients/screens_settings.c b/clients/screens_settings.c
index c6a46c5..8a31620 100644
--- a/clients/screens_settings.c
+++ b/clients/screens_settings.c
@@ -321,10 +321,6 @@ static const struct setting_field SMTP_SETTINGS[] = {
{ "smtp_password", "SMTP-lösenord", NULL, 0, 1 },
};
-static const struct setting_field SYSTEM_SETTINGS[] = {
- { "attachment_dir", "Bilagornas mapp", NULL, 0, 0 },
-};
-
static int settings_can_write(struct app *a)
{
return a->role[0] && (strcmp(a->role, "owner") == 0 ||
@@ -347,27 +343,40 @@ static void smtp_settings_screen(struct app *a)
settings_can_write(a), 1, &sel);
}
-void system_settings_screen(struct app *a)
+static const char *const SYSTEM_ITEMS[] = {
+ "Skattetabeller",
+ "Revision",
+};
+
+void system_screen(struct app *a)
{
static int sel = 0;
- settings_form(a, "Systeminställningar", SYSTEM_SETTINGS,
- (int)(sizeof SYSTEM_SETTINGS / sizeof SYSTEM_SETTINGS[0]),
- settings_can_write(a), 0, &sel);
+ for (;;) {
+ if (g_quit)
+ return;
+ int r = tui_menu("System", SYSTEM_ITEMS,
+ (int)(sizeof SYSTEM_ITEMS / sizeof SYSTEM_ITEMS[0]),
+ 0, &sel);
+ if (r < 0)
+ return;
+ if (r == 0)
+ payroll_tax_tables_screen(a);
+ else if (r == 1)
+ audit_screen(a);
+ }
}
-void company_screen(struct app *a)
+static void company_data_screen(struct app *a)
{
static int sel = 0;
const int nf = (int)(sizeof COMPANY_FIELDS / sizeof COMPANY_FIELDS[0]);
int owner = a->role[0] && strcmp(a->role, "owner") == 0;
- int writer = settings_can_write(a);
- const char *settings_reason = writer ? NULL : "du har inte behörighet";
for (;;) {
if (g_quit)
return;
char *resp = client_rpc(&a->conn, "org.get", a->session, a->org, "{}");
if (!resp || !client_ok(resp)) {
- show_error("Bolaget", resp);
+ show_error("Företagsuppgifter", resp);
free(resp);
return;
}
@@ -392,15 +401,7 @@ void company_screen(struct app *a)
ff[i].kind = TUI_F_TEXT;
}
free(resp);
- struct tui_form_action acts[3] = {
- { "Fakturauppgifter…", writer ? 1 : 0, settings_reason },
- { "E-post (SMTP)…", writer ? 1 : 0, settings_reason },
- { "Styrelseledamöter", 1, NULL },
- };
- tui_form_hint("upp/ned/Tab = flytta Enter = ändra/utför"
- " F5 = uppdatera Esc/q = tillbaka ^C = avsluta");
- int r = tui_form_run_actions("Bolaget", ff, nf, owner, acts, 3, NULL,
- &sel);
+ int r = tui_form_run("Företagsuppgifter", ff, nf, 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);
@@ -426,14 +427,58 @@ void company_screen(struct app *a)
}
for (int i = 0; i < nf; i++)
free(vals[i]);
- if (r == TUI_FORM_ACTION + 0)
+ if (r == TUI_FORM_BACK)
+ return;
+ }
+}
+
+static const char *const COMPANY_ITEMS[] = {
+ "Företagsuppgifter",
+ "Fakturauppgifter",
+ "E-post (SMTP)",
+ "Styrelseledamöter",
+ MK_SECTION "Register",
+ "Anställda",
+ "Kunder",
+ "Momsregler",
+};
+
+void company_screen(struct app *a)
+{
+ static int sel = 0;
+ for (;;) {
+ if (g_quit)
+ return;
+ int r = tui_menu("Bolaget", COMPANY_ITEMS,
+ (int)(sizeof COMPANY_ITEMS / sizeof COMPANY_ITEMS[0]),
+ 0, &sel);
+ if (r < 0)
+ return;
+ switch (r) {
+ case 0:
+ company_data_screen(a);
+ break;
+ case 1:
invoice_settings_screen(a);
- else if (r == TUI_FORM_ACTION + 1)
+ break;
+ case 2:
smtp_settings_screen(a);
- else if (r == TUI_FORM_ACTION + 2)
+ break;
+ case 3:
board_screen(a);
- else if (r == TUI_FORM_BACK)
- return;
+ break;
+ case 5:
+ employees_screen(a);
+ break;
+ case 6:
+ customers_screen(a);
+ break;
+ case 7:
+ rules_screen(a);
+ break;
+ default:
+ break;
+ }
}
}