mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 13:32:00 +00:00
refactor(FE): Move Movement FormData into API service
This commit is contained in:
@@ -55,16 +55,8 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
||||
|
||||
// ===== FORM HANDLERS =====
|
||||
const createMovementHandler = useCallback(
|
||||
async (payload: CreateMovementPayload, documents: File[] = []) => {
|
||||
const formData = new FormData();
|
||||
formData.append('data', JSON.stringify(payload));
|
||||
documents.forEach((file, index) => {
|
||||
formData.append(`documents[${index}]`, file);
|
||||
});
|
||||
|
||||
const res = await MovementApi.create(
|
||||
formData as unknown as CreateMovementPayload
|
||||
);
|
||||
async (payload: CreateMovementPayload) => {
|
||||
const res = await MovementApi.createMovement(payload);
|
||||
if (isResponseError(res)) {
|
||||
setMovementFormErrorMessage(res.message);
|
||||
return;
|
||||
@@ -218,6 +210,7 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
||||
});
|
||||
|
||||
const payload: CreateMovementPayload = {
|
||||
data: {
|
||||
transfer_reason: values.transfer_reason,
|
||||
transfer_date: values.transfer_date,
|
||||
source_warehouse_id: values.source_warehouse_id,
|
||||
@@ -227,11 +220,13 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
||||
product_qty: parseInt(p.product_qty.toString()) || 0,
|
||||
})),
|
||||
deliveries: deliveriesPayload,
|
||||
},
|
||||
documents: documents.length > 0 ? documents : undefined,
|
||||
};
|
||||
|
||||
switch (type) {
|
||||
case 'add':
|
||||
await createMovementHandler(payload, documents);
|
||||
await createMovementHandler(payload);
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { BaseApiService } from '@/services/api/base';
|
||||
import { BaseApiResponse } from '@/types/api/api-general';
|
||||
import {
|
||||
CreateProductWarehousePayload,
|
||||
ProductWarehouse,
|
||||
@@ -20,11 +21,38 @@ export const ProductWarehouseApi = new BaseApiService<
|
||||
UpdateProductWarehousePayload
|
||||
>('/inventory/product-warehouses');
|
||||
|
||||
export const MovementApi = new BaseApiService<
|
||||
export class MovementApiService extends BaseApiService<
|
||||
Movement,
|
||||
CreateMovementPayload,
|
||||
unknown
|
||||
>('/inventory/transfers');
|
||||
> {
|
||||
constructor(basePath: string) {
|
||||
super(basePath);
|
||||
}
|
||||
|
||||
async createMovement(
|
||||
payload: CreateMovementPayload
|
||||
): Promise<BaseApiResponse<Movement> | undefined> {
|
||||
const formData = new FormData();
|
||||
|
||||
// Append data as JSON string
|
||||
formData.append('data', JSON.stringify(payload.data));
|
||||
|
||||
// Append documents if any
|
||||
if (payload.documents && payload.documents.length > 0) {
|
||||
payload.documents.forEach((file) => {
|
||||
formData.append('documents', file);
|
||||
});
|
||||
}
|
||||
|
||||
return await this.customRequest<BaseApiResponse<Movement>>('', {
|
||||
method: 'POST',
|
||||
payload: formData as unknown as Record<string, unknown>,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export const MovementApi = new MovementApiService('/inventory/transfers');
|
||||
|
||||
export const InventoryAdjustmentApi = new BaseApiService<
|
||||
InventoryAdjustment,
|
||||
|
||||
+6
-1
@@ -49,7 +49,7 @@ export type BaseMovement = {
|
||||
|
||||
export type Movement = BaseMetadata & BaseMovement;
|
||||
|
||||
export type CreateMovementPayload = {
|
||||
export type CreateMovementPayloadData = {
|
||||
transfer_reason: string;
|
||||
transfer_date: string;
|
||||
source_warehouse_id: number;
|
||||
@@ -71,3 +71,8 @@ export type CreateMovementPayload = {
|
||||
}[];
|
||||
}[];
|
||||
};
|
||||
|
||||
export type CreateMovementPayload = {
|
||||
data: CreateMovementPayloadData;
|
||||
documents?: File[];
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user