public static void GetSOLine(KCAPIOrderItem orderItem, InventoryItem item, SOLine soLine, int?branchID, int?defaultWarehouse)
        {
            soLine.BranchID      = branchID;
            soLine.Qty           = orderItem.Quantity;
            soLine.OpenQty       = orderItem.Quantity;
            soLine.CuryUnitPrice = orderItem.UnitPrice;
            soLine.UOM           = item.SalesUnit;
            soLine.SalesAcctID   = item.SalesAcctID;
            soLine.SalesSubID    = item.SalesSubID ?? KCGeneralDataHelper.GetDefaultSalesSubID();
            soLine.InventoryID   = item.InventoryID;
            soLine.SiteID        = defaultWarehouse;
            soLine.TaxCategoryID = "TAXABLE";
            soLine.CuryLineAmt   = soLine.CuryUnitPrice * soLine.Qty;
            soLine.ShipComplete  = "B";
            KCSOLineExt soLineExt = soLine.GetExtension <KCSOLineExt>();

            soLineExt.UsrKCOrderItemID = orderItem.ID;
            soLineExt.UsrKCCAOrderID   = orderItem.OrderID;

            SOLinePCExt        soLinePCExt = soLine.GetExtension <SOLinePCExt>();
            InventoryItemPCExt itemPCExt   = item.GetExtension <InventoryItemPCExt>();

            if (itemPCExt.UsrKNCompositeType != null)
            {
                soLinePCExt.UsrKNIsMasterLine = true;
            }
        }
Beispiel #2
0
        public bool CheckFulfillmentItems(KCSOShipmentEntryExt graph, List <KCAPIFulfillmentItem> productsFromAllFulfillments, Dictionary <int?, List <int?> > compositeItems,
                                          KCAPIFulfillment currentFulfillment, List <KCAPIOrderItem> orderItems)
        {
            foreach (KCAPIFulfillmentItem item in currentFulfillment.Items)
            {
                double?orderedCountOfBundles = 0;

                KCAPIOrderItem orderItem = orderItems.Where(x => x.ID == item.OrderItemID).FirstOrDefault();
                if (orderItem.ProductID == item.ProductID)
                {
                    continue;
                }

                foreach (int productID in compositeItems[item.OrderItemID])
                {
                    int?itemQuantity = 0;
                    productsFromAllFulfillments.Where(x => x.ProductID == productID && x.OrderItemID == item.OrderItemID).ToList().ForEach(x => itemQuantity += x.Quantity);
                    double?qtyPerBundle = itemQuantity / orderItem.Quantity;

                    DAC.KNSIKCInventoryItem KCItem = graph.KCInventoryItem.SelectSingle(productID);
                    if (KCItem != null)
                    {
                        if (orderedCountOfBundles == 0)
                        {
                            orderedCountOfBundles = itemQuantity / qtyPerBundle;
                        }
                        if (currentFulfillment.Items.Any(x => x.ProductID == productID && x.OrderItemID == item.OrderItemID && x.Quantity / qtyPerBundle == orderedCountOfBundles) &&
                            (!productsFromAllFulfillments.Any(x => x.ProductID == productID && x.OrderItemID == item.OrderItemID && x.FulfillmentID != item.FulfillmentID) ||
                             (orderedCountOfBundles % 1 == 0 && itemQuantity / qtyPerBundle == orderedCountOfBundles)))
                        {
                            continue;
                        }
                        else
                        {
                            return(false);
                        }
                    }
                }
            }

            return(true);
        }
Beispiel #3
0
        public bool ValidateItems <T>(List <T> items, Validation method, KCSiteMasterMaint sitemaster)
        {
            bool result = false;
            List <KCAPIOrderItem>       orderItems;
            List <KCAPIFulfillmentItem> filfillmentItems;

            if (items as List <KCAPIOrderItem> != null)
            {
                orderItems = items as List <KCAPIOrderItem>;
            }
            if (items as List <KCAPIFulfillmentItem> != null)
            {
                filfillmentItems = items as List <KCAPIFulfillmentItem>;
            }

            if (items != null)
            {
                foreach (T item in items)
                {
                    KCAPIOrderItem       orderItem      = null;
                    KCAPIFulfillmentItem fulfillmetItem = null;

                    if (item as KCAPIOrderItem != null)
                    {
                        orderItem = item as KCAPIOrderItem;
                    }
                    if (item as KCAPIFulfillmentItem != null)
                    {
                        fulfillmetItem = item as KCAPIFulfillmentItem;
                    }

                    int productID = 0;
                    int orderID   = 0;

                    if (orderItem == null)
                    {
                        productID = fulfillmetItem.ProductID;
                        orderID   = fulfillmetItem.OrderID;
                    }
                    else
                    {
                        productID = orderItem.ProductID;
                        orderID   = orderItem.OrderID;
                    }

                    DAC.KNSIKCInventoryItem stockItem     = sitemaster.ExistingProducts.SelectSingle(productID);
                    InventoryItem           inventoryItem = sitemaster.ProductByInvId.SelectSingle(stockItem.InventoryID);

                    if (inventoryItem != null)
                    {
                        if (!method(sitemaster, inventoryItem, orderID, productID))
                        {
                            return(false);
                        }
                        else if (inventoryItem.GetExtension <InventoryItemPCExt>().UsrKNCompositeType == KCConstants.ConfigurableProduct)
                        {
                            PXResultset <InventoryItem> childItems = sitemaster.ConfigChildItems.Select(inventoryItem.InventoryID);

                            foreach (InventoryItem child in childItems)
                            {
                                if (!method(sitemaster, child, orderID, productID))
                                {
                                    return(false);
                                }
                            }
                        }
                        else if (inventoryItem.GetExtension <InventoryItemPCExt>().UsrKNCompositeType == KCConstants.GroupedProduct)
                        {
                            PXResultset <KNSIGroupedItems> childItems = sitemaster.GroupedChildItems.Select(inventoryItem.InventoryID);
                            foreach (KNSIGroupedItems child in childItems)
                            {
                                InventoryItem product = sitemaster.ProductByInvId.SelectSingle(child.MappedInventoryID);

                                if (!method(sitemaster, product, orderID, productID))
                                {
                                    return(false);
                                }
                            }
                        }
                        else if (inventoryItem.KitItem.GetValueOrDefault())
                        {
                            string revisionId = sitemaster.KitProduct.SelectSingle(inventoryItem.InventoryID)?.RevisionID;
                            IEnumerable <INKitSpecNonStkDet> nonStockKitComponents = sitemaster.NonStockKitComponents.Select(inventoryItem.InventoryID, revisionId)?.RowCast <INKitSpecNonStkDet>();

                            foreach (INKitSpecNonStkDet child in nonStockKitComponents)
                            {
                                InventoryItem product = sitemaster.ProductByInvId.SelectSingle(child.CompInventoryID);

                                if (!method(sitemaster, product, orderID, productID))
                                {
                                    return(false);
                                }
                            }
                        }
                    }

                    result = true;
                }
            }
            return(result);
        }