Beispiel #1
0
        public void RevertirTributacion(int idFondo, DateTime fechaProceso, string usuario, string tipoProceso)
        {
            AtribucionDA   atribucionDA           = new AtribucionDA();
            SqlConnection  conTributacion         = atribucionDA.GetConnection2();
            SqlTransaction transaccionTributacion = null;

            try
            {
                conTributacion.Open();
                transaccionTributacion = conTributacion.BeginTransaction(IsolationLevel.ReadUncommitted);
                atribucionDA.RevertirTributacion(idFondo, fechaProceso, usuario, tipoProceso, conTributacion, transaccionTributacion);
                transaccionTributacion.Commit();
            }
            catch (Exception ex)
            {
                transaccionTributacion.Rollback();
                throw ex;
            }
            finally
            {
                transaccionTributacion.Dispose();
                conTributacion.Close();
                conTributacion.Dispose();
            }
        }
        /// <summary>
        /// Ejecuta la reversión del precierre
        /// </summary>
        /// <param name="idFondo">Fondo que se desea revertir</param>
        /// <param name="fecha">Fecha de reversión</param>
        /// <param name="usuario">Usuario responsable de la reversión</param>
        /*INI 10110*/
        /// <param name="motivo">Motivo de la reversión</param>
        //public void RevertirPrecierre(int idFondo,DateTime fecha, string usuario)
        public void RevertirPrecierre(int idFondo, DateTime fecha, string usuario, string motivo)
        /*FIN 10110*/
        {
            ReversionDA da = new ReversionDA();
            /*INICIO 8844*/
            AtribucionDA atribucionDA = new AtribucionDA();

            /*FIN 8844*/

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

            //OT 7968 INI
            ReversionDA daDepositos = new ReversionDA();

            daDepositos.Database = INGFondos.Constants.Conexiones.BaseDeDatosBancos;
            daDepositos.Server   = INGFondos.Constants.Conexiones.ServidorBancos;
            //OT 7968 FIN

            SqlConnection cn = da.GetConnection2();

            //OT 7968 INI
            //SqlConnection cnDepositos = daDepositos.GetConnection2();
            SqlConnection cnDepositos = daDepositos.GetConnection2();
            //OT 7968 FIN

            //INICIO OT8844
            SqlConnection cnTributacion = atribucionDA.GetConnection2();

            cnTributacion.Open();
            SqlTransaction transTributacion = cnTributacion.BeginTransaction(IsolationLevel.ReadUncommitted);

            //FIN OT8844

            cn.Open();

            //OT 7968 INI
            cnDepositos.Open();
            //OT 7968 FIN

            SqlTransaction trans = cn.BeginTransaction();

            //OT 7968 INI
            SqlTransaction transDepositos = cnDepositos.BeginTransaction();

            //OT 7968 FIN

            try
            {
                //OT 8292 INI

                //da.RevertirPrecierre(cn, trans, idFondo, fecha, usuario);

                /*INI 10110*/
                //decimal idPrecierre = da.RevertirPrecierre(cn, trans, idFondo, fecha, usuario);
                decimal idPrecierre = da.RevertirPrecierre(cn, trans, idFondo, fecha, usuario, motivo);
                /*FIN 10110*/

                //OT 8292 FIN

                da.EjecutarReversionExcesos(idFondo, fecha, usuario, cn, trans);
                // 7370 - PSC001
                da.EjecutarReversionRescatesSignificativos(idFondo, fecha, usuario, cn, trans);
                // 7370 - PSC001

                //OT 7968 INI

                //OT 8292 INI

                //daDepositos.EjecutarReversionDepositos(cnDepositos, transDepositos, idFondo, fecha, usuario);
                daDepositos.EjecutarReversionDepositos(cnDepositos, transDepositos, idFondo, fecha, idPrecierre, usuario);

                //OT 8292 FIN

                //OT 7968 FIN

                //INICIO OT8844
                if (fecha.Year < fecha.AddDays(1).Year) // Si al día siguiente es otro año
                {
                    atribucionDA.RevertirTributacion(idFondo, fecha, usuario, "S", cnTributacion, transTributacion);
                }
                atribucionDA.RevertirTributacion(idFondo, fecha, usuario, "D", cnTributacion, transTributacion);
                transTributacion.Commit();
                //FIN OT8844
                trans.Commit();

                //OT 7968 INI
                transDepositos.Commit();
                //OT 7968 FIN
            }
            catch (Exception e)
            {
                trans.Rollback();

                //OT 7968 INI
                transDepositos.Rollback();
                //OT 7968 FIN

                throw e;
            }
            finally
            {
                trans.Dispose();
                cn.Close();

                //OT 7968 INI
                transDepositos.Dispose();
                cnDepositos.Close();
                //OT 7968 FIN
            }
        }
Beispiel #3
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();
            }
        }