示例#1
0
        public static void ValidarRestriccionesDeOperacion(OperacionEntity operacion, ref LimitesPorPersonaEntity limiteComprador, ref LimitesPorPersonaEntity limiteVendedor)
        {
            //Buscar reglas de limites.
            limiteComprador = CachingManager.Instance.GetUsuariosLimiteByIdUsuario(operacion.IdPersonaComprador, "C");
            limiteVendedor  = CachingManager.Instance.GetUsuariosLimiteByIdUsuario(operacion.IdPersonaVendedor, "V");

            if (limiteComprador == null && limiteVendedor == null)
            {
                return;
            }

            //Verifica que los usr no esten bloqueados
            if (limiteComprador != null)
            {
                ValidarUsrBloqueado(operacion.IdPersonaComprador, operacion.FechaOperacion, "C");
                //ValidarTopes
                ValidarTopes(operacion.Cantidad, limiteComprador);
            }

            if (limiteVendedor != null)
            {
                ValidarUsrBloqueado(operacion.IdPersonaVendedor, operacion.FechaOperacion, "V");
                //ValidarTopes
                ValidarTopes(operacion.Cantidad, limiteVendedor);
            }
        }
示例#2
0
 public ActionResult PagarTributo(FormCollection collection)
 {
     try
     {
         ClienteEntity item    = Session[BaseController.USERSESSIONNAME] as ClienteEntity;
         string        url     = Url.Content("~") + BaseController.DEFAULTINDEX;
         var           ddl     = Request.Form["Opcion"];
         TributoEntity tributo = new TributoEntity();
         tributo.idTributo = Request.Form["hdnIdTributo"];
         tributo.monto     = Convert.ToDouble(Request.Form["txtMonto"]);
         tributo.estado    = Request.Form["hdnEstado"];
         tributo.tipo      = Request.Form["hdnTipo"];
         OperacionEntity operacion = new OperacionEntity();
         operacion.numeroCuentaRetiro = Request.Form["hdnTipo"];
         operacion.cliente            = new ClienteEntity();
         operacion.cliente.idCliente  = item.idCliente;
         operacion.monto = Convert.ToDouble(Request.Form["txtMonto"]);
         operacion.numeroCuentaRetiro = ddl;
         int value = new Service().Pagar(tributo, operacion);
         if (value != 0)
         {
             url = Url.Content("~") + BaseController.DEFAULTINDEX2;
         }
         return(new RedirectResult(url));
     }
     catch (Exception ex)
     {
         this.ViewBag.Message = ex.Message;
         return(new RedirectResult(Url.Content("~") + BaseController.DEFAULTINDEX2));
     }
 }
        public override ExecutionResult ExecuteCommand(InCourseRequest inCourseRequest)
        {
            List <OperacionEntity> OperacionesGeneradas = new List <OperacionEntity>();

            foreach (Operacion o in operaciones)
            {
                OperacionEntity oe = new OperacionEntity();

                oe.NroOperacion       = DateTime.Now.ToString("yyMMddHHmmss");
                oe.CompraVenta        = o.CompraOVenta;
                oe.IdPersonaComprador = oe.CompraVenta == "C" ? MAEUserSession.Instancia.IdPersona : CachingManager.Instance.GetPadreByIdHijo(MAEUserSession.Instancia.IdPersona).IdParty;
                oe.IdPersonaVendedor  = oe.CompraVenta == "C" ?  CachingManager.Instance.GetPadreByIdHijo(MAEUserSession.Instancia.IdPersona).IdParty : MAEUserSession.Instancia.IdPersona;
                oe.Cantidad           = o.Cantidad;
                oe.Precio             = PizarrasDAL.ObtenerPrecioActual(CachingManager.Instance.GetMonedaByCodigoISO(o.CodigoMonedaISO).IdMoneda, oe.CompraVenta);
                oe.Monto          = o.Cantidad * oe.Precio;
                oe.FechaOperacion = DateTime.Now;
                oe.IdMonedaCompra = oe.CompraVenta == "C" ? CachingManager.Instance.GetMonedaByCodigoISO(o.CodigoMonedaISO).IdMoneda : CachingManager.Instance.GetAllMonedas().Find(x => x.EsMonedaNacional == true).IdMoneda;
                oe.IdMonedaVenta  = oe.CompraVenta == "C" ? CachingManager.Instance.GetAllMonedas().Find(x => x.EsMonedaNacional == true).IdMoneda : CachingManager.Instance.GetMonedaByCodigoISO(o.CodigoMonedaISO).IdMoneda;

                oe.TimestampSaldoComprador = SaldosDAL.ObtenerUltimaActualizacionSaldo(oe.IdMonedaVenta, oe.CompraVenta == "C" ? oe.IdPersonaComprador : oe.IdPersonaVendedor);
                oe.TimestampSaldoVendedor  = SaldosDAL.ObtenerUltimaActualizacionSaldo(oe.IdMonedaCompra, oe.CompraVenta == "C" ? oe.IdPersonaVendedor : oe.IdPersonaComprador);// GetUltimaActualizacion(o.TimestampSaldoVendedor);

                OperacionesGeneradas.Add(oe);
            }


            return(ExecutionResult.ReturnInmediatelyAndQueueOthers(ProcesamientoGenerica(ConcertarOperacion, OperacionesGeneradas)));
        }
