Exemple #1
0
 protected virtual void InitializeValidPickedInventoryItem(PickedInventoryItem item, TOrder order, int?quantity = null)
 {
     item.Lot.SetValidToPick();
     item.FromLocation.ConstrainByKeys(RinconFacility);
     item.ConstrainByKeys(order.PickedInventory).SetCurrentLocationToSource();
     item.Quantity = quantity ?? item.Quantity;
 }
Exemple #2
0
 internal static PickedInventoryItem NullCustomerCodes(this PickedInventoryItem item)
 {
     if (item == null)
     {
         throw new ArgumentNullException("item");
     }
     item.CustomerProductCode = item.CustomerLotCode = null;
     return(item);
 }
Exemple #3
0
        internal static PickedInventoryItem ConstrainByKeys(this PickedInventoryItem item, IPickedInventoryKey pickedInventoryKey = null, ILotKey lotKey = null, IPackagingProductKey packagingProductKey = null, IInventoryTreatmentKey treatmentKey = null, ILocationKey sourceLocationKey = null, ILocationKey currentLocationKey = null, string toteKey = null)
        {
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }

            if (pickedInventoryKey != null)
            {
                item.PickedInventory = null;
                item.DateCreated     = pickedInventoryKey.PickedInventoryKey_DateCreated;
                item.Sequence        = pickedInventoryKey.PickedInventoryKey_Sequence;
            }

            if (lotKey != null)
            {
                item.Lot             = null;
                item.LotDateCreated  = lotKey.LotKey_DateCreated;
                item.LotDateSequence = lotKey.LotKey_DateSequence;
                item.LotTypeId       = lotKey.LotKey_LotTypeId;
            }

            if (packagingProductKey != null)
            {
                item.PackagingProduct   = null;
                item.PackagingProductId = packagingProductKey.PackagingProductKey_ProductId;
            }

            if (treatmentKey != null)
            {
                item.Treatment   = null;
                item.TreatmentId = treatmentKey.InventoryTreatmentKey_Id;
            }

            if (sourceLocationKey != null)
            {
                item.FromLocation   = null;
                item.FromLocationId = sourceLocationKey.LocationKey_Id;
            }

            if (currentLocationKey != null)
            {
                item.CurrentLocation   = null;
                item.CurrentLocationId = currentLocationKey.LocationKey_Id;
            }

            if (toteKey != null)
            {
                item.ToteKey = toteKey;
            }

            return(item);
        }
Exemple #4
0
        internal static PickedInventoryItem SetCurrentLocationToSource(this PickedInventoryItem item)
        {
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }

            item.CurrentLocation   = null;
            item.CurrentLocationId = item.FromLocationId;

            return(item);
        }
Exemple #5
0
        internal static PickedInventoryItem SetPicked(this PickedInventoryItem item, int quantity, double packagingWeight)
        {
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }

            item.Quantity = quantity;
            item.PackagingProduct.Weight = packagingWeight;

            return(item);
        }
Exemple #6
0
        internal static PickedInventoryItem SetFromLocation(this PickedInventoryItem item, ILocationKey fromLocationKey)
        {
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }

            item.FromLocation   = null;
            item.FromLocationId = fromLocationKey.LocationKey_Id;

            return(item);
        }
Exemple #7
0
        internal static PickedInventoryItem SetToInventory(this PickedInventoryItem item, IInventoryKey inventoryKey)
        {
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }
            if (inventoryKey == null)
            {
                throw new ArgumentNullException("inventoryKey");
            }

            return(item.ConstrainByKeys(null, inventoryKey, inventoryKey, inventoryKey, inventoryKey, inventoryKey, inventoryKey.InventoryKey_ToteKey));
        }
