9e0b89ee7e
* feat(settings): add option for company name position in invoice PDF * feat(migrations): add backfill for VAT account labels to correct bad seed data * feat(migrations): add backfill for VAT account labels to correct bad seed data * fix(ui): improve accessibility for company name position toggle in PDF settings * fix(bookkeeping): align BAS 2026 reference data with official PDF Reconciled lib/bookkeeping/bas-data/ against the BAS 2026 v1.1 official chart (1286 accounts). All real discrepancies fixed: - 2089 Fond för utvecklingsutgifter: k2_excluded → true - 8417 Räntekostnader för dold räntekompensation: k2_excluded → true - 1250, 1260 renamed to "(Fritt konto för Inventarier, verktyg och installationer)" — BAS 2026 freed these slots - Periodiseringsfond 2120-2139: added year suffixes (2120 = "...2020" etc.) and added 8 missing accounts (2121-2127, 2129) for years 2019, 2021-2027. Dropped phantom 2022/2024 prior-parser garbage. - 4075-4078: EUland → EU-land - 8411: förlagsoch → förlags- och Verified: 1282 of 1286 PDF accounts match exactly after edits (remaining 4 are PDF-parser artifacts, not real data). Build clean. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * feat(migrations): backfill BAS 2026 account labels in chart_of_accounts Companion to the TS reference fix. Updates existing companies' rows where they still carry seed-data typos or generic names that don't match BAS 2026: - 4075-4078: EUland → EU-land (hyphenation) - 8411: förlagsoch → förlags- och (hyphenation) - 2120, 2130-2137, 2139: rename "Periodiseringsfond" (generic, no year) to the BAS 2026 canonical name with year suffix Defensive: every WHERE clause matches an EXACT current value. Rows that have been manually renamed by users — including those with a wrong year that may reference legacy fonds from an earlier BAS numbering cycle — are left untouched. No row is deleted. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * feat(migrations): fix wrong-year labels on Periodiseringsfond accounts Follow-up to 20260513140000. The first backfill only renamed accounts whose name was the generic "Periodiseringsfond" (no year). Many customers were seeded from an older BAS numbering cycle where 2126 = "2016", 2127 = "2017", etc. — BAS 2026 reuses those account numbers for years 2026/2027. This migration aligns the year tag with the BAS 2026 meaning of each account number across 2120-2127, 2129, 2130-2137, 2139. Only rows whose name still starts with "Periodiseringsfond" are touched — customers who renamed the account to something custom keep their name. Verified on staging: all 18 accounts now carry BAS 2026 canonical names. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(data): update account names and descriptions for clarity and consistency * fix(migrations): backfill account names for BAS 2026 freed accounts and refine Periodiseringsfond name matching --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
72 lines
3.3 KiB
PL/PgSQL
72 lines
3.3 KiB
PL/PgSQL
-- Follow-up backfill: fix wrong-year labels on Periodiseringsfond accounts.
|
||
--
|
||
-- The previous migration (20260513140000) only renamed accounts whose name
|
||
-- was the generic "Periodiseringsfond" (no year). It deliberately left rows
|
||
-- with any year suffix alone, since a year tag could indicate intentional
|
||
-- legacy data. In practice it turned out that many customers were seeded
|
||
-- from an older BAS numbering cycle where 2126 = "2016", 2127 = "2017", etc.
|
||
-- BAS 2026 reuses those same account numbers for years 2026/2027.
|
||
--
|
||
-- This migration aligns the year tag with the BAS 2026 meaning of each
|
||
-- account number. To avoid clobbering customer-customised names, we only
|
||
-- touch rows whose name matches a known seeded shape:
|
||
-- "Periodiseringsfond"
|
||
-- "Periodiseringsfond YYYY"
|
||
-- "Periodiseringsfond YYYY – nr 2"
|
||
-- Anything else (e.g. "Min fond 2016", "Periodiseringsfond – avslutad") is
|
||
-- left alone.
|
||
|
||
BEGIN;
|
||
|
||
UPDATE public.chart_of_accounts
|
||
SET account_name = CASE account_number
|
||
WHEN '2120' THEN 'Periodiseringsfond 2020'
|
||
WHEN '2121' THEN 'Periodiseringsfond 2021'
|
||
WHEN '2122' THEN 'Periodiseringsfond 2022'
|
||
WHEN '2123' THEN 'Periodiseringsfond 2023'
|
||
WHEN '2124' THEN 'Periodiseringsfond 2024'
|
||
WHEN '2125' THEN 'Periodiseringsfond 2025'
|
||
WHEN '2126' THEN 'Periodiseringsfond 2026'
|
||
WHEN '2127' THEN 'Periodiseringsfond 2027'
|
||
WHEN '2129' THEN 'Periodiseringsfond 2019'
|
||
WHEN '2130' THEN 'Periodiseringsfond 2020 – nr 2'
|
||
WHEN '2131' THEN 'Periodiseringsfond 2021 – nr 2'
|
||
WHEN '2132' THEN 'Periodiseringsfond 2022 – nr 2'
|
||
WHEN '2133' THEN 'Periodiseringsfond 2023 – nr 2'
|
||
WHEN '2134' THEN 'Periodiseringsfond 2024 – nr 2'
|
||
WHEN '2135' THEN 'Periodiseringsfond 2025 – nr 2'
|
||
WHEN '2136' THEN 'Periodiseringsfond 2026 – nr 2'
|
||
WHEN '2137' THEN 'Periodiseringsfond 2027 – nr 2'
|
||
WHEN '2139' THEN 'Periodiseringsfond 2019 – nr 2'
|
||
END,
|
||
updated_at = now()
|
||
WHERE account_number IN (
|
||
'2120','2121','2122','2123','2124','2125','2126','2127','2129',
|
||
'2130','2131','2132','2133','2134','2135','2136','2137','2139'
|
||
)
|
||
AND account_name ~ '^Periodiseringsfond( \d{4}( – nr 2)?)?$'
|
||
AND account_name <> CASE account_number
|
||
WHEN '2120' THEN 'Periodiseringsfond 2020'
|
||
WHEN '2121' THEN 'Periodiseringsfond 2021'
|
||
WHEN '2122' THEN 'Periodiseringsfond 2022'
|
||
WHEN '2123' THEN 'Periodiseringsfond 2023'
|
||
WHEN '2124' THEN 'Periodiseringsfond 2024'
|
||
WHEN '2125' THEN 'Periodiseringsfond 2025'
|
||
WHEN '2126' THEN 'Periodiseringsfond 2026'
|
||
WHEN '2127' THEN 'Periodiseringsfond 2027'
|
||
WHEN '2129' THEN 'Periodiseringsfond 2019'
|
||
WHEN '2130' THEN 'Periodiseringsfond 2020 – nr 2'
|
||
WHEN '2131' THEN 'Periodiseringsfond 2021 – nr 2'
|
||
WHEN '2132' THEN 'Periodiseringsfond 2022 – nr 2'
|
||
WHEN '2133' THEN 'Periodiseringsfond 2023 – nr 2'
|
||
WHEN '2134' THEN 'Periodiseringsfond 2024 – nr 2'
|
||
WHEN '2135' THEN 'Periodiseringsfond 2025 – nr 2'
|
||
WHEN '2136' THEN 'Periodiseringsfond 2026 – nr 2'
|
||
WHEN '2137' THEN 'Periodiseringsfond 2027 – nr 2'
|
||
WHEN '2139' THEN 'Periodiseringsfond 2019 – nr 2'
|
||
END;
|
||
|
||
COMMIT;
|
||
|
||
NOTIFY pgrst, 'reload schema';
|