コード例 #1
0
ファイル: Pallet.cs プロジェクト: SciLog/PackingOptimization
        public bool AddItemToPallet(Order order, OrderLine orderLine, int caseQuantity, Slotting slotting, double buldToPercentage,
                                    double overflow, bool stable, bool enforceStability, int maxUnstablePackages, double maxUnstablePercentage)
        {
            bool isAdded = false;

            PalletItem palletItem = new PalletItem(order, orderLine.Sku, caseQuantity, slotting);

            if (slotting?.PickMethodCode == PickMethodCode.FullLayer ||                 // If item is a layer item set the layer number
                slotting?.PickMethodCode == PickMethodCode.MixedLayer)
            {
                palletItem.Layer = NextLayerNumber;
            }
            else                                                                                                                                // Else check if the inven already exists on this pallet
            {
                PalletItem palletItemOnPallet = this.GetPalletItemByInventoryId(orderLine.Sku.InventoryId, order.OrderId);

                if (palletItemOnPallet != null)
                {
                    palletItem = palletItemOnPallet;
                }
            }

            if (CanAdd(orderLine, caseQuantity, buldToPercentage, overflow, enforceStability, maxUnstablePackages, maxUnstablePercentage))
            {
                if (PalletItems.Contains(palletItem))                       // If inven already exists on this pallet add to it's quantity
                {
                    palletItem.Quantity += caseQuantity;
                }
                else                                                                                            // Else add the item to the pallet
                {
                    PalletItems.Add(palletItem);
                }

                double itemPercentage = orderLine.CalculatePercentageSkuOfItself(caseQuantity);

                if (!stable)
                {
                    UnstablePercentage += itemPercentage;

                    if (!UnstablePackageIds.Contains(orderLine.Sku.Package.PackageId))
                    {
                        UnstablePackageIds.Add(orderLine.Sku.Package.PackageId);
                    }
                }

                if (!Orders.Contains(order))
                {
                    Orders.Add(order);
                }

                isAdded = true;
            }

            return(isAdded);
        }
コード例 #2
0
ファイル: Pallet.cs プロジェクト: SciLog/PackingOptimization
        public bool AddItemToPalletWithoutCheck(Order order, OrderLine ordLine, int caseQty, Slotting slotting)
        {
            Item       sku        = ordLine.Sku;
            PalletItem palletItem = new PalletItem(order, sku, caseQty, slotting);

            // If item is a layer item set the layer number
            if (slotting?.PickMethodCode == PickMethodCode.FullLayer ||
                slotting?.PickMethodCode == PickMethodCode.MixedLayer)
            {
                palletItem.Layer = NextLayerNumber;
            }
            else
            {
                // Else check if the inven already exists on this pallet
                PalletItem palletItemOnPallet = GetPalletItemByInventoryId(sku.InventoryId, order.OrderId);

                if (palletItemOnPallet != null)
                {
                    palletItem = palletItemOnPallet;
                }
            }


            // If inven already exists on this pallet add to it's quantity
            if (PalletItems.Contains(palletItem))
            {
                palletItem.Quantity += caseQty;
            }
            else
            {
                // Else add the item to the pallet
                PalletItems.Add(palletItem);
            }

            if (!Orders.Contains(order))
            {
                Orders.Add(order);
            }

            return(true);
        }