mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 13:32:00 +00:00
refactor(FE): Refactor inventory adjustment form
This commit is contained in:
@@ -1,55 +1,102 @@
|
||||
import * as Yup from 'yup';
|
||||
import { OptionType } from '@/components/input/SelectInput';
|
||||
|
||||
export const InventoryAdjustmentFormSchema = Yup.object({
|
||||
product_category: Yup.mixed<OptionType>()
|
||||
.nullable()
|
||||
.test(
|
||||
'is-valid-option',
|
||||
'Kategori Produk wajib diisi!',
|
||||
(value) => value !== null && value !== undefined
|
||||
),
|
||||
export type InventoryAdjustmentFormSchemaType = {
|
||||
location: {
|
||||
value: number;
|
||||
label: string;
|
||||
} | null;
|
||||
location_id: number;
|
||||
project_flock: {
|
||||
value: number;
|
||||
label: string;
|
||||
} | null;
|
||||
project_flock_id: number;
|
||||
kandang: {
|
||||
value: number;
|
||||
label: string;
|
||||
} | null;
|
||||
kandang_id: number;
|
||||
project_flock_kandang: {
|
||||
value: number;
|
||||
label: string;
|
||||
} | null;
|
||||
project_flock_kandang_id: number;
|
||||
product: {
|
||||
value: number;
|
||||
label: string;
|
||||
} | null;
|
||||
product_id: number;
|
||||
transaction_type: string;
|
||||
transaction_subtype: string;
|
||||
qty: number | string;
|
||||
price: number | string;
|
||||
notes: string;
|
||||
};
|
||||
|
||||
product_category_id: Yup.number().nullable(),
|
||||
|
||||
product: Yup.mixed<OptionType>()
|
||||
.nullable()
|
||||
.test(
|
||||
'is-valid-option',
|
||||
'Produk wajib diisi!',
|
||||
(value) => value !== null && value !== undefined
|
||||
),
|
||||
|
||||
product_id: Yup.number()
|
||||
.nullable()
|
||||
.required('Produk wajib diisi!')
|
||||
.min(1, 'Produk wajib diisi!'),
|
||||
|
||||
warehouse: Yup.mixed<OptionType>()
|
||||
.nullable()
|
||||
.test(
|
||||
'is-valid-option',
|
||||
'Warehouse wajib diisi!',
|
||||
(value) => value !== null && value !== undefined
|
||||
),
|
||||
|
||||
warehouse_id: Yup.number()
|
||||
.nullable()
|
||||
.required('Warehouse wajib diisi!')
|
||||
.min(1, 'Warehouse wajib diisi!'),
|
||||
|
||||
transaction_type: Yup.string()
|
||||
.oneOf(['increase', 'decrease'], 'Tipe transaksi tidak valid')
|
||||
.nullable()
|
||||
.required('Tipe transaksi wajib diisi'),
|
||||
|
||||
quantity: Yup.number()
|
||||
.typeError('Kuantitas harus berupa angka')
|
||||
.min(1, 'Minimal kuantitas adalah 1')
|
||||
.required('Kuantitas wajib diisi'),
|
||||
|
||||
note: Yup.string().required('Catatan wajib diisi!'),
|
||||
});
|
||||
export const InventoryAdjustmentFormSchema: Yup.ObjectSchema<InventoryAdjustmentFormSchemaType> =
|
||||
Yup.object({
|
||||
location: Yup.object({
|
||||
value: Yup.number().min(1).required(),
|
||||
label: Yup.string().required(),
|
||||
}).nullable(),
|
||||
location_id: Yup.number()
|
||||
.min(1, 'Lokasi wajib diisi!')
|
||||
.required('Lokasi wajib diisi!')
|
||||
.typeError('Lokasi wajib diisi!'),
|
||||
project_flock: Yup.object({
|
||||
value: Yup.number().min(1).required(),
|
||||
label: Yup.string().required(),
|
||||
}).nullable(),
|
||||
project_flock_id: Yup.number()
|
||||
.min(1, 'Project flock wajib diisi!')
|
||||
.required('Project flock wajib diisi!')
|
||||
.typeError('Project flock wajib diisi!'),
|
||||
kandang: Yup.object({
|
||||
value: Yup.number().min(1).required(),
|
||||
label: Yup.string().required(),
|
||||
}).nullable(),
|
||||
kandang_id: Yup.number()
|
||||
.min(1, 'Kandang wajib diisi!')
|
||||
.required('Kandang wajib diisi!')
|
||||
.typeError('Kandang wajib diisi!'),
|
||||
project_flock_kandang: Yup.object({
|
||||
value: Yup.number().min(1).required(),
|
||||
label: Yup.string().required(),
|
||||
}).nullable(),
|
||||
project_flock_kandang_id: Yup.number()
|
||||
.default(0)
|
||||
.typeError('Project Flock Kandang wajib diisi!')
|
||||
.test(
|
||||
'is-valid-project-flock-kandang',
|
||||
'Project Flock Kandang wajib diisi!',
|
||||
(value) => value !== undefined && value !== null && value > 0
|
||||
)
|
||||
.required('Project Flock Kandang wajib diisi!'),
|
||||
product: Yup.object({
|
||||
value: Yup.number().min(1).required(),
|
||||
label: Yup.string().required(),
|
||||
}).nullable(),
|
||||
product_id: Yup.number()
|
||||
.min(1, 'Produk wajib diisi!')
|
||||
.required('Produk wajib diisi!')
|
||||
.typeError('Produk wajib diisi!'),
|
||||
transaction_type: Yup.string()
|
||||
.oneOf(
|
||||
['PEMBELIAN', 'PENJUALAN', 'BIAYA', 'RECORDING'],
|
||||
'Tipe transaksi tidak valid'
|
||||
)
|
||||
.required('Tipe transaksi wajib diisi'),
|
||||
transaction_subtype: Yup.string().required('Sub tipe transaksi wajib diisi'),
|
||||
qty: Yup.number()
|
||||
.typeError('Kuantitas harus berupa angka')
|
||||
.min(1, 'Minimal kuantitas adalah 1')
|
||||
.required('Kuantitas wajib diisi'),
|
||||
price: Yup.number()
|
||||
.typeError('Harga harus berupa angka')
|
||||
.min(0, 'Minimal harga adalah 0')
|
||||
.required('Harga wajib diisi'),
|
||||
notes: Yup.string().required('Catatan wajib diisi!'),
|
||||
});
|
||||
|
||||
export type InventoryAdjustmentFormValues = Yup.InferType<
|
||||
typeof InventoryAdjustmentFormSchema
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -549,12 +549,12 @@ export const MARKETING_DATE_FILTER_TYPE_OPTIONS = [
|
||||
export const TRANSACTION_TYPE_OPTIONS = [
|
||||
{ label: 'Pembelian', value: 'PEMBELIAN' },
|
||||
{ label: 'Penjualan', value: 'PENJUALAN' },
|
||||
{ label: 'Biaya', value: 'BIAYA' },
|
||||
{ label: 'Recording', value: 'RECORDING' },
|
||||
];
|
||||
|
||||
export const TRANSACTION_SUBTYPE_OPTIONS = {
|
||||
PEMBELIAN: [{ label: 'Pembelian', value: 'PURCHASE_IN' }],
|
||||
PENJUALAN: [{ label: 'Penjualan', value: 'MARKETING_OUT' }],
|
||||
PEMBELIAN: { label: 'Pembelian', value: 'PURCHASE_IN' },
|
||||
PENJUALAN: { label: 'Penjualan', value: 'MARKETING_OUT' },
|
||||
RECORDING: [
|
||||
{ label: 'Recording Stock Out', value: 'RECORDING_STOCK_OUT' },
|
||||
{ label: 'Recording Depletion Out', value: 'RECORDING_DEPLETION_OUT' },
|
||||
|
||||
+19
-15
@@ -1,31 +1,35 @@
|
||||
import { Product } from '@/types/api/master-data/product';
|
||||
import { Warehouse } from '@/types/api/master-data/warehouse';
|
||||
import { BaseMetadata } from '@/types/api/api-general';
|
||||
import { Location } from '@/types/api/master-data/location';
|
||||
import { ProjectFlock } from '@/types/api/project-flock';
|
||||
|
||||
export type BaseInventoryAdjustment = {
|
||||
id: number;
|
||||
adj_number: string;
|
||||
transaction_type: string;
|
||||
transaction_subtype: string;
|
||||
function_code: string;
|
||||
qty: number;
|
||||
price: number;
|
||||
grand_total: number;
|
||||
increase: number;
|
||||
decrease: number;
|
||||
note: string;
|
||||
notes: string;
|
||||
location: Location;
|
||||
project_flock: ProjectFlock;
|
||||
product_warehouse_id: number;
|
||||
product_warehouse: {
|
||||
id: number;
|
||||
quantity: number;
|
||||
product_id: number;
|
||||
warehouse_id: number;
|
||||
product: Product;
|
||||
warehouse: Warehouse;
|
||||
};
|
||||
product_warehouse: ProductWarehouse;
|
||||
project_flock_kandang_id?: number;
|
||||
};
|
||||
|
||||
export type InventoryAdjustment = BaseMetadata & BaseInventoryAdjustment;
|
||||
|
||||
export type CreateInventoryAdjustmentPayload = {
|
||||
project_flock_kandang_id: number;
|
||||
product_id: number;
|
||||
warehouse_id: number;
|
||||
transaction_type: string;
|
||||
quantity: number;
|
||||
note: string;
|
||||
transaction_subtype: string;
|
||||
qty: number;
|
||||
price: number;
|
||||
notes: string;
|
||||
};
|
||||
|
||||
export type UpdateInventoryAdjustmentPayload =
|
||||
|
||||
Reference in New Issue
Block a user