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:
@@ -0,0 +1,71 @@
|
||||
CREATE TABLE IF NOT EXISTS erli_order_status_mappings (
|
||||
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
erli_status_code VARCHAR(64) NOT NULL,
|
||||
erli_status_name VARCHAR(120) NULL,
|
||||
orderpro_status_code VARCHAR(64) NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY erli_order_status_mappings_code_unique (erli_status_code),
|
||||
KEY erli_order_status_mappings_orderpro_code_idx (orderpro_status_code)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS erli_order_status_pull_mappings (
|
||||
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
erli_status_code VARCHAR(64) NOT NULL,
|
||||
erli_status_name VARCHAR(120) NULL,
|
||||
orderpro_status_code VARCHAR(64) NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY erli_order_status_pull_mappings_code_unique (erli_status_code),
|
||||
KEY erli_order_status_pull_mappings_orderpro_code_idx (orderpro_status_code)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
ALTER TABLE integration_order_sync_state
|
||||
ADD COLUMN IF NOT EXISTS last_status_pushed_at DATETIME NULL AFTER last_success_at;
|
||||
|
||||
INSERT INTO erli_order_status_pull_mappings (
|
||||
erli_status_code, erli_status_name, orderpro_status_code, created_at, updated_at
|
||||
) VALUES
|
||||
('pending', 'Oczekuje', 'nieoplacone', NOW(), NOW()),
|
||||
('purchased', 'Kupione', 'nowe', NOW(), NOW()),
|
||||
('cancelled', 'Anulowane', 'anulowane', NOW(), NOW())
|
||||
ON DUPLICATE KEY UPDATE
|
||||
erli_status_name = VALUES(erli_status_name),
|
||||
orderpro_status_code = COALESCE(erli_order_status_pull_mappings.orderpro_status_code, VALUES(orderpro_status_code)),
|
||||
updated_at = NOW();
|
||||
|
||||
INSERT INTO erli_order_status_mappings (
|
||||
erli_status_code, erli_status_name, orderpro_status_code, created_at, updated_at
|
||||
) VALUES
|
||||
('created', 'Utworzone', NULL, NOW(), NOW()),
|
||||
('canceled', 'Anulowane', 'anulowane', NOW(), NOW()),
|
||||
('readyToProcess', 'Gotowe do realizacji', 'nowe', NOW(), NOW()),
|
||||
('inProgress', 'W realizacji', 'w_realizacji', NOW(), NOW()),
|
||||
('sent', 'Wyslane', 'wyslane', NOW(), NOW()),
|
||||
('readyToPickup', 'Gotowe do odbioru', NULL, NOW(), NOW()),
|
||||
('received', 'Odebrane', NULL, NOW(), NOW()),
|
||||
('returned', 'Zwrocone', 'anulowane', NOW(), NOW()),
|
||||
('returningToSender', 'Wraca do nadawcy', NULL, NOW(), NOW()),
|
||||
('unknown', 'Nieznane', NULL, NOW(), NOW())
|
||||
ON DUPLICATE KEY UPDATE
|
||||
erli_status_name = VALUES(erli_status_name),
|
||||
orderpro_status_code = COALESCE(erli_order_status_mappings.orderpro_status_code, VALUES(orderpro_status_code)),
|
||||
updated_at = NOW();
|
||||
|
||||
INSERT INTO app_settings (setting_key, setting_value, created_at, updated_at)
|
||||
VALUES
|
||||
('erli_status_sync_direction', 'erli_to_orderpro', NOW(), NOW()),
|
||||
('erli_status_sync_interval_minutes', '15', NOW(), NOW())
|
||||
ON DUPLICATE KEY UPDATE
|
||||
setting_value = setting_value,
|
||||
updated_at = updated_at;
|
||||
|
||||
INSERT INTO cron_schedules (
|
||||
job_type, interval_seconds, priority, max_attempts, payload, enabled, last_run_at, next_run_at, created_at, updated_at
|
||||
) VALUES (
|
||||
'erli_status_sync', 900, 45, 3, NULL, 0, NULL, NOW(), NOW(), NOW()
|
||||
) ON DUPLICATE KEY UPDATE
|
||||
interval_seconds = VALUES(interval_seconds),
|
||||
priority = VALUES(priority),
|
||||
max_attempts = VALUES(max_attempts),
|
||||
updated_at = NOW();
|
||||
Reference in New Issue
Block a user