Refactor code structure for improved readability and maintainability
This commit is contained in:
184
frontend/src/lib/api/dashboard/a76/invoice-movements.ts
Normal file
184
frontend/src/lib/api/dashboard/a76/invoice-movements.ts
Normal file
@@ -0,0 +1,184 @@
|
||||
/**
|
||||
* API Client para Reportes de Movimientos de Facturas
|
||||
*/
|
||||
import { api } from '$lib/api';
|
||||
|
||||
// ===== TYPES =====
|
||||
|
||||
export type RangeType = 'FF' | 'FP'; // FF = fecha factura, FP = fecha pago
|
||||
export type ReportType = 'Normal' | 'Detallado';
|
||||
export type CurrencyType = 'ME' | 'MN'; // ME = moneda extranjera, MN = moneda nacional
|
||||
export type ExchangeRateType = 'FP' | 'FF';
|
||||
export type MovementTypeFilter = 'COMEX' | 'IMPDF' | 'ALL';
|
||||
export type DischargeFilter = 'SiDes' | 'NoDes' | 'ALL';
|
||||
export type ExportMovementType = 'AFIJO' | 'NODES' | 'SCRAP' | 'REEXP' | 'DONAC' | 'VEMEX' | 'ALL';
|
||||
|
||||
export interface BaseFilter {
|
||||
range_type: RangeType;
|
||||
start_date: string; // YYYYMMDD format
|
||||
end_date: string; // YYYYMMDD format
|
||||
include_cancelled: boolean;
|
||||
provider?: string | null;
|
||||
buyer?: string | null;
|
||||
pedimento_code?: string | null;
|
||||
report_type: ReportType;
|
||||
currency_type: CurrencyType;
|
||||
exchange_rate_type: ExchangeRateType;
|
||||
is_shelter: boolean;
|
||||
database_name: string;
|
||||
}
|
||||
|
||||
export interface ImportTemporaryFilter extends BaseFilter {}
|
||||
|
||||
export interface ImportDefinitiveFilter extends BaseFilter {
|
||||
movement_type: MovementTypeFilter;
|
||||
}
|
||||
|
||||
export interface ImportRepairFilter extends BaseFilter {
|
||||
discharge_filter: DischargeFilter;
|
||||
}
|
||||
|
||||
export interface ExportFilter extends BaseFilter {
|
||||
movement_type: ExportMovementType;
|
||||
discharge_filter: DischargeFilter;
|
||||
use_transport_method: boolean;
|
||||
}
|
||||
|
||||
export interface ExportRepairFilter extends Omit<BaseFilter, 'use_transport_method'> {
|
||||
movement_type: ExportMovementType;
|
||||
discharge_filter: DischargeFilter;
|
||||
}
|
||||
|
||||
export interface AllMovementsFilter {
|
||||
range_type: RangeType;
|
||||
start_date: string; // YYYYMMDD format
|
||||
end_date: string; // YYYYMMDD format
|
||||
include_cancelled: boolean;
|
||||
provider?: string | null;
|
||||
buyer?: string | null;
|
||||
pedimento_code?: string | null;
|
||||
currency_type: CurrencyType;
|
||||
exchange_rate_type: ExchangeRateType;
|
||||
is_shelter: boolean;
|
||||
operation_type?: 'imp' | 'exp' | null;
|
||||
}
|
||||
|
||||
export interface MovementItem {
|
||||
Factura: string;
|
||||
Pedimento: string;
|
||||
FechaFactura: string | null;
|
||||
Estatus: string;
|
||||
ClavePed: string;
|
||||
TipoMovTemDef: string;
|
||||
EsCambioRegimen: string;
|
||||
ValorMPTemp: number;
|
||||
ValorComercialMN: number;
|
||||
TipoCambio: number;
|
||||
ValorAgre: number;
|
||||
TipoExpo: string;
|
||||
PedimentoR1: string | null;
|
||||
EDocument: string | null;
|
||||
NumOperacionVU: string | null;
|
||||
BaseDeDatos: string;
|
||||
NumGafUni: string | null;
|
||||
UsuarioCap: string | null;
|
||||
UsuarioAcr: string | null;
|
||||
Fecha_Pago: string | null;
|
||||
NumCaja: string | null;
|
||||
Pedimento18: string | null;
|
||||
AduanaCru: string | null;
|
||||
Lote: string | null;
|
||||
}
|
||||
|
||||
export interface MovementItemDetailed extends MovementItem {
|
||||
Linea: number;
|
||||
Regimen: string | null;
|
||||
Fecha_Inicio: string | null;
|
||||
Fecha_Fin: string | null;
|
||||
Remesa: string | null;
|
||||
Proveedor: string | null;
|
||||
RFCProveedor: string | null;
|
||||
ProveedorTaxID: string | null;
|
||||
VendidoA: string | null;
|
||||
VendidoARFC: string | null;
|
||||
VendidoATaxID: string | null;
|
||||
AgenteAduanal: string | null;
|
||||
Patente: string | null;
|
||||
NumParte: string | null;
|
||||
DescripcionE: string | null;
|
||||
DescripcionI: string | null;
|
||||
CantidadIE: number;
|
||||
UniMed: string | null;
|
||||
PesoNeto: number;
|
||||
PesoBruto: number;
|
||||
OrdenCompraVenta: string | null;
|
||||
FraccionArancelaria: string | null;
|
||||
Preferencia: string | null;
|
||||
Sector: string | null;
|
||||
PaisOrigen: string | null;
|
||||
Aduana: string | null;
|
||||
Advalorem: string | null;
|
||||
Series: string | null;
|
||||
Marca: string | null;
|
||||
Modelo: string | null;
|
||||
FraccionAmericana: string | null;
|
||||
ECCN: string | null;
|
||||
SimboloEx: string | null;
|
||||
FechaEmision: string | null;
|
||||
Transportista: string | null;
|
||||
}
|
||||
|
||||
// ===== API METHODS =====
|
||||
|
||||
export const invoiceMovementsApi = {
|
||||
// Temporary Imports
|
||||
getTemporaryImports: (filters: ImportTemporaryFilter) =>
|
||||
api.post<MovementItem[]>('/v1/a76/reports/movements/invoices/temporary', filters),
|
||||
|
||||
getTemporaryImportsDetailed: (filters: ImportTemporaryFilter) =>
|
||||
api.post<MovementItemDetailed[]>(
|
||||
'/v1/a76/reports/movements/invoices/temporary-detailed',
|
||||
filters
|
||||
),
|
||||
|
||||
// Definitive Imports
|
||||
getDefinitiveImports: (filters: ImportDefinitiveFilter) =>
|
||||
api.post<MovementItem[]>('/v1/a76/reports/movements/invoices/definitive', filters),
|
||||
|
||||
getDefinitiveImportsDetailed: (filters: ImportDefinitiveFilter) =>
|
||||
api.post<MovementItemDetailed[]>(
|
||||
'/v1/a76/reports/movements/invoices/definitive-detailed',
|
||||
filters
|
||||
),
|
||||
|
||||
// Repair Imports
|
||||
getRepairImports: (filters: ImportRepairFilter) =>
|
||||
api.post<MovementItem[]>('/v1/a76/reports/movements/invoices/repair', filters),
|
||||
|
||||
getRepairImportsDetailed: (filters: ImportRepairFilter) =>
|
||||
api.post<MovementItemDetailed[]>(
|
||||
'/v1/a76/reports/movements/invoices/repair-detailed',
|
||||
filters
|
||||
),
|
||||
|
||||
// Exports
|
||||
getExports: (filters: ExportFilter) =>
|
||||
api.post<MovementItem[]>('/v1/a76/reports/movements/invoices/export', filters),
|
||||
|
||||
getExportsDetailed: (filters: ExportFilter) =>
|
||||
api.post<MovementItemDetailed[]>('/v1/a76/reports/movements/invoices/export-detailed', filters),
|
||||
|
||||
// Export Repairs
|
||||
getExportRepairs: (filters: ExportRepairFilter) =>
|
||||
api.post<MovementItem[]>('/v1/a76/reports/movements/invoices/export-repair', filters),
|
||||
|
||||
getExportRepairsDetailed: (filters: ExportRepairFilter) =>
|
||||
api.post<MovementItemDetailed[]>(
|
||||
'/v1/a76/reports/movements/invoices/export-repair-detailed',
|
||||
filters
|
||||
),
|
||||
|
||||
// All Movements
|
||||
getAllMovements: (filters: AllMovementsFilter) =>
|
||||
api.post<MovementItem[]>('/v1/a76/reports/movements/invoices/all', filters)
|
||||
};
|
||||
Reference in New Issue
Block a user