+ {type !== 'add' && (
+
+
- {nonstockFormErrorMessage && (
-
-
- {nonstockFormErrorMessage}
+ {type !== 'edit' && (
+
+ )}
)}
- >
- )}
-
-
+
+ {type !== 'detail' && (
+
+
+
+
+
+ )}
+
+
+ {nonstockFormErrorMessage && (
+
+
+ {nonstockFormErrorMessage}
+
+ )}
+
+
+
+ {type !== 'add' && (
+
+ )}
+ >
);
};
diff --git a/src/config/constant.ts b/src/config/constant.ts
index 8a5ca62f..badd2c3d 100644
--- a/src/config/constant.ts
+++ b/src/config/constant.ts
@@ -1,13 +1,11 @@
-export type MenuItem = {
+type MAIN_DRAWER_MENU = {
title: string;
link: string;
icon: string;
- submenu?: MenuItem[];
+ submenu?: MAIN_DRAWER_MENU[];
};
-type MainDrawerLink = MenuItem;
-
-export const MAIN_DRAWER_LINKS: MainDrawerLink[] = [
+export const MAIN_DRAWER_LINKS: MAIN_DRAWER_MENU[] = [
{
title: 'Dashboard',
link: '/dashboard',
@@ -71,7 +69,7 @@ export const MAIN_DRAWER_LINKS: MainDrawerLink[] = [
},
{
title: 'FCR',
- link: '/master-data/FCR',
+ link: '/master-data/fcr',
icon: 'fluent:food-chicken-leg-16-regular',
},
{
@@ -128,3 +126,7 @@ export const PRODUCT_FLAG_OPTIONS = [
{ label: 'VITAMIN', value: 'VITAMIN' },
{ label: 'KIMIA', value: 'KIMIA' },
];
+
+export const SUPPLIER_FLAG_OPTIONS = [
+ { label: 'EKSPEDISI', value: 'EKSPEDISI' },
+];
diff --git a/src/services/api/master-data.ts b/src/services/api/master-data.ts
index 7429b8ef..259bff8b 100644
--- a/src/services/api/master-data.ts
+++ b/src/services/api/master-data.ts
@@ -39,6 +39,21 @@ import {
Supplier,
UpdateSupplierPayload,
} from '@/types/api/master-data/supplier';
+import {
+ CreateNonstockPayload,
+ Nonstock,
+ UpdateNonstockPayload,
+} from '@/types/api/master-data/nonstock';
+import {
+ Bank,
+ CreateBankPayload,
+ UpdateBankPayload,
+} from '@/types/api/master-data/bank';
+import {
+ CreateFcrPayload,
+ Fcr,
+ UpdateFcrPayload,
+} from '@/types/api/master-data/fcr';
export const UomApi = new BaseApiService<
Uom,
@@ -86,4 +101,22 @@ export const SupplierApi = new BaseApiService<
Supplier,
CreateSupplierPayload,
UpdateSupplierPayload
->('/master-data/suppliers');
\ No newline at end of file
+>('/master-data/suppliers');
+
+export const NonstockApi = new BaseApiService<
+ Nonstock,
+ CreateNonstockPayload,
+ UpdateNonstockPayload
+>('/master-data/nonstocks');
+
+export const BankApi = new BaseApiService<
+ Bank,
+ CreateBankPayload,
+ UpdateBankPayload
+>('/master-data/banks');
+
+export const FcrApi = new BaseApiService<
+ Fcr,
+ CreateFcrPayload,
+ UpdateFcrPayload
+>('/master-data/fcrs');
diff --git a/src/services/api/master-data/nonstock.ts b/src/services/api/master-data/nonstock.ts
deleted file mode 100644
index 7340e37b..00000000
--- a/src/services/api/master-data/nonstock.ts
+++ /dev/null
@@ -1,87 +0,0 @@
-import axios from 'axios';
-import { httpClient } from '@/services/http/client';
-
-import {
- CreateNonstockPayload,
- DeleteNonstockResponse,
- NonstockResponse,
- UpdateNonstockPayload,
-} from '@/types/api/master-data/nonstock';
-
-export const getNonstock = async (nonstockId: number) => {
- try {
- const getNonstockRes = await httpClient
(
- `/master-data/nonstocks/${nonstockId}`
- );
-
- return getNonstockRes;
- } catch (error: unknown) {
- if (axios.isAxiosError(error)) {
- return error.response?.data;
- }
-
- return undefined;
- }
-};
-
-export const createNonstock = async (payload: CreateNonstockPayload) => {
- try {
- const createNonstockRes = await httpClient(
- '/master-data/nonstocks',
- {
- method: 'POST',
- body: payload,
- }
- );
-
- return createNonstockRes;
- } catch (error: unknown) {
- if (axios.isAxiosError(error)) {
- return error.response?.data;
- }
-
- return undefined;
- }
-};
-
-export const updateNonstock = async (
- nonstockId: number,
- payload: UpdateNonstockPayload
-) => {
- try {
- const updateNonstockRes = await httpClient(
- `/master-data/nonstocks/${nonstockId}`,
- {
- method: 'PATCH',
- body: payload,
- }
- );
-
- return updateNonstockRes;
- } catch (error: unknown) {
- if (axios.isAxiosError(error)) {
- return error.response?.data;
- }
-
- return undefined;
- }
-};
-
-export const deleteNonstock = async (nonstockId: number) => {
- try {
- const deleteNonstockRes = await httpClient(
- `/master-data/nonstocks/${nonstockId}`,
- {
- method: 'DELETE',
- }
- );
-
- return deleteNonstockRes;
- } catch (error) {
- if (axios.isAxiosError(error)) {
- return error.response?.data;
- }
-
- return undefined;
- }
-};
diff --git a/src/types/api/api-general.d.ts b/src/types/api/api-general.d.ts
index 8a4c4de7..6a3fc6be 100644
--- a/src/types/api/api-general.d.ts
+++ b/src/types/api/api-general.d.ts
@@ -53,3 +53,16 @@ export type BaseMetadata = {
export type Override = Omit &
Overrides;
+
+export type flags =
+ | 'PAKAN'
+ | 'OBAT'
+ | 'VITAMIN'
+ | 'KIMIA'
+ | 'EKSPEDISI'
+ | 'IS_ACTIVE'
+ | 'DOC'
+ | 'PRE-STARTER'
+ | 'STARTER'
+ | 'FINISHER'
+ | 'OVK';
diff --git a/src/types/api/master-data/bank.d.ts b/src/types/api/master-data/bank.d.ts
new file mode 100644
index 00000000..0b23b446
--- /dev/null
+++ b/src/types/api/master-data/bank.d.ts
@@ -0,0 +1,20 @@
+import { BaseMetadata } from '@/types/api/api-general';
+
+export type BaseBank = {
+ id: number;
+ name: string;
+ alias: string;
+ owner?: string;
+ account_number: string;
+};
+
+export type Bank = BaseMetadata & BaseBank;
+
+export type CreateBankPayload = {
+ name: string;
+ alias: string;
+ account_number: string;
+ owner?: string;
+};
+
+export type UpdateBankPayload = CreateBankPayload;
diff --git a/src/types/api/master-data/fcr.d.ts b/src/types/api/master-data/fcr.d.ts
new file mode 100644
index 00000000..45ad25e5
--- /dev/null
+++ b/src/types/api/master-data/fcr.d.ts
@@ -0,0 +1,30 @@
+import { BaseMetadata } from '@/types/api/api-general';
+
+export type BaseFcr = {
+ id: number;
+ name: string;
+};
+
+export type FcrStandard = {
+ id: number;
+ weight: number;
+ fcr_number: number;
+ mortality: number;
+};
+
+export type Fcr = BaseMetadata & BaseFcr;
+
+export type FcrWithStandards = Fcr & {
+ fcr_standards: FcrStandard[];
+};
+
+export type CreateFcrPayload = {
+ name: string;
+ fcr_standards: {
+ weight: number;
+ fcr_number: number;
+ mortality: number;
+ }[];
+};
+
+export type UpdateFcrPayload = CreateFcrPayload;
diff --git a/src/types/api/master-data/nonstock.d.ts b/src/types/api/master-data/nonstock.d.ts
index 682f7852..e4e79d8e 100644
--- a/src/types/api/master-data/nonstock.d.ts
+++ b/src/types/api/master-data/nonstock.d.ts
@@ -1,18 +1,23 @@
-import { BaseApiResponse } from '@/types/api/api-general';
+import { BaseApiResponse, BaseMetadata, flags } from '@/types/api/api-general';
+import { BaseUom } from '@/types/api/master-data/uom';
+import { BaseSupplier } from '@/types/api/master-data/supplier';
-export type Nonstock = {
+export type BaseNonstock = {
id: number;
name: string;
+ uom_id: number;
+ uom: BaseUom;
+ suppliers: BaseSupplier[];
+ flags: flags[];
};
+export type Nonstock = BaseMetadata & BaseNonstock;
+
export type CreateNonstockPayload = {
name: string;
+ uom_id: number;
+ supplier_ids: number[];
+ flags: flags[];
};
export type UpdateNonstockPayload = CreateNonstockPayload;
-
-export type NonstockResponse = BaseApiResponse;
-
-export type NonstocksResponse = BaseApiResponse;
-
-export type DeleteNonstockResponse = BaseApiResponse;