feat(129): erli status mapping sync

Phase 129 complete:
- Add Erli pull/push status mapping tables, seeds and repositories
- Wire Erli status sync cron for inbox pull and manual-only push
- Add tabbed Erli settings UI, tests and documentation

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-05-16 00:27:08 +02:00
parent c127ebf04d
commit 7972bb9fa4
28 changed files with 2021 additions and 57 deletions

View File

@@ -38,6 +38,9 @@ use App\Modules\Settings\ErliIntegrationRepository;
use App\Modules\Settings\ErliOrderMapper;
use App\Modules\Settings\ErliOrderSyncStateRepository;
use App\Modules\Settings\ErliOrdersSyncService;
use App\Modules\Settings\ErliPullStatusMappingRepository;
use App\Modules\Settings\ErliStatusMappingRepository;
use App\Modules\Settings\ErliStatusSyncService;
use App\Modules\Settings\InpostIntegrationRepository;
use App\Modules\Settings\IntegrationSecretCipher;
use App\Modules\Settings\ReceiptConfigRepository;
@@ -133,14 +136,20 @@ final class CronHandlerFactory
$this->db,
$automationService
);
$erliIntegrationRepository = new ErliIntegrationRepository($this->db, $this->integrationSecret);
$erliSyncStateRepository = new ErliOrderSyncStateRepository($this->db);
$erliApiClient = new ErliApiClient();
$erliPullStatusMappingRepository = new ErliPullStatusMappingRepository($this->db);
$erliStatusMappingRepository = new ErliStatusMappingRepository($this->db);
$erliOrdersSyncService = new ErliOrdersSyncService(
new ErliIntegrationRepository($this->db, $this->integrationSecret),
new ErliOrderSyncStateRepository($this->db),
new ErliApiClient(),
$erliIntegrationRepository,
$erliSyncStateRepository,
$erliApiClient,
new OrderImportRepository($this->db),
$ordersRepository,
new ErliOrderMapper(),
$automationService
new ErliOrderMapper($erliPullStatusMappingRepository),
$automationService,
$erliPullStatusMappingRepository
);
return new CronRunner(
@@ -178,6 +187,17 @@ final class CronHandlerFactory
'erli_orders_import' => new ErliOrdersImportHandler(
$erliOrdersSyncService
),
'erli_status_sync' => new ErliStatusSyncHandler(
new ErliStatusSyncService(
$cronRepository,
$erliIntegrationRepository,
$erliOrdersSyncService,
$erliApiClient,
$erliSyncStateRepository,
$erliStatusMappingRepository,
$this->db
)
),
'shipment_tracking_sync' => new ShipmentTrackingHandler(
new ShipmentTrackingRegistry([
new InpostTrackingService(