Beispiel #1
0
        public IResult <IPickableInventoryReturn> GetInventoryItemsToPickTreatmentOrder(FilterInventoryForShipmentOrderParameters parameters)
        {
            parameters = parameters ?? new FilterInventoryForShipmentOrderParameters();

            InventoryShipmentOrderKey orderKey;
            InventoryPickOrderItemKey orderItemKey;
            var filterResults = parameters.ParseToPredicateBuilderFilters(out orderKey, out orderItemKey);

            if (!filterResults.Success)
            {
                return(filterResults.ConvertTo <IPickableInventoryReturn>());
            }

            var treatmentOrderKey = new TreatmentOrderKey(orderKey);
            var treatmentOrder    = _inventoryShipmentOrderUnitOfWork.TreatmentOrderRepository.FindByKey(treatmentOrderKey, o => o.InventoryShipmentOrder.SourceFacility);

            if (treatmentOrder == null)
            {
                return(new InvalidResult <IPickableInventoryReturn>(null, string.Format(UserMessages.TreatmentOrderNotFound, treatmentOrderKey)));
            }
            var facilityKey = treatmentOrder.InventoryShipmentOrder.SourceFacility.ToFacilityKey();

            var itemsResult = new GetPickableInventoryCommand(_inventoryShipmentOrderUnitOfWork).Execute(filterResults.ResultingObject, _timeStamper.CurrentTimeStamp,
                                                                                                         PickedInventoryValidator.ForTreatmentOrder(facilityKey, treatmentOrder, _inventoryShipmentOrderUnitOfWork), false);

            return(itemsResult);
        }
Beispiel #2
0
        internal IResult Execute(TreatmentOrderKey key, out int?moveNum)
        {
            if (key == null)
            {
                throw new ArgumentNullException("key");
            }
            moveNum = null;

            var treatmentOrder = UnitOfWork.TreatmentOrderRepository.FindByKey(key,
                                                                               t => t.InventoryShipmentOrder.ShipmentInformation,
                                                                               t => t.InventoryShipmentOrder.PickedInventory.Items.Select(i => i.CurrentLocation),
                                                                               t => t.InventoryShipmentOrder.InventoryPickOrder.Items);

            if (treatmentOrder == null)
            {
                return(new InvalidResult(string.Format(UserMessages.TreatmentOrderNotFound, key)));
            }
            moveNum = treatmentOrder.InventoryShipmentOrder.MoveNum;

            var deleteShipmentOrder = DeleteInventoryShipmentOrder(treatmentOrder.InventoryShipmentOrder);

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

            UnitOfWork.TreatmentOrderRepository.Remove(treatmentOrder);

            return(new SuccessResult());
        }
Beispiel #3
0
        public IResult <ITreatmentOrderDetailReturn> GetTreatmentOrder(string treatmentOrderKey)
        {
            if (treatmentOrderKey == null)
            {
                throw new ArgumentNullException("treatmentOrderKey");
            }

            var keyResult = KeyParserHelper.ParseResult <ITreatmentOrderKey>(treatmentOrderKey);

            if (!keyResult.Success)
            {
                return(keyResult.ConvertTo <ITreatmentOrderDetailReturn>());
            }

            var context = ((EFUnitOfWorkBase)_inventoryShipmentOrderUnitOfWork).Context;

            context.Configuration.AutoDetectChangesEnabled = false;

            var predicate      = new TreatmentOrderKey(keyResult.ResultingObject).FindByPredicate;
            var select         = TreatmentOrderProjectors.SplitSelectDetail(_inventoryShipmentOrderUnitOfWork, _timeStamper.CurrentTimeStamp.Date);
            var treatmentOrder = _inventoryShipmentOrderUnitOfWork.TreatmentOrderRepository.Filter(predicate).SplitSelect(select).FirstOrDefault();

            if (treatmentOrder == null)
            {
                return(new FailureResult <ITreatmentOrderDetailReturn>(null, string.Format(UserMessages.TreatmentOrderNotFound, treatmentOrderKey)));
            }

            return(new SuccessResult <ITreatmentOrderDetailReturn>(treatmentOrder));
        }
Beispiel #4
0
        public UpdateTreatmentOrderConductorParameters(TParams parameters)
            : base(parameters)
        {
            if (Result.Success)
            {
                var keyResult = KeyParserHelper.ParseResult <ITreatmentOrderKey>(parameters.TreatmentOrderKey);
                if (!keyResult.Success)
                {
                    Result = keyResult;
                    return;
                }
                TreatmentOrderKey = new TreatmentOrderKey(keyResult.ResultingObject);

                var setItemCodesResult = ParseParameters(parameters.PickedInventoryItemCodes);
                if (!setItemCodesResult.Success)
                {
                    Result = setItemCodesResult;
                    return;
                }

                SetPickedInventoryItemCodes = setItemCodesResult.ResultingObject;
            }
        }