//SE GUARDA TODAS LAS LINEAS DEL ARCHIVO PAGOS ONLINE EN LA BASE DE DATOS private void guardarLineas(String fecha, String fechaTransaccion, String IdCuentaBancoEpicor, String Consecutivo, String Linea) { int valor = 0; HistorialArchivosEntrada objEntidad = new HistorialArchivosEntrada(); HistorialArchivosEntradaLN objHA = new HistorialArchivosEntradaLN(); objEntidad.pFecha = fecha; objEntidad.pFechaTransaccion = fechaTransaccion; objEntidad.pIdCuentaBanco = IdCuentaBancoEpicor; objEntidad.pTipoArchivo = TipoProcesoXCuenta; objEntidad.pConsecutivo = Consecutivo; objEntidad.pLineaDetalle = Linea; valor = objHA.insertar(objEntidad); if (valor <= 0) { throw new System.Exception("Ocurrio un error al guardar archivo plano en la base de datos"); } }
//SE CREA EL ARCHIVO PAGOS ONLINE private void escribirArchivo(String CodigoBanco, String IdCuentaBancoEpicor, String NumCuenta, String TipoCuenta, DataSet tabla, int Limite) { Double valorServicio = 0; try { ListaLinea1EA = new List <Bancos.EN.Tablas.EstructuraArchivo>(); ListaLinea2EL = new List <Bancos.EN.Tablas.EstructuraArchivo>(); ListaLinea3DT = new List <Bancos.EN.Tablas.EstructuraArchivo>(); ListaLinea4CL = new List <Bancos.EN.Tablas.EstructuraArchivo>(); ListaLinea5CA = new List <Bancos.EN.Tablas.EstructuraArchivo>(); ListaLinea1EA.AddRange(consultarEstructuraPagosOnline("1EA", TipoProcesoXCuenta)); ListaLinea2EL.AddRange(consultarEstructuraPagosOnline("2EL", TipoProcesoXCuenta)); ListaLinea3DT.AddRange(consultarEstructuraPagosOnline("3DT", TipoProcesoXCuenta)); ListaLinea4CL.AddRange(consultarEstructuraPagosOnline("4CL", TipoProcesoXCuenta)); ListaLinea5CA.AddRange(consultarEstructuraPagosOnline("5CA", TipoProcesoXCuenta)); DateTime Contrato = Convert.ToDateTime(tabla.Tables[0].Rows[ciclo].ItemArray[3].ToString()); //SE CREA EL NOMBRE DEL ARCHIVO SEGUN LOS PARAMETROS PAGOS ONLINE nombreArchivo = String.Concat(IdCuentaBancoEpicor, "_", DateTime.Now.ToString("ddMMyyyy"), "_PO", Contrato.ToString("ddMMyyyy"), "_", writeMilitaryTime(DateTime.Now), ".txt"); sw = new StreamWriter(Directorio + nombreArchivo, false); ArrayList line1EA = new ArrayList() { "1EA", tabla.Tables[0].Rows[ciclo].ItemArray[3].ToString(), CodigoBanco, NumCuenta, TipoCuenta }; //ARREGLO QUE LLEVA LA FECHA DE TRANSACCION, CODIGO DE TRANSITO, //NUMERO DE CUENTA, TIPO DE CUENTA Y CONSECUTIVO DEL ARCHIVO. ArrayList line2EL = new ArrayList() { "2EL" }; ArrayList line3DT = new ArrayList(); //ARREGLO LLEVA EL CONTRATO,VALOR ArrayList line4CL = new ArrayList() { "4CL" }; //ARREGLO LLEVA EL TOTAL DEL REGISTRO DEL LOTE Y EL TOTAL DEL VALOR DE SERVICIO ArrayList line5CA = new ArrayList() { "5CA" }; //ARREGLO LLEVA EL TOTAL DEL REGISTRO DEL LOTE Y EL TOTAL DEL VALOR DE SERVICIO Fecha = Convert.ToString(DateTime.Now.ToString("dd/MM/yyyy")); //SE ADICIONA UN CONSECUTIVO SEGUN EL NUMERO DE ARCHIVO QUE EXISTAN DEL MISMO DIA int numColumnas = 0; HistorialArchivosEntradaLN columnas = new HistorialArchivosEntradaLN(); numColumnas = columnas.consultarConsecutivoXBanco(IdCuentaBancoEpicor, TipoProcesoXCuenta, Fecha, Contrato.ToString("dd/MM/yyyy")).Rows.Count; if (numColumnas == 0) { ConsecutivoArchivo = "A"; } else { ConsecutivoArchivo = consecutivo(numColumnas); } #region Armar Linea Encabezado Archivo line1EA.Add(ConsecutivoArchivo); LineaArmada1EA = armarLineas(line1EA, ListaLinea1EA); sw.WriteLine(LineaArmada1EA); llenarTablaParaActualizados(Fecha, Contrato.ToString("dd/MM/yyyy"), IdCuentaBancoEpicor, ConsecutivoArchivo, LineaArmada1EA); registrosLote += 1; #endregion #region Armar Linea Encabezado Lote LineaArmada2EL = armarLineas(line2EL, ListaLinea2EL); sw.WriteLine(LineaArmada2EL); llenarTablaParaActualizados(Fecha, Contrato.ToString("dd/MM/yyyy"), IdCuentaBancoEpicor, ConsecutivoArchivo, LineaArmada2EL); registrosLote += 1; #endregion #region Armar Linea Detalle for (int i = ciclo; i < ciclo + Limite; i++) { line3DT.Add("3DT"); if (String.IsNullOrEmpty(tabla.Tables[0].Rows[i].ItemArray[4].ToString().Trim())) { line3DT.Add(tabla.Tables[0].Rows[i].ItemArray[0].ToString().Trim());//CONTRATO } else { line3DT.Add(tabla.Tables[0].Rows[i].ItemArray[4].ToString().Trim());//CONTRATO } if (tabla.Tables[0].Rows[i].ItemArray[2].ToString().Contains(".")) { line3DT.Add(tabla.Tables[0].Rows[i].ItemArray[2].ToString().Replace(".", ",").Trim());//SERVICIO PRINCIPAL (MRT Valor?) } else { line3DT.Add(tabla.Tables[0].Rows[i].ItemArray[2].ToString().Trim());//SERVICIO PRINCIPAL } //Tarjeta Credito if (String.IsNullOrEmpty(tabla.Tables[0].Rows[i].ItemArray[5].ToString().Trim())) { } //Nada else { line3DT.Add(tabla.Tables[0].Rows[i].ItemArray[5].ToString().Trim());//Medio Pago Aplica Sico } if (String.IsNullOrEmpty(tabla.Tables[0].Rows[i].ItemArray[6].ToString().Trim())) { } //Nada else { line3DT.Add(tabla.Tables[0].Rows[i].ItemArray[6].ToString().Trim());//Medio Pago Aplica Ventas } if (String.IsNullOrEmpty(tabla.Tables[0].Rows[i].ItemArray[7].ToString().Trim())) { } //Nada else { line3DT.Add(tabla.Tables[0].Rows[i].ItemArray[7].ToString().Trim());//Codigo Autorizacion } //--------------------------------- LineaArmada3DT = armarLineas(line3DT, ListaLinea3DT); sw.WriteLine(LineaArmada3DT); llenarTablaParaActualizados(Fecha, Contrato.ToString("dd/MM/yyyy"), IdCuentaBancoEpicor, ConsecutivoArchivo, LineaArmada3DT); line3DT.Clear(); registrosLote += 1; if (tabla.Tables[0].Rows[i].ItemArray[2].ToString().Contains(".")) { valorServicio += Convert.ToDouble(tabla.Tables[0].Rows[i].ItemArray[2].ToString().Replace(".", ",").Trim()); } else { valorServicio += Convert.ToDouble(tabla.Tables[0].Rows[i].ItemArray[2].ToString().Trim()); } LineaArmada3DT = String.Empty; } #endregion #region Armar Linea Control Lote line4CL.Add(registrosLote - 2); line4CL.Add(valorServicio); LineaArmada4CL = armarLineas(line4CL, ListaLinea4CL); sw.WriteLine(LineaArmada4CL); llenarTablaParaActualizados(Fecha, Contrato.ToString("dd/MM/yyyy"), IdCuentaBancoEpicor, ConsecutivoArchivo, LineaArmada4CL); registrosLote += 1; #endregion #region Armar Linea Control Archivo line5CA.Add(registrosLote - 3); line5CA.Add(valorServicio); LineaArmada5CA = armarLineas(line5CA, ListaLinea5CA); sw.WriteLine(LineaArmada5CA); llenarTablaParaActualizados(Fecha, Contrato.ToString("dd/MM/yyyy"), IdCuentaBancoEpicor, ConsecutivoArchivo, LineaArmada5CA); registrosLote += 1; #endregion sw.Close(); //AQUI // Invocar servicio BancoDtlArchivosProcesados pagos } catch { sw.Close(); File.Delete(Directorio + nombreArchivo); throw new System.Exception("Ocurrio un error al crear archivo plano"); } }