update
This commit is contained in:
28
database/migrations/20260407_000079_pull_status_mappings.sql
Normal file
28
database/migrations/20260407_000079_pull_status_mappings.sql
Normal file
@@ -0,0 +1,28 @@
|
||||
-- Phase 75: Separate pull status mappings table
|
||||
-- Pull direction (shopPRO → orderPRO) needs its own table with UNIQUE on shoppro_status_code
|
||||
-- because push direction allows many orderPRO statuses → one shopPRO status
|
||||
|
||||
CREATE TABLE IF NOT EXISTS order_status_pull_mappings (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
integration_id INT NOT NULL,
|
||||
shoppro_status_code VARCHAR(100) NOT NULL,
|
||||
shoppro_status_name VARCHAR(255) DEFAULT NULL,
|
||||
orderpro_status_code VARCHAR(100) NOT NULL,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE INDEX order_status_pull_mappings_integration_shoppro_unique (integration_id, shoppro_status_code),
|
||||
INDEX order_status_pull_mappings_integration_idx (integration_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- Pre-populate from existing push mappings: for each (integration_id, shoppro_status_code)
|
||||
-- take the row with the highest id (most recently created)
|
||||
INSERT IGNORE INTO order_status_pull_mappings (integration_id, shoppro_status_code, shoppro_status_name, orderpro_status_code)
|
||||
SELECT osm.integration_id, osm.shoppro_status_code, osm.shoppro_status_name, osm.orderpro_status_code
|
||||
FROM order_status_mappings osm
|
||||
INNER JOIN (
|
||||
SELECT integration_id, shoppro_status_code, MAX(id) AS max_id
|
||||
FROM order_status_mappings
|
||||
WHERE shoppro_status_code <> ''
|
||||
GROUP BY integration_id, shoppro_status_code
|
||||
) latest ON osm.id = latest.max_id
|
||||
WHERE osm.shoppro_status_code <> '';
|
||||
@@ -0,0 +1,23 @@
|
||||
-- Backfill: uzupelnienie personalizacji o pole message z payload_json (pozycje zamowien)
|
||||
-- Dotyczy pozycji z pustym personalization i niepustym message w payload
|
||||
|
||||
UPDATE order_items
|
||||
SET personalization = CONCAT('Wiadomość: ', TRIM(JSON_UNQUOTE(JSON_EXTRACT(payload_json, '$.message'))))
|
||||
WHERE payload_json IS NOT NULL
|
||||
AND personalization IS NULL
|
||||
AND JSON_EXTRACT(payload_json, '$.message') IS NOT NULL
|
||||
AND JSON_UNQUOTE(JSON_EXTRACT(payload_json, '$.message')) != ''
|
||||
AND JSON_UNQUOTE(JSON_EXTRACT(payload_json, '$.message')) != 'null';
|
||||
|
||||
-- Backfill: import wiadomosci klienta z payload zamowienia do order_notes
|
||||
-- Dotyczy zamowien z polem message w payload ale bez notatki typu 'message'
|
||||
|
||||
INSERT INTO order_notes (order_id, note_type, comment, created_at)
|
||||
SELECT o.id, 'message', TRIM(JSON_UNQUOTE(JSON_EXTRACT(o.payload_json, '$.message'))), NOW()
|
||||
FROM orders o
|
||||
LEFT JOIN order_notes n ON n.order_id = o.id AND n.note_type = 'message'
|
||||
WHERE o.payload_json IS NOT NULL
|
||||
AND JSON_EXTRACT(o.payload_json, '$.message') IS NOT NULL
|
||||
AND JSON_UNQUOTE(JSON_EXTRACT(o.payload_json, '$.message')) != ''
|
||||
AND JSON_UNQUOTE(JSON_EXTRACT(o.payload_json, '$.message')) != 'null'
|
||||
AND n.id IS NULL;
|
||||
Reference in New Issue
Block a user