fix: update invoice type filtering for repair imports and exports

This commit is contained in:
Galindo97
2026-01-30 18:03:41 -06:00
parent b8e25cd2e1
commit 461f8ececb
4 changed files with 104 additions and 104 deletions

View File

@@ -83,7 +83,6 @@
let filters = $state({
includeNA: false,
includePartial: false,
downloaded: 'all' as 'all' | 'downloaded' | 'not_downloaded'
});
@@ -291,30 +290,6 @@
return { valid: true };
}
function getSelectedMovementTypes(): string[] {
const selected: string[] = [];
// Imports
if (types.import.TEM) selected.push('IMTEM');
if (types.import.DEF) selected.push('IMPDF');
if (types.import.REP) selected.push('IMPRE');
// Exports
if (types.export.main.DEF || types.export.additional.TODAS) selected.push('EXPO_DEF');
if (types.export.main.REP || types.export.additional.TODAS) selected.push('EXPO_REP');
if (types.export.additional.AFIJO) selected.push('AFIJO');
if (types.export.additional.REEXP) selected.push('REEXP');
if (types.export.additional.NODES) selected.push('NODES');
if (types.export.additional.DONAC) selected.push('DONAC');
if (types.export.additional.SCRAP) selected.push('SCRAP');
// Others
if (types.other.VEMEX) selected.push('VEMEX');
if (types.other.COMEX) selected.push('COMEX');
return selected;
}
// --- LÓGICA ---
async function handleGenerateReport() {
@@ -408,7 +383,7 @@
if (response.data) allResults.push(...response.data);
}
// Importaciones Definitivas (IMPDF)
// Importaciones Definitivas (IMPDF) o COMEX
if (types.import.DEF) {
toast.info('Obteniendo importaciones definitivas...');
const movementType = types.other.COMEX ? 'COMEX' : 'IMPDF';
@@ -416,12 +391,12 @@
? await invoiceMovementsApi.getDefinitiveImports({
...baseFilter,
database_name: 'default',
movement_type: movementType === 'COMEX' ? 'COMEX' : 'IMPDF'
movement_type: movementType
})
: await invoiceMovementsApi.getDefinitiveImportsDetailed({
...baseFilter,
database_name: 'default',
movement_type: movementType === 'COMEX' ? 'COMEX' : 'IMPDF'
movement_type: movementType
});
if (response.data) allResults.push(...response.data);
}
@@ -445,10 +420,11 @@
if (response.data) allResults.push(...response.data);
}
// Exportaciones Definitivas
if (types.export.main.DEF || types.export.additional.TODAS || Object.values(types.export.additional).some(v => v)) {
// Exportaciones Definitivas (incluye VEMEX)
if (types.export.main.DEF || types.other.VEMEX || types.export.additional.TODAS || Object.values(types.export.additional).some(v => v)) {
toast.info('Obteniendo exportaciones...');
// Determinar tipo de movimiento basado en checkboxes adicionales
let movementType: any = 'ALL';
if (types.export.additional.AFIJO) movementType = 'AFIJO';
else if (types.export.additional.NODES) movementType = 'NODES';
@@ -466,7 +442,7 @@
database_name: 'default',
movement_type: movementType,
discharge_filter: dischargeFilter,
use_transport_method: false // Por defecto, ajustar según necesidad
use_transport_method: false
})
: await invoiceMovementsApi.getExportsDetailed({
...baseFilter,
@@ -482,6 +458,7 @@
if (types.export.main.REP || types.export.additional.TODAS) {
toast.info('Obteniendo exportaciones de reparación...');
// Para reparaciones solo aplican AFIJO y NODES
let movementType: any = 'ALL';
if (types.export.additional.AFIJO) movementType = 'AFIJO';
else if (types.export.additional.NODES) movementType = 'NODES';
@@ -505,6 +482,61 @@
if (response.data) allResults.push(...response.data);
}
// Cambio de Régimen (CREG) - Exportaciones con cambio de régimen
if (types.export.main.CREG) {
toast.info('Obteniendo cambios de régimen...');
// Para cambio de régimen solo aplican AFIJO y SCRAP
let movementType: any = 'ALL';
if (types.export.additional.AFIJO) movementType = 'AFIJO';
else if (types.export.additional.SCRAP) movementType = 'SCRAP';
const dischargeFilter = filters.downloaded === 'downloaded' ? 'SiDes' :
filters.downloaded === 'not_downloaded' ? 'NoDes' : 'ALL';
const response = config.reportType === 'normal'
? await invoiceMovementsApi.getExports({
...baseFilter,
database_name: 'default',
movement_type: movementType,
discharge_filter: dischargeFilter,
use_transport_method: false
})
: await invoiceMovementsApi.getExportsDetailed({
...baseFilter,
database_name: 'default',
movement_type: movementType,
discharge_filter: dischargeFilter,
use_transport_method: false
});
if (response.data) allResults.push(...response.data);
}
// CREGEXP (Cambio Régimen Export) - Caso especial
if (types.other.CREGEXP) {
toast.info('Obteniendo cambios de régimen export...');
const dischargeFilter = filters.downloaded === 'downloaded' ? 'SiDes' :
filters.downloaded === 'not_downloaded' ? 'NoDes' : 'ALL';
const response = config.reportType === 'normal'
? await invoiceMovementsApi.getExports({
...baseFilter,
database_name: 'default',
movement_type: 'ALL',
discharge_filter: dischargeFilter,
use_transport_method: false
})
: await invoiceMovementsApi.getExportsDetailed({
...baseFilter,
database_name: 'default',
movement_type: 'ALL',
discharge_filter: dischargeFilter,
use_transport_method: false
});
if (response.data) allResults.push(...response.data);
}
results = allResults;
showResults = true;
@@ -760,6 +792,14 @@
return dateStr;
}
function formatCurrency(value: number | null | undefined): string {
if (value === null || value === undefined) return '-';
return new Intl.NumberFormat('en-US', {
minimumFractionDigits: 2,
maximumFractionDigits: 2
}).format(value);
}
function handleClose() {
// Reset form instead of navigating back
showResults = false;
@@ -938,7 +978,7 @@
bind:checked={types.import[key as keyof typeof types.import]}
/>
<Label for="imp-{key}" class="font-medium cursor-pointer text-xs">
{key.includes('DEF') ? 'Definitiva' : key.includes('TEMP') ? 'Temporal' : 'Reparación'}
{key === 'DEF' ? 'Definitiva' : key === 'TEM' ? 'Temporal' : 'Reparación'}
</Label>
</div>
{/each}
@@ -1237,7 +1277,7 @@
<td class="px-4 py-2.5 border-r border-r-dashed border-border/50">{row.ClavePed || '-'}</td>
<td class="px-4 py-2.5 whitespace-nowrap border-r border-r-dashed border-border/50 font-mono">{row.Factura}</td>
<td class="px-4 py-2.5 border-r border-r-dashed border-border/50 text-muted-foreground text-xs">{formatDateFromYYYYMMDD(row.FechaFactura)}</td>
<td class="px-4 py-2.5 text-right font-mono border-r border-r-dashed border-border/50">${row.ValorComercialMN}</td>
<td class="px-4 py-2.5 text-right font-mono border-r border-r-dashed border-border/50">${formatCurrency(row.ValorComercialMN)}</td>
<td class="px-4 py-2.5 border-r border-r-dashed border-border/50">
<span class="px-2 py-0.5 rounded-full text-[10px] font-bold bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400 border border-blue-200 dark:border-blue-800">
{row.TipoMovTemDef}