예제 #1
0
        /// <summary>
        /// Retorna DataSet con la tabla LISTA que contiene los tipo fondo y la tabla FONDO
        /// que obtiene la lista de fondos con su fecha de precierre, valor cuota y si se ha ejecutado el
        /// proceso tributario.
        /// </summary>
        public DataSet obtenerFondos()
        {
            DataSet ds = new DataSet();

            FondoDA da = new FondoDA();

            ds.Tables.Add(da.ObtenerLista("TIPFON"));

            DataTable fondo = da.ObtenerFondosPrecierre();
            /*INICIO 8844*/
            TablaGeneralDA tgDa = new TablaGeneralDA();
            DataTable      dtFondosInversiones = tgDa.ListarTablaGeneral(ConstantesING.CODIGO_TABLA_FONDOS_INVERSIONES);

            /*FIN 8844*/

            if (da.obtenerParametroXCodigo("GENERAR_RETENCIONES").Equals("S"))
            {
                foreach (DataRow rw in fondo.Rows)
                {
                    //OT 4792 PSC2 Inicio------------------------------------------------------

                    /*da.Database = INGFondos.Constants.Conexiones.BaseDeDatosTributacion;
                     * da.Server = INGFondos.Constants.Conexiones.ServidorTributacion;*/
                    //OT 4792 PSC2 Fin---------------------------------------------------------

                    //rw["FLAG_EJECUTO_TRIBUTACION"] = da.verificarTributacionEjecutada(Int32.Parse(rw["ID_FONDO"].ToString()),Convert.ToDateTime(rw["FECHA_PRECIERRE"].ToString()))?"S":"N";
                    /*rw["FLAG_EJECUTO_TRIBUTACION"] = da.verificarTributacionEjecutada(Convert.ToInt32(rw["ID_FONDO"].ToString()),Convert.ToDateTime(rw["FECHA_PRECIERRE"]))?"S":"N";*/


                    da.Database = INGFondos.Constants.Conexiones.BaseDeDatosOperaciones;
                    da.Server   = INGFondos.Constants.Conexiones.ServidorOperaciones;

                    int resultado = 0;
                    resultado = da.ObtenerCantidadOperacionesTipoFlu(Convert.ToInt32(rw["ID_FONDO"].ToString()), Convert.ToDateTime(rw["FECHA_PRECIERRE"].ToString()));


                    if (resultado == 0)//!= null && pagoCupon.Equals("S"))
                    {
                        //OT 4792 PSC2 Inicio------------------------------------------------------
                        da.Database = INGFondos.Constants.Conexiones.BaseDeDatosTributacion;
                        da.Server   = INGFondos.Constants.Conexiones.ServidorTributacion;
                        //OT 4792 PSC2 Fin---------------------------------------------------------

                        //rw["FLAG_EJECUTO_TRIBUTACION"] = da.verificarTributacionEjecutada(Convert.ToInt32(rw["ID_FONDO"].ToString()), Convert.ToDateTime(rw["FECHA_PRECIERRE"])) ? "S" : "S";
                        rw["FLAG_EJECUTO_TRIBUTACION"] = "S";
                    }
                    else
                    {
                        //OT 4792 PSC2 Inicio------------------------------------------------------
                        da.Database = INGFondos.Constants.Conexiones.BaseDeDatosTributacion;
                        da.Server   = INGFondos.Constants.Conexiones.ServidorTributacion;
                        //OT 4792 PSC2 Fin---------------------------------------------------------
                        //rw["FLAG_EJECUTO_TRIBUTACION"] = da.verificarTributacionEjecutada(Int32.Parse(rw["ID_FONDO"].ToString()),Convert.ToDateTime(rw["FECHA_PRECIERRE"].ToString()))?"S":"N";
                        rw["FLAG_EJECUTO_TRIBUTACION"] = da.verificarTributacionEjecutada(Convert.ToInt32(rw["ID_FONDO"].ToString()), Convert.ToDateTime(rw["FECHA_PRECIERRE"])) ? "S" : "N";
                    }
                    /*INICIO 8844: Se obtienen los datos tributarios. No se incluyó en el método anterior porque la idea es que ya no se verifique la atribucion ejecutada.*/
                    DataRow[] dr = dtFondosInversiones.Select("LLAVE_TABLA = '" + rw["ID_FONDO"].ToString() + "'");
                    if (dr.Length == 1)
                    {
                        string   descripcionLarga = dr[0]["DESCRIPCION_LARGA"].ToString().Trim();
                        string[] portafolioSerie  = descripcionLarga.Split("|".ToCharArray());

                        rw["PORTAFOLIO"] = dr[0]["DESCRIPCION_CORTA"].ToString().Trim();
                        rw["SERIE"]      = portafolioSerie.Length == 2 ? portafolioSerie[1] : "";
                    }
                    /*FIN 8844*/
                }
            }
            ds.Tables.Add(fondo);

            return(ds);
        }
