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)); }
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)); }