示例#4
0
        public static void ValidarTopes(OperacionEntity operacion)
        {
            //decimal importeSaldo = 0;

            //UsuariosLimitesDiariosEntity
            //    importeSaldo = SaldosDAL.ObtenerImporteSaldo(m.IdPersona, m.IdMoneda);
            //    if (m.Importe > importeSaldo)
            //        throw new M4TraderApplicationException(CodigosMensajes.FE_CAMBIO_ULTIMA_ACTUALIZACION, "Error saldo insuficiente para realizar la operación");
        }
        public static List <MovimientosSaldos> CrearMovimimientosComisiones(OperacionEntity operacion)
        {
            List <MovimientosSaldos> movimimientoSaldos = new List <MovimientosSaldos>();

            //movimimientoSaldos.AddRange(CrearMovimientosCreditos(operacion, operacion.CompraVenta == "C"));
            //movimimientoSaldos.AddRange(CrearMovimientosDebitos(operacion, operacion.CompraVenta == "C"));

            //LoggingHelper.Instance.AgregarLog(new LogBitacoraOperacionEntity(operacion.IdOperacion, LogCodigoAccion.CrearMovimientoSaldo, "Se crean los movimientos de la operacion Nro:" + operacion.NroOperacion));

            return(movimimientoSaldos);
        }
