54 lines
2.9 KiB
SQL
54 lines
2.9 KiB
SQL
-- 存量换标尾程主单状态修正:不创建入库单,不增减库存;可重复执行。
|
|
USE baiyue_lastleg;
|
|
START TRANSACTION;
|
|
UPDATE ll_order o
|
|
JOIN ll_relabel_application a ON a.relabel_no=o.relabel_order_no AND a.customer_id=o.customer_id
|
|
SET o.current_status=CASE
|
|
WHEN a.status IN ('PENDING_PROCESSING','PROCESSING','CUSTOMER_CONFIRM_PENDING') THEN 'WAIT_RELABEL'
|
|
WHEN a.status='READY_FOR_OUTBOUND' AND a.fulfillment_status='WAIT_PRE_DISPATCH' THEN 'WAIT_OUTBOUND'
|
|
WHEN a.status='READY_FOR_OUTBOUND' AND a.fulfillment_status IN ('WAIT_OUTBOUND_CREATION','OUTBOUND_CREATED') THEN 'WAIT_OUTBOUND'
|
|
ELSE o.current_status END,
|
|
o.updated_at=CURRENT_TIMESTAMP(3)
|
|
WHERE o.order_type='RELABEL_APPLICATION' AND o.current_status='PENDING_ASSIGNMENT'
|
|
AND o.inbound_order_no IS NULL
|
|
AND (a.status IN ('PENDING_PROCESSING','PROCESSING','CUSTOMER_CONFIRM_PENDING')
|
|
OR (a.status='READY_FOR_OUTBOUND' AND a.fulfillment_status IN ('WAIT_PRE_DISPATCH','WAIT_OUTBOUND_CREATION','OUTBOUND_CREATED')));
|
|
|
|
-- 仓储转运已完成入库和换标后不得回到“待分配”;按是否已有目的仓恢复后续状态。
|
|
UPDATE ll_warehouse_transfer_order t
|
|
JOIN ll_relabel_application a ON a.id=t.relabel_application_id
|
|
AND a.customer_id=t.customer_id AND a.relabel_no=t.relabel_no
|
|
SET t.status=CASE
|
|
WHEN COALESCE(t.fba_warehouse_code,'')<>'' THEN 'READY_FOR_DISPATCH'
|
|
ELSE 'WAIT_FBA_DESTINATION' END,
|
|
t.relabel_completed_at=COALESCE(t.relabel_completed_at,a.customer_confirmed_at),
|
|
t.updated_at=CURRENT_TIMESTAMP(3)
|
|
WHERE t.status='WAIT_RELABEL'
|
|
AND a.customer_confirmed_at IS NOT NULL
|
|
AND a.status IN ('READY_FOR_OUTBOUND','COMPLETED');
|
|
|
|
UPDATE ll_order o
|
|
JOIN ll_warehouse_transfer_order t ON t.lastleg_order_id=o.id AND t.customer_id=o.customer_id
|
|
JOIN ll_relabel_application a ON a.id=t.relabel_application_id AND a.customer_id=t.customer_id
|
|
SET o.current_status=t.status,
|
|
o.relabel_status='COMPLETED',
|
|
o.sub_order_status=CONCAT('WAREHOUSE_TRANSFER:',t.status,';RELABEL:COMPLETED'),
|
|
o.updated_at=CURRENT_TIMESTAMP(3)
|
|
WHERE o.order_type='WAREHOUSE_TRANSFER'
|
|
AND o.current_status IN ('PENDING_ASSIGNMENT','WAIT_OUTBOUND','INBOUND_COMPLETED')
|
|
AND t.status IN ('READY_FOR_DISPATCH','WAIT_FBA_DESTINATION')
|
|
AND a.customer_confirmed_at IS NOT NULL
|
|
AND a.status IN ('READY_FOR_OUTBOUND','COMPLETED');
|
|
|
|
UPDATE ll_relabel_application a
|
|
JOIN ll_warehouse_transfer_order t ON t.relabel_application_id=a.id AND t.customer_id=a.customer_id
|
|
SET a.fulfillment_status=CASE
|
|
WHEN t.status='READY_FOR_DISPATCH' THEN 'WAIT_PRE_DISPATCH'
|
|
ELSE 'WAIT_FBA_DESTINATION' END,
|
|
a.updated_at=CURRENT_TIMESTAMP(3)
|
|
WHERE a.customer_confirmed_at IS NOT NULL
|
|
AND a.status IN ('READY_FOR_OUTBOUND','COMPLETED')
|
|
AND t.status IN ('READY_FOR_DISPATCH','WAIT_FBA_DESTINATION')
|
|
AND a.fulfillment_status IN ('WAIT_RELABEL','WAIT_OUTBOUND_CREATION','WAIT_PRE_DISPATCH','READY_FOR_DISPATCH','WAIT_FBA_DESTINATION');
|
|
COMMIT;
|