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