示例#6
0
        public static void CrearRestricciones(OperacionEntity operacion, LimitesPorPersonaEntity limite)
        {
            List <SqlParameter> lista = new List <SqlParameter>();

            lista.Add(SqlServerHelper.GetParam("@FechaOperacion", operacion.FechaOperacion));
            lista.Add(SqlServerHelper.GetParam("@Tope", limite.Tope));
            lista.Add(SqlServerHelper.GetParam("@TipoOperacion", limite.TipoOperacion));
            lista.Add(SqlServerHelper.GetParam("@IdPersona", limite.IdPersona));
            lista.Add(SqlServerHelper.GetParam("@IdTiempoLimite", limite.IdTiempoLimite));

            SqlServerHelper.ExecuteNonQuery("[orden_owner].[OPE_CrearRestricciones]", lista);
        }
        private static List <MovimientosSaldos> CrearMovimientosDebitos(OperacionEntity operacion, bool esCompra)
        {
            List <MovimientosSaldos> movimientoSaldos = new List <MovimientosSaldos>();

            MovimientosSaldos movDebito = new MovimientosSaldos();

            if (esCompra)
            {
                movDebito.IdTipoMovimiento = ObtenerTipoMovimiento(false);
                movDebito.IdMoneda         = operacion.IdMonedaVenta;
                movDebito.IdPersona        = operacion.IdPersonaComprador;
                movDebito.Importe          = operacion.Monto;
                movDebito.ImpactoEnSaldo   = false;
                movDebito.IdEstado         = (int)TipoEstadoMovimiento.aprobada;
                movimientoSaldos.Add(movDebito);

                movDebito = new MovimientosSaldos();
                movDebito.IdTipoMovimiento = ObtenerTipoMovimiento(false);
                movDebito.IdMoneda         = operacion.IdMonedaCompra;
                movDebito.IdPersona        = operacion.IdPersonaVendedor;
                movDebito.Importe          = operacion.Cantidad;
                movDebito.ImpactoEnSaldo   = false;
                movDebito.IdEstado         = (int)TipoEstadoMovimiento.aprobada;
                movimientoSaldos.Add(movDebito);
            }
            else
            {
                movDebito.IdTipoMovimiento = ObtenerTipoMovimiento(false);
                movDebito.IdMoneda         = operacion.IdMonedaVenta;
                movDebito.IdPersona        = operacion.IdPersonaVendedor;
                movDebito.Importe          = operacion.Cantidad;
                movDebito.ImpactoEnSaldo   = false;
                movDebito.IdEstado         = (int)TipoEstadoMovimiento.aprobada;
                movimientoSaldos.Add(movDebito);

                movDebito = new MovimientosSaldos();
                movDebito.IdTipoMovimiento = ObtenerTipoMovimiento(false);
                movDebito.IdMoneda         = operacion.IdMonedaCompra;
                movDebito.IdPersona        = operacion.IdPersonaComprador;
                movDebito.Importe          = operacion.Monto;
                movDebito.ImpactoEnSaldo   = false;
                movDebito.IdEstado         = (int)TipoEstadoMovimiento.aprobada;
                movimientoSaldos.Add(movDebito);
            }
            return(movimientoSaldos);
        }
示例#8
0
        public int Pagar(TributoEntity item, OperacionEntity operacion)
        {
            int value = 0;

            try
            {
                string datos  = JsonConvert.SerializeObject(item);
                string json   = this.ServicPost(datos, "http://localhost:8888/api/enviar");
                string datos2 = JsonConvert.SerializeObject(operacion);
                string json2  = this.ServicPost(datos2, "http://localhost:8080/api/retiro");
                value = 1;
            }
            catch (Exception)
            {
                value = 0;
            }
            return(value);
        }
示例#9
0
        public static void CrearOperacion(OperacionEntity operacion)
        {
            List <SqlParameter> lista = new List <SqlParameter>();


            lista.Add(SqlServerHelper.GetParam("@IdPersonaComprador", operacion.IdPersonaComprador));
            lista.Add(SqlServerHelper.GetParam("@IdPersonaVendedor", operacion.IdPersonaVendedor));
            lista.Add(SqlServerHelper.GetParam("@Cantidad", operacion.Cantidad));
            lista.Add(SqlServerHelper.GetParam("@Monto", operacion.Monto));
            lista.Add(SqlServerHelper.GetParam("@Precio", operacion.Precio));
            lista.Add(SqlServerHelper.GetParam("@NroOperacion", operacion.NroOperacion));
            lista.Add(SqlServerHelper.GetParam("@FechaOperacion", operacion.FechaOperacion));
            lista.Add(SqlServerHelper.GetParam("@IdMonedaCompra", operacion.IdMonedaCompra));
            lista.Add(SqlServerHelper.GetParam("@IdMonedaVenta", operacion.IdMonedaVenta));
            SqlParameter IdOperacion = SqlServerHelper.GetParamIntOuput("@IdPropietario");

            lista.Add(IdOperacion);

            SqlServerHelper.ExecuteNonQuery("[orden_owner].[OPE_CrearOperacion]", lista);
            operacion.IdOperacion = (int)IdOperacion.Value;
        }
 private string ConcertarOperacion(OperacionEntity operacion)
 {
     return(OperacionHelper.ConcertarOperacion(operacion));
 }
