public IEnumerable <PickableInventoryItem> Get(InventoryOrderEnum pickingContext, string contextKey,
                                                       ProductTypeEnum?productType = null, ProductTypeEnum?inventoryType = null, string lotKey = null, LotTypeEnum?lotType = null, LotHoldType?holdType = null, string ingredientType = null, string productKey = null, string packagingProductKey = null, string warehouseLocationKey = null, string treatmentKey = null, string productSubType = null, string locationGroupName = null,
                                                       int pageSize = 50, int skipCount = 0)
        {
            var service              = InventoryPickingServiceFactory.ResolveComponent(pickingContext);
            var filterParameters     = InventoryPickingFilterParametersHelper.ParseFilterParameters(pickingContext, ActionContext);
            var inventoryOrderResult = service.GetPickableInventoryForContext(filterParameters);

            inventoryOrderResult.EnsureSuccessWithHttpResponseException();

            var filterBySubType = !string.IsNullOrWhiteSpace(productSubType);
            var result          = inventoryOrderResult.ResultingObject
                                  .Items
                                  .Where(i => filterBySubType == false || i.LotProduct.ProductSubType == productSubType)
                                  .OrderBy(i => i.Location.Description)
                                  .PageResults(pageSize, skipCount)
                                  .Project(i =>
            {
                if (inventoryOrderResult.ResultingObject.Initializer != null)
                {
                    inventoryOrderResult.ResultingObject.Initializer.Initialize(i);
                }
            })
                                  .To <PickableInventoryItem>();

            return(result);
        }
        // DELETE api/{pickedInventoryContext}/{contextKey}/pickedInventory
        // DELETE api/movements/2013-01-01/pickedInventory
        public async Task Delete(InventoryOrderEnum pickedInventoryContext, string contextKey)
        {
            var pickedInventory = new PickedInventoryDto
            {
                PickedInventoryItems = new PickedInventoryItemDto[0]
            };

            await Post(pickedInventoryContext, contextKey, pickedInventory);
        }
        // POST api/{pickedInventoryContext}/{contextKey}/pickedInventory
        // POST api/movements/2013-01-01/pickedInventory
        public async Task Post(InventoryOrderEnum pickedInventoryContext, string contextKey, [FromBody] PickedInventoryDto value)
        {
            var service            = InventoryPickingServiceFactory.ResolveComponent(pickedInventoryContext);
            var setPickedInventory = value.Map().To <SetPickedInventoryParameters>();

            _identityProvider.SetUserIdentity(setPickedInventory);

            var result = await Task.Run(() => service.SetPickedInventory(contextKey, setPickedInventory));

            result.EnsureSuccessWithHttpResponseException(HttpVerbs.Put);
        }
        public async Task Post(InventoryOrderEnum pickingContext, string contextKey, [FromBody] IEnumerable <PickedInventoryItemDto> value)
        {
            var service = InventoryPickingServiceFactory.ResolveComponent(pickingContext);
            var pickedItemParameters = new SetPickedInventoryParameters
            {
                PickedInventoryItems = value.Project().To <SetPickedInventoryItemParameters>()
            };

            _identityProvider.SetUserIdentity(pickedItemParameters);

            var result = await Task.Run(() => service.SetPickedInventory(contextKey, pickedItemParameters));

            result.EnsureSuccessWithHttpResponseException(HttpVerbs.Put);
        }
        public static IPickInventoryServiceComponent ResolveComponent(InventoryOrderEnum pickingContext)
        {
            switch (pickingContext)
            {
            case InventoryOrderEnum.TransWarehouseMovements:
                return(DependencyResolver.Current.GetService <IWarehouseOrderService>());

            case InventoryOrderEnum.Treatments:
                return(DependencyResolver.Current.GetService <ITreatmentOrderService>());

            case InventoryOrderEnum.ProductionBatch:
                return(DependencyResolver.Current.GetService <IProductionService>());

            case InventoryOrderEnum.CustomerOrder:
                return(DependencyResolver.Current.GetService <ISalesService>());

            default: throw new NotSupportedException(string.Format("Unsupported picking context: \"{0}\". The requested InventoryOrderEnum value is not registered as a valid factory option.", pickingContext));
            }
        }
 public async Task Delete(InventoryOrderEnum pickedInventoryContext, string contextKey)
 {
     await Post(pickedInventoryContext, contextKey, new PickedInventoryItemDto[0]);
 }
