diff --git a/src/pages/orders/Details.tsx b/src/pages/orders/Details.tsx index 6abce8c..edbb237 100644 --- a/src/pages/orders/Details.tsx +++ b/src/pages/orders/Details.tsx @@ -95,6 +95,11 @@ const OrderDetails: FC = () => { const isOrderPaid = order.status === OrderStatus.PAID const isPreparing = order.status === OrderStatus.PREPARING const isCanceled = order.status === OrderStatus.CANCELED + const canCompleteOrder = [ + OrderStatus.DELIVERED_TO_WAITER, + OrderStatus.DELIVERED_TO_RECEPTIONIST, + OrderStatus.SHIPPED, + ].includes(order.status as OrderStatus) // بررسی وضعیت پرداخت از payments array یا paymentStatus // ابتدا از paymentStatus استفاده می‌کنیم، اگر نبود از اولین payment در payments array استفاده می‌کنیم const paymentStatus = order.paymentStatus || order.payments?.[0]?.status @@ -185,6 +190,20 @@ const OrderDetails: FC = () => { setShowCancelModal(false) } + const handleCompleteOrder = () => { + changeOrderStatus( + { + orderId: order.id, + status: OrderStatus.COMPLETED, + }, + { + onError: (error) => { + toast.error(extractErrorMessage(error)) + }, + } + ) + } + const handleRefund = (text?: string) => { if (!text) return refundPayment({ @@ -248,11 +267,13 @@ const OrderDetails: FC = () => { isDineInOrCarDelivery={isDineInOrCarDelivery} isCustomerPickup={isCustomerPickup} isCanceled={isCanceled} + canCompleteOrder={canCompleteOrder} isChangingStatus={isChangingStatus} onSendToKitchen={handleSendToKitchen} onDeliverToCourier={handleDeliverToCourier} onDeliverToWaiter={handleDeliverToWaiter} onDeliverToReceptionist={handleDeliverToReceptionist} + onCompleteOrder={handleCompleteOrder} onCancelOrder={() => setShowCancelModal(true)} /> diff --git a/src/pages/orders/components/OrderActions.tsx b/src/pages/orders/components/OrderActions.tsx index d6970a1..5c4ed17 100644 --- a/src/pages/orders/components/OrderActions.tsx +++ b/src/pages/orders/components/OrderActions.tsx @@ -10,11 +10,13 @@ interface OrderActionsProps { isDineInOrCarDelivery: boolean isCustomerPickup: boolean isCanceled: boolean + canCompleteOrder: boolean isChangingStatus: boolean onSendToKitchen: () => void onDeliverToCourier: () => void onDeliverToWaiter: () => void onDeliverToReceptionist: () => void + onCompleteOrder: () => void onCancelOrder: () => void } @@ -27,11 +29,13 @@ const OrderActions: FC = ({ isDineInOrCarDelivery, isCustomerPickup, isCanceled, + canCompleteOrder, isChangingStatus, onSendToKitchen, onDeliverToCourier, onDeliverToWaiter, onDeliverToReceptionist, + onCompleteOrder, onCancelOrder }) => { const [loadingAction, setLoadingAction] = useState(null) @@ -67,6 +71,11 @@ const OrderActions: FC = ({ onCancelOrder() } + const handleCompleteOrder = () => { + setLoadingAction('completeOrder') + onCompleteOrder() + } + return (