feat: Implement reference data management for states, transport modes, transport types, and valuation methods

- Added server-side loading logic for states, transport modes, transport types, and valuation methods with pagination support.
- Created Svelte components for displaying and managing states, transport modes, transport types, and valuation methods.
- Implemented infinite scroll functionality for loading more data as the user scrolls.
- Added error handling and user feedback for API interactions.
- Included dialogs for creating and editing entries in each reference data category.
This commit is contained in:
2025-11-02 16:54:27 -06:00
parent 27b5880524
commit ab57c6cd79
141 changed files with 13989 additions and 2 deletions

View File

@@ -0,0 +1,72 @@
/**
* API Client para Currency Types
* Gestiona las operaciones CRUD para los tipos de moneda
*/
import { api } from '$lib/api';
export interface CurrencyType {
code: string;
currency_name: string;
country_description: string;
}
export interface CurrencyTypeListResponse {
items: CurrencyType[];
total: number;
page: number;
page_size: number;
}
export interface CreateCurrencyTypeData {
code: string;
currency_name: string;
country_description: string;
}
export interface UpdateCurrencyTypeData {
code?: string;
currency_name?: string;
country_description?: string;
}
/**
* API para Currency Types
*/
export const currencyTypesApi = {
/**
* Lista todos los tipos de moneda con paginación
* @param page - Número de página (por defecto 1)
* @param pageSize - Tamaño de página (por defecto 50)
*/
list: (page = 1, pageSize = 50) =>
api.get<CurrencyTypeListResponse>(
`/v1/currency-types?page=${page}&page_size=${pageSize}`
),
/**
* Obtiene un tipo de moneda por código
* @param code - Código del tipo de moneda
*/
get: (code: string) => api.get<CurrencyType>(`/v1/currency-types/${code}`),
/**
* Crea un nuevo tipo de moneda
* @param data - Datos del tipo de moneda a crear
*/
create: (data: CreateCurrencyTypeData) =>
api.post<CurrencyType>('/v1/currency-types', data),
/**
* Actualiza un tipo de moneda existente
* @param code - Código del tipo de moneda a actualizar
* @param data - Datos a actualizar
*/
update: (code: string, data: UpdateCurrencyTypeData) =>
api.put<CurrencyType>(`/v1/currency-types/${code}`, data),
/**
* Elimina un tipo de moneda
* @param code - Código del tipo de moneda a eliminar
*/
delete: (code: string) => api.delete(`/v1/currency-types/${code}`)
};

View File

@@ -0,0 +1,69 @@
/**
* API Client para Customs Sections
* Gestiona las operaciones CRUD para las secciones aduaneras
*/
import { api } from '$lib/api';
export interface CustomsSection {
customs_code: string;
section_name: string;
}
export interface CustomsSectionListResponse {
items: CustomsSection[];
total: number;
page: number;
page_size: number;
}
export interface CreateCustomsSectionData {
customs_code: string;
section_name: string;
}
export interface UpdateCustomsSectionData {
customs_code?: string;
section_name?: string;
}
/**
* API para Customs Sections
*/
export const customsSectionsApi = {
/**
* Lista todas las secciones aduaneras con paginación
* @param page - Número de página (por defecto 1)
* @param pageSize - Tamaño de página (por defecto 50)
*/
list: (page = 1, pageSize = 50) =>
api.get<CustomsSectionListResponse>(
`/v1/customs-sections?page=${page}&page_size=${pageSize}`
),
/**
* Obtiene una sección aduanera por código
* @param customs_code - Código de la sección aduanera
*/
get: (customs_code: string) => api.get<CustomsSection>(`/v1/customs-sections/${customs_code}`),
/**
* Crea una nueva sección aduanera
* @param data - Datos de la sección aduanera a crear
*/
create: (data: CreateCustomsSectionData) =>
api.post<CustomsSection>('/v1/customs-sections', data),
/**
* Actualiza una sección aduanera existente
* @param customs_code - Código de la sección aduanera a actualizar
* @param data - Datos a actualizar
*/
update: (customs_code: string, data: UpdateCustomsSectionData) =>
api.put<CustomsSection>(`/v1/customs-sections/${customs_code}`, data),
/**
* Elimina una sección aduanera
* @param customs_code - Código de la sección aduanera a eliminar
*/
delete: (customs_code: string) => api.delete(`/v1/customs-sections/${customs_code}`)
};

