Features #321
stängdFeatures #178: Samordning: generiska föreningsspecifika klippkort
Features #319: Rapportera transaktioner per period, kategori och betalningssätt
Skapa oföränderlig transaktionsgrund för rapporter
100%
Beskrivning
Skapa en oföränderlig, tenantavgränsad datagrund som #319 kan använda utan att läsa föränderliga artikelkategorier eller tolka kontant och klippkort som samma slags betalning.
Definition of Done:
- När en transaktion slutförs sparas artikelkategori-id och kategorinamn som snapshots på transaktionsraden; saknad kategori representeras som Övrigt.
- Senare namnbyte, flytt eller borttagning av artikel/kategori ändrar inte den slutförda transaktionens rapportvärden.
- Ett rapportlager returnerar betalningsfördelning som metodkod och faktiskt försäljningsbelopp per transaktionsrad.
- Kontant redovisas som monetär metod med faktiskt belopp. Klippkort redovisas separat som nyttjande med 0 kr i försäljning och får inte dubbelräknas.
- Gränssnittet kan lägga till framtida monetära metoder som Swish eller bankkort utan att rapportens summeringskod behöver ändras.
- Slutförande, snapshots och fördelning är atomära och idempotenta.
- Befintliga syntetiska transaktioner hanteras deterministiskt vid migration; ingen verklig produktionsdata finns i scope.
- Tenantisolering, blandade kategorier, Övrigt, prisändring, kategoriförändring, kontant, klippkort och upprepat slutförande testas i MariaDB.
- Full isolerad CI och frontendbygge passerar.
Avgränsning: Ingen rapportvy, CSV-export, Swish-integration, bankkortsbetalning, delad monetär betalning, närvaromodell, LOK-bedömning eller produktionsaktivering.
Acceptanskriterier
Slutförda transaktionsrader har oföränderliga artikel- och kategorisnapshots. Ett tenantavgränsat rapportlager returnerar metodkod och faktiskt försäljningsbelopp per rad: kontant med betalt belopp och klippkort separat med 0 kr. Framtida monetära metoder kan läggas till utan ändrad summeringskod. Atomär/idempotent slutföring, befintlig syntetisk data, Övrigt, kategori- och prisändring, kontant, klippkort och tenantisolering verifieras i MariaDB. Ingen rapportvy eller ny betalningsintegration ingår.
Testresultat
CI godkänd för 4fbb3f8. Acceptansuppgradering 020→021 godkänd med befintliga slutbehandlade rader; äldre affärsvärden oförändrade; historiska rader visas som Övrigt.
CA Uppdaterad av Codex API för 11 dagar sedan · Redigerad
Implementerat i commit 3540320ae51664603dbeb34490db73dbc130d3da och pushat till codex/punch-card-types. Migration 021 lägger oföränderliga kategori-id/-namn på köprader med deterministisk bakåtkompatibilitet. Kontant- och blandat köp fryser kategorin atomiskt vid slutförande. TransactionReportSource ger tenantavgränsade rader med method_code, sales_cents och covered_cents; klippkortsnyttjande ger 0 kr i ny försäljning och klippkortsköp redovisas vid köpet. Verifiering: PHP-syntax OK, Vite-build OK, isolerad CI PASS med 84 grundtester/631 assertions och 178 MariaDB-tester/3268 assertions. Två första CI-felen gällde enbart svenska tecken i syntetiska ASCII-slug/artikelnummer och korrigerades. Ingen acceptans- eller produktionsmigrering har körts.
CA Uppdaterad av Codex API för 11 dagar sedan
Acceptansförsök i #323 identifierade att historisk bakfyllnad i migration 021 stoppas korrekt av triggern som skyddar slutbehandlade köprader. Leveransen avbröts före appaktivering; schema 020 och alla äldre affärsvärden återställdes och verifierades. Korrigering: ingen osäker historisk bakfyllnad. Äldre rader lämnas utan snapshot och rapporteras som Övrigt; nya rader får snapshot i ordinarie skrivflöde.
CA Uppdaterad av Codex API för 11 dagar sedan
Korrigerat i commit 4fbb3f8ff01a43d0ce29f8c3f4b9b21341d3a2e1. Historiska slutbehandlade rader skrivs inte om; saknad snapshot rapporteras deterministiskt som Övrigt. Full CI godkänd. Verklig uppgradering schema 020 till 021 godkänd i syntetisk acceptans med befintliga slutbehandlade rader; äldre affärskolumner oförändrade.
CA Uppdaterad av Codex API för 11 dagar sedan
- Testresultat uppdaterad (skillnader)
CA Uppdaterad av Codex API för 10 dagar sedan
- Status ändrad från Verification till Ready for deploy
- % Klart ändrad från 80 till 90
Slutverifiering 2026-09-21: full CI och MariaDB-testning för 4fbb3f8 är godkända. Syntetisk acceptansuppgradering 020→021 med befintliga finaliserade rader bevarade alla äldre affärsvärden; historiska rader utan snapshot visas deterministiskt som Övrigt. Stängda #322–#328 verifierar den faktiska rapportanvändningen med kontant, klippkort, flera kategorier, deltagare, perioder och totaler utan dubbelräkning. Ingen produktion har migrerats.