Пример #1
0
        private string DistribuirPorEstado(Order order)
        {
            OrdenEntity orden = null;

            if (Source == SourceEnum.Api)
            {
                orden = OrdenHelper.DesbloquearOrden(order.IdOrden, Source);
            }
            if (Source == SourceEnum.ComplementoDMA)
            {
                orden = OrdenHelper.ObtenerOrdenbyNumeroOrdenInterno(order.IdOrden);
                order.NumeroOrdenMercado = orden.NumeroOrdenMercado;
                order.NumeroOrdenInterno = orden.NumeroOrdenInterno;
            }
            else
            {
                orden = OrdenHelper.ObtenerOrdenbyID(order.IdOrden);
            }
            switch (orden.IdEstado)
            {
            case (int)EstadoOrden.Ingresada:
                return(CancelarOrden(orden, GetUltimaActualizacion(order.Timestamp)));

            case (int)EstadoOrden.EnMercado:
            case (int)EstadoOrden.Aplicada:
                //case (int)EstadoOrden.AplicadaParcial:
                return(CancelarOrdenMercado(orden, GetUltimaActualizacion(order.Timestamp)));

            default:
                throw new M4TraderApplicationException("Estado no Valido para la orden Nro: " + orden.NumeroOrdenInterno);
            }
        }
Пример #2
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));
        }
        public override ExecutionResult ExecuteCommand(InCourseRequest inCourseRequest)
        {
            Response    resultado = new Response();
            OrdenEntity orden     = new OrdenEntity();

            ordenes = new List <OrdenEntity>();

            ordenes.Add(OrdenHelper.ObtenerOrdenbyID(IdOrden));

            resultado = ProcesamientoGenerica <OrdenEntity>(ConfimarOrden, ordenes);

            LoggingHelper.Instance.AgregarLog(new LogCommandApiEntity("SIConfirmaOrdenCommand", "CMD-API", inCourseRequest.Id, resultado));


            return(ExecutionResult.ReturnInmediatelyAndQueueOthers(resultado));
        }
Пример #4
0
        private string DistribuirPorEstado(OrdenEntity order)
        {
            var orden = OrdenHelper.ObtenerOrdenbyID(order.IdOrden);

            switch (orden.IdEstado)
            {
            case (int)EstadoOrden.Ingresada:
                return(CancelarOrden(orden, order.Timestamp));

            case (int)EstadoOrden.EnMercado:
            case (int)EstadoOrden.Aplicada:
                //case (int)EstadoOrden.AplicadaParcial:
                return(CancelarOrdenMercado(orden, order.Timestamp));

            default:
                return("Estado no Valido para la orden Nro: " + orden.NumeroOrdenInterno);
            }
        }
        public override ExecutionResult ExecuteCommand(InCourseRequest inCourseRequest)
        {
            Response    resultado = new Response();
            OrdenEntity orden     = new OrdenEntity();

            ordenes = new List <OrdenEntity>();

            //if (Source == 0)
            //    Source = SourceEnum.Mobile;
            orden = OrdenHelper.ObtenerOrdenbyID(r_id);
            ProductoEntity p = CachingManager.Instance.GetProductoById(orden.IdProducto);

            if (ValidarCambiosModificar(orden))
            {
                orden.IdOrden        = r_id;
                orden.Cantidad       = Cantidad + orden.Ejecutadas;
                orden.CantidadMinima = OfertaParcial ? CantidadMinima : Cantidad;
                orden.Plazo          = PlazoType;

                if (p.IdTipoProducto == (byte)TiposProducto.FACTURAS)
                {
                    orden.OperoPorTasa = true;
                }

                if (PrecioLimite.HasValue)
                {
                    orden.PrecioLimite = PrecioLimite.Value;
                }
                else
                {
                    orden.PrecioLimite = null;
                }

                ordenes.Add(orden);

                switch (orden.IdEstado)
                {
                case (int)EstadoOrden.Ingresada:
                case (int)EstadoOrden.Confirmada:
                    resultado = ProcesamientoGenerica <OrdenEntity>(ActualizarOrden, ordenes);
                    break;

                case (int)EstadoOrden.EnMercado:
                case (int)EstadoOrden.AplicadaParcial:
                    //case (int)EstadoOrden.RechazoMercado:
                    resultado = ProcesamientoGenerica <OrdenEntity>(ActualizarOrdenMercado, ordenes);
                    break;
                }
            }
            else
            {
                ConcurrentBag <string> resultadosOk    = new ConcurrentBag <string>();
                ConcurrentBag <string> resultadosError = new ConcurrentBag <string>();

                resultadosError.Add("No se ingresaron modificaciones para la orden Nro: " + orden.NumeroOrdenInterno);
                resultado.Resultado = eResult.Error;

                resultado.SetResponse(resultadosOk, resultadosError, "Ordenes");
            }
            return(ExecutionResult.ReturnInmediatelyAndQueueOthers(resultado));
        }