From 8ecc926ed148ffdc726a4a2a60af320ef9302f00 Mon Sep 17 00:00:00 2001 From: hreyes Date: Fri, 6 Mar 2026 09:06:46 -0700 Subject: [PATCH] feature/trailes-validaciones-clarion-csv-front --- frontend/src/lib/api.ts | 5 +- .../csv-upload/ProcessingResultModal.svelte | 624 +++++++++--------- .../routes/dashboard/csv-upload/+page.svelte | 4 +- 3 files changed, 318 insertions(+), 315 deletions(-) diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index 11a43f45..285f9aa3 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -540,11 +540,12 @@ export const api = { // CSV import for Trailers y Cajas (transportation/trailers/imports) trailerImports: { - upload: (file: File, companyId: number) => { + upload: (file: File, companyId: number, params?: { actualizar?: boolean }) => { const formData = new FormData(); formData.append('file', file); + const actualizar = params?.actualizar ?? false; return fetchApi( - `/v1/a76/transportation/trailers/imports/upload?company_id=${companyId}`, + `/v1/a76/transportation/trailers/imports/upload?company_id=${companyId}&actualizar=${actualizar}`, { method: 'POST', body: formData } ); }, diff --git a/frontend/src/lib/components/dashboard/csv-upload/ProcessingResultModal.svelte b/frontend/src/lib/components/dashboard/csv-upload/ProcessingResultModal.svelte index 0a3a1ef8..0e2a0b4e 100644 --- a/frontend/src/lib/components/dashboard/csv-upload/ProcessingResultModal.svelte +++ b/frontend/src/lib/components/dashboard/csv-upload/ProcessingResultModal.svelte @@ -1,312 +1,312 @@ - - - - - -
-
- {#if isPending} - - {:else if isFinished && !hasErrors} - - {:else} - - {/if} -
- -
- - {#if isPending} - Validación de Importación - {:else if isFinished} - {hasErrors ? 'Importación con Observaciones' : 'Importación Exitosa'} - {/if} - - - {#if isPending} - Revise el análisis preliminar antes de confirmar la carga de datos. - {:else if isFinished} - El proceso de importación ha finalizado. - {/if} - -
-
- - -
- - {#if isPending} -
- -
- Total Filas - {scanResults.total_rows || 0} -
- - -
- Válidos - {scanResults.valid_rows || 0} -
- - -
- Errores - {scanResults.error_count || 0} -
-
- - {#if scanResults.error_count > 0} -
- -
-

Se detectaron problemas en el archivo

-

- Corrija los datos indicados abajo en su CSV y vuelva a subir, o confirme para - importar solo las filas válidas (las erróneas se omitirán). -

-
-
- {#if scanResults.errors && scanResults.errors.length > 0} -
-
-
- Detalle de errores (para corregir en el CSV) -
- - {scanResults.errors.length} error(es) - -
-
- - - - - - - - - - {#each scanResults.errors as err} - - - - - - {/each} - -
LíneaColumnaMensaje
{err.line}{err.col || '-'}{err.msg || '-'}
-
-
- {/if} - {:else} -
- -
-

Archivo validado correctamente

-

Todos los registros parecen correctos y listos para importar.

-
-
- {/if} - {/if} - - - {#if isFinished} -
- -
- -
-
- - Insertados -
- {commitResults.inserted || 0} -
- - -
-
- - Rechazados -
- {totalSkipped} -
-
- - - {#if commitResults.skipped_details && commitResults.skipped_details.length > 0} -
-
-
- Detalle de Errores -
- - {commitResults.skipped_details.length} filas - -
-
- - - - - - - - - - {#each commitResults.skipped_details as detail} - - - - - - {/each} - -
LíneaReferenciaMotivo
{detail.line}{detail.invoice || '-'}{detail.reason}
-
-
- {/if} -
- {/if} -
- - -
- {#if isPending} - - - {:else if isFinished} - - {/if} -
-
-
+ + + + + +
+
+ {#if isPending} + + {:else if isFinished && !hasErrors} + + {:else} + + {/if} +
+ +
+ + {#if isPending} + Validación de Importación + {:else if isFinished} + {hasErrors ? 'Importación con Observaciones' : 'Importación Exitosa'} + {/if} + + + {#if isPending} + Revise el análisis preliminar antes de confirmar la carga de datos. + {:else if isFinished} + El proceso de importación ha finalizado. + {/if} + +
+
+ + +
+ + {#if isPending} +
+ +
+ Total Filas + {scanResults.total_rows || 0} +
+ + +
+ Válidos + {scanResults.valid_rows || 0} +
+ + +
+ Errores + {scanResults.error_count || 0} +
+
+ + {#if scanResults.error_count > 0} +
+ +
+

Se detectaron problemas en el archivo

+

+ Corrija los datos indicados abajo en su CSV y vuelva a subir, o confirme para + importar solo las filas válidas (las erróneas se omitirán). +

+
+
+ {#if scanResults.errors && scanResults.errors.length > 0} +
+
+
+ Detalle de errores (para corregir en el CSV) +
+ + {scanResults.errors.length} error(es) + +
+
+ + + + + + + + + + {#each scanResults.errors as err} + + + + + + {/each} + +
LíneaColumnaMensaje
{err.line}{err.col || '-'}{err.msg || '-'}
+
+
+ {/if} + {:else} +
+ +
+

Archivo validado correctamente

+

Todos los registros parecen correctos y listos para importar.

+
+
+ {/if} + {/if} + + + {#if isFinished} +
+ +
+ +
+
+ + Insertados +
+ {commitResults.inserted || 0} +
+ + +
+
+ + Rechazados +
+ {totalSkipped} +
+
+ + + {#if commitResults.skipped_details && commitResults.skipped_details.length > 0} +
+
+
+ Detalle de Errores +
+ + {commitResults.skipped_details.length} filas + +
+
+ + + + + + + + + + {#each commitResults.skipped_details as detail} + + + + + + {/each} + +
LíneaReferenciaMotivo
{detail.line}{detail.invoice || '-'}{detail.reason}
+
+
+ {/if} +
+ {/if} +
+ + +
+ {#if isPending} + + + {:else if isFinished} + + {/if} +
+
+
diff --git a/frontend/src/routes/dashboard/csv-upload/+page.svelte b/frontend/src/routes/dashboard/csv-upload/+page.svelte index 2ee4b447..d4e8c387 100644 --- a/frontend/src/routes/dashboard/csv-upload/+page.svelte +++ b/frontend/src/routes/dashboard/csv-upload/+page.svelte @@ -310,7 +310,9 @@ if (useTrailerImport) { try { - const res = await api.trailerImports.upload(file, companyId); + const transportesSettings = allSettings['transportes'] || {}; + const actualizar = transportesSettings['mode'] === 'update'; + const res = await api.trailerImports.upload(file, companyId, { actualizar }); if (res.data?.job_id) { currentJobId = res.data.job_id; pollStatus();