public static void AddInventoryBOMByItemID(Session session, int itemID, Inventory inventoryID) { InventoryBOMs inventoryBom = null; using (XPCollection <BOMs> itemBom = new XPCollection <BOMs>(session, new BinaryOperator(BOMs.Fields.BOMFiniGoodID.ItemID.PropertyName, itemID, BinaryOperatorType.Equal))) { foreach (BOMs bomItem in itemBom) { inventoryBom = new InventoryBOMs(session) { InventoryBOMRawMatID = bomItem.BOMRawMatID, InventoryBOMInventoryID = inventoryID, InventoryBOMQuantity = bomItem.BOMQuantity, ScrapFactor = bomItem.ScrapFactor / 100 }; inventoryBom.Save(); } } }
public void UpdateStock(Session session, int itemID, int?inventoryID, float quantity, bool updateBOM, int locationID, string lot = "", int?LPNNumber = null, DateTime?ExpirationDate = null, bool IsNewInventory = true) { double scrapfactor = 0; //To do update the stock for the item and bom's associated with it if (updateBOM == true) { if (inventoryID.HasValue) { //Dim inventoryBOMs As InventoryBOMsBLL = New InventoryBOMsBLL //Dim inventoryItemBOM As SPG.InventoryBOMsDataTable = inventoryBOMs.GetInventoryBOMsBYInventoryID(inventoryID.Value) XPCollection <InventoryBOMs> inventoryItemBOM = InventoryBOMsBLL.GetInventoryBOMsByInventoryID(session, inventoryID.Value); //If inventoryItemBOM.Rows.Count <> 0 Then if (inventoryItemBOM.Count != 0) { //Dim itemsBOM As SPG.InventoryBOMsRow InventoryBOMs itemsBOM = null; for (int i = 0; i < inventoryItemBOM.Count; i++) { //itemsBOM = CType(inventoryItemBOM.Rows(i), SPG.InventoryBOMsRow) itemsBOM = inventoryItemBOM[i]; if (itemsBOM.IsDeleted == false) { //updates the raw material if (itemsBOM.ScrapFactor > 0) { scrapfactor = itemsBOM.InventoryBOMQuantity * itemsBOM.ScrapFactor; } else { scrapfactor = 0; } UpdateStock(session, itemsBOM.InventoryBOMRawMatID.ItemID, (Convert.ToSingle(quantity * (itemsBOM.InventoryBOMQuantity + scrapfactor)) * -1), false, locationID); } } updateBOM = false; } } } if (updateBOM == true) { //The item has a bom attached to it BOMBLL boms = new BOMBLL(); //Dim itemsBOMs As SPG.BOMDataTable = boms.GetBOMBYFGItemID(itemID) XPCollection <BOMs> itemsBOMs = BOMBLL.GetBOMByFGItemID(session, itemID); //If itemsBOMs.Rows.Count <> 0 Then if (itemsBOMs.Count != 0) { //Dim itemsBOM As SPG.BOMRow BOMs itemsBOM = null; //For i As Integer = 0 To itemsBOMs.Rows.Count - 1 for (int i = 0; i < itemsBOMs.Count; i++) { //itemsBOM = CType(itemsBOMs.Rows(i), SPG.BOMRow) itemsBOM = itemsBOMs[i]; //updates the raw material if (itemsBOM.BOMRawMatID.ItemID != itemID) { if (itemsBOM.ScrapFactor > 0) { scrapfactor = itemsBOM.BOMQuantity * (itemsBOM.ScrapFactor / 100); } else { scrapfactor = 0; } UpdateStock(session, itemsBOM.BOMRawMatID.ItemID, (Convert.ToSingle(quantity * (itemsBOM.BOMQuantity + scrapfactor)) * -1), false, locationID); } } } } LocationInventoryBLL.UpdateStock(session, itemID, locationID, quantity, lot, LPNNumber, ExpirationDate, IsNewInventory); //Dim item As SPG.ItemsRow = CType(GetItemBYId(itemID).Rows(0), SPG.ItemsRow) //item.s ngQuantityOnHand += quantity //Adapter.Update(item) }