feat(08-10-receipt-module): phases 08-10 complete — receipt issuing from orders
Phase 08 — DB Foundation: - 3 new tables: receipt_configs, receipts, receipt_number_counters - company_settings extended with BDO, REGON, KRS, logo fields Phase 09 — Receipt Config: - CRUD for receipt configurations (Settings > Accounting) - ReceiptConfigController + ReceiptConfigRepository Phase 10 — Receipt Issuing: - ReceiptRepository with atomic numbering (INSERT ON DUPLICATE KEY UPDATE) - ReceiptController with snapshot pattern (seller/buyer/items as JSON) - "Wystaw paragon" button in order view - Documents tab showing both receipts and marketplace documents - Activity log entry on receipt creation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
- `App\Modules\Orders`
|
||||
- `App\Modules\Users`
|
||||
- `App\Modules\Settings`
|
||||
- `App\Modules\Accounting` (modul paragonow — wystawianie z zamowien)
|
||||
|
||||
## Routing
|
||||
- `GET /login`, `POST /login`, `POST /logout`
|
||||
@@ -54,6 +55,10 @@
|
||||
- `POST /settings/integrations/shoppro/statuses/save`
|
||||
- `POST /settings/integrations/shoppro/statuses/sync`
|
||||
- `POST /settings/integrations/shoppro/delivery/save`
|
||||
- `GET /settings/accounting`
|
||||
- `POST /settings/accounting/save`
|
||||
- `POST /settings/accounting/toggle`
|
||||
- `POST /settings/accounting/delete`
|
||||
- `GET /health`
|
||||
- `GET /` (redirect)
|
||||
|
||||
@@ -111,6 +116,10 @@
|
||||
- `App\Modules\Settings\AllegroOrdersSyncService`
|
||||
- `App\Modules\Settings\AllegroOrderSyncStateRepository`
|
||||
- `App\Modules\Settings\AllegroStatusSyncService`
|
||||
- `App\Modules\Settings\ReceiptConfigController`
|
||||
- `App\Modules\Settings\ReceiptConfigRepository`
|
||||
- `App\Modules\Accounting\ReceiptRepository`
|
||||
- `App\Modules\Accounting\ReceiptController`
|
||||
- `App\Modules\Shipments\ShipmentProviderInterface`
|
||||
- `App\Modules\Shipments\ShipmentProviderRegistry`
|
||||
- `App\Modules\Shipments\ApaczkaShipmentService`
|
||||
@@ -197,6 +206,39 @@
|
||||
- `Statusy` (`/settings/statuses`).
|
||||
- `Cron` (`/settings/cron`).
|
||||
- `Integracje` (`/settings/integrations`) - wspolny hub konfiguracji providerow.
|
||||
- `Ksiegowosc` (`/settings/accounting`) - konfiguracja paragonow.
|
||||
|
||||
## Przeplyw Ustawienia > Ksiegowosc (konfiguracja paragonow)
|
||||
- `GET /settings/accounting`:
|
||||
- `ReceiptConfigController::index(Request): Response`
|
||||
- pobiera liste konfiguracji przez `ReceiptConfigRepository::listAll()`,
|
||||
- opcjonalnie laduje konfiguracje do edycji przez `findById()` (query param `edit`),
|
||||
- renderuje widok `resources/views/settings/accounting.php`.
|
||||
- `POST /settings/accounting/save`:
|
||||
- `ReceiptConfigController::save(Request): Response`
|
||||
- waliduje CSRF, nazwe (wymagana) i format numeracji (wymagany, musi zawierac `%N`),
|
||||
- zapisuje przez `ReceiptConfigRepository::save(...)` (INSERT lub UPDATE wg obecnosci `id`).
|
||||
- `POST /settings/accounting/toggle`:
|
||||
- `ReceiptConfigController::toggleStatus(Request): Response`
|
||||
- przelacza `is_active` przez `ReceiptConfigRepository::toggleStatus(...)`.
|
||||
- `POST /settings/accounting/delete`:
|
||||
- `ReceiptConfigController::delete(Request): Response`
|
||||
- usuwa konfiguracje przez `ReceiptConfigRepository::delete(...)`,
|
||||
- FK RESTRICT blokuje usuniecie jesli istnieja powiazane paragony.
|
||||
|
||||
## Przeplyw Wystawianie paragonu z zamowienia
|
||||
- `GET /orders/{id}/receipt/create`:
|
||||
- `ReceiptController::create(Request): Response`
|
||||
- pobiera zamowienie (OrdersRepository::findDetails), aktywne konfiguracje, dane sprzedawcy,
|
||||
- renderuje formularz `resources/views/orders/receipt-create.php`.
|
||||
- `POST /orders/{id}/receipt/store`:
|
||||
- `ReceiptController::store(Request): Response`
|
||||
- waliduje CSRF, config_id, istnienie zamowienia,
|
||||
- buduje snapshoty: seller_data_json (z company_settings), buyer_data_json (z adresow zamowienia), items_json (z pozycji),
|
||||
- oblicza total_gross, sale_date (wg sale_date_source z konfiguracji), order_reference_value,
|
||||
- generuje numer atomowo przez `ReceiptRepository::getNextNumber(...)` (INSERT ON DUPLICATE KEY UPDATE na receipt_number_counters),
|
||||
- zapisuje paragon przez `ReceiptRepository::create(...)`,
|
||||
- redirect na /orders/{id} z flash success.
|
||||
|
||||
## Przeplyw Ustawienia > Cron
|
||||
- `GET /settings/cron`:
|
||||
|
||||
Reference in New Issue
Block a user