/// <summary> /// Metodo que devuelve una lista de pagos de la BD. /// </summary> /// <returns></returns> public static List <string> ObtenerPagosExistentes(string Fecha) { List <string> ListaPagos = new List <string>(); // Ajustar fecha a formato indicado AAAA/DD/MM DateTime dt = Convert.ToDateTime(Fecha); string Mes = (dt.Month.ToString().Length == 1) ? dt.Month.ToString().PadLeft(2, '0') : dt.Month.ToString(); string Dia = (dt.Day.ToString().Length == 1) ? dt.Day.ToString().PadLeft(2, '0') : dt.Day.ToString(); Fecha = string.Format("{0}/{1}/{2}", Dia, Mes, dt.Year.ToString()); //Fecha = string.Format("{0}/{1}/{2}", dt.Year.ToString(), Mes, Dia); // Establecer objeto de datos y consulta SAPbobsCOM.Recordset oRecordSet = Conexion_SBO.m_oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset); oRecordSet.DoQuery(FuncionesComunes.QueryPagosExistentes(Fecha)); while (!oRecordSet.EoF) { ListaPagos.Add(oRecordSet.Fields.Item(0).Value.ToString()); oRecordSet.MoveNext(); } return(ListaPagos); }
/// <summary> /// Gestiona la creación de archivo TXT para pagos masivos. /// </summary> /// <param name="Pago"></param> public static ResultMessage GestionarPagoMasivo(string Pago) { ResultMessage result = new ResultMessage(); try { // Variables. SAPbobsCOM.Recordset oRecordSet = null; string Directorio = string.Empty; string NombreBancoLocal = string.Empty; string NombreArchivo = string.Empty; string FechaDocProveedor = string.Empty; string BancoLocal = string.Empty; List <ClasePagoMasivo> listaPagos = new List <ClasePagoMasivo>(); ClasePagoMasivo objPago = null; int index = 0; // Obtener banco de destino de nomina para ejecutar pago masivo oRecordSet = Conexion_SBO.m_oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset); oRecordSet.DoQuery(FuncionesComunes.QueryObtenerBanco(Pago)); if (!oRecordSet.EoF) { BancoLocal = oRecordSet.Fields.Item(0).Value.ToString(); } else { result.Success = false; result.Mensaje = "El pago no se puede procesar"; return(result); } // Obtener información básica del pago según banco. // Santander se hace de forma distinta if (BancoLocal.Equals("037")) { oRecordSet = Conexion_SBO.m_oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset); oRecordSet.DoQuery(FuncionesComunes.QueryPagosMasivosSantander(Pago)); while (!oRecordSet.EoF) { objPago = new ClasePagoMasivo(); objPago.CuentaBcoProveedor = oRecordSet.Fields.Item(0).Value.ToString(); objPago.CodigoBcoProveedor = oRecordSet.Fields.Item(1).Value.ToString(); objPago.RutProveedor = oRecordSet.Fields.Item(2).Value.ToString(); objPago.NombreProveedor = oRecordSet.Fields.Item(3).Value.ToString(); objPago.MontoDocPRoveedor = oRecordSet.Fields.Item(4).Value.ToString(); objPago.BancoLocal = oRecordSet.Fields.Item(5).Value.ToString(); BancoLocal = oRecordSet.Fields.Item(5).Value.ToString(); objPago.NombreBancoLocal = oRecordSet.Fields.Item(6).Value.ToString(); NombreBancoLocal = oRecordSet.Fields.Item(6).Value.ToString(); objPago.Moneda = oRecordSet.Fields.Item(7).Value.ToString(); objPago.CuentaOrigen = oRecordSet.Fields.Item(8).Value.ToString(); objPago.Correo = oRecordSet.Fields.Item(9).Value.ToString(); listaPagos.Add(objPago); index++; oRecordSet.MoveNext(); } oRecordSet = null; } else { oRecordSet = Conexion_SBO.m_oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset); oRecordSet.DoQuery(FuncionesComunes.QueryPagosMasivos(Pago)); while (!oRecordSet.EoF) { objPago = new ClasePagoMasivo(); objPago.RutProveedor = oRecordSet.Fields.Item(2).Value.ToString(); objPago.NombreProveedor = oRecordSet.Fields.Item(3).Value.ToString(); objPago.CodigoBcoProveedor = oRecordSet.Fields.Item(1).Value.ToString(); objPago.CuentaBcoProveedor = oRecordSet.Fields.Item(0).Value.ToString(); objPago.TipoDocProveedor = oRecordSet.Fields.Item(7).Value.ToString(); objPago.FolioDocProveedor = oRecordSet.Fields.Item(5).Value.ToString(); DateTime dtFecha = Convert.ToDateTime(oRecordSet.Fields.Item(6).Value.ToString()); objPago.FechaDocProveedor = dtFecha.ToShortDateString(); FechaDocProveedor = dtFecha.ToShortDateString(); objPago.MontoDocPRoveedor = oRecordSet.Fields.Item(4).Value.ToString(); dtFecha = Convert.ToDateTime(oRecordSet.Fields.Item(8).Value.ToString()); objPago.FechaVctoDoc = dtFecha.ToShortDateString(); objPago.BancoLocal = oRecordSet.Fields.Item(9).Value.ToString(); BancoLocal = oRecordSet.Fields.Item(9).Value.ToString(); objPago.NombreBancoLocal = oRecordSet.Fields.Item(10).Value.ToString(); NombreBancoLocal = oRecordSet.Fields.Item(10).Value.ToString(); objPago.Moneda = oRecordSet.Fields.Item(11).Value.ToString(); objPago.CuentaOrigen = oRecordSet.Fields.Item(12).Value.ToString(); objPago.Correo = oRecordSet.Fields.Item(13).Value.ToString(); listaPagos.Add(objPago); index++; oRecordSet.MoveNext(); } oRecordSet = null; } // Generar Archivo Directorio = ConfigurationManager.AppSettings["RutaNominas"].ToString(); Directorio = string.Format("{0}{1}\\", Directorio, NombreBancoLocal); // Si no existe directorio se crea if (!Directory.Exists(Directorio)) { Directory.CreateDirectory(Directorio); } NombreArchivo = string.Format("{0}{1}.txt", Directorio, FuncionesComunes.ValidarCaracteres(Pago)); // Generar documento según banco switch (BancoLocal) { case "016": result = NominaBci.GenerarNomina(listaPagos, NombreArchivo); break; case "049": result = NominaSecurity.GenerarNomina(listaPagos, NombreArchivo); break; case "037": result = NominaSantander.GenerarNomina(listaPagos, NombreArchivo); break; case "001": result = NominaBancoDeChile.GenerarNomina(listaPagos, NombreArchivo); break; default: result.Success = false; result.Mensaje = "El banco del pago seleccionado no esta implementado"; break; } // Banco BCI if (BancoLocal.Equals("016")) { } // Banco SECURITY else if (BancoLocal.Equals("049")) { } // Banco SANTANDER else if (BancoLocal.Equals("037")) { } else { } } catch (IOException exIO) { result.Success = false; result.Mensaje = exIO.Message; } catch (Exception ex) { result.Success = false; result.Mensaje = ex.Message; } return(result); }
/// <summary> /// Genera un txt con la nomina de pago masivo para la estructura del banco BCI /// </summary> /// <param name="RutProveedor"></param> /// <param name="RznSocialProveedor"></param> /// <param name="CodigoBcoProveedor"></param> /// <param name="CuentaBcoProveedor"></param> /// <param name="TipoDocProveedor"></param> /// <param name="FolioDocProveedor"></param> /// <param name="FechaDocProveedor"></param> /// <param name="MontoDocProveedor"></param> /// <param name="NombreArchivo"></param> /// <param name="FechaVctoDoc"></param> /// <returns></returns> public static ResultMessage GenerarNomina(List <ClasePagoMasivo> listaPagos, string NombreArchivo) { ResultMessage result = new ResultMessage(); try { StreamWriter oStringWriter = null; string RutProveedor = string.Empty; string DigVerProveedor = string.Empty; string ModalidadServicio = "G"; string Unidad = string.Empty.PadLeft(5); string MedioAviso = "E"; string CodigoComuna = string.Empty.PadLeft(4, '0'); string FormaDePago = string.Empty.PadLeft(3); string CodigoOfAbono = string.Empty.PadLeft(3, '0'); string FolioRelacionado = string.Empty.PadLeft(12, '0'); string EstadoPago = "OK".PadRight(3); string Glosa = string.Empty.PadLeft(200); string RutRetirador = string.Empty.PadLeft(8); string DigVerRutRetirador = string.Empty.PadLeft(1); string ApellidoPaterno = string.Empty.PadLeft(15); string ApellidoMaterno = string.Empty.PadLeft(15); string NombresRet1 = string.Empty.PadLeft(15); string RutRetirador2 = string.Empty.PadLeft(8); string DigVerRutRetirador2 = string.Empty.PadLeft(1); string ApellidoPaterno2 = string.Empty.PadLeft(15); string ApellidoMaterno2 = string.Empty.PadLeft(15); string NombresRet2 = string.Empty.PadLeft(15); string IdentificadorDoc = "001".PadLeft(12, '0'); // Instanciar archivo, si existe lo sobreescribe. oStringWriter = new StreamWriter(NombreArchivo, false, Encoding.ASCII); foreach (ClasePagoMasivo objPago in listaPagos) { // Obtener rut y dígito verificador DigVerProveedor = objPago.RutProveedor.Substring(objPago.RutProveedor.Length - 1, 1); RutProveedor = objPago.RutProveedor.Substring(0, objPago.RutProveedor.Length - 1); if (RutProveedor.Length < 8) { RutProveedor = RutProveedor.PadLeft(8, '0'); } // Ajustar razon social objPago.NombreProveedor = objPago.NombreProveedor.PadRight(45); // Ajustar cuenta de proveedor objPago.CuentaBcoProveedor = FuncionesComunes.ValidarCaracteres(objPago.CuentaBcoProveedor); objPago.CuentaBcoProveedor = objPago.CuentaBcoProveedor.PadLeft(20, '0'); // Obtener Tipo de documento, SEGUN BANCO DEBE SER ODP //objPago.TipoDocProveedor = TipoDocumentoPalabras(objPago.TipoDocProveedor); objPago.TipoDocProveedor = "ODP"; // Ajustar folio objPago.FolioDocProveedor = objPago.FolioDocProveedor.PadLeft(12, '0'); // Ajustar monto objPago.MontoDocPRoveedor = objPago.MontoDocPRoveedor.PadLeft(11, '0'); // Obtener fecha de documento objPago.FechaDocProveedor = FuncionesComunes.ValidarCaracteres(objPago.FechaDocProveedor); objPago.FechaVctoDoc = FuncionesComunes.ValidarCaracteres(objPago.FechaVctoDoc); // Obtener forma de pago FormaDePago = FormaDePagoBCI(objPago.CodigoBcoProveedor); // Ajustar codigo de banco, si es nulo o vacio asociar a BCI if (string.IsNullOrEmpty(objPago.CodigoBcoProveedor)) { objPago.CodigoBcoProveedor = "016"; } // Ajustar correo objPago.Correo = objPago.Correo.PadLeft(35); oStringWriter.Write(ModalidadServicio); // 00 - Modalidad de servicio oStringWriter.Write(RutProveedor); // 01 - Rut del proveedor oStringWriter.Write(DigVerProveedor); // 02 . Dígito verificador del proveedor oStringWriter.Write(Unidad); // 03 - Unidad oStringWriter.Write(objPago.NombreProveedor); // 04 - Razón social proveedor oStringWriter.Write(MedioAviso); // 05 - Medio de aviso oStringWriter.Write(objPago.Correo); // 06 - Dirección de aviso oStringWriter.Write(CodigoComuna); // 07 - Código de comuna oStringWriter.Write(FormaDePago); // 08 - Forma de pago oStringWriter.Write(objPago.CodigoBcoProveedor); // 09 - Código del banco destino oStringWriter.Write(objPago.CuentaBcoProveedor); // 10 - Cuenta de abono oStringWriter.Write(CodigoOfAbono); // 11 - Código de oficina de abono oStringWriter.Write(objPago.TipoDocProveedor); // 12 - Tipo de documento oStringWriter.Write(IdentificadorDoc); // 13 - Identificador de documento oStringWriter.Write(FolioRelacionado); // 14 - Identificador documento relacionado oStringWriter.Write(objPago.MontoDocPRoveedor); // 15 - Monto informado documento oStringWriter.Write(objPago.MontoDocPRoveedor); // 16 - Monto a pago oStringWriter.Write(EstadoPago); // 17 - Estado del pago oStringWriter.Write(objPago.FechaVctoDoc); // 18 - Fecha de vencimiento documento oStringWriter.Write(objPago.FechaDocProveedor); // 19 - Fecha de pago oStringWriter.Write(Glosa); // 20 - Glosa oStringWriter.Write(RutRetirador); // 21 - Rut retirador # 1 oStringWriter.Write(DigVerRutRetirador); // 22 - Dígito verificador Rut retirador # 1 oStringWriter.Write(ApellidoPaterno); // 23 - Apeliido paterno retirador # 1 oStringWriter.Write(ApellidoMaterno); // 24 - Apellido materno retirador # 1 oStringWriter.Write(NombresRet1); // 25 - Nombre retirador # 1 oStringWriter.Write(RutRetirador2); // 26 - Rut retirador # 2 oStringWriter.Write(DigVerRutRetirador2); // 27 - Dígito verificador Rut retirador # 2 oStringWriter.Write(ApellidoPaterno2); // 28 - Apeliido paterno retirador # 2 oStringWriter.Write(ApellidoMaterno2); // 29 - Apeliido materno retirador # 2 oStringWriter.Write(NombresRet2); // 30 - Nombre retirador # 2 // Salto de linea nuevo pago oStringWriter.Write(oStringWriter.NewLine); } oStringWriter.Close(); oStringWriter.Dispose(); result.Success = true; result.Mensaje = string.Format("Nomina generada en : {0}", NombreArchivo); } catch (Exception ex) { result.Success = true; result.Mensaje = ex.Message + ex.Source; } return(result); }