diff --git a/src/components/orders/OrderDetailPanel.jsx b/src/components/orders/OrderDetailPanel.jsx index 32f9077..b9440cf 100644 --- a/src/components/orders/OrderDetailPanel.jsx +++ b/src/components/orders/OrderDetailPanel.jsx @@ -76,6 +76,34 @@ const DELIVERY_TIME_ALIASES = { "После обеда": "Вторая половина дня", }; +const CollapsibleChips = ({ label, items }) => { + const [open, setOpen] = React.useState(false); + if (!Array.isArray(items) || items.length === 0) return null; + return ( + + + {open && ( + + {items.map((item, idx) => ( + { navigator.clipboard?.writeText(item); }} + >{item} + ))} + + )} + + ); +}; + const renderList = (values) => { if (!Array.isArray(values) || !values.length) { return
Нет данных
; @@ -574,7 +602,7 @@ export const OrderDetailPanel = ({ const [deliveryType, setDeliveryType] = React.useState(order?.deliveryType || "delivery"); const [pickupDate, setPickupDate] = React.useState(order?.pickupDate || ""); const [pickupTimeSlot, setPickupTimeSlot] = React.useState(DELIVERY_TIME_OPTIONS[0]); - const [deliveryAddress, setDeliveryAddress] = React.useState(order?.deliveryAddress || order?.customerAddress || ""); + const [deliveryAddress, setDeliveryAddress] = React.useState(order?.originalDeliveryAddress || order?.deliveryAddress || order?.customerAddress || ""); const [confirmAction, setConfirmAction] = React.useState(null); const minSelectableDateKey = React.useMemo(() => getNextSelectableDateKey(), []); const [currentMonth, setCurrentMonth] = React.useState(() => { @@ -613,6 +641,7 @@ export const OrderDetailPanel = ({ setDeliveryType(order?.deliveryType || "delivery"); setPickupDate(order?.pickupDate || ""); setPickupTimeSlot(normalizeDeliveryTimeChoice(order?.pickupTimeSlot || order?.deliveryTime || order?.deliveryHalfDay)); + setDeliveryAddress(order?.originalDeliveryAddress || order?.deliveryAddress || order?.customerAddress || ""); setFormMessage(""); }, [order?.id, order?.deliveryDate, order?.deliveryHalfDay, order?.deliveryTime, order?.deliveryType, order?.pickupDate, order?.pickupTimeSlot]); @@ -655,7 +684,7 @@ export const OrderDetailPanel = ({ deliveryDate: deliveryType === "pickup" ? pickupDate : deliveryDate, deliveryTime: deliveryType === "pickup" ? pickupTimeSlot : deliveryTime, deliveryType, - ...(deliveryType === "pickup" ? { pickupDate, pickupTimeSlot, deliveryAddress: "" } : {}), + ...(deliveryType === "pickup" ? { pickupDate, pickupTimeSlot } : {}), ...(deliveryType === "delivery" ? { deliveryAddress: deliveryAddress.trim() } : {}), }); @@ -800,9 +829,19 @@ export const OrderDetailPanel = ({ if (mainNumbers.length > 0) { return ( - {mainNumbers.join(", ")} + {mainNumbers.map((num, idx) => ( + { navigator.clipboard?.writeText(num); }} + >{num} + ))} {extraNumbers.length > 0 && ( - +{extraNumbers.length} сч. +@@ -1070,7 +1109,7 @@ export const OrderDetailPanel = ({ {isCalendarOpen ? ( -
Календарь самовывоза
diff --git a/src/services/supabase/orderGroupRepository.js b/src/services/supabase/orderGroupRepository.js index a9b85f6..80f0907 100644 --- a/src/services/supabase/orderGroupRepository.js +++ b/src/services/supabase/orderGroupRepository.js @@ -123,7 +123,9 @@ export const mapOrderGroupRowToDeliveryGroup = (row) => { ? "pickup" : (row.delivery_type || "delivery"); - // Clear placeholder pickup address + // Preserve original address for pre-filling delivery form (don't clear for pickup) + const originalDeliveryAddress = deliveryAddress; + // For display: show nothing for pickup placeholder addresses const resolvedDeliveryAddress = (effectiveDeliveryType === "pickup" && (deliveryAddress.toUpperCase() === "САМОВЫВОЗ" || !deliveryAddress)) ? "" : deliveryAddress; @@ -170,6 +172,7 @@ export const mapOrderGroupRowToDeliveryGroup = (row) => { customerPhoneNormalized: parsedKey.phone || normalizePhone(customerPhone), customerDate, deliveryAddress: resolvedDeliveryAddress, + originalDeliveryAddress, customerAddress, city, assignedDriverId: row.assigned_driver_id || null, @@ -277,7 +280,6 @@ export const updateOrderGroupDeliveryChoice = async ({ if (deliveryType === "pickup") { updatePayload.pickup_date = pickupDate || null; updatePayload.pickup_time_slot = pickupTimeSlot || null; - updatePayload.delivery_address = ""; } else { updatePayload.pickup_date = null; updatePayload.pickup_time_slot = null;