From 9ec7d8e8ae37733f7943dfcc8541dabbdbfd6536 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 27 May 2026 12:34:41 +0000 Subject: [PATCH] fix: assign driver preserves agreed+ statuses instead of downgrading to driver_assigned --- src/services/supabase/orderGroupRepository.js | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/services/supabase/orderGroupRepository.js b/src/services/supabase/orderGroupRepository.js index aabe4d2..4c91ed6 100644 --- a/src/services/supabase/orderGroupRepository.js +++ b/src/services/supabase/orderGroupRepository.js @@ -222,13 +222,27 @@ export const assignDriverToOrderGroup = async ({ logger.debug("[assignDriver] orderGroupId:", orderGroupId, "driverId:", driverId); // Direct UPDATE — RLS allows manager/logistician/admin + const { data: currentGroup, error: fetchCurrentError } = await client + .from("order_groups") + .select("delivery_status") + .eq("id", orderGroupId) + .single(); + + if (fetchCurrentError) { + throw fetchCurrentError; + } + + // If status is 'agreed' or beyond, keep it — don't downgrade to 'driver_assigned' + const keepStatus = ["agreed", "loaded", "on_route", "delivered"].includes(currentGroup.delivery_status); + const updates = { + assigned_driver_id: driverId || null, + delivery_status: driverId && !keepStatus ? "driver_assigned" : undefined, + updated_at: new Date().toISOString(), + }; + const { error: updateError } = await client .from("order_groups") - .update({ - assigned_driver_id: driverId || null, - delivery_status: driverId ? "driver_assigned" : undefined, - updated_at: new Date().toISOString(), - }) + .update(updates) .eq("id", orderGroupId); if (updateError) {