CompanySettingsController::save() nie przekazywał 4 pól (regon, bdo_number,
court_register, logo_path) do repozytorium — dane z formularza ginęły.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Reguły automatyzacji oparte na zdarzeniach (receipt.created) z warunkami
(integracja/kanał sprzedaży, AND logic) i akcjami (wyślij e-mail z 3 trybami
odbiorcy: klient / firma / klient+firma). Trigger w ReceiptController po
utworzeniu paragonu — błąd automatyzacji nie blokuje sukcesu paragonu.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3 migrations (email_mailboxes, email_templates, email_logs), full CRUD
for SMTP mailboxes with encrypted passwords (IntegrationSecretCipher),
native SMTP connection test via stream_socket_client, sidebar navigation.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Phase 11: Receipt preview, print & PDF via dompdf.
Phase 12: Accounting section with receipt list, filters, pagination,
selectable checkboxes and XLSX export via PhpSpreadsheet.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add receipt show/print/pdf endpoints with dompdf integration.
Active preview and PDF links in order Documents tab.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
SUMMARY.md with AC results, deviations, skill audit.
STATE.md updated: 5/6 plans complete, next → 06-05.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Extract private helpers to flatten 5-level nesting in AllegroIntegrationController
and ShopproIntegrationsController: loadAllegroDeliveryServices(),
fetchAllegroDeliveryResponse(), loadApaczkaServices().
sync() and saveStatusMappings() were already compliant from plan 06-06.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add IntegrationSources {ALLEGRO, SHOPPRO, APACZKA, INPOST} and RedirectPaths constants in src/Core/Constants/
- Replace integration source literals in AllegroOrderImportService, AllegroStatusSyncService, ShopproOrdersSyncService, ShopproPaymentStatusSyncService
- Replace redirect path literals in AllegroIntegrationController (24+ occurrences) and ShopproIntegrationsController (3 occurrences)
- Auto-fix: broken use statements from plan 06-01 in AllegroOrderImportService and AllegroIntegrationController (missing backslashes)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Phase 2 complete (4/4 plans):
- Plan 02-01: Fix dead ZPL page size condition in AllegroShipmentService
- Plan 02-02: Add time-based cursor to AllegroStatusSyncService
- Plan 02-03: Fix ShopproOrdersSyncService using wrong state repository
- Plan 02-04: Extract CronHandlerFactory as single cron composition point
Plan 02-04 specifics:
- New CronHandlerFactory builds complete cron object graph
- Application::maybeRunCronOnWeb() reduced from 80+ to ~20 lines
- bin/cron.php reduced from 123 to 26 lines
- Fixed 2 bugs: AllegroOAuthClient→AllegroTokenManager,
AllegroOrderSyncStateRepository→ShopproOrderSyncStateRepository
Co-Authored-By: Claude <noreply@anthropic.com>
Phase 02 plans 02-01, 02-02, 02-03:
- fix(02-01): dead condition in AllegroShipmentService ZPL page size
Both ternary branches returned 'A6'; ZPL now correctly returns 'ZPL'
- fix(02-02): add last_status_checked_at cursor to AllegroStatusSyncService
New migration adds orders.last_status_checked_at DATETIME NULL with
composite index (source, source_updated_at). findOrdersNeedingStatusSync()
filters by cursor; markOrderStatusChecked() records timestamp on success.
- fix(02-03): replace AllegroOrderSyncStateRepository in ShopproOrdersSyncService
New ShopproOrderSyncStateRepository (same table, correct class name).
Application.php wires correct repository to correct service.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Introduced ShipmentProviderInterface to define the contract for shipment providers.
- Implemented ShipmentProviderRegistry to manage and retrieve shipment providers.
- Added a new tool for probing Apaczka order_send payload variants, enhancing debugging capabilities.
- Implemented ShopproPaymentStatusSyncService to handle payment status synchronization between Shoppro and Orderpro.
- Added methods for resolving watched status codes, finding candidate orders, and syncing individual order payments.
- Introduced ShopproStatusMappingRepository for managing status mappings between Shoppro and Orderpro.
- Created ShopproStatusSyncService to facilitate synchronization of order statuses from Shoppro to Orderpro.
- Added a check for available InPost services and display a message if none are found.
- Updated the InPost service selection dropdown to include additional data attributes for better handling in JavaScript.
- Improved JavaScript event handling for InPost service selection to correctly populate hidden fields with selected service data.
feat: Introduce Cash on Delivery (COD) functionality in shipment preparation
- Added a new input field for specifying the COD amount and currency in the shipment preparation view.
- Updated the shipment creation logic to handle COD amounts correctly when creating shipments.
refactor: Update OrdersController to include shipment package repository
- Modified the OrdersController to accept a ShipmentPackageRepository for better management of shipment-related data.
- Enhanced order details to include shipment package information.
fix: Ensure internal order numbers are generated upon order creation
- Updated the OrderImportRepository to generate and store internal order numbers when a new order is created.
feat: Implement status synchronization for Allegro orders
- Introduced a new service for syncing order statuses from Allegro to the internal system.
- Added logic to fetch and process orders needing status updates, handling errors gracefully.
chore: Clean up InPost service definitions in AllegroIntegrationController
- Removed hardcoded InPost service definitions and replaced them with dynamic fetching based on available services.
feat: Add activity logging for shipment actions
- Implemented activity logging for various shipment actions, including creation, label downloads, and errors, to improve traceability and auditing.
- Implement AllegroShipmentService for managing shipment creation and status checks.
- Create ShipmentController to handle shipment preparation and label downloading.
- Introduce ShipmentPackageRepository for database interactions related to shipment packages.
- Add methods for retrieving delivery services, creating shipments, checking creation status, and downloading labels.
- Implement address validation and token management for Allegro API integration.
- Added AllegroOrderSyncStateRepository for managing sync state with Allegro orders.
- Introduced AllegroOrdersSyncService to handle the synchronization of orders from Allegro.
- Created AllegroStatusDiscoveryService to discover and store order statuses from Allegro.
- Developed AllegroStatusMappingRepository for managing status mappings between Allegro and OrderPro.
- Implemented AllegroStatusSyncService to facilitate status synchronization.
- Added CronSettingsController for managing cron job settings related to Allegro integration.