HemmaBudget – serie-ID och sista betalning Installation 1. Ta en kopia av dina nuvarande fyra PHP-filer. 2. Ersätt editräkning.php, fleraräkningar.php, nyräkning.php och copyräkning.php i samma mapp där de ligger idag. Behåll filnamnen med ä. 3. Ladda om sidorna innan du sparar ett formulär. Din befintliga serie_id-kolumn (VARCHAR(36)) används. Du behöver inte köra om SQL-kommandona som grupperade dina gamla poster. Ingen ALTER TABLE eller omgruppering körs i PHP-filerna. Alla användardatabaser där dessa sidor används behöver kolumnen serie_id i budget-tabellen. Funktioner - nyräkning.php: ett nytt slumpmässigt serie-ID per ny räkning. - fleraräkningar.php: ett nytt ID per sparad serie. Alla valda månader delar det, även vid avbetalning över årsskiften. Även en vald månad får ett ID. - copyräkning.php: originalets ID läses från databasen och följer med till samtliga kopior. Om originalet saknar ID får originalet och kopiorna ett gemensamt nytt ID. Andra gamla poster kopplas inte ihop automatiskt. - editräkning.php: befintligt ID bevaras. Sista betalning tar efter bekräftelse bort alla poster i samma serie efter den VALDA månaden och året, inklusive senare poster som är markerade som betalda. Aktuell post, samma månad, tidigare månader och andra serier behålls. Antalet borttagna poster visas. Checkboxen Betald är separat. Sista betalning är en åtgärd när du sparar, inte en permanent spärr mot att skapa eller kopiera nya räkningar senare. - Om en gammal räkning saknar serie-ID spärras Sista betalning. Vanlig redigering ger den posten ett nytt eget ID, utan att gissa vilka andra räkningar som hör ihop. Befintlig layout och övriga flikar behålls. Anpassat antal avbetalningsmånader skickas nu korrekt från formuläret (1–120 månader). Tekniskt SQL-värden för sparning och radering binds som parametrar. Sparformulären har CSRF-skydd. Databasoperationerna använder transaktioner; rollback och radlås förutsätter InnoDB. Bifogade filer omfattas inte av databastransaktioner och raderas inte fysiskt av Sista betalning. Kontroller Alla fyra filer har syntaxkontrollerats med en PHP-parser. Raderingsfrågan har kontrollerats med testdata för olika serier, samma månad och årsskifte i SQLite. Ingen körning mot din PHP-server eller MySQL/MariaDB-databas har gjorts.