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 && (
+
+ )}
+
{!isCanceled && showSendToKitchenButton && (