View File

@@ -0,0 +1,77 @@
/**
* API Client para Customs Warehouses
* Gestiona las operaciones CRUD para los recintos fiscalizados
*/
import { api } from '$lib/api';
export interface CustomsWarehouse {
key: string;
customs: string;
fiscalized_warehouse: string;
}
export interface CustomsWarehouseListResponse {
items: CustomsWarehouse[];
total: number;
page: number;
page_size: number;
}
export interface CreateCustomsWarehouseData {
key: string;
customs: string;
fiscalized_warehouse: string;
}
export interface UpdateCustomsWarehouseData {
key?: string;
customs?: string;
fiscalized_warehouse?: string;
}
/**
* API para Customs Warehouses
*/
export const customsWarehousesApi = {
/**
* Lista todos los recintos fiscalizados con paginación
* @param page - Número de página (por defecto 1)
* @param pageSize - Tamaño de página (por defecto 50)
*/
list: (page = 1, pageSize = 50) =>
api.get<CustomsWarehouseListResponse>(
`/v1/customs-warehouses?page=${page}&page_size=${pageSize}`
),
/**
* Obtiene un recinto fiscalizado por clave compuesta (key + customs)
* @param key - Clave del recinto
* @param customs - Aduana asociada
*/
get: (key: string, customs: string) =>
api.get<CustomsWarehouse>(`/v1/customs-warehouses/${key}/${customs}`),
/**
* Crea un nuevo recinto fiscalizado
* @param data - Datos del recinto fiscalizado a crear
*/
create: (data: CreateCustomsWarehouseData) =>
api.post<CustomsWarehouse>('/v1/customs-warehouses', data),
/**
* Actualiza un recinto fiscalizado existente
* @param key - Clave del recinto a actualizar
* @param customs - Aduana asociada
* @param data - Datos a actualizar
*/
update: (key: string, customs: string, data: UpdateCustomsWarehouseData) =>
api.put<CustomsWarehouse>(`/v1/customs-warehouses/${key}/${customs}`, data),
/**
* Elimina un recinto fiscalizado
* @param key - Clave del recinto a eliminar
* @param customs - Aduana asociada
*/
delete: (key: string, customs: string) =>
api.delete(`/v1/customs-warehouses/${key}/${customs}`)
};

View File

@@ -0,0 +1,72 @@
/**
* API Client para Incoterms
* Gestiona las operaciones CRUD para los términos internacionales de comercio
*/
import { api } from '$lib/api';
export interface Incoterm {
code: string;
description_es: string;
description_en: string;
}
export interface IncotermListResponse {
items: Incoterm[];
total: number;
page: number;
page_size: number;
}
export interface CreateIncotermData {
code: string;
description_es: string;
description_en: string;
}
export interface UpdateIncotermData {
code?: string;
description_es?: string;
description_en?: string;
}
/**
* API para Incoterms
*/
export const incotermsApi = {
/**
* Lista todos los incoterms con paginación
* @param page - Número de página (por defecto 1)
* @param pageSize - Tamaño de página (por defecto 50)
*/
list: (page = 1, pageSize = 50) =>
api.get<IncotermListResponse>(
`/v1/incoterms?page=${page}&page_size=${pageSize}`
),
/**
* Obtiene un incoterm por código
* @param code - Código del incoterm
*/
get: (code: string) => api.get<Incoterm>(`/v1/incoterms/${code}`),
/**
* Crea un nuevo incoterm
* @param data - Datos del incoterm a crear
*/
create: (data: CreateIncotermData) =>
api.post<Incoterm>('/v1/incoterms', data),
/**
* Actualiza un incoterm existente
* @param code - Código del incoterm a actualizar
* @param data - Datos a actualizar
*/
update: (code: string, data: UpdateIncotermData) =>
api.put<Incoterm>(`/v1/incoterms/${code}`, data),
/**
* Elimina un incoterm
* @param code - Código del incoterm a eliminar
*/
delete: (code: string) => api.delete(`/v1/incoterms/${code}`)
};

View File

