mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-25 15:55:48 +00:00
refactor(FE-208): rename PurchaseRequisitions to PurchaseRequest and update related API references
This commit is contained in:
@@ -1,11 +1,11 @@
|
|||||||
import PurchaseRequisitionsForm from '@/components/pages/purchase/form/request/PurchaseRequisitionsForm';
|
import PurchaseRequestForm from '@/components/pages/purchase/form/request/PurchaseRequisitionsForm';
|
||||||
|
|
||||||
const AddPurchaseRequisitions = () => {
|
const AddPurchaseRequest = () => {
|
||||||
return (
|
return (
|
||||||
<div className='w-full p-4 flex flex-row justify-center'>
|
<div className='w-full p-4 flex flex-row justify-center'>
|
||||||
<PurchaseRequisitionsForm />
|
<PurchaseRequestForm />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default AddPurchaseRequisitions;
|
export default AddPurchaseRequest;
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
import { useRouter, useSearchParams } from 'next/navigation';
|
import { useRouter, useSearchParams } from 'next/navigation';
|
||||||
import useSWR from 'swr';
|
import useSWR from 'swr';
|
||||||
import PurchaseRequisitionsForm from '@/components/pages/purchase/form/request/PurchaseRequisitionsForm';
|
import PurchaseRequestForm from '@/components/pages/purchase/form/request/PurchaseRequisitionsForm';
|
||||||
import { PurchaseRequisitionsApi } from '@/services/api/purchase';
|
import { PurchaseRequestApi } from '@/services/api/purchase';
|
||||||
import { isResponseSuccess, isResponseError } from '@/lib/api-helper';
|
import { isResponseSuccess, isResponseError } from '@/lib/api-helper';
|
||||||
|
|
||||||
const PurchaseEdit = () => {
|
const PurchaseEdit = () => {
|
||||||
@@ -14,7 +14,7 @@ const PurchaseEdit = () => {
|
|||||||
|
|
||||||
const { data: purchase, isLoading: isLoadingPurchase } = useSWR(
|
const { data: purchase, isLoading: isLoadingPurchase } = useSWR(
|
||||||
purchaseId,
|
purchaseId,
|
||||||
(id: number) => PurchaseRequisitionsApi.getSingle(id)
|
(id: number) => PurchaseRequestApi.getSingle(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!purchaseId) {
|
if (!purchaseId) {
|
||||||
@@ -38,7 +38,7 @@ const PurchaseEdit = () => {
|
|||||||
<span className='loading loading-spinner loading-xl' />
|
<span className='loading loading-spinner loading-xl' />
|
||||||
)}
|
)}
|
||||||
{!isLoadingPurchase && isResponseSuccess(purchase) && (
|
{!isLoadingPurchase && isResponseSuccess(purchase) && (
|
||||||
<PurchaseRequisitionsForm type='edit' initialValues={purchase.data} />
|
<PurchaseRequestForm type='edit' initialValues={purchase.data} />
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
import { useRouter, useSearchParams } from 'next/navigation';
|
import { useRouter, useSearchParams } from 'next/navigation';
|
||||||
import useSWR from 'swr';
|
import useSWR from 'swr';
|
||||||
import PurchaseRequisitionsForm from '@/components/pages/purchase/form/request/PurchaseRequisitionsForm';
|
import PurchaseRequestForm from '@/components/pages/purchase/form/request/PurchaseRequisitionsForm';
|
||||||
import { PurchaseRequisitionsApi } from '@/services/api/purchase';
|
import { PurchaseRequestApi } from '@/services/api/purchase';
|
||||||
import { isResponseSuccess, isResponseError } from '@/lib/api-helper';
|
import { isResponseSuccess, isResponseError } from '@/lib/api-helper';
|
||||||
|
|
||||||
const PurchaseDetail = () => {
|
const PurchaseDetail = () => {
|
||||||
@@ -14,7 +14,7 @@ const PurchaseDetail = () => {
|
|||||||
|
|
||||||
const { data: purchase, isLoading: isLoadingPurchase } = useSWR(
|
const { data: purchase, isLoading: isLoadingPurchase } = useSWR(
|
||||||
purchaseId,
|
purchaseId,
|
||||||
(id: number) => PurchaseRequisitionsApi.getSingle(id)
|
(id: number) => PurchaseRequestApi.getSingle(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!purchaseId) {
|
if (!purchaseId) {
|
||||||
@@ -38,7 +38,7 @@ const PurchaseDetail = () => {
|
|||||||
<span className='loading loading-spinner loading-xl' />
|
<span className='loading loading-spinner loading-xl' />
|
||||||
)}
|
)}
|
||||||
{!isLoadingPurchase && isResponseSuccess(purchase) && (
|
{!isLoadingPurchase && isResponseSuccess(purchase) && (
|
||||||
<PurchaseRequisitionsForm type='detail' initialValues={purchase.data} />
|
<PurchaseRequestForm type='detail' initialValues={purchase.data} />
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import { isResponseSuccess } from '@/lib/api-helper';
|
|||||||
import { useTableFilter } from '@/services/hooks/useTableFilter';
|
import { useTableFilter } from '@/services/hooks/useTableFilter';
|
||||||
import { ROWS_OPTIONS } from '@/config/constant';
|
import { ROWS_OPTIONS } from '@/config/constant';
|
||||||
import { Purchase } from '@/types/api/purchase/purchase';
|
import { Purchase } from '@/types/api/purchase/purchase';
|
||||||
import { PurchaseRequisitionsApi } from '@/services/api/purchase';
|
import { PurchaseRequestApi } from '@/services/api/purchase';
|
||||||
|
|
||||||
const RowOptionsMenu = ({
|
const RowOptionsMenu = ({
|
||||||
type = 'dropdown',
|
type = 'dropdown',
|
||||||
@@ -103,8 +103,8 @@ const PurchaseTable = () => {
|
|||||||
isLoading,
|
isLoading,
|
||||||
mutate: refreshPurchaseRequests,
|
mutate: refreshPurchaseRequests,
|
||||||
} = useSWR(
|
} = useSWR(
|
||||||
`${PurchaseRequisitionsApi.basePath}${getTableFilterQueryString()}`,
|
`${PurchaseRequestApi.basePath}${getTableFilterQueryString()}`,
|
||||||
PurchaseRequisitionsApi.getAllFetcher
|
PurchaseRequestApi.getAllFetcher
|
||||||
);
|
);
|
||||||
|
|
||||||
// Modal hooks
|
// Modal hooks
|
||||||
@@ -237,7 +237,7 @@ const PurchaseTable = () => {
|
|||||||
setIsDeleteLoading(true);
|
setIsDeleteLoading(true);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await PurchaseRequisitionsApi.delete(selectedPurchase?.id as number);
|
await PurchaseRequestApi.delete(selectedPurchase?.id as number);
|
||||||
refreshPurchaseRequests();
|
refreshPurchaseRequests();
|
||||||
deleteModal.closeModal();
|
deleteModal.closeModal();
|
||||||
toast.success('Berhasil menghapus data permintaan pembelian!');
|
toast.success('Berhasil menghapus data permintaan pembelian!');
|
||||||
@@ -283,7 +283,6 @@ const PurchaseTable = () => {
|
|||||||
Tambah
|
Tambah
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
|
|
||||||
{selectedRowIds.length > 0 && (
|
{selectedRowIds.length > 0 && (
|
||||||
<Button
|
<Button
|
||||||
variant='outline'
|
variant='outline'
|
||||||
|
|||||||
@@ -11,14 +11,14 @@ import NumberInput from '@/components/input/NumberInput';
|
|||||||
import SelectInput, { OptionType } from '@/components/input/SelectInput';
|
import SelectInput, { OptionType } from '@/components/input/SelectInput';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
PurchaseRequisitionsAcceptApprovalFormDefaultValues,
|
PurchaseRequestAcceptApprovalFormDefaultValues,
|
||||||
PurchaseRequisitionsAcceptApprovalFormInitialValues,
|
PurchaseRequestAcceptApprovalFormInitialValues,
|
||||||
PurchaseRequisitionsAcceptApprovalFormSchema,
|
PurchaseRequestAcceptApprovalFormSchema,
|
||||||
} from './PurchaseOrderForm.schema';
|
} from './PurchaseOrderForm.schema';
|
||||||
import { isResponseError } from '@/lib/api-helper';
|
import { isResponseError } from '@/lib/api-helper';
|
||||||
import { AcceptApprovalApi } from '@/services/api/purchase';
|
import { AcceptApprovalApi } from '@/services/api/purchase';
|
||||||
import {
|
import {
|
||||||
CreateAcceptApprovalRequisitionsPayload,
|
CreateAcceptApprovalRequestPayload,
|
||||||
Purchase,
|
Purchase,
|
||||||
} from '@/types/api/purchase/purchase';
|
} from '@/types/api/purchase/purchase';
|
||||||
import DateInput from '@/components/input/DateInput';
|
import DateInput from '@/components/input/DateInput';
|
||||||
@@ -101,7 +101,7 @@ const PurchaseOrderAcceptApprovalForm = ({
|
|||||||
|
|
||||||
// ===== SUBMISSION HANDLERS =====
|
// ===== SUBMISSION HANDLERS =====
|
||||||
const createAcceptApprovalHandler = useCallback(
|
const createAcceptApprovalHandler = useCallback(
|
||||||
async (payload: CreateAcceptApprovalRequisitionsPayload) => {
|
async (payload: CreateAcceptApprovalRequestPayload) => {
|
||||||
const purchaseRequisitionId = searchParams.get('purchaseId')
|
const purchaseRequisitionId = searchParams.get('purchaseId')
|
||||||
? parseInt(searchParams.get('purchaseId')!)
|
? parseInt(searchParams.get('purchaseId')!)
|
||||||
: initialValues?.id || 1;
|
: initialValues?.id || 1;
|
||||||
@@ -127,10 +127,7 @@ const PurchaseOrderAcceptApprovalForm = ({
|
|||||||
);
|
);
|
||||||
|
|
||||||
const updateAcceptApprovalHandler = useCallback(
|
const updateAcceptApprovalHandler = useCallback(
|
||||||
async (
|
async (purchaseId: number, payload: CreateAcceptApprovalRequestPayload) => {
|
||||||
purchaseId: number,
|
|
||||||
payload: CreateAcceptApprovalRequisitionsPayload
|
|
||||||
) => {
|
|
||||||
const res = await AcceptApprovalApi.acceptApproval(purchaseId, payload);
|
const res = await AcceptApprovalApi.acceptApproval(purchaseId, payload);
|
||||||
if (isResponseError(res)) {
|
if (isResponseError(res)) {
|
||||||
setPurchaseOrderFormErrorMessage(res.message);
|
setPurchaseOrderFormErrorMessage(res.message);
|
||||||
@@ -146,17 +143,17 @@ const PurchaseOrderAcceptApprovalForm = ({
|
|||||||
// ===== FORM CONFIGURATION =====
|
// ===== FORM CONFIGURATION =====
|
||||||
const formikInitialValues = useMemo(() => {
|
const formikInitialValues = useMemo(() => {
|
||||||
return initialValues
|
return initialValues
|
||||||
? PurchaseRequisitionsAcceptApprovalFormDefaultValues(initialValues)
|
? PurchaseRequestAcceptApprovalFormDefaultValues(initialValues)
|
||||||
: PurchaseRequisitionsAcceptApprovalFormInitialValues;
|
: PurchaseRequestAcceptApprovalFormInitialValues;
|
||||||
}, [initialValues]);
|
}, [initialValues]);
|
||||||
|
|
||||||
const formik = useFormik({
|
const formik = useFormik({
|
||||||
initialValues: formikInitialValues,
|
initialValues: formikInitialValues,
|
||||||
validationSchema: PurchaseRequisitionsAcceptApprovalFormSchema,
|
validationSchema: PurchaseRequestAcceptApprovalFormSchema,
|
||||||
validateOnChange: true,
|
validateOnChange: true,
|
||||||
validateOnBlur: true,
|
validateOnBlur: true,
|
||||||
onSubmit: async (values) => {
|
onSubmit: async (values) => {
|
||||||
const payload: CreateAcceptApprovalRequisitionsPayload = {
|
const payload: CreateAcceptApprovalRequestPayload = {
|
||||||
notes: values.notes || '',
|
notes: values.notes || '',
|
||||||
items: (values.items || []).map((item) => ({
|
items: (values.items || []).map((item) => ({
|
||||||
purchase_item_id:
|
purchase_item_id:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import * as Yup from 'yup';
|
import * as Yup from 'yup';
|
||||||
import { Purchase } from '@/types/api/purchase/purchase';
|
import { Purchase } from '@/types/api/purchase/purchase';
|
||||||
|
|
||||||
type PurchaseRequisitionsStaffApprovalFormSchemaType = {
|
type PurchaseRequestStaffApprovalFormSchemaType = {
|
||||||
notes: string | null;
|
notes: string | null;
|
||||||
items: {
|
items: {
|
||||||
purchase_item?: {
|
purchase_item?: {
|
||||||
@@ -14,11 +14,11 @@ type PurchaseRequisitionsStaffApprovalFormSchemaType = {
|
|||||||
}[];
|
}[];
|
||||||
};
|
};
|
||||||
|
|
||||||
type PurchaseRequisitionsManagerApprovalFormSchemaType = {
|
type PurchaseRequestManagerApprovalFormSchemaType = {
|
||||||
notes: string | null;
|
notes: string | null;
|
||||||
};
|
};
|
||||||
|
|
||||||
type PurchaseRequisitionsAcceptApprovalFormSchemaType = {
|
type PurchaseRequestAcceptApprovalFormSchemaType = {
|
||||||
notes: string | null;
|
notes: string | null;
|
||||||
items: {
|
items: {
|
||||||
purchase_item?: {
|
purchase_item?: {
|
||||||
@@ -128,7 +128,7 @@ const PurchaseStaffApprovalItemObjectSchema: Yup.ObjectSchema<PurchaseStaffAppro
|
|||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
const PurchaseManagerApprovalObjectSchema: Yup.ObjectSchema<PurchaseRequisitionsManagerApprovalFormSchemaType> =
|
const PurchaseManagerApprovalObjectSchema: Yup.ObjectSchema<PurchaseRequestManagerApprovalFormSchemaType> =
|
||||||
Yup.object({
|
Yup.object({
|
||||||
notes: Yup.string().nullable().default(null),
|
notes: Yup.string().nullable().default(null),
|
||||||
});
|
});
|
||||||
@@ -239,7 +239,7 @@ const PurchaseAcceptApprovalItemObjectSchema: Yup.ObjectSchema<PurchaseAcceptApp
|
|||||||
.typeError('Total biaya transport harus berupa angka!'),
|
.typeError('Total biaya transport harus berupa angka!'),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const PurchaseRequisitionsStaffApprovalFormSchema: Yup.ObjectSchema<PurchaseRequisitionsStaffApprovalFormSchemaType> =
|
export const PurchaseRequestStaffApprovalFormSchema: Yup.ObjectSchema<PurchaseRequestStaffApprovalFormSchemaType> =
|
||||||
Yup.object({
|
Yup.object({
|
||||||
notes: Yup.string().nullable().default(null),
|
notes: Yup.string().nullable().default(null),
|
||||||
items: Yup.array()
|
items: Yup.array()
|
||||||
@@ -249,7 +249,7 @@ export const PurchaseRequisitionsStaffApprovalFormSchema: Yup.ObjectSchema<Purch
|
|||||||
.typeError('Item pembelian wajib diisi!'),
|
.typeError('Item pembelian wajib diisi!'),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const PurchaseRequisitionsStaffApprovalFormInitialValues: PurchaseRequisitionsStaffApprovalFormSchemaType =
|
export const PurchaseRequestStaffApprovalFormInitialValues: PurchaseRequestStaffApprovalFormSchemaType =
|
||||||
{
|
{
|
||||||
notes: '',
|
notes: '',
|
||||||
items: [
|
items: [
|
||||||
@@ -261,9 +261,9 @@ export const PurchaseRequisitionsStaffApprovalFormInitialValues: PurchaseRequisi
|
|||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
export const PurchaseRequisitionsStaffApprovalFormDefaultValues = (
|
export const PurchaseRequestStaffApprovalFormDefaultValues = (
|
||||||
purchase?: Purchase
|
purchase?: Purchase
|
||||||
): PurchaseRequisitionsStaffApprovalFormSchemaType => {
|
): PurchaseRequestStaffApprovalFormSchemaType => {
|
||||||
return {
|
return {
|
||||||
notes: purchase?.notes ?? null,
|
notes: purchase?.notes ?? null,
|
||||||
items: purchase?.items
|
items: purchase?.items
|
||||||
@@ -282,26 +282,26 @@ export const PurchaseRequisitionsStaffApprovalFormDefaultValues = (
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export type PurchaseRequisitionsStaffApprovalFormValues = Yup.InferType<
|
export type PurchaseRequestStaffApprovalFormValues = Yup.InferType<
|
||||||
typeof PurchaseRequisitionsStaffApprovalFormSchema
|
typeof PurchaseRequestStaffApprovalFormSchema
|
||||||
>;
|
>;
|
||||||
|
|
||||||
export const PurchaseRequisitionsManagerApprovalFormSchema: Yup.ObjectSchema<PurchaseRequisitionsManagerApprovalFormSchemaType> =
|
export const PurchaseRequestManagerApprovalFormSchema: Yup.ObjectSchema<PurchaseRequestManagerApprovalFormSchemaType> =
|
||||||
PurchaseManagerApprovalObjectSchema;
|
PurchaseManagerApprovalObjectSchema;
|
||||||
|
|
||||||
export const PurchaseRequisitionsManagerApprovalFormDefaultValues = (
|
export const PurchaseRequestManagerApprovalFormDefaultValues = (
|
||||||
purchase?: Purchase
|
purchase?: Purchase
|
||||||
): PurchaseRequisitionsManagerApprovalFormSchemaType => {
|
): PurchaseRequestManagerApprovalFormSchemaType => {
|
||||||
return {
|
return {
|
||||||
notes: purchase?.notes ?? null,
|
notes: purchase?.notes ?? null,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export type PurchaseRequisitionsManagerApprovalFormValues = Yup.InferType<
|
export type PurchaseRequestManagerApprovalFormValues = Yup.InferType<
|
||||||
typeof PurchaseRequisitionsManagerApprovalFormSchema
|
typeof PurchaseRequestManagerApprovalFormSchema
|
||||||
>;
|
>;
|
||||||
|
|
||||||
export const PurchaseRequisitionsAcceptApprovalFormSchema: Yup.ObjectSchema<PurchaseRequisitionsAcceptApprovalFormSchemaType> =
|
export const PurchaseRequestAcceptApprovalFormSchema: Yup.ObjectSchema<PurchaseRequestAcceptApprovalFormSchemaType> =
|
||||||
Yup.object({
|
Yup.object({
|
||||||
notes: Yup.string().nullable().default(null),
|
notes: Yup.string().nullable().default(null),
|
||||||
items: Yup.array()
|
items: Yup.array()
|
||||||
@@ -311,7 +311,7 @@ export const PurchaseRequisitionsAcceptApprovalFormSchema: Yup.ObjectSchema<Purc
|
|||||||
.typeError('Item pembelian wajib diisi!'),
|
.typeError('Item pembelian wajib diisi!'),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const PurchaseRequisitionsAcceptApprovalFormInitialValues: PurchaseRequisitionsAcceptApprovalFormSchemaType =
|
export const PurchaseRequestAcceptApprovalFormInitialValues: PurchaseRequestAcceptApprovalFormSchemaType =
|
||||||
{
|
{
|
||||||
notes: '',
|
notes: '',
|
||||||
items: [
|
items: [
|
||||||
@@ -330,9 +330,9 @@ export const PurchaseRequisitionsAcceptApprovalFormInitialValues: PurchaseRequis
|
|||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
export const PurchaseRequisitionsAcceptApprovalFormDefaultValues = (
|
export const PurchaseRequestAcceptApprovalFormDefaultValues = (
|
||||||
purchase?: Purchase
|
purchase?: Purchase
|
||||||
): PurchaseRequisitionsAcceptApprovalFormSchemaType => {
|
): PurchaseRequestAcceptApprovalFormSchemaType => {
|
||||||
return {
|
return {
|
||||||
notes: purchase?.notes ?? null,
|
notes: purchase?.notes ?? null,
|
||||||
items: purchase?.items
|
items: purchase?.items
|
||||||
@@ -365,6 +365,6 @@ export const PurchaseRequisitionsAcceptApprovalFormDefaultValues = (
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export type PurchaseRequisitionsAcceptApprovalFormValues = Yup.InferType<
|
export type PurchaseRequestAcceptApprovalFormValues = Yup.InferType<
|
||||||
typeof PurchaseRequisitionsAcceptApprovalFormSchema
|
typeof PurchaseRequestAcceptApprovalFormSchema
|
||||||
>;
|
>;
|
||||||
|
|||||||
@@ -11,14 +11,14 @@ import NumberInput from '@/components/input/NumberInput';
|
|||||||
import SelectInput, { OptionType } from '@/components/input/SelectInput';
|
import SelectInput, { OptionType } from '@/components/input/SelectInput';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
PurchaseRequisitionsStaffApprovalFormDefaultValues,
|
PurchaseRequestStaffApprovalFormDefaultValues,
|
||||||
PurchaseRequisitionsStaffApprovalFormInitialValues,
|
PurchaseRequestStaffApprovalFormInitialValues,
|
||||||
PurchaseRequisitionsStaffApprovalFormSchema,
|
PurchaseRequestStaffApprovalFormSchema,
|
||||||
} from './PurchaseOrderForm.schema';
|
} from './PurchaseOrderForm.schema';
|
||||||
import { isResponseError } from '@/lib/api-helper';
|
import { isResponseError } from '@/lib/api-helper';
|
||||||
import { StaffApprovalApi } from '@/services/api/purchase';
|
import { StaffApprovalApi } from '@/services/api/purchase';
|
||||||
import {
|
import {
|
||||||
CreateStaffApprovalRequisitionsPayload,
|
CreateStaffApprovalRequestPayload,
|
||||||
Purchase,
|
Purchase,
|
||||||
} from '@/types/api/purchase/purchase';
|
} from '@/types/api/purchase/purchase';
|
||||||
|
|
||||||
@@ -78,7 +78,7 @@ const PurchaseOrderStaffApprovalForm = ({
|
|||||||
|
|
||||||
// ===== SUBMISSION HANDLERS =====
|
// ===== SUBMISSION HANDLERS =====
|
||||||
const createStaffApprovalHandler = useCallback(
|
const createStaffApprovalHandler = useCallback(
|
||||||
async (payload: CreateStaffApprovalRequisitionsPayload) => {
|
async (payload: CreateStaffApprovalRequestPayload) => {
|
||||||
const purchaseRequisitionId = searchParams.get('purchaseId')
|
const purchaseRequisitionId = searchParams.get('purchaseId')
|
||||||
? parseInt(searchParams.get('purchaseId')!)
|
? parseInt(searchParams.get('purchaseId')!)
|
||||||
: initialValues?.id || 1;
|
: initialValues?.id || 1;
|
||||||
@@ -104,10 +104,7 @@ const PurchaseOrderStaffApprovalForm = ({
|
|||||||
);
|
);
|
||||||
|
|
||||||
const updateStaffApprovalHandler = useCallback(
|
const updateStaffApprovalHandler = useCallback(
|
||||||
async (
|
async (purchaseId: number, payload: CreateStaffApprovalRequestPayload) => {
|
||||||
purchaseId: number,
|
|
||||||
payload: CreateStaffApprovalRequisitionsPayload
|
|
||||||
) => {
|
|
||||||
const res = await StaffApprovalApi.createStaffApproval(
|
const res = await StaffApprovalApi.createStaffApproval(
|
||||||
purchaseId,
|
purchaseId,
|
||||||
payload
|
payload
|
||||||
@@ -126,17 +123,17 @@ const PurchaseOrderStaffApprovalForm = ({
|
|||||||
// ===== FORM CONFIGURATION =====
|
// ===== FORM CONFIGURATION =====
|
||||||
const formikInitialValues = useMemo(() => {
|
const formikInitialValues = useMemo(() => {
|
||||||
return initialValues
|
return initialValues
|
||||||
? PurchaseRequisitionsStaffApprovalFormDefaultValues(initialValues)
|
? PurchaseRequestStaffApprovalFormDefaultValues(initialValues)
|
||||||
: PurchaseRequisitionsStaffApprovalFormInitialValues;
|
: PurchaseRequestStaffApprovalFormInitialValues;
|
||||||
}, [initialValues]);
|
}, [initialValues]);
|
||||||
|
|
||||||
const formik = useFormik({
|
const formik = useFormik({
|
||||||
initialValues: formikInitialValues,
|
initialValues: formikInitialValues,
|
||||||
validationSchema: PurchaseRequisitionsStaffApprovalFormSchema,
|
validationSchema: PurchaseRequestStaffApprovalFormSchema,
|
||||||
validateOnChange: true,
|
validateOnChange: true,
|
||||||
validateOnBlur: true,
|
validateOnBlur: true,
|
||||||
onSubmit: async (values) => {
|
onSubmit: async (values) => {
|
||||||
const payload: CreateStaffApprovalRequisitionsPayload = {
|
const payload: CreateStaffApprovalRequestPayload = {
|
||||||
notes: values.notes || '',
|
notes: values.notes || '',
|
||||||
items: (values.items || []).map((item) => ({
|
items: (values.items || []).map((item) => ({
|
||||||
purchase_item_id:
|
purchase_item_id:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import * as Yup from 'yup';
|
import * as Yup from 'yup';
|
||||||
import { Purchase } from '@/types/api/purchase/purchase';
|
import { Purchase } from '@/types/api/purchase/purchase';
|
||||||
|
|
||||||
type PurchaseRequisitionsFormSchemaType = {
|
type PurchaseRequestFormSchemaType = {
|
||||||
supplier?: {
|
supplier?: {
|
||||||
value: number;
|
value: number;
|
||||||
label: string;
|
label: string;
|
||||||
@@ -85,7 +85,7 @@ const PurchaseItemObjectSchema: Yup.ObjectSchema<PurchaseItemSchema> =
|
|||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const PurchaseRequisitionsFormSchema: Yup.ObjectSchema<PurchaseRequisitionsFormSchemaType> =
|
export const PurchaseRequestFormSchema: Yup.ObjectSchema<PurchaseRequestFormSchemaType> =
|
||||||
Yup.object({
|
Yup.object({
|
||||||
supplier: Yup.object({
|
supplier: Yup.object({
|
||||||
value: Yup.number().min(1).required(),
|
value: Yup.number().min(1).required(),
|
||||||
@@ -127,16 +127,15 @@ export const PurchaseRequisitionsFormSchema: Yup.ObjectSchema<PurchaseRequisitio
|
|||||||
.typeError('Item pembelian wajib diisi!'),
|
.typeError('Item pembelian wajib diisi!'),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const UpdatePurchaseRequisitionsFormSchema =
|
export const UpdatePurchaseRequestFormSchema = PurchaseRequestFormSchema;
|
||||||
PurchaseRequisitionsFormSchema;
|
|
||||||
|
|
||||||
export type PurchaseRequisitionsFormValues = Yup.InferType<
|
export type PurchaseRequestFormValues = Yup.InferType<
|
||||||
typeof PurchaseRequisitionsFormSchema
|
typeof PurchaseRequestFormSchema
|
||||||
>;
|
>;
|
||||||
|
|
||||||
export const getPurchaseRequisitionsFormInitialValues = (
|
export const getPurchaseRequestFormInitialValues = (
|
||||||
initialValues?: Purchase
|
initialValues?: Purchase
|
||||||
): PurchaseRequisitionsFormValues => ({
|
): PurchaseRequestFormValues => ({
|
||||||
supplier: initialValues?.supplier
|
supplier: initialValues?.supplier
|
||||||
? {
|
? {
|
||||||
value: initialValues.supplier.id,
|
value: initialValues.supplier.id,
|
||||||
|
|||||||
@@ -18,10 +18,10 @@ import ConfirmationModal from '@/components/modal/ConfirmationModal';
|
|||||||
import { useModal } from '@/components/Modal';
|
import { useModal } from '@/components/Modal';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
PurchaseRequisitionsFormSchema,
|
PurchaseRequestFormSchema,
|
||||||
PurchaseRequisitionsFormValues,
|
PurchaseRequestFormValues,
|
||||||
getPurchaseRequisitionsFormInitialValues,
|
getPurchaseRequestFormInitialValues,
|
||||||
UpdatePurchaseRequisitionsFormSchema,
|
UpdatePurchaseRequestFormSchema,
|
||||||
} from './PurchaseRequisitionsForm.schema';
|
} from './PurchaseRequisitionsForm.schema';
|
||||||
import {
|
import {
|
||||||
SupplierApi,
|
SupplierApi,
|
||||||
@@ -34,11 +34,11 @@ import { Supplier } from '@/types/api/master-data/supplier';
|
|||||||
import { Product } from '@/types/api/master-data/product';
|
import { Product } from '@/types/api/master-data/product';
|
||||||
import { ProductWarehouseApi } from '@/services/api/inventory';
|
import { ProductWarehouseApi } from '@/services/api/inventory';
|
||||||
import { isResponseSuccess, isResponseError } from '@/lib/api-helper';
|
import { isResponseSuccess, isResponseError } from '@/lib/api-helper';
|
||||||
import { PurchaseRequisitionsApi } from '@/services/api/purchase';
|
import { PurchaseRequestApi } from '@/services/api/purchase';
|
||||||
|
|
||||||
import Card from '@/components/Card';
|
import Card from '@/components/Card';
|
||||||
import {
|
import {
|
||||||
CreatePurchaseRequisitionsPayload,
|
CreatePurchaseRequestPayload,
|
||||||
Purchase,
|
Purchase,
|
||||||
} from '@/types/api/purchase/purchase';
|
} from '@/types/api/purchase/purchase';
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ interface PurchaseRequestFormProps {
|
|||||||
initialValues?: Purchase;
|
initialValues?: Purchase;
|
||||||
}
|
}
|
||||||
|
|
||||||
const PurchaseRequisitionsForm = ({
|
const PurchaseRequestForm = ({
|
||||||
type = 'add',
|
type = 'add',
|
||||||
initialValues,
|
initialValues,
|
||||||
}: PurchaseRequestFormProps) => {
|
}: PurchaseRequestFormProps) => {
|
||||||
@@ -105,8 +105,8 @@ const PurchaseRequisitionsForm = ({
|
|||||||
|
|
||||||
// ===== SUBMISSION HANDLERS =====
|
// ===== SUBMISSION HANDLERS =====
|
||||||
const createPurchaseRequestHandler = useCallback(
|
const createPurchaseRequestHandler = useCallback(
|
||||||
async (payload: CreatePurchaseRequisitionsPayload) => {
|
async (payload: CreatePurchaseRequestPayload) => {
|
||||||
const res = await PurchaseRequisitionsApi.create(payload);
|
const res = await PurchaseRequestApi.create(payload);
|
||||||
if (isResponseError(res)) {
|
if (isResponseError(res)) {
|
||||||
setPurchaseRequestFormErrorMessage(res.message);
|
setPurchaseRequestFormErrorMessage(res.message);
|
||||||
return;
|
return;
|
||||||
@@ -120,12 +120,9 @@ const PurchaseRequisitionsForm = ({
|
|||||||
const updatePurchaseRequestHandler = useCallback(
|
const updatePurchaseRequestHandler = useCallback(
|
||||||
async (
|
async (
|
||||||
purchaseRequestId: number,
|
purchaseRequestId: number,
|
||||||
payload: CreatePurchaseRequisitionsPayload
|
payload: CreatePurchaseRequestPayload
|
||||||
) => {
|
) => {
|
||||||
const res = await PurchaseRequisitionsApi.update(
|
const res = await PurchaseRequestApi.update(purchaseRequestId, payload);
|
||||||
purchaseRequestId,
|
|
||||||
payload
|
|
||||||
);
|
|
||||||
if (isResponseError(res)) {
|
if (isResponseError(res)) {
|
||||||
setPurchaseRequestFormErrorMessage(res.message);
|
setPurchaseRequestFormErrorMessage(res.message);
|
||||||
return;
|
return;
|
||||||
@@ -145,7 +142,7 @@ const PurchaseRequisitionsForm = ({
|
|||||||
if (!initialValues?.id) return;
|
if (!initialValues?.id) return;
|
||||||
|
|
||||||
setIsDeleteLoading(true);
|
setIsDeleteLoading(true);
|
||||||
await PurchaseRequisitionsApi.delete(initialValues.id);
|
await PurchaseRequestApi.delete(initialValues.id);
|
||||||
deleteModal.closeModal();
|
deleteModal.closeModal();
|
||||||
toast.success('Successfully delete Purchase Request!');
|
toast.success('Successfully delete Purchase Request!');
|
||||||
setIsDeleteLoading(false);
|
setIsDeleteLoading(false);
|
||||||
@@ -175,21 +172,21 @@ const PurchaseRequisitionsForm = ({
|
|||||||
} = useSelect(WarehouseApi.basePath, 'id', 'name', 'search');
|
} = useSelect(WarehouseApi.basePath, 'id', 'name', 'search');
|
||||||
|
|
||||||
// ===== FORM CONFIGURATION =====
|
// ===== FORM CONFIGURATION =====
|
||||||
const formikInitialValues = useMemo<PurchaseRequisitionsFormValues>(
|
const formikInitialValues = useMemo<PurchaseRequestFormValues>(
|
||||||
() => getPurchaseRequisitionsFormInitialValues(initialValues),
|
() => getPurchaseRequestFormInitialValues(initialValues),
|
||||||
[initialValues]
|
[initialValues]
|
||||||
);
|
);
|
||||||
|
|
||||||
const formik = useFormik<PurchaseRequisitionsFormValues>({
|
const formik = useFormik<PurchaseRequestFormValues>({
|
||||||
initialValues: formikInitialValues,
|
initialValues: formikInitialValues,
|
||||||
validationSchema:
|
validationSchema:
|
||||||
type === 'edit'
|
type === 'edit'
|
||||||
? UpdatePurchaseRequisitionsFormSchema
|
? UpdatePurchaseRequestFormSchema
|
||||||
: PurchaseRequisitionsFormSchema,
|
: PurchaseRequestFormSchema,
|
||||||
validateOnChange: true,
|
validateOnChange: true,
|
||||||
validateOnBlur: true,
|
validateOnBlur: true,
|
||||||
onSubmit: async (values) => {
|
onSubmit: async (values) => {
|
||||||
const payload: CreatePurchaseRequisitionsPayload = {
|
const payload: CreatePurchaseRequestPayload = {
|
||||||
supplier_id:
|
supplier_id:
|
||||||
typeof values.supplier_id === 'string'
|
typeof values.supplier_id === 'string'
|
||||||
? parseInt(values.supplier_id) || 0
|
? parseInt(values.supplier_id) || 0
|
||||||
@@ -486,9 +483,9 @@ const PurchaseRequisitionsForm = ({
|
|||||||
Kembali
|
Kembali
|
||||||
</Button>
|
</Button>
|
||||||
<h1 className='text-2xl font-bold text-center'>
|
<h1 className='text-2xl font-bold text-center'>
|
||||||
{type === 'add' && 'Tambah Purchase Requisitions'}
|
{type === 'add' && 'Tambah Purchase Request'}
|
||||||
{type === 'edit' && 'Edit Purchase Requisitions'}
|
{type === 'edit' && 'Edit Purchase Request'}
|
||||||
{type === 'detail' && 'Detail Purchase Requisitions'}
|
{type === 'detail' && 'Detail Purchase Request'}
|
||||||
</h1>
|
</h1>
|
||||||
</header>
|
</header>
|
||||||
<form
|
<form
|
||||||
@@ -1118,4 +1115,4 @@ const PurchaseRequisitionsForm = ({
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default PurchaseRequisitionsForm;
|
export default PurchaseRequestForm;
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import { BaseGroupedApproval } from '@/types/api/api-general';
|
|||||||
import { PURCHASE_ORDER_APPROVAL_LINE } from '@/config/approval-line';
|
import { PURCHASE_ORDER_APPROVAL_LINE } from '@/config/approval-line';
|
||||||
import Card from '@/components/Card';
|
import Card from '@/components/Card';
|
||||||
import {
|
import {
|
||||||
CreateManagerApprovalRequisitionsPayload,
|
CreateManagerApprovalRequestPayload,
|
||||||
Purchase,
|
Purchase,
|
||||||
PurchaseItem,
|
PurchaseItem,
|
||||||
} from '@/types/api/purchase/purchase';
|
} from '@/types/api/purchase/purchase';
|
||||||
@@ -57,7 +57,8 @@ const dummyPurchaseData: Purchase = {
|
|||||||
hatchery: 'Jawa Barat',
|
hatchery: 'Jawa Barat',
|
||||||
phone: '+62-22-7563850',
|
phone: '+62-22-7563850',
|
||||||
email: 'info@cp.co.id',
|
email: 'info@cp.co.id',
|
||||||
address: 'Jl. Raya Bandung - Sumedang Km. 28, Desa Cisantana, Kec. Cigendel, Kabupaten Sumedang, Jawa Barat 45363',
|
address:
|
||||||
|
'Jl. Raya Bandung - Sumedang Km. 28, Desa Cisantana, Kec. Cigendel, Kabupaten Sumedang, Jawa Barat 45363',
|
||||||
npwp: '01.938.451.6-433.000',
|
npwp: '01.938.451.6-433.000',
|
||||||
account_number: '123-456-7890',
|
account_number: '123-456-7890',
|
||||||
due_date: 30,
|
due_date: 30,
|
||||||
@@ -316,7 +317,7 @@ const PurchaseOrderDetail = ({
|
|||||||
|
|
||||||
// ===== SUBMISSION HANDLER =====
|
// ===== SUBMISSION HANDLER =====
|
||||||
const createManagerApprovalHandler = useCallback(
|
const createManagerApprovalHandler = useCallback(
|
||||||
async (payload: CreateManagerApprovalRequisitionsPayload) => {
|
async (payload: CreateManagerApprovalRequestPayload) => {
|
||||||
const purchaseRequisitionId = searchParams.get('purchaseId')
|
const purchaseRequisitionId = searchParams.get('purchaseId')
|
||||||
? parseInt(searchParams.get('purchaseId')!)
|
? parseInt(searchParams.get('purchaseId')!)
|
||||||
: purchaseData?.id || 1;
|
: purchaseData?.id || 1;
|
||||||
@@ -806,7 +807,7 @@ const PurchaseOrderDetail = ({
|
|||||||
text: 'Ya, Lanjutkan',
|
text: 'Ya, Lanjutkan',
|
||||||
color: 'success',
|
color: 'success',
|
||||||
onClick: async (notes) => {
|
onClick: async (notes) => {
|
||||||
const payload: CreateManagerApprovalRequisitionsPayload = {
|
const payload: CreateManagerApprovalRequestPayload = {
|
||||||
notes: notes || null,
|
notes: notes || null,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
import {
|
import {
|
||||||
CreatePurchaseRequisitionsPayload,
|
CreatePurchaseRequestPayload,
|
||||||
Purchase,
|
Purchase,
|
||||||
UpdatePurchaseRequisitionsPayload,
|
UpdatePurchaseRequestPayload,
|
||||||
CreateStaffApprovalRequisitionsPayload,
|
CreateStaffApprovalRequestPayload,
|
||||||
CreateManagerApprovalRequisitionsPayload,
|
CreateManagerApprovalRequestPayload,
|
||||||
CreateAcceptApprovalRequisitionsPayload,
|
CreateAcceptApprovalRequestPayload,
|
||||||
} from '@/types/api/purchase/purchase';
|
} from '@/types/api/purchase/purchase';
|
||||||
import { BaseApiService } from '@/services/api/base';
|
import { BaseApiService } from '@/services/api/base';
|
||||||
import { BaseApiResponse } from '@/types/api/api-general';
|
import { BaseApiResponse } from '@/types/api/api-general';
|
||||||
|
|
||||||
export class PurchaseRequisitionsService extends BaseApiService<
|
export class PurchaseRequestService extends BaseApiService<
|
||||||
Purchase,
|
Purchase,
|
||||||
CreatePurchaseRequisitionsPayload,
|
CreatePurchaseRequestPayload,
|
||||||
UpdatePurchaseRequisitionsPayload
|
UpdatePurchaseRequestPayload
|
||||||
> {
|
> {
|
||||||
constructor(basePath: string = '/purchases/requisitions') {
|
constructor(basePath: string = '/purchases') {
|
||||||
super(basePath);
|
super(basePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,8 +51,8 @@ export class PurchaseRequisitionsService extends BaseApiService<
|
|||||||
|
|
||||||
export class StaffApprovalService extends BaseApiService<
|
export class StaffApprovalService extends BaseApiService<
|
||||||
Purchase,
|
Purchase,
|
||||||
CreateStaffApprovalRequisitionsPayload,
|
CreateStaffApprovalRequestPayload,
|
||||||
CreateAcceptApprovalRequisitionsPayload
|
CreateAcceptApprovalRequestPayload
|
||||||
> {
|
> {
|
||||||
constructor(basePath: string = '') {
|
constructor(basePath: string = '') {
|
||||||
super(basePath);
|
super(basePath);
|
||||||
@@ -60,7 +60,7 @@ export class StaffApprovalService extends BaseApiService<
|
|||||||
|
|
||||||
async createStaffApproval(
|
async createStaffApproval(
|
||||||
purchaseRequisitionId: number,
|
purchaseRequisitionId: number,
|
||||||
payload: CreateStaffApprovalRequisitionsPayload
|
payload: CreateStaffApprovalRequestPayload
|
||||||
): Promise<BaseApiResponse<{ message: string }> | undefined> {
|
): Promise<BaseApiResponse<{ message: string }> | undefined> {
|
||||||
return await this.customRequest<BaseApiResponse<{ message: string }>>(
|
return await this.customRequest<BaseApiResponse<{ message: string }>>(
|
||||||
`${purchaseRequisitionId}/approvals/staff`,
|
`${purchaseRequisitionId}/approvals/staff`,
|
||||||
@@ -74,8 +74,8 @@ export class StaffApprovalService extends BaseApiService<
|
|||||||
|
|
||||||
export class ManagerApprovalService extends BaseApiService<
|
export class ManagerApprovalService extends BaseApiService<
|
||||||
Purchase,
|
Purchase,
|
||||||
CreateManagerApprovalRequisitionsPayload,
|
CreateManagerApprovalRequestPayload,
|
||||||
CreateManagerApprovalRequisitionsPayload
|
CreateManagerApprovalRequestPayload
|
||||||
> {
|
> {
|
||||||
constructor(basePath: string = '') {
|
constructor(basePath: string = '') {
|
||||||
super(basePath);
|
super(basePath);
|
||||||
@@ -83,7 +83,7 @@ export class ManagerApprovalService extends BaseApiService<
|
|||||||
|
|
||||||
async createManagerApproval(
|
async createManagerApproval(
|
||||||
purchaseRequisitionId: number,
|
purchaseRequisitionId: number,
|
||||||
payload: CreateManagerApprovalRequisitionsPayload
|
payload: CreateManagerApprovalRequestPayload
|
||||||
): Promise<BaseApiResponse<{ message: string }> | undefined> {
|
): Promise<BaseApiResponse<{ message: string }> | undefined> {
|
||||||
return await this.customRequest<BaseApiResponse<{ message: string }>>(
|
return await this.customRequest<BaseApiResponse<{ message: string }>>(
|
||||||
`${purchaseRequisitionId}/approvals/manager`,
|
`${purchaseRequisitionId}/approvals/manager`,
|
||||||
@@ -97,8 +97,8 @@ export class ManagerApprovalService extends BaseApiService<
|
|||||||
|
|
||||||
export class AcceptApprovalService extends BaseApiService<
|
export class AcceptApprovalService extends BaseApiService<
|
||||||
Purchase,
|
Purchase,
|
||||||
CreateAcceptApprovalRequisitionsPayload,
|
CreateAcceptApprovalRequestPayload,
|
||||||
CreateAcceptApprovalRequisitionsPayload
|
CreateAcceptApprovalRequestPayload
|
||||||
> {
|
> {
|
||||||
constructor(basePath: string = '') {
|
constructor(basePath: string = '') {
|
||||||
super(basePath);
|
super(basePath);
|
||||||
@@ -106,7 +106,7 @@ export class AcceptApprovalService extends BaseApiService<
|
|||||||
|
|
||||||
async acceptApproval(
|
async acceptApproval(
|
||||||
purchaseRequisitionId: number,
|
purchaseRequisitionId: number,
|
||||||
payload: CreateAcceptApprovalRequisitionsPayload
|
payload: CreateAcceptApprovalRequestPayload
|
||||||
): Promise<BaseApiResponse<{ message: string }> | undefined> {
|
): Promise<BaseApiResponse<{ message: string }> | undefined> {
|
||||||
return await this.customRequest<BaseApiResponse<{ message: string }>>(
|
return await this.customRequest<BaseApiResponse<{ message: string }>>(
|
||||||
`${purchaseRequisitionId}/approvals/receipts`,
|
`${purchaseRequisitionId}/approvals/receipts`,
|
||||||
@@ -118,16 +118,10 @@ export class AcceptApprovalService extends BaseApiService<
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const PurchaseRequisitionsApi = new PurchaseRequisitionsService();
|
export const PurchaseRequestApi = new PurchaseRequestService();
|
||||||
|
|
||||||
export const StaffApprovalApi = new StaffApprovalService(
|
export const StaffApprovalApi = new StaffApprovalService('/purchases');
|
||||||
'/purchases/requisitions'
|
|
||||||
);
|
|
||||||
|
|
||||||
export const ManagerApprovalApi = new ManagerApprovalService(
|
export const ManagerApprovalApi = new ManagerApprovalService('/purchases');
|
||||||
'/purchases/requisitions'
|
|
||||||
);
|
|
||||||
|
|
||||||
export const AcceptApprovalApi = new AcceptApprovalService(
|
export const AcceptApprovalApi = new AcceptApprovalService('/purchases');
|
||||||
'/purchases/requisitions'
|
|
||||||
);
|
|
||||||
|
|||||||
Vendored
+5
-6
@@ -45,7 +45,7 @@ export type BasePurchase = {
|
|||||||
|
|
||||||
export type Purchase = BaseMetadata & BasePurchase;
|
export type Purchase = BaseMetadata & BasePurchase;
|
||||||
|
|
||||||
export type CreatePurchaseRequisitionsPayload = {
|
export type CreatePurchaseRequestPayload = {
|
||||||
supplier_id: number;
|
supplier_id: number;
|
||||||
area_id: number;
|
area_id: number;
|
||||||
location_id: number;
|
location_id: number;
|
||||||
@@ -58,7 +58,7 @@ export type CreatePurchaseRequisitionsPayload = {
|
|||||||
}[];
|
}[];
|
||||||
};
|
};
|
||||||
|
|
||||||
export type CreateStaffApprovalRequisitionsPayload = {
|
export type CreateStaffApprovalRequestPayload = {
|
||||||
notes?: string | null;
|
notes?: string | null;
|
||||||
items: {
|
items: {
|
||||||
purchase_item_id: number;
|
purchase_item_id: number;
|
||||||
@@ -67,11 +67,11 @@ export type CreateStaffApprovalRequisitionsPayload = {
|
|||||||
}[];
|
}[];
|
||||||
};
|
};
|
||||||
|
|
||||||
export type CreateManagerApprovalRequisitionsPayload = {
|
export type CreateManagerApprovalRequestPayload = {
|
||||||
notes?: string | null;
|
notes?: string | null;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type CreateAcceptApprovalRequisitionsPayload = {
|
export type CreateAcceptApprovalRequestPayload = {
|
||||||
notes?: string;
|
notes?: string;
|
||||||
items: {
|
items: {
|
||||||
purchase_item_id: number;
|
purchase_item_id: number;
|
||||||
@@ -87,5 +87,4 @@ export type CreateAcceptApprovalRequisitionsPayload = {
|
|||||||
}[];
|
}[];
|
||||||
};
|
};
|
||||||
|
|
||||||
export type UpdatePurchaseRequisitionsPayload =
|
export type UpdatePurchaseRequestPayload = CreatePurchaseRequestPayload;
|
||||||
CreatePurchaseRequisitionsPayload;
|
|
||||||
|
|||||||
Reference in New Issue
Block a user