feat(api): add Units of Measure API client with CRUD operations
- Implemented interfaces for UnitOfMeasure, UnitOfMeasureListResponse, CreateUnitOfMeasureData, and UpdateUnitOfMeasureData. - Added API methods for listing, retrieving, creating, updating, and deleting units of measure. - Included pagination support for the list method.
This commit is contained in:
101
frontend/src/lib/api/dashboard/a76/units_of_measure.ts
Normal file
101
frontend/src/lib/api/dashboard/a76/units_of_measure.ts
Normal file
@@ -0,0 +1,101 @@
|
||||
/**
|
||||
* API Client para Units of Measure
|
||||
* Gestiona las operaciones CRUD para unidades de medida
|
||||
*/
|
||||
import { api } from '$lib/api';
|
||||
|
||||
export interface UnitOfMeasure {
|
||||
id: number;
|
||||
code: string;
|
||||
description: string | null;
|
||||
description_en: string | null;
|
||||
customs_code: string | null;
|
||||
american_code: string | null;
|
||||
ace_code: string | null;
|
||||
oma_code: string | null;
|
||||
}
|
||||
|
||||
export interface UnitOfMeasureListResponse {
|
||||
items: UnitOfMeasure[];
|
||||
total: number;
|
||||
page: number;
|
||||
page_size: number;
|
||||
}
|
||||
|
||||
export interface CreateUnitOfMeasureData {
|
||||
code: string;
|
||||
description?: string | null;
|
||||
description_en?: string | null;
|
||||
customs_code?: string | null;
|
||||
american_code?: string | null;
|
||||
ace_code?: string | null;
|
||||
oma_code?: string | null;
|
||||
}
|
||||
|
||||
export interface UpdateUnitOfMeasureData {
|
||||
code?: string;
|
||||
description?: string | null;
|
||||
description_en?: string | null;
|
||||
customs_code?: string | null;
|
||||
american_code?: string | null;
|
||||
ace_code?: string | null;
|
||||
oma_code?: string | null;
|
||||
}
|
||||
|
||||
/**
|
||||
* API para Units of Measure
|
||||
*/
|
||||
export const unitsOfMeasureApi = {
|
||||
/**
|
||||
* Lista todas las unidades de medida con paginación
|
||||
* @param companyId - ID de la compañía
|
||||
* @param page - Número de página (por defecto 1)
|
||||
* @param pageSize - Tamaño de página (por defecto 50)
|
||||
*/
|
||||
list: (companyId: number, page = 1, pageSize = 50) => {
|
||||
const params = new URLSearchParams({
|
||||
company_id: companyId.toString(),
|
||||
page: page.toString(),
|
||||
page_size: pageSize.toString()
|
||||
});
|
||||
return api.get<UnitOfMeasureListResponse>(
|
||||
`/v1/a76/units-of-measure?${params.toString()}`
|
||||
);
|
||||
},
|
||||
|
||||
/**
|
||||
* Obtiene una unidad de medida por ID
|
||||
* @param companyId - ID de la compañía
|
||||
* @param id - ID de la unidad de medida
|
||||
*/
|
||||
get: (companyId: number, id: number) =>
|
||||
api.get<UnitOfMeasure>(`/v1/a76/units-of-measure/${id}?company_id=${companyId}`),
|
||||
|
||||
/**
|
||||
* Crea una nueva unidad de medida
|
||||
* @param companyId - ID de la compañía
|
||||
* @param data - Datos de la unidad de medida a crear
|
||||
*/
|
||||
create: (companyId: number, data: CreateUnitOfMeasureData) =>
|
||||
api.post<UnitOfMeasure>(`/v1/a76/units-of-measure?company_id=${companyId}`, data),
|
||||
|
||||
/**
|
||||
* Actualiza una unidad de medida existente
|
||||
* @param companyId - ID de la compañía
|
||||
* @param id - ID de la unidad de medida a actualizar
|
||||
* @param data - Datos a actualizar
|
||||
*/
|
||||
update: (companyId: number, id: number, data: UpdateUnitOfMeasureData) =>
|
||||
api.put<UnitOfMeasure>(
|
||||
`/v1/a76/units-of-measure/${id}?company_id=${companyId}`,
|
||||
data
|
||||
),
|
||||
|
||||
/**
|
||||
* Elimina una unidad de medida
|
||||
* @param companyId - ID de la compañía
|
||||
* @param id - ID de la unidad de medida a eliminar
|
||||
*/
|
||||
delete: (companyId: number, id: number) =>
|
||||
api.delete(`/v1/a76/units-of-measure/${id}?company_id=${companyId}`)
|
||||
};
|
||||
@@ -48,7 +48,7 @@ export const materialTypesApi = {
|
||||
params.append('type', type);
|
||||
}
|
||||
return api.get<MaterialTypeListResponse>(
|
||||
`/v1/public/refrence_data/material-types?${params.toString()}`
|
||||
`/v1/public/refrence_data/material-types/?${params.toString()}`
|
||||
);
|
||||
},
|
||||
|
||||
@@ -56,14 +56,14 @@ export const materialTypesApi = {
|
||||
* Obtiene un tipo de material por key
|
||||
* @param key - Clave del tipo de material
|
||||
*/
|
||||
get: (key: string) => api.get<MaterialType>(`/v1/public/refrence_data/material-types/${key}`),
|
||||
get: (key: string) => api.get<MaterialType>(`/v1/public/refrence_data/material-types/${key}/`),
|
||||
|
||||
/**
|
||||
* Crea un nuevo tipo de material
|
||||
* @param data - Datos del tipo de material a crear
|
||||
*/
|
||||
create: (data: CreateMaterialTypeData) =>
|
||||
api.post<MaterialType>('/v1/public/refrence_data/material-types', data),
|
||||
api.post<MaterialType>('/v1/public/refrence_data/material-types/', data),
|
||||
|
||||
/**
|
||||
* Actualiza un tipo de material existente
|
||||
@@ -71,11 +71,11 @@ export const materialTypesApi = {
|
||||
* @param data - Datos a actualizar
|
||||
*/
|
||||
update: (key: string, data: UpdateMaterialTypeData) =>
|
||||
api.put<MaterialType>(`/v1/public/refrence_data/material-types/${key}`, data),
|
||||
api.put<MaterialType>(`/v1/public/refrence_data/material-types/${key}/`, data),
|
||||
|
||||
/**
|
||||
* Elimina un tipo de material
|
||||
* @param key - Clave del tipo de material a eliminar
|
||||
*/
|
||||
delete: (key: string) => api.delete(`/v1/public/refrence_data/material-types/${key}`)
|
||||
delete: (key: string) => api.delete(`/v1/public/refrence_data/material-types/${key}/`)
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user