예제 #1
0
        public override ExecutionResult ExecuteCommand(InCourseRequest inCourseRequest)
        {
            OrdenEntity ordenEspejo = OrdenHelper.ObtenerOrdenbyID(IdOrden);
            OrdenEntity orden       = CrearOrdenDesdeEspejo(ordenEspejo);

            orden.IdUsuario = MAEUserSession.InstanciaCargada ? (int?)MAEUserSession.Instancia.IdUsuario : null;
            Response resultado = new Response();

            resultado.Resultado = eResult.Ok;
            OrdenHelper.AltaOrdenDMA(orden);
            resultado.Detalle = JsonConvert.SerializeObject(orden);
            return(ExecutionResult.ReturnInmediatelyAndQueueOthers(resultado));
        }
예제 #2
0
        public OrdenEntity CreateOrder()
        {
            bool existeOrden = OrdenHelper.CheckOrdenActivaEnMercadoByIdProducto(IdProducto);

            if (Tasa != 0 && !existeOrden)
            {
                OrdenEntity    orden = new OrdenEntity();
                ProductoEntity p     = CachingManager.Instance.GetProductoById(IdProducto);

                orden.CompraVenta         = "V";
                orden.FechaConcertacion   = DateTime.Now.ToUniversalTime();
                orden.IdMercado           = 1;
                orden.IdProducto          = IdProducto;
                orden.IdMoneda            = p.IdMoneda;
                orden.IdPersona           = IdEmpresa;
                orden.IdEnNombreDe        = null;
                orden.Cantidad            = (decimal)PrecioReferencia;
                orden.IdSourceApplication = (byte)SourceEnum.Web;
                orden.PrecioLimite        = Tasa;
                orden.IdTipoOrden         = 1;
                orden.Plazo          = (byte)PlazoOrdenEnum.ContadoInmediato;
                orden.IdEstado       = (int)EstadoOrden.Ingresada;
                orden.IdTipoVigencia = TipoVigencia.NoAplica;
                orden.Rueda          = p.Rueda;
                orden.Tasa           = Tasa;
                orden.IdUsuario      = MAEUserSession.InstanciaCargada ? (int?)MAEUserSession.Instancia.IdUsuario : null;
                if (p.IdTipoProducto == (byte)TiposProducto.FACTURAS)
                {
                    orden.OperoPorTasa   = true;
                    orden.CantidadMinima = orden.Cantidad;
                }


                try
                {
                    OrdenHelper.AltaOrdenDMA(orden);

                    string key = orden.GetProductKey();
                    OrdenHelper.NotificarAsociacionProductoPortfolio(p, orden.Valorizacion, key, IdPersonas, IdEmpresa, portfolio, orden.IdMercado);
                }
                catch (Exception e)
                {
                    throw new M4TraderApplicationException(e.Message);
                }
                return(orden);
            }
            return(null);
        }
        public override ExecutionResult ExecuteCommand(InCourseRequest inCourseRequest)
        {
            if (OrdenHelper.ObtenerOrdenOperacionByProducto(IdProducto.Value))
            {
                throw new M4TraderApplicationException("Ya se cerró una orden para este producto");
            }

            OrdenEntity orden = new OrdenEntity();

            orden.CompraVenta       = CompraOVenta;
            orden.FechaConcertacion = DateTime.Now.ToUniversalTime();

            orden.IdMercado = IdMercado;
            ProductoEntity producto = new ProductoEntity();

            if (CodigoProducto != null)
            {
                producto = CachingManager.Instance.GetProductoByCodigoMonedaDefaultAndRueda(CodigoProducto, orden.IdMercado, SegmentMarketId);
            }
            else
            {
                producto = CachingManager.Instance.GetProductoById(IdProducto.Value);
            }
            orden.IdProducto          = producto.IdProducto;
            orden.IdMoneda            = IdMoneda.HasValue ? IdMoneda.Value : producto.IdMoneda;
            orden.Rueda               = SegmentMarketId;
            orden.IdPersona           = IdPersona.HasValue ? IdPersona.Value : MAEUserSession.Instancia.IdPersona;
            orden.IdEnNombreDe        = IdEnNombreDe;
            orden.Cantidad            = Cantidad;
            orden.CantidadMinima      = OfertaParcial ? CantidadMinima : Cantidad;
            orden.IdSourceApplication = (byte)Source;
            orden.IdEstado            = (int)EstadoOrden.Ingresada;
            orden.OperoPorTasa        = OperoPorTasa;
            orden.Tasa      = Tasa;
            orden.IdUsuario = MAEUserSession.InstanciaCargada ? (int?)MAEUserSession.Instancia.IdUsuario : null;
            if (!StopType)
            {
                orden.PrecioLimite = PrecioLimite;
            }

            if (CodigoPlazoType == "")
            {
                CodigoPlazoType = "CI";
            }

            orden.Plazo = PlazoType.HasValue ? PlazoType.Value : CachingManager.Instance.GetAllPlazos().Find(x => x.Descripcion == CodigoPlazoType).IdPlazo;
            //if (orden.Plazo == (byte)PlazoOrdenEnum.Futuro)
            //{
            //    orden.FechaLiquidacion = CachingManager.Instance.GetFechaLiquidacionByIdProductoAndPlazo(orden.Plazo, orden.IdProducto).FechaLiquidacion;
            //}
            orden.IdTipoVigencia = IdTipoVigencia.HasValue ? (TipoVigencia)IdTipoVigencia.Value : TipoVigencia.NoAplica;

            if (orden.IdTipoVigencia != TipoVigencia.NoAplica)
            {
                orden.FechaVencimiento = FechaVencimiento;
            }

            if (OrderType == "")
            {
                OrderType = "0";
            }

            if (producto.IdTipoProducto == (byte)TiposProducto.FACTURAS)
            {
                OrderType            = "3";
                orden.OperoPorTasa   = true;
                orden.Tasa           = Tasa;
                orden.CantidadMinima = orden.Cantidad;
            }
            TipoOrdenEntity tipoOrden = CachingManager.Instance.GetTipoOrdenByCodigo(OrderType);

            if (tipoOrden != null)
            {
                orden.IdTipoOrden = tipoOrden.IdTipoOrden;
            }
            ResponseGenerico resultado = new ResponseGenerico();

            ordenes = new List <OrdenEntity>();
            ordenes.Add(orden);

            resultado.Resultado = (byte)eResult.Ok;
            OrdenHelper.AltaOrdenDMA(orden);
            orden.TimestampStr = BitConverter.ToString(orden.Timestamp, 0);
            resultado.Detalle  = JsonConvert.SerializeObject(orden);
            return(ExecutionResult.ReturnInmediatelyAndQueueOthers(resultado));
        }