summaryrefslogtreecommitdiff
path: root/docs/PAYROLL.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/PAYROLL.md')
-rw-r--r--docs/PAYROLL.md19
1 files changed, 13 insertions, 6 deletions
diff --git a/docs/PAYROLL.md b/docs/PAYROLL.md
index b821754..23e7fb1 100644
--- a/docs/PAYROLL.md
+++ b/docs/PAYROLL.md
@@ -5,7 +5,7 @@ Status: Design draft · 2026-09-21 · License: GPL-3.0-or-later
Payroll for a small Swedish AB that runs monthly salaries from the books.
Wave 1 is the engine and the mandatory steps; the employee is the owner but
the schema and commands are multi-employee from the start. Wave 2 (the
-lönebesked PDF and its delivery) is done; wave 3 is the TUI.
+lönebesked PDF and its delivery) and wave 3 (the TUI) are done.
## 1. Scope
@@ -227,12 +227,19 @@ the base is the gross.
SMTP configuration `SMTP_NOT_CONFIGURED` and a failed delivery
`SMTP_FAILED` (the stored attachment stays linked). `dry_run` validates,
renders and stores nothing. See `PROTOCOL.md` §7.12.
-- **TUI — Lön** (new section after Fakturering): `Lönekörningar` (list,
- Ctrl+N for a new run), `Anställda` under Register, and a **Skattetabeller**
- action/status that fetches and warns.
+- **TUI — Lön** (done, `clients/screens_payroll.c`): `Lönekörningar` (list,
+ Ctrl+N for a new run) under Lön, `Anställda` under Företag, and a
+ **Skattetabeller** screen (System, since the tables are national) with
+ status, the Skatteverket fetch and the offline file import.
- The run screen shows the preview (F5), posts with Ctrl+Enter after
- confirmation, then offers the buttons **Lönebesked**, **AGI-underlag** and
- **Betala skatt & avgifter** as manual steps.
+ confirmation, then offers the buttons **Lönebesked** (saves/opens the
+ PDF), **AGI-underlag** (`payroll.agi` in a pager, owner only) and
+ **Betala skatt & avgifter** (`payroll.pay_tax` with a date prompt) as
+ manual steps. Steps that do not apply yet are dimmed with the reason.
+ Posting and paying show the resulting voucher as `V-<n>`.
+- The list title warns when the current year's tax tables are missing; a
+ new run is refused with a pointer to Anställda when nobody has a monthly
+ salary.
## 7. Testing