mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 21:41:57 +00:00
feat(FE-311): Add rejection modals and accept handler
This commit is contained in:
@@ -27,6 +27,7 @@ import PurchaseOrderInvoice from '@/components/pages/purchase/order/PurchaseOrde
|
||||
|
||||
import Card from '@/components/Card';
|
||||
import {
|
||||
CreateAcceptApprovalRequestPayload,
|
||||
CreateManagerApprovalRequestPayload,
|
||||
CreateStaffApprovalRequestPayload,
|
||||
Purchase,
|
||||
@@ -88,6 +89,8 @@ const PurchaseOrderDetail = ({
|
||||
const staffApprovalModal = useModal();
|
||||
const staffRejectionModal = useModal();
|
||||
const acceptApprovalModal = useModal();
|
||||
const acceptRejectionModal = useModal();
|
||||
const managerRejectionModal = useModal();
|
||||
const editModal = useModal();
|
||||
const penerimaanBarangModal = useModal();
|
||||
const deleteModal = useModal();
|
||||
@@ -216,6 +219,12 @@ const PurchaseOrderDetail = ({
|
||||
case 1:
|
||||
staffRejectionModal.openModal();
|
||||
break;
|
||||
case 2:
|
||||
managerRejectionModal.openModal();
|
||||
break;
|
||||
case 3:
|
||||
acceptRejectionModal.openModal();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -296,6 +305,33 @@ const PurchaseOrderDetail = ({
|
||||
[initialValues?.id, searchParams, refetchData]
|
||||
);
|
||||
|
||||
const createAcceptApprovalHandler = useCallback(
|
||||
async (payload: CreateAcceptApprovalRequestPayload) => {
|
||||
const purchaseRequestId = searchParams.get('purchaseId')
|
||||
? parseInt(searchParams.get('purchaseId')!)
|
||||
: initialValues?.id || 1;
|
||||
|
||||
if (!purchaseRequestId) {
|
||||
toast.error('Purchase Request ID is required');
|
||||
return;
|
||||
}
|
||||
|
||||
const res = await PurchaseApi.acceptApproval.create(
|
||||
purchaseRequestId,
|
||||
payload
|
||||
);
|
||||
|
||||
if (isResponseError(res)) {
|
||||
toast.error(res.message);
|
||||
return;
|
||||
}
|
||||
toast.success(res?.message as string);
|
||||
refreshApprovals();
|
||||
refetchData?.();
|
||||
},
|
||||
[initialValues?.id, searchParams, refreshApprovals, refetchData]
|
||||
);
|
||||
|
||||
// ===== MODAL HANDLERS =====
|
||||
const handleStaffApprovalModalClose = useCallback(() => {
|
||||
refreshApprovals();
|
||||
@@ -1026,6 +1062,61 @@ const PurchaseOrderDetail = ({
|
||||
}}
|
||||
/>
|
||||
|
||||
{/* Accept Rejection Modal */}
|
||||
<ConfirmationModalWithNotes
|
||||
ref={acceptRejectionModal.ref}
|
||||
type='error'
|
||||
text='Apakah Anda yakin ingin menolak (reject) penerimaan barang ini?'
|
||||
placeholder='(Opsional) Masukkan alasan penolakan...'
|
||||
rows={4}
|
||||
closeOnBackdrop
|
||||
primaryButton={{
|
||||
text: 'Ya, Tolak',
|
||||
color: 'error',
|
||||
onClick: async (notes) => {
|
||||
const payload: CreateAcceptApprovalRequestPayload = {
|
||||
action: 'REJECTED',
|
||||
notes: notes || null,
|
||||
items: [],
|
||||
};
|
||||
|
||||
await createAcceptApprovalHandler(payload);
|
||||
await refetchData?.();
|
||||
acceptRejectionModal.closeModal();
|
||||
},
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: 'Batal',
|
||||
}}
|
||||
/>
|
||||
|
||||
{/* Manager Rejection Modal */}
|
||||
<ConfirmationModalWithNotes
|
||||
ref={managerRejectionModal.ref}
|
||||
type='error'
|
||||
text='Apakah Anda yakin ingin menolak (reject) approval manajer untuk permintaan pembelian ini?'
|
||||
placeholder='(Opsional) Masukkan alasan penolakan...'
|
||||
rows={4}
|
||||
closeOnBackdrop
|
||||
primaryButton={{
|
||||
text: 'Ya, Tolak',
|
||||
color: 'error',
|
||||
onClick: async (notes) => {
|
||||
const payload: CreateManagerApprovalRequestPayload = {
|
||||
action: 'REJECTED',
|
||||
notes: notes || null,
|
||||
};
|
||||
|
||||
await createManagerApprovalHandler(payload);
|
||||
await refetchData?.();
|
||||
managerRejectionModal.closeModal();
|
||||
},
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: 'Batal',
|
||||
}}
|
||||
/>
|
||||
|
||||
{/* Delete Confirmation Modal */}
|
||||
<ConfirmationModal
|
||||
ref={deleteModal.ref}
|
||||
|
||||
Vendored
+1
-1
@@ -105,7 +105,7 @@ export type CreateManagerApprovalRequestPayload = {
|
||||
|
||||
export type CreateAcceptApprovalRequestPayload = {
|
||||
action: 'APPROVED' | 'REJECTED';
|
||||
notes?: string;
|
||||
notes?: string | null;
|
||||
items: {
|
||||
purchase_item_id: number;
|
||||
received_date: string;
|
||||
|
||||
Reference in New Issue
Block a user