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; } }
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); }
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); }