@@ -0,0 +1,75 @@
/**
* API Client para Invoice Types
* Gestiona las operaciones CRUD para los tipos de factura
*/
import { api } from '$lib/api';
export interface InvoiceType {
key: string;
description: string;
note?: string;
type?: string;
}
export interface InvoiceTypeListResponse {
items: InvoiceType[];
total: number;
page: number;
page_size: number;
}
export interface CreateInvoiceTypeData {
key: string;
description: string;
note?: string;
type?: string;
}
export interface UpdateInvoiceTypeData {
key?: string;
description?: string;
note?: string;
type?: string;
}
/**
* API para Invoice Types
*/
export const invoiceTypesApi = {
/**
* Lista todos los tipos de factura con paginación
* @param page - Número de página (por defecto 1)
* @param pageSize - Tamaño de página (por defecto 50)
*/
list: (page = 1, pageSize = 50) =>
api.get<InvoiceTypeListResponse>(
`/v1/invoice-types?page=${page}&page_size=${pageSize}`
),
/**
* Obtiene un tipo de factura por key
* @param key - Clave del tipo de factura
*/
get: (key: string) => api.get<InvoiceType>(`/v1/invoice-types/${key}`),
/**
* Crea un nuevo tipo de factura
* @param data - Datos del tipo de factura a crear
*/
create: (data: CreateInvoiceTypeData) =>
api.post<InvoiceType>('/v1/invoice-types', data),
/**
* Actualiza un tipo de factura existente
* @param key - Clave del tipo de factura a actualizar
* @param data - Datos a actualizar
*/
update: (key: string, data: UpdateInvoiceTypeData) =>
api.put<InvoiceType>(`/v1/invoice-types/${key}`, data),
/**
* Elimina un tipo de factura
* @param key - Clave del tipo de factura a eliminar
*/
delete: (key: string) => api.delete(`/v1/invoice-types/${key}`)
};

View File

