aboutsummaryrefslogtreecommitdiff
path: root/clients
diff options
context:
space:
mode:
Diffstat (limited to 'clients')
-rw-r--r--clients/screens_dashboard.c26
-rw-r--r--clients/screens_settings.c70
2 files changed, 60 insertions, 36 deletions
diff --git a/clients/screens_dashboard.c b/clients/screens_dashboard.c
index a386dae..9deca37 100644
--- a/clients/screens_dashboard.c
+++ b/clients/screens_dashboard.c
@@ -276,8 +276,7 @@ static const char *const MAIN_ITEMS[] = {
"Lönekörningar",
MK_SECTION "Rapporter & bokslut",
"Rapporter", "Bokslut",
- MK_SECTION "Företag",
- "Anställda", "Kunder", "Bolaget", "Momsregler",
+ "Bolaget",
MK_SECTION "System",
"Skattetabeller", "Revision", "Systeminställningar",
MK_SECTION "Räkenskapsår",
@@ -330,34 +329,25 @@ void dashboard(struct app *a)
case 11:
open_scene(a, "bokslut");
break;
- case 13:
- open_scene(a, "employees");
- break;
- case 14:
- open_scene(a, "customers");
- break;
- case 15:
+ case 12:
open_scene(a, "company");
break;
- case 16:
- open_scene(a, "rules");
- break;
- case 18:
+ case 14:
open_scene(a, "tax_tables");
break;
- case 19:
+ case 15:
open_scene(a, "audit");
break;
- case 20:
+ case 16:
open_scene(a, "system");
break;
- case 22:
+ case 18:
open_scene(a, "ib");
break;
- case 23:
+ case 19:
select_fiscal_year(a);
break;
- case 24:
+ case 20:
return;
default:
break; /* section header */
diff --git a/clients/screens_settings.c b/clients/screens_settings.c
index c6a46c5..227ee68 100644
--- a/clients/screens_settings.c
+++ b/clients/screens_settings.c
@@ -355,19 +355,17 @@ void system_settings_screen(struct app *a)
settings_can_write(a), 0, &sel);
}
-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 +390,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 +416,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;
+ }
}
}