--- phase: 08-db-foundation plan: 01 type: execute wave: 1 depends_on: [] files_modified: - database/migrations/20260315_000050_create_receipt_configs_table.sql - database/migrations/20260315_000051_create_receipts_table.sql - database/migrations/20260315_000052_create_receipt_number_counters_table.sql - database/migrations/20260315_000053_extend_company_settings_extra_fields.sql - src/Modules/Settings/CompanySettingsRepository.php - resources/views/settings/company.php - DOCS/DB_SCHEMA.md - DOCS/ARCHITECTURE.md autonomous: false --- ## Goal Wdrożyć migracje bazodanowe dla modułu paragonów (receipt_configs, receipts, receipt_number_counters) oraz rozszerzyć company_settings o pola wymagane na paragonach (BDO, REGON, KRS, logo). Zaktualizować UI danych firmy o nowe pola. ## Purpose Fundament bazodanowy pod cały moduł paragonów — bez tych tabel nie można przejść do logiki konfiguracji ani wystawiania. ## Output - 4 pliki migracji SQL (już utworzone, do weryfikacji) - Rozszerzony formularz danych firmy o pola BDO, REGON, KRS, logo - Zaktualizowane DOCS/DB_SCHEMA.md i DOCS/ARCHITECTURE.md ## Project Context @.paul/PROJECT.md @.paul/ROADMAP.md @.paul/STATE.md ## Source Files @database/migrations/20260315_000050_create_receipt_configs_table.sql @database/migrations/20260315_000051_create_receipts_table.sql @database/migrations/20260315_000052_create_receipt_number_counters_table.sql @database/migrations/20260315_000053_extend_company_settings_extra_fields.sql @src/Modules/Settings/CompanySettingsRepository.php @resources/views/settings/company.php @DOCS/DB_SCHEMA.md ## Required Skills (from SPECIAL-FLOWS.md) | Skill | Priority | When to Invoke | Loaded? | |-------|----------|----------------|---------| | sonar-scanner | required | Po APPLY, przed UNIFY | ○ | No specialized flows configured for DB migrations. ## AC-1: Tabele paragonów istnieją po migracji ```gherkin Given baza danych jest dostępna i migrator działa When uruchomię migracje pending Then istnieją tabele receipt_configs, receipts, receipt_number_counters z poprawnymi kolumnami, indeksami i FK ``` ## AC-2: Company settings rozszerzony o nowe pola ```gherkin Given tabela company_settings istnieje When uruchomię migrację 000053 Then tabela ma kolumny bdo_number, regon, court_register, logo_path ``` ## AC-3: Formularz danych firmy wyświetla i zapisuje nowe pola ```gherkin Given użytkownik jest na stronie /settings/company When wypełni pola BDO, REGON, KRS, logo i kliknie Zapisz Then dane są zapisane w company_settings i widoczne po odświeżeniu ``` ## AC-4: Dokumentacja zaktualizowana ```gherkin Given migracje zostały wdrożone When przeglądam DOCS/DB_SCHEMA.md i DOCS/ARCHITECTURE.md Then widzę opisy nowych tabel receipt_configs, receipts, receipt_number_counters oraz nowych kolumn company_settings ``` Task 1: Weryfikacja i wdrożenie migracji SQL database/migrations/20260315_000050_create_receipt_configs_table.sql, database/migrations/20260315_000051_create_receipts_table.sql, database/migrations/20260315_000052_create_receipt_number_counters_table.sql, database/migrations/20260315_000053_extend_company_settings_extra_fields.sql 1. Przejrzeć 4 pliki migracji już utworzonych — zweryfikować poprawność SQL: - receipt_configs: pola name, is_active, number_format, numbering_type, is_named, sale_date_source, order_reference - receipts: FK do orders i receipt_configs, UNIQUE na receipt_number, indeksy, JSON kolumny - receipt_number_counters: UNIQUE na (config_id, year, month), FK do receipt_configs - company_settings: ADD COLUMN IF NOT EXISTS dla bdo_number, regon, court_register, logo_path 2. Uruchomić migracje przez UI /settings/database lub bezpośrednio 3. Zweryfikować struktury tabel po migracji Sprawdzić SHOW CREATE TABLE dla receipt_configs, receipts, receipt_number_counters; SHOW COLUMNS FROM company_settings AC-1 i AC-2 spełnione: tabele istnieją z poprawnymi kolumnami i kluczami Task 2: Rozszerzenie formularza danych firmy o nowe pola src/Modules/Settings/CompanySettingsRepository.php, resources/views/settings/company.php 1. W CompanySettingsRepository: - Dodać bdo_number, regon, court_register, logo_path do metody defaults() - Dodać te pola do saveSettings() (mapowanie z POST) - Dodać te pola do getSettings() jeśli nie zwracane automatycznie 2. W resources/views/settings/company.php: - Dodać 4 nowe pola formularza (input text) w sekcji danych firmy: - Numer BDO (bdo_number) — varchar 20 - REGON (regon) — varchar 14 - KRS / Wpis do ewidencji (court_register) — varchar 128 - Logo firmy (logo_path) — na razie pole tekstowe ze ścieżką (upload w przyszłości) - Zachować istniejący styl formularza 3. Nie zmieniać kontrolera — CompanySettingsController::save() przekazuje wszystkie pola POST do repository Odwiedzić /settings/company — zobaczyć nowe pola, wypełnić, zapisać, odświeżyć — dane zachowane AC-3 spełnione: nowe pola widoczne i zapisywalne Migracje DB dla modułu paragonów + rozszerzony formularz danych firmy 1. Wejdź na /settings/database — uruchom pending migracje 2. Wejdź na /settings/company — sprawdź czy są nowe pola (BDO, REGON, KRS, Logo) 3. Wypełnij nowe pola, zapisz, odśwież — dane powinny być zachowane 4. Potwierdź że istniejące dane firmy nie zniknęły Type "approved" to continue, or describe issues to fix Task 3: Aktualizacja dokumentacji DB_SCHEMA.md i ARCHITECTURE.md DOCS/DB_SCHEMA.md, DOCS/ARCHITECTURE.md 1. W DOCS/DB_SCHEMA.md dodać sekcje: - ### receipt_configs — z opisem kolumn, indeksów - ### receipts — z opisem kolumn, FK, indeksów - ### receipt_number_counters — z opisem kolumn, UNIQUE, FK - Zaktualizować sekcję company_settings o nowe kolumny - Dodać wpis chronologiczny w sekcji Status 2. W DOCS/ARCHITECTURE.md: - Dodać moduł App\Modules\Accounting (przygotowanie) - Dodać informację o nowych tabelach w sekcji domen Przejrzeć oba pliki — sprawdzić kompletność opisów nowych tabel AC-4 spełnione: dokumentacja odzwierciedla nowy schemat ## DO NOT CHANGE - Istniejące tabele (orders, order_items, order_activity_log) — żadnych zmian - Istniejące kontrolery i widoki niezwiązane z company settings - Logika istniejących integracji (Allegro, shopPRO, Apaczka, InPost) ## SCOPE LIMITS - Nie tworzymy jeszcze kontrolera paragonów (Faza 09) - Nie tworzymy widoków konfiguracji paragonów (Faza 09) - Upload logo — na razie tylko pole tekstowe, upload w przyszłości - Nie dodajemy nawigacji do sekcji Księgowość (Faza 12) Before declaring plan complete: - [ ] 4 migracje wykonane bez błędów - [ ] Tabele receipt_configs, receipts, receipt_number_counters istnieją z poprawnymi strukturami - [ ] company_settings ma kolumny bdo_number, regon, court_register, logo_path - [ ] Formularz /settings/company wyświetla i zapisuje nowe pola - [ ] DOCS/DB_SCHEMA.md zaktualizowany - [ ] DOCS/ARCHITECTURE.md zaktualizowany - [ ] Istniejąca funkcjonalność danych firmy niezmieniona - Wszystkie 4 migracje wykonane pomyślnie - Nowe pola w formularzu danych firmy działają (zapis + odczyt) - Dokumentacja kompletna - Brak regresji w istniejącej funkcjonalności After completion, create `.paul/phases/08-db-foundation/08-01-SUMMARY.md`