Exemplo n.º 7
0
        public static FilterInventoryForPickingContextParameters ParseFilterParameters(InventoryOrderEnum pickingContext, HttpActionContext actionContext)
        {
            var routeValues = HttpUtility.ParseQueryString(actionContext.Request.RequestUri.Query);
            var contextKey  = actionContext.ActionArguments["contextKey"] as string;

            switch (pickingContext)
            {
            case InventoryOrderEnum.ProductionBatch:
                return(new FilterInventoryForBatchParameters
                {
                    BatchKey = contextKey,
                    IngredientKey = routeValues["ingredientType"],
                }.ParseCommon(actionContext));

            case InventoryOrderEnum.CustomerOrder:
                return(new FilterInventoryForShipmentOrderParameters
                {
                    OrderKey = contextKey,
                    OrderItemKey = routeValues["orderItemKey"]
                }.ParseCommon(actionContext));

            case InventoryOrderEnum.WarehouseMovements:
                return(new FilterInventoryForShipmentOrderParameters
                {
                    OrderKey = actionContext.ActionArguments["contextKey"] as string,
                    OrderItemKey = actionContext.ActionArguments["orderItemKey"] as string
                }.ParseCommon(actionContext));

            case InventoryOrderEnum.Treatments:
            case InventoryOrderEnum.TransWarehouseMovements:
                return(new FilterInventoryForShipmentOrderParameters
                {
                    OrderKey = contextKey,
                }.ParseCommon(actionContext));

            default: throw new ArgumentOutOfRangeException("pickingContext");
            }
        }
Exemplo n.º 8
0
 internal static Expression <Func <ShipmentInformation, ShipmentReturn> > SelectDetail(InventoryOrderEnum inventoryOrderEnum)
 {
     return(SelectShipmentInformation().Merge(s => new ShipmentReturn
     {
         InventoryOrderEnum = inventoryOrderEnum
     }));
 }
        internal static IEnumerable <Expression <Func <InventoryShipmentOrder, InventoryShipmentOrderDetailReturn> > > SplitSelectInventoryShipmentOrderDetail(IInventoryUnitOfWork inventoryUnitOfWork, DateTime currentDate, InventoryOrderEnum inventoryOrder)
        {
            if (inventoryUnitOfWork == null)
            {
                throw new ArgumentNullException("inventoryUnitOfWork");
            }

            var pickOrder = InventoryPickOrderProjectors.SplitSelectDetails();

            return(new Projectors <InventoryShipmentOrder, InventoryShipmentOrderDetailReturn>
            {
                { SplitSelectInventoryShipmentOrderDetailBase(inventoryUnitOfWork, currentDate, inventoryOrder), p => p.Translate().To <InventoryShipmentOrderDetailReturn>() },
                { pickOrder, s => i => new InventoryShipmentOrderDetailReturn
                  {
                      PickOrder = s.Invoke(i.InventoryPickOrder),
                  } }
            });
        }
        internal static IEnumerable <Expression <Func <InventoryShipmentOrder, InventoryShipmentOrderDetailBaseReturn> > > SplitSelectInventoryShipmentOrderDetailBase(IInventoryUnitOfWork inventoryUnitOfWork, DateTime currentDate, InventoryOrderEnum inventoryOrder, ISalesUnitOfWork salesUnitOfWork = null)
        {
            if (inventoryUnitOfWork == null)
            {
                throw new ArgumentNullException("inventoryUnitOfWork");
            }

            var pickedInventory = PickedInventoryProjectors.SplitSelectDetail(inventoryUnitOfWork, currentDate, salesUnitOfWork);
            var shipmentInfo    = ShipmentInformationProjectors.SelectDetail(inventoryOrder);

            return(new Projectors <InventoryShipmentOrder, InventoryShipmentOrderDetailBaseReturn>
            {
                SelectShipmentOrderBase().Merge(o => new InventoryShipmentOrderDetailBaseReturn
                {
                    PurchaseOrderNumber = o.PurchaseOrderNumber,
                    DateOrderReceived = o.DateReceived,
                    OrderRequestedBy = o.RequestedBy,
                    OrderTakenBy = o.TakenBy
                }),
                { pickedInventory, s => i => new InventoryShipmentOrderDetailBaseReturn
                  {
                      PickedInventory = s.Invoke(i.PickedInventory)
                  } },
                i => new InventoryShipmentOrderDetailBaseReturn
                {
                    Shipment = shipmentInfo.Invoke(i.ShipmentInformation)
                }
            });
        }