From 23bc54f5581a1423cf98f681fd5358ec8b996b54 Mon Sep 17 00:00:00 2001 From: Padreug Date: Mon, 31 Aug 2026 13:56:16 +0200 Subject: [PATCH] feat(ui): super-user payroll console MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The page the whole extension exists to be driven from: pick a user, pick which of their wallets to pay into, set amount, currency, frequency, start date and how many payments — plus the ledger, filters and a CSV button. Notes for review: - The employee-wallet picker only offers wallets belonging to the selected employee. The API rejects anything else, so this is about not presenting the mistake rather than about enforcement. - The dialog draws a live calendar from whatever is currently typed. A wrong start date or frequency is cheapest to catch before saving, which is what the preview endpoint was for. - "Next payday" comes from the schedule endpoint per row rather than being computed in JS. A payday this page derived for itself could disagree with the one the scheduler will actually use, and month-end is exactly where that would happen. - The destructive actions say what they do: resume warns that missed paydays are written off, delete says the schedule position goes with the row and points at cancel instead, pay-now says the period is consumed even if its payday has not arrived. - A refused pay-now surfaces the ledger row's reason with a longer toast — triggering a payout by hand is precisely when you want to know why it did not land. Quasar UMD rules honoured: no self-closing tags anywhere in the template, `${ }` delimiters so Jinja never sees a moustache, and `:style` bindings instead of a