Exemple #8
0
        private static void SetInventoryToPickedInventory(Inventory inventory, PickedInventoryItem pickedInventory)
        {
            inventory.Lot = null;
            inventory.PackagingProduct = null;
            inventory.Location         = null;
            inventory.Treatment        = null;

            inventory.LotDateCreated     = pickedInventory.LotDateCreated;
            inventory.LotDateSequence    = pickedInventory.LotDateSequence;
            inventory.LotTypeId          = pickedInventory.LotTypeId;
            inventory.PackagingProductId = pickedInventory.PackagingProductId;
            inventory.LocationId         = pickedInventory.FromLocationId;
            inventory.TreatmentId        = pickedInventory.TreatmentId;
            inventory.ToteKey            = pickedInventory.ToteKey;
        }
        public ModifyPickedInventoryItemParameters(PickedInventoryItem pickedItem)
        {
            if (pickedItem.CurrentLocation == null)
            {
                throw new ArgumentNullException("Expected pickedItem.CurrentLocation but was null, verify navigational property is being included in selection.");
            }

            PickedInventoryItemKey = new PickedInventoryItemKey(pickedItem);
            InventoryKey           = new InventoryKey(pickedItem, pickedItem, pickedItem, pickedItem, pickedItem.ToteKey);
            CurrentLocationKey     = new LocationKey(pickedItem.CurrentLocation);
            OriginalQuantity       = pickedItem.Quantity;
            CustomerLotCode        = pickedItem.CustomerLotCode;
            CustomerProductCode    = pickedItem.CustomerProductCode;
            NewQuantity            = 0;
        }
Exemple #10
0
        internal static PickedInventoryItem SetSourceWarehouse(this PickedInventoryItem item, IFacilityKey facilityKey)
        {
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }
            if (facilityKey == null)
            {
                throw new ArgumentNullException("facilityKey");
            }

            if (item.FromLocation != null)
            {
                item.FromLocation.ConstrainByKeys(facilityKey);
            }

            return(item);
        }
Exemple #11
0
 private tblBOM GetDaBOM(IDictionary<int, tblBOM> daBOMs, PickedInventoryItem pickedItem)
 {
     tblBOM daBOM = null;
     var ingredient = ToLotTypeIngredient((LotTypeEnum)pickedItem.LotTypeId);
     if(ingredient != null)
     {
         daBOMs.TryGetValue((int)ingredient, out daBOM);
     }
     else
     {
         var additiveLot = _unitOfWork.AdditiveLotRepository.FilterByKey(new LotKey(pickedItem), a => a.AdditiveProduct.AdditiveType).FirstOrDefault();
         if(additiveLot != null)
         {
             daBOMs.TryGetValue(additiveLot.AdditiveProduct.AdditiveTypeId, out daBOM);
         }
     }
     return daBOM;
 }
