Exemple #1
0
        protected IResult UpdatePickedInventory(IInventoryValidator inventoryValidator, Employee employee, DateTime timeStamp, PickedInventory existingPickedInventory, List <PickedInventoryParameters> setPickedInventoryItems, ref List <ModifyInventoryParameters> pendingInventoryModifications, bool moveToDestination = false)
        {
            if (employee != null)
            {
                existingPickedInventory.EmployeeId = employee.EmployeeId;
            }
            existingPickedInventory.TimeStamp = timeStamp;

            var pickedInventoryModifications = PickedInventoryHelper.CreateModifyPickedInventoryItemParameters(existingPickedInventory, setPickedInventoryItems);

            if (inventoryValidator != null)
            {
                var validatorResult = inventoryValidator.ValidateItems(UnitOfWork.InventoryRepository, pickedInventoryModifications.Where(i => i.DeltaQuantity > 0).Select(i => i.InventoryKey));
                if (!validatorResult.Success)
                {
                    return(validatorResult.ConvertTo <List <PickedInventoryItem> >());
                }
            }

            var modifyPickedResult = new ModifyPickedInventoryItemsCommand(UnitOfWork).Execute(existingPickedInventory, pickedInventoryModifications);

            if (!modifyPickedResult.Success)
            {
                return(modifyPickedResult);
            }

            pendingInventoryModifications = pendingInventoryModifications ?? new List <ModifyInventoryParameters>();
            pendingInventoryModifications.AddRange(pickedInventoryModifications.Select(p => p.ToModifySourceInventoryParameters()));
            if (moveToDestination)
            {
                pendingInventoryModifications.AddRange(pickedInventoryModifications.Select(p => p.ToModifyDestinationInventoryParameters()));
            }

            return(modifyPickedResult);
        }
Exemple #2
0
        protected IResult UpdatePickedInventory(IInventoryValidator inventoryValidator, Employee employee, DateTime timeStamp, PickedInventory existingPickedInventory, List <PickedInventoryParameters> setPickedInventoryItems, bool moveToDestination = false)
        {
            List <ModifyInventoryParameters> inventoryModifications = null;
            var updateResult = UpdatePickedInventory(inventoryValidator, employee, timeStamp, existingPickedInventory, setPickedInventoryItems, ref inventoryModifications, moveToDestination);

            if (!updateResult.Success)
            {
                return(updateResult.ConvertTo <List <PickedInventoryItem> >());
            }

            var modifyInventoryResult = new ModifyInventoryCommand(UnitOfWork).Execute(inventoryModifications, null);

            if (!modifyInventoryResult.Success)
            {
                return(modifyInventoryResult.ConvertTo <List <PickedInventoryItem> >());
            }

            return(updateResult);
        }
Exemple #3
0
        internal IResult <PickableInventoryReturn> Execute(InventoryPredicateBuilder.PredicateBuilderFilters filters, DateTime currentDate, IInventoryValidator validator, bool includeAllowances)
        {
            var splitProjectors = InventoryProjectors.SplitSelectPickableInventorySummary(_inventoryUnitOfWork, currentDate, validator.ValidForPickingPredicates, includeAllowances);
            var predicateResult = InventoryPredicateBuilder.BuildPredicate(_inventoryUnitOfWork, filters, validator.InventoryFilters);

            if (!predicateResult.Success)
            {
                return(predicateResult.ConvertTo <PickableInventoryReturn>());
            }

            return(new SuccessResult <PickableInventoryReturn>(new PickableInventoryReturn
            {
                Items = _inventoryUnitOfWork.InventoryRepository
                        .Filter(predicateResult.ResultingObject)
                        .SplitSelect(splitProjectors)
            }));
        }