From 435fe3e9471e30a5477e114fa3c42fa9bdea77db Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Tue, 14 Jul 2026 10:07:15 +0330 Subject: [PATCH] update costs --- src/pages/orders/Details.tsx | 34 ++++++- src/pages/orders/components/OrderActions.tsx | 14 ++- src/pages/orders/components/PaymentInfo.tsx | 14 +++ .../components/UpdateOrderFeesModal.tsx | 97 +++++++++++++++++++ src/pages/orders/hooks/useOrderData.ts | 18 ++++ src/pages/orders/service/OrderService.ts | 12 +++ src/pages/orders/types/Types.ts | 8 ++ 7 files changed, 195 insertions(+), 2 deletions(-) create mode 100644 src/pages/orders/components/UpdateOrderFeesModal.tsx diff --git a/src/pages/orders/Details.tsx b/src/pages/orders/Details.tsx index 3a477f6..0287d0f 100644 --- a/src/pages/orders/Details.tsx +++ b/src/pages/orders/Details.tsx @@ -3,7 +3,8 @@ import { useGetOrderById, useVerifyPayment, useChangeOrderStatus, - useRefundPayment + useRefundPayment, + useUpdateOrderFees, } from './hooks/useOrderData' import { useParams } from 'react-router-dom' import { formatFaNumber } from '@/helpers/func' @@ -16,9 +17,11 @@ import OrderItemsDetails from './components/OrderItemsDetails' import PaymentInfo from './components/PaymentInfo' import PaymentVerificationBox from './components/PaymentVerificationBox' import OrderActions from './components/OrderActions' +import UpdateOrderFeesModal from './components/UpdateOrderFeesModal' import { toast } from 'react-toastify' import { extractErrorMessage } from '@/config/func' import { printOrderReceipt } from './print/orderReceiptPrint' +import type { UpdateOrderFeesType } from './types/Types' const OrderDetails: FC = () => { const { id } = useParams() @@ -26,9 +29,11 @@ const OrderDetails: FC = () => { const { mutate: verifyPayment, isPending: isVerifyingPayment } = useVerifyPayment() const { mutate: changeOrderStatus, isPending: isChangingStatus } = useChangeOrderStatus() const { mutate: refundPayment, isPending: isRefunding } = useRefundPayment() + const { mutate: updateOrderFees, isPending: isUpdatingFees } = useUpdateOrderFees() const [showCancelModal, setShowCancelModal] = useState(false) const [showRefundModal, setShowRefundModal] = useState(false) + const [showEditFeesModal, setShowEditFeesModal] = useState(false) const order = orderData?.data @@ -95,6 +100,8 @@ const OrderDetails: FC = () => { const isOrderPaid = order.status === OrderStatus.PAID const isPreparing = order.status === OrderStatus.PREPARING const isCanceled = order.status === OrderStatus.CANCELED + const isCompleted = order.status === OrderStatus.COMPLETED + const canEditFees = !isCanceled && !isCompleted const canCompleteOrder = [ OrderStatus.DELIVERED_TO_WAITER, OrderStatus.DELIVERED_TO_RECEPTIONIST, @@ -225,6 +232,21 @@ const OrderDetails: FC = () => { printOrderReceipt(order) } + const handleUpdateOrderFees = (params: UpdateOrderFeesType) => { + updateOrderFees( + { orderId: order.id, params }, + { + onSuccess: () => { + toast.success('هزینه‌های سفارش به‌روزرسانی شد') + setShowEditFeesModal(false) + }, + onError: (error) => { + toast.error(extractErrorMessage(error)) + }, + } + ) + } + return (
@@ -267,6 +289,7 @@ const OrderDetails: FC = () => { onPrint={handlePrintOrder} showSendToKitchenButton={showSendToKitchenButton} showCancelButton={showCancelButton} + showEditFeesButton={canEditFees} isPreparing={isPreparing} isCourierDelivery={isCourierDelivery} isDineInOrCarDelivery={isDineInOrCarDelivery} @@ -280,10 +303,19 @@ const OrderDetails: FC = () => { onDeliverToReceptionist={handleDeliverToReceptionist} onCompleteOrder={handleCompleteOrder} onCancelOrder={() => setShowCancelModal(true)} + onEditFees={() => setShowEditFeesModal(true)} />
+ setShowEditFeesModal(false)} + order={order} + isLoading={isUpdatingFees} + onSubmit={handleUpdateOrderFees} + /> + {/* مدال کنسل سفارش */} void showSendToKitchenButton: boolean showCancelButton: boolean + showEditFeesButton?: boolean isPreparing: boolean isCourierDelivery: boolean isDineInOrCarDelivery: boolean @@ -18,12 +19,14 @@ interface OrderActionsProps { onDeliverToReceptionist: () => void onCompleteOrder: () => void onCancelOrder: () => void + onEditFees?: () => void } const OrderActions: FC = ({ onPrint, showSendToKitchenButton, showCancelButton, + showEditFeesButton = false, isPreparing, isCourierDelivery, isDineInOrCarDelivery, @@ -36,7 +39,8 @@ const OrderActions: FC = ({ onDeliverToWaiter, onDeliverToReceptionist, onCompleteOrder, - onCancelOrder + onCancelOrder, + onEditFees, }) => { const [loadingAction, setLoadingAction] = useState(null) @@ -84,6 +88,14 @@ const OrderActions: FC = ({ className='bg-slate-700 hover:bg-slate-800' /> + {showEditFeesButton && onEditFees && ( +