public int LeeArchivo(string tipoArchivo, StringCollection tipoLinea, int contratoId) { var text = LineaArchivo(); var eContratoSis = new nContratoSis().listContratoByID(new CONTRATO_SYS() { IDE_CONTRATO = contratoId }); //Consultar en tabla el estado del archivo //entregara 0 si no existe //using (var context = new DISEntities()) //{ // var estadoArchivo = context.pa_file_ConsultaEstadoArchivo(NombreArchivo).FirstOrDefault(); // if (estadoArchivo != null) Estado = estadoArchivo.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) //{ // MensageError = "Archivo ya cargado previamente"; //} using (var context = new DISEntities()) { var archivo = context.pa_file_InsertaReferenciaArchivo(NombreArchivo, UsuarioModificacion).FirstOrDefault(); if (archivo != null) { IdArchivo = archivo.Value; } } //InsertaAuditoria(Me.UsuarioModificacion, "Inserta Referencia Archivo", "pa_file_InsertaReferenciaArchivo '" + Me.NombreArchivo + "'", Me.idArchivo) for (var indexLinea = 0; indexLinea <= text.Length - 1; indexLinea++) { var caracterInicial = Mid(text[indexLinea].Trim(), 0, 1); var carterInicialNumer = 0; if (int.TryParse(caracterInicial, out carterInicialNumer)) { caracterInicial = "*"; } if (tipoLinea.Contains(caracterInicial)) { using (var context = new DISEntities()) { if (!_reglasLineaPorTipo.ContainsKey(caracterInicial)) { _reglasLineaPorTipo.Add(caracterInicial, ObtieneReglaLinea(context.pa_file_ObtieneReglasArchivoPorLinea(tipoArchivo, caracterInicial, Convert.ToInt32(eContratoSis.NRO_CONTRATO)))); } } //InsertaAuditoria(Me.UsuarioModificacion, "Obtiene Regla de archivo por línea", "pa_file_ObtieneReglasArchivoPorLinea '" + tipoLinea + "', " + CaracterInicial, Me.idArchivo) try { var propertyValues = new Dictionary <string, object>(); var exitoLinea = 1; //if (!caracterInicial.Equals("T")) //{ foreach (var regla in _reglasLineaPorTipo[caracterInicial]) { try { exitoLinea &= EvaluarRegla(tipoArchivo, regla, text, indexLinea, propertyValues); } catch (Exception ex) { throw ex; } } //} GrabarFilaArchivo(caracterInicial, IdArchivo, indexLinea + 1, propertyValues, contratoId, exitoLinea, tipoArchivo); } catch (Exception ex) { MensajeExcepcion = ex.Message; return(0); } } else { if (text[indexLinea].Trim().Any()) { using (var context = new DISEntities()) { context.pa_file_InsertaHistorialCarga(IdArchivo, 451, "#", indexLinea + 1, 1, text[indexLinea].Trim().Count(), text[indexLinea], 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) ContadorErrores = ContadorErrores + 1; } } } //aca se debe realizar el bolcado de archivo sin errores try { //Antes de traspasar el archivo si verifica que todas las filas se hayan cargado ccorrectamente if (ContadorErrores > 0 && tipoArchivo != "NOMINA") { new dPagoCargado().setAatualizarEstadoArchivo(CodigoCabecera); } ; //actualizar la cabecera con el archivo id de la nomina (NOMINA) if (tipoArchivo == "NOMINA") { var archivo = new nArchivo().getArchivoByNombre(new Archivo() { NombreArchivo = NombreArchivo }); //new dAprobacionCa archivo.ArchivoId = IdArchivo; new nAprobacionCarga().actulaizarArchivoIdNomina(archivo); if (ContadorErrores > 0) { new nNomina().actualizarEstadoFallido(IdArchivo, contratoId); } } TraspasaArchivo(tipoArchivo); ProcesarErrores(tipoArchivo); ContadorErrores = ContadorErrores > 0 ? ContadorErrores : 0; } catch (Exception ex) { Observacion = ex.Message + "// TraspasaArchivo...!"; } //} //else //{ // Observacion = "Ya está aprobado"; // return Estado; //} return(0); }
/// <summary> /// Crea un archivo excel acuerdo a los filtros especificados /// </summary> /// <param name="cab"></param> /// <param name="det"></param> /// <param name="filterParam"></param> /// <returns></returns> public string getDescargarConsulta(HistorialCargaArchivo_LinCab cab, NOMINA nomina, HistorialCargaArchivo_LinDet det, object[] filterParam) { var helperStyle = new Helpers.excelStyle(); try { var nombreArchivo = "Archivo " + filterParam[0].ToString() + " " + DateTime.Now.ToString("yyyyMMdd"); var rutaTemporal = @HttpContext.Current.Server.MapPath("~/Temp/Descargas/" + nombreArchivo + ".xlsx"); int total; var tipoLinea = filterParam[0].ToString() == "NOMINA" ? "*" : "D"; //new Utils.DeleteFile().deleteFile(HttpContext.Current.Server.MapPath(@"~/Utils/xlsxs/")); XSSFWorkbook book = new XSSFWorkbook(); var contratoSis = new nContratoSis().listContratoByID(new CONTRATO_SYS() { IDE_CONTRATO = cab.IDE_CONTRATO }); var reglaArchivo = new ReglaArchivo() { Archivo = filterParam[0].ToString(), TipoLinea = tipoLinea, NUM_CONT_LIC = Convert.ToInt32(contratoSis.NRO_CONTRATO), vigente = 1 }; var listReglaArchivo = new nReglaArchivo().getListReglaArchivo(reglaArchivo, 0, 1000, "IdReglaArchivo ASC", out total); if (reglaArchivo.Archivo.Equals("0")) { listReglaArchivo = listReglaArchivo.GroupBy(x => new { x.NombreCampo, x.TituloColumna }) .Select(y => new ReglaArchivo() { NombreCampo = y.Key.NombreCampo, TituloColumna = y.Key.TituloColumna }).ToList(); } //crear el libro var sheet = book.CreateSheet(nombreArchivo); var rowCabecera = sheet.CreateRow(1); var headerStyle = helperStyle.setFontText(12, true, book); var bodyStyle = helperStyle.setFontText(11, false, book); //construir cabecera ICell cellCabecera; for (int i = 0; i < listReglaArchivo.Count; i++) { cellCabecera = rowCabecera.CreateCell(i + 1); cellCabecera.SetCellValue(listReglaArchivo[i].TituloColumna); cellCabecera.CellStyle = headerStyle; } //consultar datos segun los filtros especificados if (filterParam[0].ToString() == "NOMINA") { var listNomina = new nNomina().listNominaConsulta(nomina, filterParam, 0, 100000, out total); for (int i = 0; i < listNomina.Count; i++) { IRow rowBody = sheet.CreateRow(i + 2); ICell cellBody; for (int c = 0; c < listReglaArchivo.Count; c++) { cellBody = rowBody.CreateCell(c + 1); var property = listNomina[i].GetType().GetProperty(listReglaArchivo[c].NombreCampo.ToString().Trim(), BindingFlags.Public | BindingFlags.Instance); cellBody.SetCellValue(property.GetValue(listNomina[i], null) == null ? "" : property.GetValue(listNomina[i], null).ToString()); cellBody.CellStyle = bodyStyle; } } } else { var listHistoriaLinDet = new dPagoCargado().listArchivoCargado(cab, det, filterParam, 0, 100000, "TipoLinea ASC", out total); for (int i = 0; i < listHistoriaLinDet.Count; i++) { IRow rowBody = sheet.CreateRow(i + 2); ICell cellBody; for (int c = 0; c < listReglaArchivo.Count; c++) { cellBody = rowBody.CreateCell(c + 1); var property = listHistoriaLinDet[i].GetType().GetProperty(listReglaArchivo[c].NombreCampo.ToString().Trim(), BindingFlags.Public | BindingFlags.Instance); cellBody.SetCellValue(property.GetValue(listHistoriaLinDet[i], null) == null ? "" : property.GetValue(listHistoriaLinDet[i], null).ToString()); cellBody.CellStyle = bodyStyle; } } } if (File.Exists(rutaTemporal)) { File.Delete(rutaTemporal); } //guardar el archivo creado en memoria using (var file = new FileStream(rutaTemporal, FileMode.Create, FileAccess.ReadWrite)) { book.Write(file); file.Close(); book.Close(); } return(rutaTemporal); } catch (System.Exception ex) { throw; } }