feat(FE-212): add rawDataApprovals prop to PurchaseOrderStaffApprovalForm for improved approval data handling

This commit is contained in:
rstubryan
2025-11-22 10:11:30 +07:00
parent 0fefe5e035
commit b12a1ebd36
2 changed files with 8 additions and 19 deletions
@@ -9,13 +9,10 @@ import useSWR from 'swr';
import Button from '@/components/Button'; import Button from '@/components/Button';
import TextInput from '@/components/input/TextInput'; import TextInput from '@/components/input/TextInput';
import NumberInput from '@/components/input/NumberInput'; import NumberInput from '@/components/input/NumberInput';
import SelectInput, { import SelectInput, { OptionType } from '@/components/input/SelectInput';
OptionType,
useSelect,
} from '@/components/input/SelectInput';
import ConfirmationModal from '@/components/modal/ConfirmationModal'; import ConfirmationModal from '@/components/modal/ConfirmationModal';
import { useModal } from '@/components/Modal'; import { useModal } from '@/components/Modal';
import { WarehouseApi, SupplierApi } from '@/services/api/master-data'; import { SupplierApi } from '@/services/api/master-data';
import { SupplierProducts } from '@/types/api/master-data/supplier'; import { SupplierProducts } from '@/types/api/master-data/supplier';
import { isResponseSuccess } from '@/lib/api-helper'; import { isResponseSuccess } from '@/lib/api-helper';
@@ -32,8 +29,8 @@ import {
UpdateStaffApprovalRequestPayload, UpdateStaffApprovalRequestPayload,
Purchase, Purchase,
} from '@/types/api/purchase/purchase'; } from '@/types/api/purchase/purchase';
import { BaseApproval, BaseGroupedApproval } from '@/types/api/api-general';
import { useRouter } from 'next/navigation'; import { useRouter } from 'next/navigation';
import { useApprovalSteps } from '@/components/pages/ApprovalSteps';
interface PurchaseOrderStaffApprovalFormProps { interface PurchaseOrderStaffApprovalFormProps {
type?: 'add' | 'edit'; type?: 'add' | 'edit';
@@ -42,6 +39,7 @@ interface PurchaseOrderStaffApprovalFormProps {
refreshApprovals?: () => void; refreshApprovals?: () => void;
onModalClose?: () => void; onModalClose?: () => void;
onRefetchData?: () => void; onRefetchData?: () => void;
rawDataApprovals?: BaseApproval[] | BaseGroupedApproval[];
} }
const PurchaseOrderStaffApprovalForm = ({ const PurchaseOrderStaffApprovalForm = ({
@@ -51,18 +49,8 @@ const PurchaseOrderStaffApprovalForm = ({
refreshApprovals, refreshApprovals,
onModalClose, onModalClose,
onRefetchData, onRefetchData,
rawDataApprovals,
}: PurchaseOrderStaffApprovalFormProps) => { }: PurchaseOrderStaffApprovalFormProps) => {
const { rawDataApprovals } = useApprovalSteps({
latestApproval: initialValues?.approval,
approvalLines: [],
moduleName: 'PURCHASES',
moduleId: initialValues?.id?.toString() ?? '',
params: {
limit: 100,
group_step_number: true,
},
});
const type = useMemo(() => { const type = useMemo(() => {
if (propType && (propType === 'add' || propType === 'edit')) { if (propType && (propType === 'add' || propType === 'edit')) {
return propType; return propType;
@@ -76,8 +64,7 @@ const PurchaseOrderStaffApprovalForm = ({
const hasOnlyInitialStep = const hasOnlyInitialStep =
rawDataApprovals.length === 1 && rawDataApprovals.length === 1 &&
firstApproval?.step_number === 1 && firstApproval?.step_number === 1 &&
'action' in firstApproval && ('action' in firstApproval ? firstApproval.action === 'CREATED' : false);
firstApproval.action === 'CREATED';
return hasOnlyInitialStep ? 'add' : 'edit'; return hasOnlyInitialStep ? 'add' : 'edit';
}, [rawDataApprovals, propType]); }, [rawDataApprovals, propType]);
@@ -954,6 +954,7 @@ const PurchaseOrderDetail = ({
refreshApprovals={refreshApprovals} refreshApprovals={refreshApprovals}
onModalClose={staffApprovalModal.closeModal} onModalClose={staffApprovalModal.closeModal}
onRefetchData={refetchData} onRefetchData={refetchData}
rawDataApprovals={rawDataApprovals}
/> />
</Modal> </Modal>
@@ -990,6 +991,7 @@ const PurchaseOrderDetail = ({
refreshApprovals={refreshApprovals} refreshApprovals={refreshApprovals}
onModalClose={editModal.closeModal} onModalClose={editModal.closeModal}
onRefetchData={refetchData} onRefetchData={refetchData}
rawDataApprovals={rawDataApprovals}
/> />
</Modal> </Modal>