From 6e39b5537a74662d3e2f6c5bb87fa9cde39695df Mon Sep 17 00:00:00 2001 From: Kevin_Ramirez Date: Tue, 31 Mar 2026 10:07:22 -0500 Subject: [PATCH] Parametros generales agregados --- .../settings/SettingFormField.svelte | 21 +- .../dashboard/settings/SsisGenTabsForm.svelte | 294 ++++++++++++++++-- .../dashboard/settings/general/+page.svelte | 31 +- 3 files changed, 290 insertions(+), 56 deletions(-) diff --git a/frontend/src/lib/components/dashboard/settings/SettingFormField.svelte b/frontend/src/lib/components/dashboard/settings/SettingFormField.svelte index 6dedbe5d..61985bd4 100644 --- a/frontend/src/lib/components/dashboard/settings/SettingFormField.svelte +++ b/frontend/src/lib/components/dashboard/settings/SettingFormField.svelte @@ -26,7 +26,7 @@ 'act', 'valid', 'mostr', 'usar', 'utiliz', 'restring', 'bloqueo', 'omiti', 'oculta', 'resaltar', 'cal', 'mues', 'mens', 'cont', 'firm', 'esc', 'adv', 'val', 'tom', 'nom', 'rev', 'imp', 'temp', 'costo', - 'des', 'asig', 'calc', 'param', 'fracc', 'valor', 'cove', 'loc', 'inter', 'inclu', 'actvalor', 'trans' + 'des', 'asig', 'calc', 'param', 'fracc', 'valor', 'cove', 'loc', 'inter', 'inclu', 'actvalor', 'trans', 'cambiar', 'reasigna' ]; // Be more lenient: if it has the prefix and is 0, 1, or null, it's likely a toggle return (v === 0 || v === 1 || v === null || v === undefined) && @@ -54,6 +54,15 @@ console.log("Browse failed:", err); } } + let selectValue = $state(String(value)); + $effect(() => { + selectValue = String(value); + }); + + function handleSelectChange(v: string) { + selectValue = v; + onChange(v); + }
@@ -65,12 +74,14 @@ {#if mode === 'select' && options} - - + + + {options.find(opt => String(opt.value) === selectValue)?.label || "Seleccionar..."} + {#each options as opt} diff --git a/frontend/src/lib/components/dashboard/settings/SsisGenTabsForm.svelte b/frontend/src/lib/components/dashboard/settings/SsisGenTabsForm.svelte index 90a4a7f7..851fbc94 100644 --- a/frontend/src/lib/components/dashboard/settings/SsisGenTabsForm.svelte +++ b/frontend/src/lib/components/dashboard/settings/SsisGenTabsForm.svelte @@ -2,6 +2,14 @@ import { fade } from 'svelte/transition'; import * as Tabs from '$lib/components/ui/tabs'; import SettingFormField from './SettingFormField.svelte'; + import { Button } from '$lib/components/ui/button'; + import { + AlertTriangle, + CreditCard, + FileEdit, + RefreshCw, + Layers + } from 'lucide-svelte'; interface Props { currentData: any; @@ -10,17 +18,22 @@ let { currentData = {}, onUpdate }: Props = $props(); - let formData: any = $state({ ...currentData }); + // Initialize local/loc fields with defaults and keep in sync with currentData prop + let formData: any = $state({ + DownloadFTP: 'No', + DescargarFTPoLocal: 'FTP', + MinsDownLFTP: 0, + UsarFechaEmisionFactura: 'false', + Campo18Valsaaim3: 0, + ...currentData + }); - // Initialize local/loc fields if they don't exist $effect(() => { - const defaults = { - DownloadFTP: formData.DownloadFTP || 'No', - DescargarFTPoLocal: formData.DescargarFTPoLocal || 'FTP', - MinsDownLFTP: formData.MinsDownLFTP || 0, - }; - // Object.assign(formData, { ...defaults, ...currentData }); - formData = { ...defaults, ...currentData }; + // Update state when currentData prop changes from outside + const newData = { ...currentData }; + for (const key in newData) { + formData[key] = newData[key]; + } }); function handleFieldChange(key: string, value: any) { @@ -114,7 +127,44 @@ PathLocalParaDescDe: "Ruta Local", AgregarRemplazarAutomatico: "Agregar/Remplazar Aut", ActivarProcesoVEquipment: "Activar/Desactivar proceso para JD Edwards", - ActivarProcesoDesperdicioJDEdwards: "Activar proceso de desperdicio para JD Edwards" + ActivarProcesoDesperdicioJDEdwards: "Activar proceso de desperdicio para JD Edwards", + utilizarnombregenericomainx30: "Utilizar Nombre Genérico Mainx 30", + utilizartcrespectoatipoped: "Utilizar TC Respecto Al Tipo de Pedimento", + tomardecimalescompletos: "Tomar Decimales Completos en las Impresiones de Facturas de Importación y Exportación", + incluirremesaeninterfazaawinsaai: "Incluir Remesa en Interfaz AA (WINSAAI)", + cambiarpesosporcostounitario: "Cambiar Pesos Por Costo Unitario en Exportaciones Mexicanas y Bilingües", + utilizarsolopartesnaftaenco: "Utilizar Solo Partes Nafta En CO", + bloqueodeediciondefacturas: "Bloqueo De Edición De Facturas", + reasignafraccionclase: "Reasigna Fracción en Reporte de Descargos", + calcularcostounitarioenbaseavalortotal: "Calcula Costo Unitario en Base a Valor Total Capturado", + parametroauxiliar: "Seleccionar versión de B.O.M a Descargar", + usarcontroldefechasdeversion: "Control de Versiones de Bom por Fechas", + desactivaciondemodulos: "Activar/Desactivar Módulos", + restringepaisimpo: "Restringir país de Korea para operaciones de Importación.", + restringpaisexpo: "Restringir país de Korea para operaciones de Exportación.", + bloqueoaldesactivarnumerodeparte: "Bloqueo para Desactivación y Activación de Número De Parte", + geninformeanexo31: "Inventario Inicial en Base al Sistema", + UsarFechaEmisionFactura: "Usar Fecha de Emision Factura en Manifestacion al Valor", + utilizarfechapagopeddeundiaanterior: "Utilizar Tipo de Cambio de la Fecha de Pago de Pedimento De Un Dia Anterior", + utilizartitulosalternativosimpresionfactura: "Utilizar Títulos Alternativos en la Impresión de las Facturas", + utilizarequivalenciasdeumpornumerodeparte: "Utilizar factor de conversión en número de parte para Importación y exportación.", + usarfactorconversionpornumerodeparte: "Usar Factor de Conversión Por Número De Parte", + usartcdelafechapagopedimpoendescarga: "Usar Tipo de Cambio de la Fecha de Pago Pedimento de Importación en Descarga", + usarvude128o256: "Utilizar Ventanilla Unica con Encriptacion de 256", + agregarnumeroembarque: "Agregar Número Embarque", + utilizarumdeexistenciaentransmisionvu: "Utilizar UM de Existencia En Transmision VU", + utilizarcodigodebrokerdeclienteenmainx30: "Utilizar Codigo De Broker De Cliente En Main X 30", + hojacalculosepararincrementablesanexo3: "En la Hoja de Calculo Separar Incrementables en el Anexo 3", + hojacalculodesglosefacturaanexo3: "En la Hoja de Calculo Desglosar Facturas en el Anexo 3", + usarvaloragregadoenfacturaamericana: "Usar Valor Agregado En Factura Americana", + ocultarinformacionfraccion: "Ocultar Información Fracción", + resaltarsaldostempconcolor: "Resaltar Saldos Temporales con Color", + validarsectorprosecr8: "Validar Sector Prosec R8", + agregarsubtotalinterfazaa: "Agregar Sub Total al archivo TXT para la Interfaz del Agente Aduanal", + imprimirfacturaalterna: "Imprimir factura alterna en manifestación al valor y hoja de calculo", + informacionamericanasubtotal: "Mostrar Información Extra En Factura Americana SubTotal", + activarexpedienteelectronico: "Activar Expediente Electrónico", + Campo18Valsaaim3: "Mostrar Campo 18 en 551 Valsaaim3" }; // Grouped sections for the "General" tab @@ -276,6 +326,74 @@ } ]; + // Sections for redefined "Cont 5" tab + const CONT5_SECTIONS = [ + { + id: 'restricciones', + title: 'Restricciones y Bloqueos Iniciales', + fields: ['restringepaisimpo', 'restringpaisexpo', 'bloqueoaldesactivarnumerodeparte'] + }, + { + id: 'inv_inicial', + title: 'Inventario Inicial (Agrupación)', + fields: ['geninformeanexo31'] + }, + { + id: 'config_adicionales', + title: 'Configuraciones Adicionales', + fields: [ + 'UsarFechaEmisionFactura', + 'utilizarfechapagopeddeundiaanterior', + 'utilizartitulosalternativosimpresionfactura', + 'utilizarequivalenciasdeumpornumerodeparte', + 'usarfactorconversionpornumerodeparte', + 'usartcdelafechapagopedimpoendescarga', + 'usarvude128o256', + 'agregarnumeroembarque', + 'utilizarumdeexistenciaentransmisionvu', + 'utilizarcodigodebrokerdeclienteenmainx30', + 'hojacalculosepararincrementablesanexo3', + 'hojacalculodesglosefacturaanexo3' + ] + } + ]; + + // Sections for redefined "Cont 6" tab + const CONT6_SECTIONS = [ + { + id: 'configuracion', + title: 'Opciones de Configuración', + fields: [ + 'usarvaloragregadoenfacturaamericana', + 'ocultarinformacionfraccion', + 'resaltarsaldostempconcolor', + 'validarsectorprosecr8', + 'agregarsubtotalinterfazaa', + 'utilizarnombregenericomainx30', + 'utilizartcrespectoatipoped', + 'tomardecimalescompletos', + 'cambiarpesosporcostounitario', + 'utilizarsolopartesnaftaenco', + 'bloqueodeediciondefacturas', + 'reasignafraccionclase', + 'calcularcostounitarioenbaseavalortotal', + 'parametroauxiliar', + 'usarcontroldefechasdeversion', + 'imprimirfacturaalterna', + 'informacionamericanasubtotal' + ] + }, + { + id: 'acciones_modulos', + title: 'Acciones y Módulos', + fields: [ + 'desactivaciondemodulos', + 'activarexpedienteelectronico', + 'Campo18Valsaaim3' + ] + } + ]; + // Grouped sections for "Cont 7" tab const CONT7_SECTIONS = [ { @@ -296,9 +414,8 @@ { id: 'cont2', label: 'Cont 2' }, { id: 'cont3', label: 'Cont 3' }, { id: 'cont4', label: 'Cont 4' }, - { id: 'otros_parms', label: 'Otros Parámetros', fields: ["consecutivo", "dta", "dtaexpo", "subempresa", "fechades", "validasifra", "restringepaisimpo", "restringpaisexpo", "bloqueoaldesactivarnumerodeparte", "asignafracameparte", "validadecencant", "usartranspamedocame", "mostraradvertenciaro", "calcdutypacking", "parammultiples", "fraccnivelpais", "pathtransexpo", "pathrespuesta", "covefechaemision", "interfaceaaconsolidada", "interfaceaatcfpff", "incluirobscoveobsimpo", "agregarincreimpo", "componentebom", "limitesubensamble", "actpdfreportes", "patharchpdfimpo", "patharchpdfexpo", "noimprimircons", "mostraradvertenciarovalor", "partesypedimentosporcliente", "mensajesvurfc", "mostrarpackinglistingles", "omitirempaqueencodigobarras", "geninformeanexo31", "utilizarfechapagopeddeundiaanterior", "utilizarequivalenciasdeumpornumerodeparte", "utilizartitulosalternativosimpresionfactura"] }, - { id: 'cont5', label: 'cont 5', fields: ["utilizarnombregenericomainx30", "utilizartcrespectoatipoped", "tomardecimalescompletos", "incluirremesaeninterfazaawinsaai", "cambiarpesosporcostounitario", "utilizarsolopartesnaftaenco", "bloqueodeediciondefacturas"] }, - { id: 'cont6', label: 'cont 6', fields: ["reasignafraccionclase", "calcularcostounitarioenbaseavalortotal", "parametroauxiliar", "usarcontroldefechasdeversion", "desactivaciondemodulos"] }, + { id: 'cont5', label: 'Cont 5' }, + { id: 'cont6', label: 'Cont 6' }, { id: 'cont7', label: 'cont 7' } ]; @@ -325,6 +442,13 @@ { value: 'FTP', label: 'FTP' }, { value: 'Ruta Local', label: 'Ruta Local' } ]; + + // Options for Inventario Inicial in Cont 5 + const INICIAL_INV_OPTIONS = [ + { value: 'AMBOS', label: 'AMBOS' }, + { value: 'SCAII', label: 'SCAII' }, + { value: 'SCAF', label: 'SCAF' } + ];
@@ -333,7 +457,7 @@ {#each TABS as tab} {tab.label} @@ -480,8 +604,7 @@
- -
+
{#each CONT4_SECTIONS.filter(s => s.id !== 'additional_options') as section}
@@ -499,7 +622,7 @@ label={FIELD_LABELS[field] || field} value={formData[field]} onChange={(val) => handleFieldChange(field, val)} - disabled={section.id !== 'ftp_master' && formData.DownloadFTP !== 'Si'} + disabled={formData.DownloadFTP !== 'Si' && field !== 'DownloadFTP'} type={ field === 'DownloadFTP' || field === 'DescargarFTPoLocal' ? 'radio' : field === 'MinsDownLFTP' ? 'number' : @@ -549,6 +672,127 @@
+ +
+
+ {#each CONT5_SECTIONS as section} +
+
+

+ {section.title} +

+
+
+ +
+ {#each section.fields as field} + handleFieldChange(field, val)} + type={ + field === 'geninformeanexo31' ? 'radio' : + (['UsarFechaEmisionFactura', 'agregarnumeroembarque', 'hojacalculosepararincrementablesanexo3', 'hojacalculodesglosefacturaanexo3'].includes(field) ? 'switch' : undefined) + } + options={field === 'geninformeanexo31' ? INICIAL_INV_OPTIONS : undefined} + /> + {/each} +
+
+ {/each} +
+
+
+ + +
+
+ +
+
+

+ Opciones de Configuración +

+
+
+ +
+ {#each CONT6_SECTIONS.find(s => s.id === 'configuracion')?.fields || [] as field} +
+ handleFieldChange(field, val)} + disabled={field === 'usarcontroldefechasdeversion' && !formData.parametroauxiliar} + type="switch" + /> +
+ {/each} +
+
+ + +
+ +
+
+

+ Módulos del Sistema +

+
+
+ +
+ {#each CONT6_SECTIONS.find(s => s.id === 'acciones_modulos')?.fields || [] as field} + handleFieldChange(field, val)} + type={field === 'Campo18Valsaaim3' ? 'switch' : undefined} + /> + {/each} +
+
+ + +
+
+

+ Acciones de Gestión +

+
+
+ +
+ + + + + + + +
+
+
+
+
+
+
{#each CONT7_SECTIONS as section} @@ -596,22 +840,6 @@
- {#each TABS.filter(t => !['general', 'archivos', 'continuacion', 'cont2', 'cont3', 'cont4', 'cont7'].includes(t.id)) as tab} - -
-
- {#each tab.fields || [] as field} - handleFieldChange(field, val)} - /> - {/each} -
-
-
- {/each}
diff --git a/frontend/src/routes/dashboard/settings/general/+page.svelte b/frontend/src/routes/dashboard/settings/general/+page.svelte index 2ed32e3c..f2a81506 100644 --- a/frontend/src/routes/dashboard/settings/general/+page.svelte +++ b/frontend/src/routes/dashboard/settings/general/+page.svelte @@ -29,7 +29,7 @@ let activeCategory = $state('ssisgen'); let resolvedSettings = $state(null); - let loading = $state(false); + let loading = $state(true); // Start as true to show loading initially let saving = $state(false); // Form internal state tracking @@ -37,8 +37,15 @@ // Load when company changes or on mount $effect(() => { - if (companyIdVal) { + const companyId = companyIdVal; // Track dependency + const tenantId = tenantIdVal; // Track dependency + + if (companyId && tenantId) { handleResolve(); + } else { + // If no company selected, still show loading state until we have context + loading = true; + resolvedSettings = null; } }); @@ -102,33 +109,21 @@
-

+

Configuraciones Generales - SsisGen

-
-
- - Tenant: {tenantIdVal} -
-
-
- - Empresa: {companyIdVal} -
-
{#if loading} -
+
Cargando...
{/if} -
{:else} -
+