refactor(FE-212): add DeletePurchaseRequestItemPayload and implement PurchaseDeleteItemsService

This commit is contained in:
rstubryan
2025-11-17 10:13:30 +07:00
parent 69a8899cac
commit 30ed70b669
6 changed files with 82 additions and 20 deletions
@@ -102,17 +102,17 @@ const PurchaseOrderAcceptApprovalForm = ({
// ===== SUBMISSION HANDLERS =====
const createAcceptApprovalHandler = useCallback(
async (payload: CreateAcceptApprovalRequestPayload) => {
const purchaseRequisitionId = searchParams.get('purchaseId')
const purchaseRequestId = searchParams.get('purchaseId')
? parseInt(searchParams.get('purchaseId')!)
: initialValues?.id || 1;
if (!purchaseRequisitionId) {
setPurchaseOrderFormErrorMessage('Purchase Requisition ID is required');
if (!purchaseRequestId) {
setPurchaseOrderFormErrorMessage('Purchase Request ID is required');
return;
}
const res = await AcceptApprovalApi.acceptApproval(
purchaseRequisitionId,
purchaseRequestId,
payload
);
@@ -81,6 +81,10 @@ export type PurchaseAcceptApprovalItemSchema = {
transport_total: number | string;
};
export type PurchaseDeleteItemsSchema = {
item_ids: number[];
};
const PurchaseStaffApprovalItemObjectSchema: Yup.ObjectSchema<PurchaseStaffApprovalItemSchema> =
Yup.object({
purchase_item: Yup.object({
@@ -249,6 +253,20 @@ export const PurchaseRequestStaffApprovalFormSchema: Yup.ObjectSchema<PurchaseRe
.typeError('Item pembelian wajib diisi!'),
});
export const PurchaseDeleteItemsSchema: Yup.ObjectSchema<PurchaseDeleteItemsSchema> =
Yup.object({
item_ids: Yup.array()
.of(
Yup.number()
.min(1, 'Item ID tidak valid!')
.required('Item ID tidak valid!')
.typeError('Item ID tidak valid!')
)
.min(1, 'Minimal harus ada 1 item yang dihapus!')
.required('Item yang dihapus wajib diisi!')
.typeError('Item yang dihapus wajib diisi!'),
});
export const PurchaseRequestStaffApprovalFormInitialValues: PurchaseRequestStaffApprovalFormSchemaType =
{
notes: '',
@@ -368,3 +386,11 @@ export const PurchaseRequestAcceptApprovalFormDefaultValues = (
export type PurchaseRequestAcceptApprovalFormValues = Yup.InferType<
typeof PurchaseRequestAcceptApprovalFormSchema
>;
export const PurchaseDeleteItemsInitialValues: PurchaseDeleteItemsSchema = {
item_ids: [],
};
export type PurchaseDeleteItemsFormValues = Yup.InferType<
typeof PurchaseDeleteItemsSchema
>;
@@ -79,17 +79,17 @@ const PurchaseOrderStaffApprovalForm = ({
// ===== SUBMISSION HANDLERS =====
const createStaffApprovalHandler = useCallback(
async (payload: CreateStaffApprovalRequestPayload) => {
const purchaseRequisitionId = searchParams.get('purchaseId')
const purchaseRequestId = searchParams.get('purchaseId')
? parseInt(searchParams.get('purchaseId')!)
: initialValues?.id || 1;
if (!purchaseRequisitionId) {
setPurchaseOrderFormErrorMessage('Purchase Requisition ID is required');
if (!purchaseRequestId) {
setPurchaseOrderFormErrorMessage('Purchase Request ID is required');
return;
}
const res = await StaffApprovalApi.createStaffApproval(
purchaseRequisitionId,
purchaseRequestId,
payload
);
@@ -318,17 +318,17 @@ const PurchaseOrderDetail = ({
// ===== SUBMISSION HANDLER =====
const createManagerApprovalHandler = useCallback(
async (payload: CreateManagerApprovalRequestPayload) => {
const purchaseRequisitionId = searchParams.get('purchaseId')
const purchaseRequestId = searchParams.get('purchaseId')
? parseInt(searchParams.get('purchaseId')!)
: purchaseData?.id || 1;
if (!purchaseRequisitionId) {
toast.error('Purchase Requisition ID is required');
if (!purchaseRequestId) {
toast.error('Purchase Request ID is required');
return;
}
const res = await ManagerApprovalApi.createManagerApproval(
purchaseRequisitionId,
purchaseRequestId,
payload
);
@@ -377,6 +377,10 @@ const PurchaseOrderDetail = ({
};
const purchaseOrderColumns: ColumnDef<PurchaseItem>[] = [
{
header: 'No',
cell: (props) => props.row.index + 1,
},
{
accessorKey: 'product.name',
header: 'Produk',