feat(FE-212): rename purchasing files and update validation schemas for purchase requests

This commit is contained in:
rstubryan
2025-10-29 21:12:24 +07:00
parent 3daf1a518e
commit 7ba7b884a4
3 changed files with 10 additions and 66 deletions
@@ -1,7 +1,7 @@
import * as Yup from 'yup'; import * as Yup from 'yup';
import { CreatePurchaseRequestPayload } from '@/types/api/purchasing/purchasing';
import { Supplier } from '@/types/api/master-data/supplier'; import { Supplier } from '@/types/api/master-data/supplier';
import { Warehouse } from '@/types/api/master-data/warehouse'; import { Warehouse } from '@/types/api/master-data/warehouse';
import { CreatePurchaseRequestPayload } from '@/types/api/purchase/purchase';
export const PurchaseRequestFormSchema = Yup.object({ export const PurchaseRequestFormSchema = Yup.object({
supplier: Yup.object({ supplier: Yup.object({
@@ -33,7 +33,7 @@ export const PurchaseRequestFormSchema = Yup.object({
.required('Warehouse wajib diisi!'), .required('Warehouse wajib diisi!'),
credit_term: Yup.number() credit_term: Yup.number()
.required('Termin kredit wajib diisi!') .required('Termin kredit wajib diisi!')
.min(0, 'Termin kredit tidak boleh negatif!') .min(1, 'Termin kredit tidak boleh negatif!')
.typeError('Termin kredit harus berupa angka!'), .typeError('Termin kredit harus berupa angka!'),
notes: Yup.string().optional().nullable(), notes: Yup.string().optional().nullable(),
purchase_items: Yup.array() purchase_items: Yup.array()
@@ -44,16 +44,16 @@ export const PurchaseRequestFormSchema = Yup.object({
.min(1, 'Produk wajib diisi!') .min(1, 'Produk wajib diisi!')
.typeError('Produk harus berupa angka!'), .typeError('Produk harus berupa angka!'),
product_warehouse_id: Yup.number() product_warehouse_id: Yup.number()
.optional() .required('Product warehouse wajib diisi!')
.nullable() .min(1, 'Product warehouse wajib diisi!')
.typeError('Product warehouse harus berupa angka!'), .typeError('Product warehouse harus berupa angka!'),
total_qty: Yup.number() total_qty: Yup.number()
.required('Jumlah total wajib diisi!') .required('Jumlah total wajib diisi!')
.min(0, 'Jumlah total tidak boleh negatif!') .min(1, 'Jumlah total tidak boleh negatif!')
.typeError('Jumlah total harus berupa angka!'), .typeError('Jumlah total harus berupa angka!'),
price: Yup.number() price: Yup.number()
.required('Harga wajib diisi!') .required('Harga wajib diisi!')
.min(0, 'Harga tidak boleh negatif!') .min(1, 'Harga tidak boleh negatif!')
.typeError('Harga harus berupa angka!'), .typeError('Harga harus berupa angka!'),
}) })
) )
@@ -61,63 +61,7 @@ export const PurchaseRequestFormSchema = Yup.object({
.required('Item pembelian wajib diisi!'), .required('Item pembelian wajib diisi!'),
}); });
export const UpdatePurchaseRequestFormSchema = Yup.object({ export const UpdatePurchaseRequestFormSchema = PurchaseRequestFormSchema;
supplier: Yup.object({
value: Yup.number().min(1).required(),
label: Yup.string().required(),
}).nullable(),
supplier_id: Yup.number()
.default(0)
.typeError('Supplier wajib diisi!')
.test(
'is-valid-supplier',
'Supplier wajib diisi!',
(value) => value !== undefined && value !== null && value > 0
)
.required('Supplier wajib diisi!'),
warehouse: Yup.array()
.of(
Yup.object({
value: Yup.number().min(1).required(),
label: Yup.string().required(),
})
)
.min(1, 'Minimal harus ada 1 warehouse!')
.required('Warehouse wajib diisi!')
.nullable(),
warehouse_ids: Yup.array()
.of(Yup.number().min(1))
.min(1, 'Minimal harus ada 1 warehouse!')
.required('Warehouse wajib diisi!'),
credit_term: Yup.number()
.required('Termin kredit wajib diisi!')
.min(0, 'Termin kredit tidak boleh negatif!')
.typeError('Termin kredit harus berupa angka!'),
notes: Yup.string().optional().nullable(),
purchase_items: Yup.array()
.of(
Yup.object({
product_id: Yup.number()
.required('Produk wajib diisi!')
.min(1, 'Produk wajib diisi!')
.typeError('Produk harus berupa angka!'),
product_warehouse_id: Yup.number()
.optional()
.nullable()
.typeError('Product warehouse harus berupa angka!'),
total_qty: Yup.number()
.required('Jumlah total wajib diisi!')
.min(0, 'Jumlah total tidak boleh negatif!')
.typeError('Jumlah total harus berupa angka!'),
price: Yup.number()
.required('Harga wajib diisi!')
.min(0, 'Harga tidak boleh negatif!')
.typeError('Harga harus berupa angka!'),
})
)
.min(1, 'Minimal harus ada 1 item pembelian!')
.required('Item pembelian wajib diisi!'),
});
export type PurchaseRequestFormValues = Yup.InferType< export type PurchaseRequestFormValues = Yup.InferType<
typeof PurchaseRequestFormSchema typeof PurchaseRequestFormSchema
@@ -157,7 +101,7 @@ export const getPurchaseRequestFormInitialValues = (
) ?? [ ) ?? [
{ {
product_id: 0, product_id: 0,
product_warehouse_id: null, product_warehouse_id: 0,
total_qty: 0, total_qty: 0,
price: 0, price: 0,
}, },
+1 -1
View File
@@ -3,7 +3,7 @@ import {
CreatePurchasePayload, CreatePurchasePayload,
Purchase, Purchase,
UpdatePurchasePayload, UpdatePurchasePayload,
} from '@/types/api/purchasing/purchasing'; } from '@/types/api/purchase/purchasing';
export const PurchaseApi = new BaseApiService< export const PurchaseApi = new BaseApiService<
Purchase, Purchase,
@@ -26,7 +26,7 @@ export type CreatePurchaseRequestPayload = {
notes?: string | null; notes?: string | null;
purchase_items: { purchase_items: {
product_id: number; product_id: number;
product_warehouse_id?: number | null; product_warehouse_id: number;
total_qty: number; total_qty: number;
price: number; price: number;
}[]; }[];