mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 13:32:00 +00:00
refactor(FE-208,212): enhance PurchaseOrderDetail and PurchaseOrderStaffApprovalForm to conditionally render invoice and item receipt based on approval steps
This commit is contained in:
@@ -43,7 +43,7 @@ const PurchaseOrderStaffApprovalForm = ({
|
|||||||
if (!initialValues?.approval) return false;
|
if (!initialValues?.approval) return false;
|
||||||
|
|
||||||
const currentStep = initialValues.approval.step_number;
|
const currentStep = initialValues.approval.step_number;
|
||||||
return currentStep >= 4;
|
return currentStep >= 3;
|
||||||
}, [initialValues?.approval]);
|
}, [initialValues?.approval]);
|
||||||
|
|
||||||
const getPurchaseItemError = (
|
const getPurchaseItemError = (
|
||||||
@@ -127,7 +127,7 @@ const PurchaseOrderStaffApprovalForm = ({
|
|||||||
onSubmit: async (values) => {
|
onSubmit: async (values) => {
|
||||||
if (type === 'edit' && !canUpdatePurchaseItems) {
|
if (type === 'edit' && !canUpdatePurchaseItems) {
|
||||||
setPurchaseOrderFormErrorMessage(
|
setPurchaseOrderFormErrorMessage(
|
||||||
'Tidak bisa diupdate. Harus melewati step 4 dahulu (Tahapan Penerimaan Produk).'
|
'Tidak bisa diupdate. Harus melewati step 3 dahulu (Approval dari Manager Purchasing).'
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -113,6 +113,20 @@ const PurchaseOrderDetail = ({
|
|||||||
return currentStep >= 4;
|
return currentStep >= 4;
|
||||||
}, [initialValues?.approval]);
|
}, [initialValues?.approval]);
|
||||||
|
|
||||||
|
const canShowPurchaseOrderInvoice = useMemo(() => {
|
||||||
|
if (!initialValues?.approval) return false;
|
||||||
|
|
||||||
|
const currentStep = initialValues.approval.step_number;
|
||||||
|
return currentStep >= 3;
|
||||||
|
}, [initialValues?.approval]);
|
||||||
|
|
||||||
|
const canShowPenerimaanBarang = useMemo(() => {
|
||||||
|
if (!initialValues?.approval) return false;
|
||||||
|
|
||||||
|
const currentStep = initialValues.approval.step_number;
|
||||||
|
return currentStep === 5;
|
||||||
|
}, [initialValues?.approval]);
|
||||||
|
|
||||||
const {
|
const {
|
||||||
approvals,
|
approvals,
|
||||||
isLoading: approvalsLoading,
|
isLoading: approvalsLoading,
|
||||||
@@ -162,6 +176,17 @@ const PurchaseOrderDetail = ({
|
|||||||
[initialValues?.id, searchParams]
|
[initialValues?.id, searchParams]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// ===== MODAL HANDLERS =====
|
||||||
|
const handleStaffApprovalModalClose = useCallback(() => {
|
||||||
|
refreshApprovals();
|
||||||
|
staffApprovalModal.closeModal();
|
||||||
|
}, [refreshApprovals]);
|
||||||
|
|
||||||
|
const handleEditModalClose = useCallback(() => {
|
||||||
|
refreshApprovals();
|
||||||
|
editModal.closeModal();
|
||||||
|
}, [refreshApprovals]);
|
||||||
|
|
||||||
// ===== DELETE HANDLER =====
|
// ===== DELETE HANDLER =====
|
||||||
const deleteItemsHandler = useCallback(async () => {
|
const deleteItemsHandler = useCallback(async () => {
|
||||||
const purchaseRequestId = searchParams.get('purchaseId')
|
const purchaseRequestId = searchParams.get('purchaseId')
|
||||||
@@ -197,7 +222,7 @@ const PurchaseOrderDetail = ({
|
|||||||
: `Berhasil menghapus ${itemIdsToDelete.length} item pembelian`;
|
: `Berhasil menghapus ${itemIdsToDelete.length} item pembelian`;
|
||||||
|
|
||||||
toast.success(successMessage);
|
toast.success(successMessage);
|
||||||
|
refreshApprovals();
|
||||||
deleteModal.closeModal();
|
deleteModal.closeModal();
|
||||||
setSelectedItem(null);
|
setSelectedItem(null);
|
||||||
setRowSelection({});
|
setRowSelection({});
|
||||||
@@ -574,7 +599,7 @@ const PurchaseOrderDetail = ({
|
|||||||
Nomor PO
|
Nomor PO
|
||||||
</span>
|
</span>
|
||||||
<div className='ml-3'>
|
<div className='ml-3'>
|
||||||
{canUpdatePurchaseItems &&
|
{canShowPurchaseOrderInvoice &&
|
||||||
purchaseData.po_number &&
|
purchaseData.po_number &&
|
||||||
purchaseData.po_number !== 'Belum dibuat' ? (
|
purchaseData.po_number !== 'Belum dibuat' ? (
|
||||||
<PurchaseOrderInvoice data={purchaseData} />
|
<PurchaseOrderInvoice data={purchaseData} />
|
||||||
@@ -596,7 +621,7 @@ const PurchaseOrderDetail = ({
|
|||||||
<h3 className='text-lg font-semibold text-gray-800'>
|
<h3 className='text-lg font-semibold text-gray-800'>
|
||||||
Item Pembelian
|
Item Pembelian
|
||||||
</h3>
|
</h3>
|
||||||
{canUpdatePurchaseItems && (
|
{canShowPurchaseOrderInvoice && (
|
||||||
<RowDropdownOptions isLast2Rows>
|
<RowDropdownOptions isLast2Rows>
|
||||||
<ItemPembelianDropdown onEdit={editModal.openModal} />
|
<ItemPembelianDropdown onEdit={editModal.openModal} />
|
||||||
</RowDropdownOptions>
|
</RowDropdownOptions>
|
||||||
@@ -697,11 +722,13 @@ const PurchaseOrderDetail = ({
|
|||||||
<h3 className='text-lg font-semibold text-gray-800'>
|
<h3 className='text-lg font-semibold text-gray-800'>
|
||||||
Informasi Penerimaan Barang
|
Informasi Penerimaan Barang
|
||||||
</h3>
|
</h3>
|
||||||
<RowDropdownOptions isLast2Rows>
|
{canShowPenerimaanBarang && (
|
||||||
<PenerimaanBarangDropdown
|
<RowDropdownOptions isLast2Rows>
|
||||||
onEdit={penerimaanBarangModal.openModal}
|
<PenerimaanBarangDropdown
|
||||||
/>
|
onEdit={penerimaanBarangModal.openModal}
|
||||||
</RowDropdownOptions>
|
/>
|
||||||
|
</RowDropdownOptions>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
<div className='rounded-lg border border-gray-200 overflow-hidden'>
|
<div className='rounded-lg border border-gray-200 overflow-hidden'>
|
||||||
<div className='overflow-x-auto'>
|
<div className='overflow-x-auto'>
|
||||||
@@ -764,7 +791,7 @@ const PurchaseOrderDetail = ({
|
|||||||
<PurchaseOrderStaffApprovalForm
|
<PurchaseOrderStaffApprovalForm
|
||||||
type='add'
|
type='add'
|
||||||
initialValues={purchaseData}
|
initialValues={purchaseData}
|
||||||
onCancel={staffApprovalModal.closeModal}
|
onCancel={handleStaffApprovalModalClose}
|
||||||
/>
|
/>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|
||||||
@@ -794,7 +821,7 @@ const PurchaseOrderDetail = ({
|
|||||||
<PurchaseOrderStaffApprovalForm
|
<PurchaseOrderStaffApprovalForm
|
||||||
type='edit'
|
type='edit'
|
||||||
initialValues={purchaseData}
|
initialValues={purchaseData}
|
||||||
onCancel={editModal.closeModal}
|
onCancel={handleEditModalClose}
|
||||||
/>
|
/>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user