From 3cac49725fefb5b508d404061ff16434b30a39e0 Mon Sep 17 00:00:00 2001 From: rstubryan Date: Tue, 7 Oct 2025 18:56:58 +0700 Subject: [PATCH] feat(FE-42): add Product Category API and form validation schema --- .../form/ProductCategoryForm.schema.ts | 10 ++++++++++ src/services/api/master-data.ts | 11 +++++++++++ src/types/api/master-data/product-category.d.ts | 16 ++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 src/components/pages/master-data/product-category/form/ProductCategoryForm.schema.ts create mode 100644 src/types/api/master-data/product-category.d.ts diff --git a/src/components/pages/master-data/product-category/form/ProductCategoryForm.schema.ts b/src/components/pages/master-data/product-category/form/ProductCategoryForm.schema.ts new file mode 100644 index 00000000..102bb812 --- /dev/null +++ b/src/components/pages/master-data/product-category/form/ProductCategoryForm.schema.ts @@ -0,0 +1,10 @@ +import * as Yup from 'yup'; + +export const ProductCategoryFormSchema = Yup.object({ + code: Yup.string().required('Kode wajib diisi!').max(3, 'Kode kategori produk melebihi 3 karakter!'), + name: Yup.string().required('Nama wajib diisi!'), +}); + +export const UpdateProductCategoryFormSchema = ProductCategoryFormSchema; + +export type ProductCategoryFormValues = Yup.InferType; \ No newline at end of file diff --git a/src/services/api/master-data.ts b/src/services/api/master-data.ts index 785a1ca1..53ea26c6 100644 --- a/src/services/api/master-data.ts +++ b/src/services/api/master-data.ts @@ -24,6 +24,11 @@ import { UpdateWarehousePayload, Warehouse, } from '@/types/api/master-data/warehouse'; +import { + CreateProductCategoryPayload, + ProductCategory, + UpdateProductCategoryPayload, +} from '@/types/api/master-data/product-category'; export const UomApi = new BaseApiService< Uom, @@ -54,3 +59,9 @@ export const WarehouseApi = new BaseApiService< CreateWarehousePayload, UpdateWarehousePayload >('/master-data/warehouses'); + +export const ProductCategoryApi = new BaseApiService< + ProductCategory, + CreateProductCategoryPayload, + UpdateProductCategoryPayload +>('/master-data/product-categories'); \ No newline at end of file diff --git a/src/types/api/master-data/product-category.d.ts b/src/types/api/master-data/product-category.d.ts new file mode 100644 index 00000000..3dd6203e --- /dev/null +++ b/src/types/api/master-data/product-category.d.ts @@ -0,0 +1,16 @@ +import { BaseMetadata } from '@/types/api/api-general'; + +export type BaseProductCategory = { + id: number; + code: string; + name: string; +}; + +export type ProductCategory = BaseMetadata & BaseProductCategory; + +export type CreateProductCategoryPayload = { + code: string; + name: string; +}; + +export type UpdateProductCategoryPayload = CreateProductCategoryPayload;