예제 #2
0
        public string GenerarAtribucionPrecierre(int idFondo, DateTime fechaProceso, string usuario, bool blnProAlterno, string desFondo, string tipoAcceso)
        {
            AtribucionDA           atribucionDA           = new AtribucionDA();
            ValorCuotaDA           valorCuotaDA           = new ValorCuotaDA();
            ConsultaContabilidadDA consultaContabilidadDA = new ConsultaContabilidadDA();

            SqlConnection  conTributacion         = atribucionDA.GetConnection2();
            SqlTransaction transaccionTributacion = null;

            try
            {
                conTributacion.Open();
                transaccionTributacion = conTributacion.BeginTransaction(IsolationLevel.ReadUncommitted);

                DataTable dtValorCuota = valorCuotaDA.obtenerValorCuota(fechaProceso.ToString("yyyy-MM-dd"), idFondo);

                decimal valorCuota = Convert.ToDecimal(dtValorCuota.Rows[0]["VALOR_CUOTA"]);

                DataTable tipoCambio = consultaContabilidadDA.ObtenerTipoCambioContable(fechaProceso);
                if (tipoCambio.Rows.Count == 0)
                {
                    throw new Exception("No se ha registrado el tipo de cambio para la fecha " + fechaProceso.ToString("dd/MM/yyyy"));
                }
                else
                {
                    if (Convert.ToDecimal(tipoCambio.Rows[0]["VENSBS"]) == 1)
                    {
                        throw new Exception("El tipo de cambio para la fecha " + fechaProceso.ToString("dd/MM/yyyy") + " tiene valor 1.");
                    }
                }

                TablaGeneralDA mantenimientoDA = new TablaGeneralDA();
                DataTable      dtTipoCalculo;
                dtTipoCalculo = mantenimientoDA.ListarTablaGeneral(ConstantesING.CODIGO_TABLA_TIPO_CALCULO);

                DataRow drTipoCalculo = dtTipoCalculo.Rows[0];
                string  tipoCalculo   = drTipoCalculo["DESCRIPCION_LARGA"].ToString();

                DataTable dtTipoAccesoCalculo;
                dtTipoAccesoCalculo = mantenimientoDA.ListarTablaGeneral(ConstantesING.CODIGO_TABLA_TIPO_ACCESO_FONDO);

                string tipoAcceso1;
                string tipoAccesoCalculo = "";

                foreach (DataRow dato in dtTipoAccesoCalculo.Rows)
                {
                    tipoAcceso1 = dato["LLAVE_TABLA"].ToString();
                    if (tipoAcceso1.Equals(tipoAcceso))
                    {
                        tipoAccesoCalculo = dato["DESCRIPCION_CORTA"].ToString();
                    }
                }

                /*Se comenta codigo temporalmente para no tener que implementar hasta que se implemente para fondos privados
                 * if (tipoCalculo == "PEPS" || tipoAccesoCalculo == "ANTIGUO")
                 * {
                 *  if (!blnProAlterno)
                 *  {
                 *      if (!ExistenDifereciasVC(fechaProceso, idFondo))
                 *      {
                 *          throw new Exception("Existen diferencias entre los Valores Cuota de Tributación y Operaciones para la fecha y fondo indicados.");
                 *      }
                 *  }
                 *  //////////////////////////////////////////////////////////////////////////////
                 *  Int32 iCantReg = procesoDA.RegistrosRentabilidad(idFondo.ToString(), fechaProceso, dbTributacion);
                 *  if (iCantReg <= 0)
                 *  {
                 *      if (blnProAlterno)
                 *      {
                 *          procesoDA.RegistrarRentabilidadAlterno(desFondo, fechaProceso, usuario, dbTributacion, transaccionTributacion);
                 *          procesoDA.ActualizarDatosArchivo(fechaProceso, desFondo, usuario, dbTributacion, transaccionTributacion);
                 *      }
                 *      else
                 *      {
                 *          throw new Exception("No se ha cargado el archivo de Rentabilidad MIDAS del día " + fechaProceso.ToString("dd/MM/yyyy") + " para este Fondo.");
                 *      }
                 *  }
                 * }
                 */

                atribucionDA.GenerarTributacionPrecierre(idFondo, fechaProceso, usuario, valorCuota, tipoAcceso, conTributacion, transaccionTributacion);
                transaccionTributacion.Commit();

                return(tipoAccesoCalculo);
            }
            catch (Exception ex)
            {
                transaccionTributacion.Rollback();
                throw ex;
            }
            finally
            {
                transaccionTributacion.Dispose();
                conTributacion.Close();
                conTributacion.Dispose();
            }
        }