finish order

This commit is contained in:
hamid zarghami
2026-07-01 12:35:08 +03:30
parent d52ff4f07e
commit 4c240ac9a1
2 changed files with 39 additions and 0 deletions
+21
View File
@@ -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)}
/>
</div>
@@ -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<OrderActionsProps> = ({
isDineInOrCarDelivery,
isCustomerPickup,
isCanceled,
canCompleteOrder,
isChangingStatus,
onSendToKitchen,
onDeliverToCourier,
onDeliverToWaiter,
onDeliverToReceptionist,
onCompleteOrder,
onCancelOrder
}) => {
const [loadingAction, setLoadingAction] = useState<string | null>(null)
@@ -67,6 +71,11 @@ const OrderActions: FC<OrderActionsProps> = ({
onCancelOrder()
}
const handleCompleteOrder = () => {
setLoadingAction('completeOrder')
onCompleteOrder()
}
return (
<div className='mt-6 flex flex-col gap-3'>
<Button
@@ -111,6 +120,15 @@ const OrderActions: FC<OrderActionsProps> = ({
/>
)}
{!isCanceled && canCompleteOrder && (
<Button
label='اتمام سفارش'
onClick={handleCompleteOrder}
isloading={isChangingStatus && loadingAction === 'completeOrder'}
className='bg-green-600 hover:bg-green-700'
/>
)}
{!isCanceled && showCancelButton && (
<Button
label='لغو سفارش'