Exemple #12
0
 private tblOutgoing CreateOutgoing(InventoryShipmentOrder order, PickedInventoryItem item, Location location, int quantity, bool forMove)
 {
     return(new tblOutgoing
     {
         EntryDate = DateTime.UtcNow.ConvertUTCToLocal().RoundMillisecondsForSQL(),
         Lot = LotNumberParser.BuildLotNumber(item),
         TTypeID = (int?)order.OrderType.ToTransType(),
         PkgID = OldContextHelper.GetPackaging(item.PackagingProduct).PkgID,
         Tote = item.ToteKey,
         Quantity = quantity,
         NetWgt = (decimal?)item.PackagingProduct.Weight,
         TtlWgt = (decimal?)(quantity * item.PackagingProduct.Weight),
         LocID = (int)location.LocID,
         TrtmtID = OldContextHelper.GetTreatment(item).TrtmtID,
         EmployeeID = order.EmployeeId,
         BOMID = 0,
         BatchLot = 0,
         MoveNum = forMove ? order.MoveNum : null,
         MDetail = forMove ? item.DetailID : null,
         OrderNum = !forMove ? order.MoveNum : null,
         ODetail = !forMove ? item.DetailID : null,
         CustProductCode = item.CustomerProductCode
     });
 }
 public RinconDetail(PickedInventoryItem newItem, tblRincon rincon, OldContextHelper oldContextHelper)
 {
     _newItem          = newItem;
     _rincon           = rincon;
     _oldContextHelper = oldContextHelper;
 }
        internal IResult <List <PickedInventoryItem> > Execute(IPickedInventoryKey pickedInventoryKey, IEnumerable <ModifyPickedInventoryItemParameters> items)
        {
            if (pickedInventoryKey == null)
            {
                throw new ArgumentNullException("pickedInventoryKey");
            }
            if (items == null)
            {
                throw new ArgumentNullException("items");
            }

            var newItems = new List <PickedInventoryItem>();

            foreach (var item in items)
            {
                if (item.PickedInventoryItemKey != null)
                {
                    var notPendingResult = _unitOfWorkHelper.EntityHasNoPendingChanges(item.PickedInventoryItemKey, item.PickedInventoryItemKey);
                    if (!notPendingResult.Success)
                    {
                        return(notPendingResult.ConvertTo <List <PickedInventoryItem> >());
                    }

                    var pickedItem = _pickedInventoryUnitOfWork.PickedInventoryItemRepository.FindByKey(item.PickedInventoryItemKey);
                    if (pickedItem == null)
                    {
                        return(new InvalidResult <List <PickedInventoryItem> >(null, string.Format(UserMessages.PickedInventoryItemNotFound, item.PickedInventoryItemKey.KeyValue)));
                    }

                    if (pickedItem.CurrentLocationId != pickedItem.FromLocationId)
                    {
                        return(new InvalidResult <List <PickedInventoryItem> >(null, string.Format(UserMessages.PickedInventoryItemNotInOriginalLocation, new PickedInventoryItemKey(pickedItem).KeyValue)));
                    }

                    pickedItem.Quantity            = item.NewQuantity;
                    pickedItem.CurrentLocationId   = item.CurrentLocationKey.LocationKey_Id;
                    pickedItem.CustomerLotCode     = item.CustomerLotCode;
                    pickedItem.CustomerProductCode = item.CustomerProductCode;

                    if (pickedItem.Quantity < 0)
                    {
                        return(new InvalidResult <List <PickedInventoryItem> >(null, string.Format(UserMessages.QuantityForPickedCannotBeNegative, item.PickedInventoryItemKey.KeyValue)));
                    }

                    if (pickedItem.Quantity == 0)
                    {
                        _pickedInventoryUnitOfWork.PickedInventoryItemRepository.Remove(pickedItem);
                    }
                    else
                    {
                        newItems.Add(pickedItem);
                    }
                }
                else
                {
                    if (item.NewQuantity <= 0)
                    {
                        return(new InvalidResult <List <PickedInventoryItem> >(null, string.Format(UserMessages.QuantityForPickingFromInventoryMustBeGreaterThanZero, item.InventoryKey.KeyValue)));
                    }

                    var newSequence            = _unitOfWorkHelper.GetNextSequence(PickedInventoryItemPredicates.FilterByPickedInventoryKey(pickedInventoryKey), i => i.ItemSequence);
                    var newPickedInventoryItem = new PickedInventoryItem
                    {
                        DateCreated  = pickedInventoryKey.PickedInventoryKey_DateCreated,
                        Sequence     = pickedInventoryKey.PickedInventoryKey_Sequence,
                        ItemSequence = newSequence,

                        LotDateCreated     = item.InventoryKey.LotKey_DateCreated,
                        LotDateSequence    = item.InventoryKey.LotKey_DateSequence,
                        LotTypeId          = item.InventoryKey.LotKey_LotTypeId,
                        PackagingProductId = item.InventoryKey.PackagingProductKey_ProductId,
                        TreatmentId        = item.InventoryKey.InventoryTreatmentKey_Id,
                        ToteKey            = item.InventoryKey.InventoryKey_ToteKey,

                        FromLocationId      = item.InventoryKey.LocationKey_Id,
                        CurrentLocationId   = item.CurrentLocationKey.LocationKey_Id,
                        CustomerLotCode     = item.CustomerLotCode,
                        CustomerProductCode = item.CustomerProductCode,

                        Quantity = item.NewQuantity
                    };
                    newItems.Add(_pickedInventoryUnitOfWork.PickedInventoryItemRepository.Add(newPickedInventoryItem));
                }
            }

            return(new SuccessResult <List <PickedInventoryItem> >(newItems));
        }
        internal IResult Execute(PickedInventoryKey pickedInventoryKey, List <ModifySalesOrderPickedInventoryItemParameters> items)
        {
            if (items == null)
            {
                throw new ArgumentNullException("items");
            }

            foreach (var item in items)
            {
                if (item.SalesOrderPickedItemKey != null)
                {
                    var notPendingResult = new EFUnitOfWorkHelper(_salesUnitOfWork).EntityHasNoPendingChanges(item.SalesOrderPickedItemKey, item.SalesOrderPickedItemKey);
                    if (!notPendingResult.Success)
                    {
                        return(notPendingResult);
                    }

                    var pickedItem = _salesUnitOfWork.SalesOrderPickedItemRepository.FindByKey(item.SalesOrderPickedItemKey);
                    if (pickedItem == null)
                    {
                        return(new InvalidResult(string.Format(UserMessages.SalesOrderPickedItemNotFound, item.SalesOrderPickedItemKey.KeyValue)));
                    }

                    if (pickedItem.PickedInventoryItem.CurrentLocationId != pickedItem.PickedInventoryItem.FromLocationId)
                    {
                        return(new InvalidResult(string.Format(UserMessages.PickedInventoryItemNotInOriginalLocation, new PickedInventoryItemKey(pickedItem).KeyValue)));
                    }

                    pickedItem.PickedInventoryItem.Quantity = item.NewQuantity;
                    pickedItem.OrderItemSequence            = item.SalesOrderItemKey.SalesOrderItemKey_ItemSequence;

                    if (pickedItem.PickedInventoryItem.Quantity < 0)
                    {
                        return(new InvalidResult(string.Format(UserMessages.QuantityForPickedCannotBeNegative, item.PickedInventoryItemKey.KeyValue)));
                    }

                    if (pickedItem.PickedInventoryItem.Quantity == 0)
                    {
                        _salesUnitOfWork.PickedInventoryItemRepository.Remove(pickedItem.PickedInventoryItem);
                        _salesUnitOfWork.SalesOrderPickedItemRepository.Remove(pickedItem);
                    }
                    else
                    {
                        pickedItem.PickedInventoryItem.CustomerLotCode     = item.CustomerLotCode;
                        pickedItem.PickedInventoryItem.CustomerProductCode = item.CustomerProductCode;
                    }
                }
                else
                {
                    if (item.NewQuantity <= 0)
                    {
                        return(new InvalidResult(string.Format(UserMessages.QuantityForPickingFromInventoryMustBeGreaterThanZero, item.InventoryKey.KeyValue)));
                    }

                    var newSequence            = new EFUnitOfWorkHelper(_salesUnitOfWork).GetNextSequence(PickedInventoryItemPredicates.FilterByPickedInventoryKey(pickedInventoryKey), i => i.ItemSequence);
                    var newPickedInventoryItem = new PickedInventoryItem
                    {
                        DateCreated  = pickedInventoryKey.PickedInventoryKey_DateCreated,
                        Sequence     = pickedInventoryKey.PickedInventoryKey_Sequence,
                        ItemSequence = newSequence,

                        LotDateCreated  = item.InventoryKey.LotKey_DateCreated,
                        LotDateSequence = item.InventoryKey.LotKey_DateSequence,
                        LotTypeId       = item.InventoryKey.LotKey_LotTypeId,

                        PackagingProductId = item.InventoryKey.PackagingProductKey_ProductId,
                        FromLocationId     = item.InventoryKey.LocationKey_Id,
                        TreatmentId        = item.InventoryKey.InventoryTreatmentKey_Id,
                        CurrentLocationId  = item.InventoryKey.LocationKey_Id,
                        ToteKey            = item.InventoryKey.InventoryKey_ToteKey,

                        Quantity = item.NewQuantity,

                        CustomerLotCode     = item.CustomerLotCode,
                        CustomerProductCode = item.CustomerProductCode
                    };
                    _salesUnitOfWork.PickedInventoryItemRepository.Add(newPickedInventoryItem);

                    var customerOrderPickedItem = new SalesOrderPickedItem
                    {
                        DateCreated       = pickedInventoryKey.PickedInventoryKey_DateCreated,
                        Sequence          = pickedInventoryKey.PickedInventoryKey_Sequence,
                        ItemSequence      = newSequence,
                        OrderItemSequence = item.SalesOrderItemKey.SalesOrderItemKey_ItemSequence
                    };
                    _salesUnitOfWork.SalesOrderPickedItemRepository.Add(customerOrderPickedItem);
                }
            }

            return(new SuccessResult());
        }
 internal static Inventory SetToPickedCurrentLocation(this Inventory inventory, PickedInventoryItem pickedInventory)
 {
     inventory.Quantity = pickedInventory.Quantity;
     return(inventory.ConstrainByKeys(pickedInventory, pickedInventory, pickedInventory.CurrentLocation, pickedInventory, null, pickedInventory.ToteKey));
 }
Exemple #17
0
 internal PickedInventoryParameters(PickedInventoryItem item)
     : this(item, item.Quantity, item.CustomerLotCode, item.CustomerProductCode)
 {
 }
 internal static ModifyInventoryParameters ToModifyInventoryDestinationParameters(this PickedInventoryItem item, ILocationKey destinationLocation, IInventoryTreatmentKey newTreamentKey = null)
 {
     return(new ModifyInventoryParameters(item, item, destinationLocation, newTreamentKey ?? item, item.ToteKey, item.Quantity));
 }