diff --git a/src/components/pages/purchase/order/PurchaseOrderDetail.tsx b/src/components/pages/purchase/order/PurchaseOrderDetail.tsx index 059a7c5b..2cb70bfa 100644 --- a/src/components/pages/purchase/order/PurchaseOrderDetail.tsx +++ b/src/components/pages/purchase/order/PurchaseOrderDetail.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useMemo } from 'react'; +import { useCallback, useMemo } from 'react'; import { ColumnDef } from '@tanstack/react-table'; import ApprovalSteps, { @@ -11,13 +11,18 @@ import Button from '@/components/Button'; import { Icon } from '@iconify/react'; import { useModal } from '@/components/Modal'; import Modal from '@/components/Modal'; +import ConfirmationModalWithNotes from '@/components/modal/ConfirmationModalWithNotes'; import PurchaseOrderStaffApprovalForm from '@/components/pages/purchase/form/order/PurchaseOrderStaffApprovalForm'; import PurchaseOrderAcceptApprovalForm from '@/components/pages/purchase/form/order/PurchaseOrderAcceptApprovalForm'; import { BaseGroupedApproval } from '@/types/api/api-general'; import { PURCHASE_ORDER_APPROVAL_LINE } from '@/config/approval-line'; import Card from '@/components/Card'; -import { Purchase, PurchaseItem } from '@/types/api/purchase/purchase'; +import { + CreateManagerApprovalRequisitionsPayload, + Purchase, + PurchaseItem, +} from '@/types/api/purchase/purchase'; import { createdUser, dummyAreas, @@ -25,6 +30,10 @@ import { dummyProductWarehouses, dummyWarehouses, } from '@/dummy/marketing.dummy'; +import { ManagerApprovalApi } from '@/services/api/purchase'; +import { isResponseError } from '@/lib/api-helper'; +import { toast } from 'react-hot-toast'; +import { useSearchParams } from 'next/navigation'; interface PurchaseOrderDetailProps { type?: 'detail' | 'edit'; @@ -290,6 +299,8 @@ const PurchaseOrderDetail = ({ data, }: PurchaseOrderDetailProps) => { // ===== MODAL HOOKS ===== + const searchParams = useSearchParams(); + const confirmationModalWithNotes = useModal(); const staffApprovalModal = useModal(); const acceptApprovalModal = useModal(); @@ -301,6 +312,32 @@ const PurchaseOrderDetail = ({ const latestApproval = groupedApprovals[groupedApprovals.length - 1]?.approvals[0]; + // ===== SUBMISSION HANDLER ===== + const createManagerApprovalHandler = useCallback( + async (payload: CreateManagerApprovalRequisitionsPayload) => { + const purchaseRequisitionId = searchParams.get('purchaseId') + ? parseInt(searchParams.get('purchaseId')!) + : purchaseData?.id || 1; + + if (!purchaseRequisitionId) { + toast.error('Purchase Requisition ID is required'); + return; + } + + const res = await ManagerApprovalApi.createManagerApproval( + purchaseRequisitionId, + payload + ); + + if (isResponseError(res)) { + toast.error(res.message); + return; + } + toast.success(res?.message as string); + }, + [purchaseData?.id, searchParams] + ); + // ===== COMPUTED VALUES ===== const approvalSteps = useMemo(() => { if (!groupedApprovals.length || !latestApproval) return []; @@ -470,6 +507,16 @@ const PurchaseOrderDetail = ({
{/* Approval Action Buttons */}
+ +