示例#11
0
        public static string ConcertarOperacion(OperacionEntity operacion)
        {
            List <MovimientosSaldos> movimientosSaldo = new List <MovimientosSaldos>();

            LimitesPorPersonaEntity limiteComprador = new LimitesPorPersonaEntity();
            LimitesPorPersonaEntity limiteVendedor  = new LimitesPorPersonaEntity();

            ValidarRestriccionesDeOperacion(operacion, ref limiteComprador, ref limiteVendedor);

            //Generar movimiento Saldo
            movimientosSaldo = TransaccionesHelper.CrearMovimimientosSaldos(operacion);

            movimientosSaldo.AddRange(TransaccionesHelper.CrearMovimimientosComisiones(operacion));

            //ValidoSaldos
            ValidarSaldos(movimientosSaldo.Where(x => x.IdTipoMovimiento == TipoMovimientos.MonedaDebito).ToList());

            //Insertar operacion y movimientos e impacto en saldos
            using (ReadCommittedTransactionScope ts = new ReadCommittedTransactionScope())
            {
                MovimientosSaldos movDebitoComprador = movimientosSaldo.Where(x => x.IdTipoMovimiento == TipoMovimientos.MonedaDebito && x.IdPersona == operacion.IdPersonaComprador).FirstOrDefault();
                MovimientosSaldos movDebitoVendedor  = movimientosSaldo.Where(x => x.IdTipoMovimiento == TipoMovimientos.MonedaDebito && x.IdPersona == operacion.IdPersonaVendedor).FirstOrDefault();

                byte[] ultimaactualizacionsaldocomprador = SaldosDAL.ObtenerUltimaActualizacionSaldo(movDebitoComprador.IdMoneda, movDebitoComprador.IdPersona);
                byte[] ultimaactualizacionsaldovendedor  = SaldosDAL.ObtenerUltimaActualizacionSaldo(movDebitoVendedor.IdMoneda, movDebitoVendedor.IdPersona);

                CheckConcurrenciaSaldo(ultimaactualizacionsaldocomprador, operacion.CompraVenta == "C" ? operacion.TimestampSaldoComprador : operacion.TimestampSaldoVendedor);
                CheckConcurrenciaSaldo(ultimaactualizacionsaldovendedor, operacion.CompraVenta == "C" ? operacion.TimestampSaldoVendedor : operacion.TimestampSaldoComprador);

                OperacionesDAL.CrearOperacion(operacion);
                movimientosSaldo = movimientosSaldo.Select(c => { c.IdPropietario = operacion.IdOperacion; return(c); }).ToList();
                SaldosDAL.GenerarMovimientos(movimientosSaldo);
                SaldosDAL.ActualizarSaldos(movimientosSaldo);

                if (limiteComprador != null)
                {
                    OperacionesDAL.CrearRestricciones(operacion, limiteComprador);
                }

                if (limiteComprador != null)
                {
                    OperacionesDAL.CrearRestricciones(operacion, limiteVendedor);
                }

                ts.Complete();
            }


            NotificacionesEntity noti = new NotificacionesEntity();

            noti.Fecha                 = DateTime.Now;
            noti.IdDestinatario        = operacion.IdPersonaComprador;
            noti.IdTipoNotificacion    = (byte)TipoNotificacionesMensajeria.Successfully;
            noti.IdSubTipoNotificacion = (byte)SubTipoNotificacionesMensajeria.OperacionRealizada;
            noti.Leido                 = false;
            noti.Mensaje               = string.Format("Se registro la operación {0} de forma satisfactoaria e impacto en Saldos ", operacion.NroOperacion);
            NotificacionesHelperService.Instance.EnQueueMessage(noti);


            LoggingHelper.Instance.AgregarLog(new LogBitacoraOperacionEntity(operacion.IdOperacion, LogCodigoAccion.CrearOperacion, "Creación de la Operacion Nro:" + operacion.NroOperacion));
            MessageHelper.InformarNuevoMensaje(operacion.IdPersonaComprador, TipoNotificacionesMensajeria.Successfully.ToString(), SubTipoNotificacionesMensajeria.OperacionRealizada.ToString(), "Se registro la operación de forma satisfactoaria e impacto en Saldos: " + operacion.NroOperacion, DateTime.Now);
            return("Se registro la operación de forma satisfactoaria e impacto en Saldos: " + operacion.NroOperacion);
        }