/** * API Client para Pedimentos * Gestiona las operaciones CRUD para pedimentos */ import { api } from '$lib/api'; export interface Pedimento { id: number; tenant_id: number; year?: string | null; customs_office?: string | null; license?: string | null; pedimento_number?: string | null; client_id?: number | null; operation_type?: number | null; pedimento_type?: number | null; pedimento_key?: string | null; regime?: string | null; status?: string | null; usd_value?: number | null; paid_price?: number | null; gross_weight?: number | null; exchange_rate?: number | null; created_at: string; } export interface PedimentoListResponse { items: Pedimento[]; total: number; page: number; page_size: number; } export interface CreatePedimentoData { year?: string | null; customs_office?: string | null; license?: string | null; pedimento_number?: string | null; client_id?: number | null; operation_type?: number | null; pedimento_type?: number | null; pedimento_key?: string | null; regime?: string | null; status?: string | null; usd_value?: number | null; paid_price?: number | null; gross_weight?: number | null; exchange_rate?: number | null; } export interface UpdatePedimentoData { year?: string | null; customs_office?: string | null; license?: string | null; pedimento_number?: string | null; client_id?: number | null; operation_type?: number | null; pedimento_type?: number | null; pedimento_key?: string | null; regime?: string | null; status?: string | null; usd_value?: number | null; paid_price?: number | null; gross_weight?: number | null; exchange_rate?: number | null; } export interface PedimentoFilters { status?: string; client_id?: number; year?: string; } /** * API para Pedimentos */ export const pedimentosApi = { /** * Lista todos los pedimentos con paginación y filtros * @param page - Número de página (por defecto 1) * @param pageSize - Tamaño de página (por defecto 50) * @param filters - Filtros opcionales */ list: (page = 1, pageSize = 50, filters?: PedimentoFilters) => { let url = `/v1/a76/pedimentos?page=${page}&page_size=${pageSize}`; if (filters?.status) { url += `&status=${encodeURIComponent(filters.status)}`; } if (filters?.client_id) { url += `&client_id=${filters.client_id}`; } if (filters?.year) { url += `&year=${encodeURIComponent(filters.year)}`; } return api.get(url); }, /** * Obtiene un pedimento por ID * @param id - ID del pedimento */ get: (id: number) => api.get(`/v1/a76/pedimentos/${id}`), /** * Crea un nuevo pedimento * @param data - Datos del pedimento a crear */ create: (data: CreatePedimentoData) => api.post('/v1/a76/pedimentos', data), /** * Actualiza un pedimento existente * @param id - ID del pedimento a actualizar * @param data - Datos a actualizar */ update: (id: number, data: UpdatePedimentoData) => api.put(`/v1/a76/pedimentos/${id}`, data), /** * Elimina un pedimento * @param id - ID del pedimento a eliminar */ delete: (id: number) => api.delete(`/v1/a76/pedimentos/${id}`) };