Cargar Archivo

Importar liquidaciones y propietarios desde Excel

Tips de esta página

/setting/cargamar.aspx - Resumen de Funcionalidad

Flujo Principal

#PasoDescripcion
1Cargar archivoSubida de .xlsx a carpeta ~/repo con nombre unico (timestamp). Guarda en Session("nombreArchivo").
2PrevisualizarExtrae datos del Excel y muestra 2 grillas JS: Liquidaciones y Propietarios.
3ProcesarBoton "Procesar" ejecuta toda la logica de importacion a la base de datos.

Dentro de btnProcesar_Click

#Sub-pasoDetalle
aIdentificar columnasBusca por nombre: U.F./Piso, saldo anterior MM-yyyy, abonado, deuda/ redondeo, interes, propietario
bExtraer periodoDel header saldo anterior 02-2026 extrae "02-2026", suma 1 mes y obtiene "03-2026"
cNormalizar U.F./PisoFormato NN/XXX (UF + piso). Si hay excedente despues del /, lo mueve a columna propietario. Limpia caracteres de control con Regex.
dVerificar duplicadosSi ya existen registros de liquidaciones para ese periodo + UF, hace rollback, borra archivos del repo y muestra error.
eInsertar liquidacionesPor cada fila: INSERT (uf, periodo, saldo_anterior, abonado, deuda, intereses). Usa transaccion SQL.
fInsertar/actualizar propietariosSi UF+piso no existe: INSERT con nombre capitalizado. Si existe pero nombre diferente: UPDATE. No borra registros existentes.
gRecalcularLlama Calculos.RecalcularMesesAdeudados()
hLimpiarBorra el Excel del repo. Marca Session("procesadoOk") = True para evitar reprocesar

Funciones Clave Auxiliares

FuncionProposito
LimpiarYCapitalizar()Limpia espacios/TABs/ENTERs/caracteres de control con Regex. Capitaliza la primera letra de cada palabra ("juan perez" -> "Juan Perez"). Excepciones: s.a. -> S.A., y -> y.
CargarDatosEnHiddenFields()Serializa DataTables a JSON embebido en <input type="hidden"> para que JS renderice las grillas de previsualizacion.
CargarTooltip()Lee tooltips.json y muestra el tip contextual de esta pagina

Descripcion del Formato de Datos

CampoOrigen en ExcelTransformacion
ufAntes del / en columna U.F./ PisoParsea a Integer
pisoDespues del / en U.F./ PisoMaximo 3 caracteres; excedente va a propietario
periodoNombre de columna saldo anterior MM-yyyyExtrae MM-yyyy y suma 1 mes
propietarioColumna propietarioLimpia con Regex + LimpiarYCapitalizar()
saldo_anteriorColumna saldo anterior ...Decimal.Parse
abonadoColumna abonadoDecimal.Parse
deudaColumna deuda/ redondeoDecimal.Parse
interesesColumna interesDecimal.Parse

Notas de Diseno

- Boton Cargar: color ambar (#f59e0b), con UseSubmitBehavior="false" para evitar doble postback.
- Boton Procesar: color emerald (#10b981), tambien con UseSubmitBehavior="false".
- Grillas: renderizadas 100% en JavaScript a partir de <input type="hidden"> con JSON (sin GridView).
- Mensajes: usan Session("msgCargar") / Session("msgProcesar") con redirect para evitar reenvio de formulario al refrescar.
Liquidaciones 0 registros
UF Periodo Saldo Ant Abonado Deuda Intereses

No hay datos de liquidaciones

Propietarios 0 registros
UF Piso Propietario

No hay datos de propietarios