@@ -0,0 +1,72 @@
/**
* API Client para Material Types
* Gestiona las operaciones CRUD para los tipos de material
*/
import { api } from '$lib/api';
export interface MaterialType {
key: string;
type: string;
description: string;
}
export interface MaterialTypeListResponse {
items: MaterialType[];
total: number;
page: number;
page_size: number;
}
export interface CreateMaterialTypeData {
key: string;
type: string;
description: string;
}
export interface UpdateMaterialTypeData {
key?: string;
type?: string;
description?: string;
}
/**
* API para Material Types
*/
export const materialTypesApi = {
/**
* Lista todos los tipos de material con paginación
* @param page - Número de página (por defecto 1)
* @param pageSize - Tamaño de página (por defecto 50)
*/
list: (page = 1, pageSize = 50) =>
api.get<MaterialTypeListResponse>(
`/v1/material-types?page=${page}&page_size=${pageSize}`
),
/**
* Obtiene un tipo de material por key
* @param key - Clave del tipo de material
*/
get: (key: string) => api.get<MaterialType>(`/v1/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/material-types', data),
/**
* Actualiza un tipo de material existente
* @param key - Clave del tipo de material a actualizar
* @param data - Datos a actualizar
*/
update: (key: string, data: UpdateMaterialTypeData) =>
api.put<MaterialType>(`/v1/material-types/${key}`, data),
/**
* Elimina un tipo de material
* @param key - Clave del tipo de material a eliminar
*/
delete: (key: string) => api.delete(`/v1/material-types/${key}`)
};

View File

@@ -0,0 +1,69 @@
/**
* API Client para Payment Methods
* Gestiona las operaciones CRUD para los métodos de pago
*/
import { api } from '$lib/api';
export interface PaymentMethod {
key: string;
description: string;
}
export interface PaymentMethodListResponse {
items: PaymentMethod[];
total: number;
page: number;
page_size: number;
}
export interface CreatePaymentMethodData {
key: string;
description: string;
}
export interface UpdatePaymentMethodData {
key?: string;
description?: string;
}
/**
* API para Payment Methods
*/
export const paymentMethodsApi = {
/**
* Lista todos los métodos de pago con paginación
* @param page - Número de página (por defecto 1)
* @param pageSize - Tamaño de página (por defecto 50)
*/
list: (page = 1, pageSize = 50) =>
api.get<PaymentMethodListResponse>(
`/v1/payment-methods?page=${page}&page_size=${pageSize}`
),
/**
* Obtiene un método de pago por key
* @param key - Clave del método de pago
*/
get: (key: string) => api.get<PaymentMethod>(`/v1/payment-methods/${key}`),
/**
* Crea un nuevo método de pago
* @param data - Datos del método de pago a crear
*/
create: (data: CreatePaymentMethodData) =>
api.post<PaymentMethod>('/v1/payment-methods', data),
/**
* Actualiza un método de pago existente
* @param key - Clave del método de pago a actualizar
* @param data - Datos a actualizar
*/
update: (key: string, data: UpdatePaymentMethodData) =>
api.put<PaymentMethod>(`/v1/payment-methods/${key}`, data),
/**
* Elimina un método de pago
* @param key - Clave del método de pago a eliminar
*/
delete: (key: string) => api.delete(`/v1/payment-methods/${key}`)
};

View File

@@ -0,0 +1,69 @@
/**
* API Client para Pedimento Codes
* Gestiona las operaciones CRUD para las claves de pedimento
*/
import { api } from '$lib/api';
export interface PedimentoCode {
code: string;
description: string;
}
export interface PedimentoCodeListResponse {
items: PedimentoCode[];
total: number;
page: number;
page_size: number;
}
export interface CreatePedimentoCodeData {
code: string;
description: string;
}
export interface UpdatePedimentoCodeData {
code?: string;
description?: string;
}
/**
* API para Pedimento Codes
*/
export const pedimentoCodesApi = {
/**
* Lista todas las claves de pedimento con paginación
* @param page - Número de página (por defecto 1)
* @param pageSize - Tamaño de página (por defecto 50)
*/
list: (page = 1, pageSize = 50) =>
api.get<PedimentoCodeListResponse>(
`/v1/pedimento-codes?page=${page}&page_size=${pageSize}`
),
/**
* Obtiene una clave de pedimento por code
* @param code - Código de la clave de pedimento
*/
get: (code: string) => api.get<PedimentoCode>(`/v1/pedimento-codes/${code}`),
/**
* Crea una nueva clave de pedimento
* @param data - Datos de la clave de pedimento a crear
*/
create: (data: CreatePedimentoCodeData) =>
api.post<PedimentoCode>('/v1/pedimento-codes', data),
/**
* Actualiza una clave de pedimento existente
* @param code - Código de la clave de pedimento a actualizar
* @param data - Datos a actualizar
*/
update: (code: string, data: UpdatePedimentoCodeData) =>
api.put<PedimentoCode>(`/v1/pedimento-codes/${code}`, data),
/**
* Elimina una clave de pedimento
* @param code - Código de la clave de pedimento a eliminar
*/
delete: (code: string) => api.delete(`/v1/pedimento-codes/${code}`)
};

View File

@@ -0,0 +1,69 @@
/**
* API Client para Pedimento Regimens
* Gestiona las operaciones CRUD para los regímenes de pedimento
*/
import { api } from '$lib/api';
export interface PedimentoRegimen {
code: string;
description: string;
}
export interface PedimentoRegimenListResponse {
items: PedimentoRegimen[];
total: number;
page: number;
page_size: number;
}
export interface CreatePedimentoRegimenData {
code: string;
description: string;
}
export interface UpdatePedimentoRegimenData {
code?: string;
description?: string;
}
/**
* API para Pedimento Regimens
*/
export const pedimentoRegimensApi = {
/**
* Lista todos los regímenes de pedimento con paginación
* @param page - Número de página (por defecto 1)
* @param pageSize - Tamaño de página (por defecto 50)
*/
list: (page = 1, pageSize = 50) =>
api.get<PedimentoRegimenListResponse>(
`/v1/pedimento-regimens?page=${page}&page_size=${pageSize}`
),
/**
* Obtiene un régimen de pedimento por code
* @param code - Código del régimen de pedimento
*/
get: (code: string) => api.get<PedimentoRegimen>(`/v1/pedimento-regimens/${code}`),
/**
* Crea un nuevo régimen de pedimento
* @param data - Datos del régimen de pedimento a crear
*/
create: (data: CreatePedimentoRegimenData) =>
api.post<PedimentoRegimen>('/v1/pedimento-regimens', data),
/**
* Actualiza un régimen de pedimento existente
* @param code - Código del régimen de pedimento a actualizar
* @param data - Datos a actualizar
*/
update: (code: string, data: UpdatePedimentoRegimenData) =>
api.put<PedimentoRegimen>(`/v1/pedimento-regimens/${code}`, data),
/**
* Elimina un régimen de pedimento
* @param code - Código del régimen de pedimento a eliminar
*/
delete: (code: string) => api.delete(`/v1/pedimento-regimens/${code}`)
};

View File

@@ -0,0 +1,72 @@
/**
* API Client para Sectors
* Gestiona las operaciones CRUD para los sectores
*/
import { api } from '$lib/api';
export interface Sector {
key: string;
description: string;
authorized: number;
}
export interface SectorListResponse {
items: Sector[];
total: number;
page: number;
page_size: number;
}
export interface CreateSectorData {
key: string;
description: string;
authorized: number;
}
export interface UpdateSectorData {
key?: string;
description?: string;
authorized?: number;
}
/**
* API para Sectors
*/
export const sectorsApi = {
/**
* Lista todos los sectores con paginación
* @param page - Número de página (por defecto 1)
* @param pageSize - Tamaño de página (por defecto 50)
*/
list: (page = 1, pageSize = 50) =>
api.get<SectorListResponse>(
`/v1/sectors?page=${page}&page_size=${pageSize}`
),
/**
* Obtiene un sector por key
* @param key - Clave del sector
*/
get: (key: string) => api.get<Sector>(`/v1/sectors/${key}`),
/**
* Crea un nuevo sector
* @param data - Datos del sector a crear
*/
create: (data: CreateSectorData) =>
api.post<Sector>('/v1/sectors', data),
/**
* Actualiza un sector existente
* @param key - Clave del sector a actualizar
* @param data - Datos a actualizar
*/
update: (key: string, data: UpdateSectorData) =>
api.put<Sector>(`/v1/sectors/${key}`, data),
/**
* Elimina un sector
* @param key - Clave del sector a eliminar
*/
delete: (key: string) => api.delete(`/v1/sectors/${key}`)
};

View File

@@ -0,0 +1,75 @@
/**
* API Client para States
* Gestiona las operaciones CRUD para los estados
*/
import { api } from '$lib/api';
export interface State {
m3_key: string;
description: string;
mex_key?: string | null;
ame_key?: string | null;
}
export interface StateListResponse {
items: State[];
total: number;
page: number;
page_size: number;
}
export interface CreateStateData {
m3_key: string;
description: string;
mex_key?: string | null;
ame_key?: string | null;
}
export interface UpdateStateData {
m3_key?: string;
description?: string;
mex_key?: string | null;
ame_key?: string | null;
}
/**
* API para States
*/
export const statesApi = {
/**
* Lista todos los estados con paginación
* @param page - Número de página (por defecto 1)
* @param pageSize - Tamaño de página (por defecto 50)
*/
list: (page = 1, pageSize = 50) =>
api.get<StateListResponse>(
`/v1/states?page=${page}&page_size=${pageSize}`
),
/**
* Obtiene un estado por m3_key
* @param m3Key - Clave M3 del estado
*/
get: (m3Key: string) => api.get<State>(`/v1/states/${m3Key}`),
/**
* Crea un nuevo estado
* @param data - Datos del estado a crear
*/
create: (data: CreateStateData) =>
api.post<State>('/v1/states', data),
/**
* Actualiza un estado existente
* @param m3Key - Clave M3 del estado a actualizar
* @param data - Datos a actualizar
*/
update: (m3Key: string, data: UpdateStateData) =>
api.put<State>(`/v1/states/${m3Key}`, data),
/**
* Elimina un estado
* @param m3Key - Clave M3 del estado a eliminar
*/
delete: (m3Key: string) => api.delete(`/v1/states/${m3Key}`)
};

View File

@@ -0,0 +1,69 @@
/**
* API Client para Transport Modes
* Gestiona las operaciones CRUD para los modos de transporte
*/
import { api } from '$lib/api';
export interface TransportMode {
key: string;
name: string;
}
export interface TransportModeListResponse {
items: TransportMode[];
total: number;
page: number;
page_size: number;
}
export interface CreateTransportModeData {
key: string;
name: string;
}
export interface UpdateTransportModeData {
key?: string;
name?: string;
}
/**
* API para Transport Modes
*/
export const transportModesApi = {
/**
* Lista todos los modos de transporte con paginación
* @param page - Número de página (por defecto 1)
* @param pageSize - Tamaño de página (por defecto 50)
*/
list: (page = 1, pageSize = 50) =>
api.get<TransportModeListResponse>(
`/v1/transport-modes?page=${page}&page_size=${pageSize}`
),
/**
* Obtiene un modo de transporte por key
* @param key - Clave del modo de transporte
*/
get: (key: string) => api.get<TransportMode>(`/v1/transport-modes/${key}`),
/**
* Crea un nuevo modo de transporte
* @param data - Datos del modo de transporte a crear
*/
create: (data: CreateTransportModeData) =>
api.post<TransportMode>('/v1/transport-modes', data),
/**
* Actualiza un modo de transporte existente
* @param key - Clave del modo de transporte a actualizar
* @param data - Datos a actualizar
*/
update: (key: string, data: UpdateTransportModeData) =>
api.put<TransportMode>(`/v1/transport-modes/${key}`, data),
/**
* Elimina un modo de transporte
* @param key - Clave del modo de transporte a eliminar
*/
delete: (key: string) => api.delete(`/v1/transport-modes/${key}`)
};

View File

@@ -0,0 +1,69 @@
/**
* API Client para Transport Types
* Gestiona las operaciones CRUD para los tipos de transporte
*/
import { api } from '$lib/api';
export interface TransportType {
transport_code: string;
description: string;
}
export interface TransportTypeListResponse {
items: TransportType[];
total: number;
page: number;
page_size: number;
}
export interface CreateTransportTypeData {
transport_code: string;
description: string;
}
export interface UpdateTransportTypeData {
transport_code?: string;
description?: string;
}
/**
* API para Transport Types
*/
export const transportTypesApi = {
/**
* Lista todos los tipos de transporte con paginación
* @param page - Número de página (por defecto 1)
* @param pageSize - Tamaño de página (por defecto 50)
*/
list: (page = 1, pageSize = 50) =>
api.get<TransportTypeListResponse>(
`/v1/transport-types?page=${page}&page_size=${pageSize}`
),
/**
* Obtiene un tipo de transporte por transport_code
* @param transportCode - Código del tipo de transporte
*/
get: (transportCode: string) => api.get<TransportType>(`/v1/transport-types/${transportCode}`),
/**
* Crea un nuevo tipo de transporte
* @param data - Datos del tipo de transporte a crear
*/
create: (data: CreateTransportTypeData) =>
api.post<TransportType>('/v1/transport-types', data),
/**
* Actualiza un tipo de transporte existente
* @param transportCode - Código del tipo de transporte a actualizar
* @param data - Datos a actualizar
*/
update: (transportCode: string, data: UpdateTransportTypeData) =>
api.put<TransportType>(`/v1/transport-types/${transportCode}`, data),
/**
* Elimina un tipo de transporte
* @param transportCode - Código del tipo de transporte a eliminar
*/
delete: (transportCode: string) => api.delete(`/v1/transport-types/${transportCode}`)
};

View File

@@ -0,0 +1,69 @@
/**
* API Client para Valuation Methods
* Gestiona las operaciones CRUD para los métodos de valoración
*/
import { api } from '$lib/api';
export interface ValuationMethod {
key: string;
description: string;
}
export interface ValuationMethodListResponse {
items: ValuationMethod[];
total: number;
page: number;
page_size: number;
}
export interface CreateValuationMethodData {
key: string;
description: string;
}
export interface UpdateValuationMethodData {
key?: string;
description?: string;
}
/**
* API para Valuation Methods
*/
export const valuationMethodsApi = {
/**
* Lista todos los métodos de valoración con paginación
* @param page - Número de página (por defecto 1)
* @param pageSize - Tamaño de página (por defecto 50)
*/
list: (page = 1, pageSize = 50) =>
api.get<ValuationMethodListResponse>(
`/v1/valuation-methods?page=${page}&page_size=${pageSize}`
),
/**
* Obtiene un método de valoración por key
* @param key - Clave del método de valoración
*/
get: (key: string) => api.get<ValuationMethod>(`/v1/valuation-methods/${key}`),
/**
* Crea un nuevo método de valoración
* @param data - Datos del método de valoración a crear
*/
create: (data: CreateValuationMethodData) =>
api.post<ValuationMethod>('/v1/valuation-methods', data),
/**
* Actualiza un método de valoración existente
* @param key - Clave del método de valoración a actualizar
* @param data - Datos a actualizar
*/
update: (key: string, data: UpdateValuationMethodData) =>
api.put<ValuationMethod>(`/v1/valuation-methods/${key}`, data),
/**
* Elimina un método de valoración
* @param key - Clave del método de valoración a eliminar
*/
delete: (key: string) => api.delete(`/v1/valuation-methods/${key}`)
};