public int LeeArchivo(string tipoArchivo, StringCollection tipoLinea) { //Dim texto As String string[] text = null; var resultadoValor = default(StringCollection); var exitoLinea = 0; string caracterInicial = null; var res1 = 0; var res2 = 0; text = LineaArchivo(); //Consultar en tabla el estado del archivo //entregara 0 si no existe using (var context = new DISEntities()) { var m = context.pa_file_ConsultaEstadoArchivo(NombreArchivo); Estado = m.FirstOrDefault() == null ? 0 : m.FirstOrDefault().Value; } InsertaAuditoria(Convert.ToInt32(UsuarioModificacion), "Consulta estado archivo", "pa_file_ConsultaEstadoArchivo '" + NombreArchivo + "'", 0); //valor anterior = 3 //Si el valor es menor que 2, significa 2 cosas: //1.- que la nomina no esta aprobada y puede ser cargado nuevos archivos. //2.- que no hay checklist sobre el o los cuspp de la liquidacion if (Estado < 2) { //Insertar en tabla if (Estado == 1) { Errors = "Archivo ya cargado previamente"; } using (var context = new DISEntities()) { var m = context.pa_file_InsertaReferenciaArchivo(NombreArchivo, UsuarioModificacion); IdArchivo = m.FirstOrDefault().Value; } //InsertaAuditoria(Me.UsuarioModificacion, "Inserta Referencia Archivo", "pa_file_InsertaReferenciaArchivo '" + Me.NombreArchivo + "'", Me.idArchivo) for (var x = 0; x <= text.Length - 1; x++) { caracterInicial = Mid(text[x].Trim(), 0, 1); var carterInicialNumer = 0; if (int.TryParse(caracterInicial, out carterInicialNumer)) { caracterInicial = "*"; } if (tipoLinea.Contains(caracterInicial)) { using (var context = new DISEntities()) { var resultado = context.pa_file_ObtieneReglasArchivoPorLinea(tipoArchivo, caracterInicial); ReglaLinea = ObtieneReglaLinea(resultado); } //InsertaAuditoria(Me.UsuarioModificacion, "Obtiene Regla de archivo por línea", "pa_file_ObtieneReglasArchivoPorLinea '" + tipoArchivo + "', " + CaracterInicial, Me.idArchivo) try { foreach (var rLoopVariable in ReglaLinea) { try { var r = rLoopVariable; CampoActual = Mid(text[x].Trim(), r.CaracterInicial - 1, r.LargoCampo); exitoLinea = 0; string valor = null; string[] inString = null; var j = 0; switch (r.TipoValidacion) { case "EQUAL": exitoLinea = EvaluarEqual(r, exitoLinea); break; case "BOOL_SP": exitoLinea = EvaluarBoolSp(tipoArchivo, r, x, exitoLinea); break; case "BOOL_IF_SP": exitoLinea = EvaluarBoolIfSp(r, x, exitoLinea); break; case "IN_QUERY": exitoLinea = EvaluarInQuery(r, exitoLinea); break; case "IN": exitoLinea = EvaluarIn(r, text, x, exitoLinea); break; case "FILLER": exitoLinea = EvaluarFiller(r, exitoLinea); break; case "": exitoLinea = 1; break; } using (var context = new DISEntities()) { context.pa_file_InsertaHistorialCarga(IdArchivo, r.idRegla, text[x].Trim().Substring(0, 1), x + 1, r.CaracterInicial, r.LargoCampo, CampoActual, exitoLinea); } } catch (Exception ex) { throw ex; } } } catch (Exception ex) { MensajeExcepcion = ex.Message; return 0; } } else { if (text[x].Trim().Any()) { using (var context = new DISEntities()) { context.pa_file_InsertaHistorialCarga(IdArchivo, 451, "#", x + 1, 1, text[x].Trim().Count(), text[x], 0); } //InsertaAuditoria(Me.UsuarioModificacion, "Inserta Historial de CargaLogica", "pa_file_InsertaHistorialCarga 451" + ", " + "'#'" + ", " + (x + 1).ToString() + ", " + "1" + ", " + text[x].Trim()().Count().ToString() + ", '" + Me.campoActual + "', " + "0", Me.idArchivo) Errores = Errores + 1; } } } try { TraspasaArchivo(tipoArchivo); if (ValidacionesArchivo(tipoArchivo, 2) == false) { using (var context = new DISEntities()) { Resultado = context.pa_file_ObtieneErrorArchivo(IdArchivo); var result = context.pa_file_ObtieneErrorArchivo(IdArchivo); var nombre = ""; var largo = 0; foreach (var datoLoopVariable in result) { var dato = datoLoopVariable; if (dato.NumeroLinea.Value > 0) { nombre = dato.NombreArchivo; largo = dato.LargoCampo.Value; } } if (nombre != string.Empty & largo != null) { //If largo = 25 Then var valor1 = context.pa_valida_CodigoTransferenciaNomina(nombre, IdArchivo, largo); var resultado = 0; resultado = valor1.FirstOrDefault().Value; if (resultado == 0) { Resultado = null; Observacion = "No existe liquidación, debe cargar liquidación y despúes la nómina"; //End If } } } } if (Errores == 0) { using (var context = new DISEntities()) { var cantidad = context.pa_file_CantidadRegistroArchivo(IdArchivo); var cant = 0; cant = cantidad.FirstOrDefault().Value; Observacion = "cantidad de registros cargados: " + cant; InsertaAuditoria(Convert.ToInt32(UsuarioModificacion), "Archivo cargado correctamente, cantidad de registros cargados: " + cant, NombreArchivo, IdArchivo); } } //esto válida que los montos por cuspp no sean mayor a lo establecido //en la entidad: negocio.MontoAlto if (NombreArchivo.Substring(0, 3).ToLower() == "liq") { using (var context = new DISEntities()) { var monto = context.pa_valida_MontoAlto(IdArchivo, Convert.ToInt32(UsuarioModificacion)); string montoAlto = null; montoAlto = monto.ToString(); if (montoAlto == "1") { dynamic monto1 = context.pa_devuelveresultado(IdArchivo); var correo = ""; foreach (var registroLoopVariable in monto1) { var registro = registroLoopVariable; correo = registro.correo; Observacion = Observacion + "\\n Monto alto cargado al CUSPP: " + registro.Cuspp + ", por valor = " + registro.Valor.ToString; InsertaAuditoria(Convert.ToInt32(UsuarioModificacion), Observacion, NombreArchivo, IdArchivo); } Correo = correo; } } } } catch (Exception ex) { Observacion = ex.Message + "// TraspasaArchivo...!"; } } else { Observacion = "ya está aprobado"; return Estado; } return 0; }