mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 13:32:00 +00:00
refactor(FE-208,212,213): replace product_id and warehouse_id with purchase_item_id in PurchaseRequestStaffApprovalForm and related schemas
This commit is contained in:
@@ -2,11 +2,10 @@ import * as Yup from 'yup';
|
|||||||
import { Purchase } from '@/types/api/purchase/purchase';
|
import { Purchase } from '@/types/api/purchase/purchase';
|
||||||
|
|
||||||
type PurchaseRequestStaffApprovalFormSchemaType = {
|
type PurchaseRequestStaffApprovalFormSchemaType = {
|
||||||
|
action: 'APPROVED' | 'REJECTED';
|
||||||
notes: string | null;
|
notes: string | null;
|
||||||
items: {
|
items: {
|
||||||
purchase_item_id?: number;
|
purchase_item_id?: number;
|
||||||
product_id: number;
|
|
||||||
warehouse_id: number;
|
|
||||||
qty: number;
|
qty: number;
|
||||||
price: number | string;
|
price: number | string;
|
||||||
total_price: number | string;
|
total_price: number | string;
|
||||||
@@ -42,8 +41,6 @@ type PurchaseRequestAcceptApprovalFormSchemaType = {
|
|||||||
|
|
||||||
export type PurchaseStaffApprovalItemSchema = {
|
export type PurchaseStaffApprovalItemSchema = {
|
||||||
purchase_item_id?: number;
|
purchase_item_id?: number;
|
||||||
product_id: number;
|
|
||||||
warehouse_id: number;
|
|
||||||
qty: number;
|
qty: number;
|
||||||
price: number | string;
|
price: number | string;
|
||||||
total_price: number | string;
|
total_price: number | string;
|
||||||
@@ -79,14 +76,6 @@ const PurchaseStaffApprovalItemObjectSchema: Yup.ObjectSchema<PurchaseStaffAppro
|
|||||||
.optional()
|
.optional()
|
||||||
.min(1, 'Purchase item ID tidak valid!')
|
.min(1, 'Purchase item ID tidak valid!')
|
||||||
.typeError('Purchase item ID harus berupa angka!'),
|
.typeError('Purchase item ID harus berupa angka!'),
|
||||||
product_id: Yup.number()
|
|
||||||
.required('Produk wajib diisi!')
|
|
||||||
.min(1, 'Produk wajib diisi!')
|
|
||||||
.typeError('Produk wajib diisi!'),
|
|
||||||
warehouse_id: Yup.number()
|
|
||||||
.required('Gudang wajib diisi!')
|
|
||||||
.min(1, 'Gudang wajib diisi!')
|
|
||||||
.typeError('Gudang wajib diisi!'),
|
|
||||||
qty: Yup.number()
|
qty: Yup.number()
|
||||||
.required('Jumlah wajib diisi!')
|
.required('Jumlah wajib diisi!')
|
||||||
.min(1, 'Jumlah harus berupa angka lebih dari 0!')
|
.min(1, 'Jumlah harus berupa angka lebih dari 0!')
|
||||||
@@ -217,6 +206,10 @@ const PurchaseAcceptApprovalItemObjectSchema: Yup.ObjectSchema<PurchaseAcceptApp
|
|||||||
|
|
||||||
export const PurchaseRequestStaffApprovalFormSchema: Yup.ObjectSchema<PurchaseRequestStaffApprovalFormSchemaType> =
|
export const PurchaseRequestStaffApprovalFormSchema: Yup.ObjectSchema<PurchaseRequestStaffApprovalFormSchemaType> =
|
||||||
Yup.object({
|
Yup.object({
|
||||||
|
action: Yup.mixed<'APPROVED' | 'REJECTED'>()
|
||||||
|
.oneOf(['APPROVED', 'REJECTED'], 'Action harus APPROVED atau REJECTED')
|
||||||
|
.required('Action wajib diisi!')
|
||||||
|
.default('APPROVED'),
|
||||||
notes: Yup.string().nullable().default(null),
|
notes: Yup.string().nullable().default(null),
|
||||||
items: Yup.array()
|
items: Yup.array()
|
||||||
.of(PurchaseStaffApprovalItemObjectSchema)
|
.of(PurchaseStaffApprovalItemObjectSchema)
|
||||||
@@ -241,11 +234,11 @@ export const PurchaseDeleteItemsSchema: Yup.ObjectSchema<PurchaseDeleteItemsSche
|
|||||||
|
|
||||||
export const PurchaseRequestStaffApprovalFormInitialValues: PurchaseRequestStaffApprovalFormSchemaType =
|
export const PurchaseRequestStaffApprovalFormInitialValues: PurchaseRequestStaffApprovalFormSchemaType =
|
||||||
{
|
{
|
||||||
|
action: 'APPROVED',
|
||||||
notes: '',
|
notes: '',
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
product_id: 0,
|
purchase_item_id: 0,
|
||||||
warehouse_id: 0,
|
|
||||||
qty: 0,
|
qty: 0,
|
||||||
price: '',
|
price: '',
|
||||||
total_price: '',
|
total_price: '',
|
||||||
@@ -257,20 +250,18 @@ export const PurchaseRequestStaffApprovalFormDefaultValues = (
|
|||||||
purchase?: Purchase
|
purchase?: Purchase
|
||||||
): PurchaseRequestStaffApprovalFormSchemaType => {
|
): PurchaseRequestStaffApprovalFormSchemaType => {
|
||||||
return {
|
return {
|
||||||
|
action: 'APPROVED',
|
||||||
notes: purchase?.notes ?? null,
|
notes: purchase?.notes ?? null,
|
||||||
items: purchase?.items
|
items: purchase?.items
|
||||||
? purchase.items.map((item) => ({
|
? purchase.items.map((item) => ({
|
||||||
purchase_item_id: item.id,
|
purchase_item_id: item.id,
|
||||||
product_id: item.product_id,
|
|
||||||
warehouse_id: item.warehouse.id,
|
|
||||||
qty: item.qty,
|
qty: item.qty,
|
||||||
price: item.price,
|
price: item.price,
|
||||||
total_price: item.total_price,
|
total_price: item.total_price,
|
||||||
}))
|
}))
|
||||||
: [
|
: [
|
||||||
{
|
{
|
||||||
product_id: 0,
|
purchase_item_id: 0,
|
||||||
warehouse_id: 0,
|
|
||||||
qty: 0,
|
qty: 0,
|
||||||
price: '',
|
price: '',
|
||||||
total_price: '',
|
total_price: '',
|
||||||
|
|||||||
@@ -139,49 +139,33 @@ const PurchaseOrderStaffApprovalForm = ({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type === 'add') {
|
const payload: CreateStaffApprovalRequestPayload = {
|
||||||
const createPayload: CreateStaffApprovalRequestPayload = {
|
action: values.action || 'APPROVED',
|
||||||
action: 'APPROVED',
|
notes: values.notes || '',
|
||||||
notes: values.notes || '',
|
items: purchaseItems.map((purchaseItem, idx) => {
|
||||||
items: purchaseItems.map((purchaseItem, idx) => {
|
const formItem = values.items?.[idx];
|
||||||
const formItem = values.items?.[idx];
|
return {
|
||||||
return {
|
purchase_item_id: purchaseItem.id,
|
||||||
product_id: purchaseItem.product_id || 0,
|
qty: purchaseItem.quantity || 0,
|
||||||
warehouse_id: purchaseItem.warehouse_id || 0,
|
price:
|
||||||
qty: purchaseItem.quantity || 0,
|
typeof formItem?.price === 'string'
|
||||||
price:
|
? parseFloat(formItem.price) || 0
|
||||||
typeof formItem?.price === 'string'
|
: formItem?.price || 0,
|
||||||
? parseFloat(formItem.price) || 0
|
total_price:
|
||||||
: formItem?.price || 0,
|
typeof formItem?.total_price === 'string'
|
||||||
total_price:
|
? parseFloat(formItem.total_price) || 0
|
||||||
typeof formItem?.total_price === 'string'
|
: formItem?.total_price || 0,
|
||||||
? parseFloat(formItem.total_price) || 0
|
};
|
||||||
: formItem?.total_price || 0,
|
}),
|
||||||
};
|
};
|
||||||
}),
|
|
||||||
};
|
|
||||||
|
|
||||||
await createStaffApprovalHandler(createPayload);
|
if (type === 'add') {
|
||||||
|
await createStaffApprovalHandler(payload);
|
||||||
} else if (type === 'edit') {
|
} else if (type === 'edit') {
|
||||||
const updatePayload: UpdateStaffApprovalRequestPayload = {
|
const updatePayload: UpdateStaffApprovalRequestPayload = {
|
||||||
action: 'APPROVED',
|
action: values.action || 'APPROVED',
|
||||||
notes: values.notes || null,
|
notes: values.notes || null,
|
||||||
items: purchaseItems.map((purchaseItem, idx) => {
|
items: payload.items,
|
||||||
const formItem = values.items?.[idx];
|
|
||||||
return {
|
|
||||||
purchase_item_id:
|
|
||||||
formItem?.purchase_item_id || purchaseItem.value || 0,
|
|
||||||
qty: purchaseItem.quantity || 0,
|
|
||||||
price:
|
|
||||||
typeof formItem?.price === 'string'
|
|
||||||
? parseFloat(formItem.price) || 0
|
|
||||||
: formItem?.price || 0,
|
|
||||||
total_price:
|
|
||||||
typeof formItem?.total_price === 'string'
|
|
||||||
? parseFloat(formItem.total_price) || 0
|
|
||||||
: formItem?.total_price || 0,
|
|
||||||
};
|
|
||||||
}),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
await updateStaffApprovalHandler(
|
await updateStaffApprovalHandler(
|
||||||
|
|||||||
Vendored
+1
-2
@@ -82,8 +82,7 @@ export type CreateStaffApprovalRequestPayload = {
|
|||||||
action: 'APPROVED' | 'REJECTED';
|
action: 'APPROVED' | 'REJECTED';
|
||||||
notes?: string | null;
|
notes?: string | null;
|
||||||
items: {
|
items: {
|
||||||
product_id: number;
|
purchase_item_id: number;
|
||||||
warehouse_id: number;
|
|
||||||
qty: number;
|
qty: number;
|
||||||
price: number;
|
price: number;
|
||||||
total_price: number;
|
total_price: number;
|
||||||
|
|||||||
Reference in New Issue
Block a user