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 { CreatePurchaseRequestPayload } from '@/types/api/purchasing/purchasing';
import { Supplier } from '@/types/api/master-data/supplier';
import { Warehouse } from '@/types/api/master-data/warehouse';
import { CreatePurchaseRequestPayload } from '@/types/api/purchase/purchase';
export const PurchaseRequestFormSchema = Yup.object({
supplier: Yup.object({
@@ -33,7 +33,7 @@ export const PurchaseRequestFormSchema = Yup.object({
.required('Warehouse wajib diisi!'),
credit_term: Yup.number()
.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!'),
notes: Yup.string().optional().nullable(),
purchase_items: Yup.array()
@@ -44,16 +44,16 @@ export const PurchaseRequestFormSchema = Yup.object({
.min(1, 'Produk wajib diisi!')
.typeError('Produk harus berupa angka!'),
product_warehouse_id: Yup.number()
.optional()
.nullable()
.required('Product warehouse wajib diisi!')
.min(1, 'Product warehouse wajib diisi!')
.typeError('Product warehouse harus berupa angka!'),
total_qty: Yup.number()
.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!'),
price: Yup.number()
.required('Harga wajib diisi!')
.min(0, 'Harga tidak boleh negatif!')
.min(1, 'Harga tidak boleh negatif!')
.typeError('Harga harus berupa angka!'),
})
)
@@ -61,63 +61,7 @@ export const PurchaseRequestFormSchema = Yup.object({
.required('Item pembelian wajib diisi!'),
});
export const UpdatePurchaseRequestFormSchema = Yup.object({
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 const UpdatePurchaseRequestFormSchema = PurchaseRequestFormSchema;
export type PurchaseRequestFormValues = Yup.InferType<
typeof PurchaseRequestFormSchema
@@ -157,7 +101,7 @@ export const getPurchaseRequestFormInitialValues = (
) ?? [
{
product_id: 0,
product_warehouse_id: null,
product_warehouse_id: 0,
total_qty: 0,
price: 0,
},
+1 -1
View File
@@ -3,7 +3,7 @@ import {
CreatePurchasePayload,
Purchase,
UpdatePurchasePayload,
} from '@/types/api/purchasing/purchasing';
} from '@/types/api/purchase/purchasing';
export const PurchaseApi = new BaseApiService<
Purchase,
@@ -26,7 +26,7 @@ export type CreatePurchaseRequestPayload = {
notes?: string | null;
purchase_items: {
product_id: number;
product_warehouse_id?: number | null;
product_warehouse_id: number;
total_qty: number;
price: number;
}[];