public virtual LUMStdBomCost RollCostUpdate(LUMStdBomCost multiLevelRecord, AMBomCost bomCostRec) { if (multiLevelRecord == null) { return(null); } var row = multiLevelRecord.Copy <LUMStdBomCost>(); row.HasCostRoll = false; if (bomCostRec?.BOMID == null) { return(row); } row.HasCostRoll = true; row.LotSize = bomCostRec.LotSize; //row.FixedLaborTime = bomCostRec.FixedLaborTime; //row.VariableLaborTime = (int?)(bomCostRec.VariableLaborTime * multiLevelRecord.TotalQtyReq); //row.MachineTime = (int?)(bomCostRec.MachineTime * multiLevelRecord.TotalQtyReq); row.UnitCost = bomCostRec.UnitCost; row.ToolCost = bomCostRec.ToolCost * multiLevelRecord.TotalQtyReq; row.CompMatlCost = bomCostRec.MatlManufacturedCost * multiLevelRecord.TotalQtyReq; row.CompPurchMatl = bomCostRec.MatlNonManufacturedCost * multiLevelRecord.TotalQtyReq; row.FixedLaborCost = bomCostRec.FLaborCost; row.VariableLaborCost = bomCostRec.VLaborCost * multiLevelRecord.TotalQtyReq; row.FixedOvdCost = bomCostRec.FOvdCost; row.VariableOvdCost = bomCostRec.VOvdCost * multiLevelRecord.TotalQtyReq; row.MachineCost = bomCostRec.MachCost * multiLevelRecord.TotalQtyReq; row.CompExtCost = bomCostRec.UnitCost * multiLevelRecord.CompQtyReq; row.CompTotalExtCost = bomCostRec.UnitCost * multiLevelRecord.TotalQtyReq; row.TotalCost = bomCostRec.UnitCost * row.LotSize; // For MLB Report Header only row.SubcontractCost = bomCostRec.SubcontractMaterialCost; return(row); }
public virtual LUMStdBomCost CreateDetailRow(AMBomMatl amBomMatl, AMBomOper amBomOper, AMBomItem amBomItem, InventoryItem inventoryItem, AMBomItem parentBomItem, int lineID, int level, decimal totalQtyReq, AMMultiLevelBomFilter filter, string levelBomid, string levelRevisionID) { var itemExt = inventoryItem.GetExtension <JAMS.AEF.InventoryItemAMExtension>(); var qtyRequired = amBomMatl.QtyReq.GetValueOrDefault() * (1 + amBomMatl.ScrapFactor.GetValueOrDefault()) * (amBomMatl.BatchSize.GetValueOrDefault() == 0m ? 1m : 1 / amBomMatl.BatchSize.GetValueOrDefault()); var totalQtyRequired = amBomMatl.QtyReq.GetValueOrDefault() * (1 + amBomMatl.ScrapFactor.GetValueOrDefault()) * (amBomMatl.BatchSize.GetValueOrDefault() == 0m ? 1m : totalQtyReq / amBomMatl.BatchSize.GetValueOrDefault()); var baseTotalQtyRequired = amBomMatl.BaseQty.GetValueOrDefault() * (1 + amBomMatl.ScrapFactor.GetValueOrDefault()) * (amBomMatl.BatchSize.GetValueOrDefault() == 0m ? 1m : totalQtyReq / amBomMatl.BatchSize.GetValueOrDefault()); AMMultiLevelBomFilterExt filterExt = filter.GetExtension <AMMultiLevelBomFilterExt>(); if (filterExt.UsrEnblItemRoundUp == true) { qtyRequired = itemExt.AMQtyRoundUp == false ? qtyRequired : Math.Ceiling(qtyRequired); totalQtyRequired = itemExt.AMQtyRoundUp == false ? totalQtyRequired : Math.Ceiling(totalQtyRequired); baseTotalQtyRequired = itemExt.AMQtyRoundUp == false ? baseTotalQtyRequired : Math.Ceiling(baseTotalQtyRequired); } var row = new LUMStdBomCost { BOMID = parentBomItem.BOMID, RevisionID = parentBomItem.RevisionID, LineID = lineID, Level = level, CompInventoryID = amBomMatl.InventoryID, //Descr = amBomMatl.Descr, InventoryID = parentBomItem.InventoryID, SubItemID = parentBomItem.SubItemID, //ParentDescr = parentBomItem.Descr, CompSubItemID = amBomMatl.SubItemID, UOM = amBomMatl.UOM, ScrapFactor = amBomMatl.ScrapFactor.GetValueOrDefault(), //BatchSize = amBomMatl.BatchSize.GetValueOrDefault(), //BOMQtyReq = amBomMatl.QtyReq.GetValueOrDefault(), //BaseQtyReq = amBomMatl.BaseQty.GetValueOrDefault(), CompQtyReq = qtyRequired, TotalQtyReq = totalQtyRequired, //BaseTotalQtyReq = baseTotalQtyRequired, CompUnitCost = amBomMatl.UnitCost.GetValueOrDefault(), CompExtCost = qtyRequired * amBomMatl.UnitCost.GetValueOrDefault(), CompTotalExtCost = totalQtyRequired * amBomMatl.UnitCost.GetValueOrDefault(), LineBOMID = amBomMatl.BOMID, LineRevisionID = amBomMatl.RevisionID, OperationID = amBomOper.OperationID, OperationCD = amBomOper.OperationCD, EffStartDate = parentBomItem.EffStartDate, EffEndDate = parentBomItem.EffEndDate, SiteID = parentBomItem.SiteID, //Status = parentBomItem.Status, //LineStatus = amBomItem.Status, //MaterialStatus = amBomItem.Status, //OperationDescription = amBomOper.Descr, WcID = amBomOper.WcID, IsHeaderRecord = false, SortOrder = amBomMatl.SortOrder }; var materialSiteID = amBomMatl.SiteID ?? amBomItem.SiteID; if (filter.IgnoreReplenishmentSettings.GetValueOrDefault() || JAMS.AM.InventoryHelper.GetReplenishmentSource(this, row.CompInventoryID, materialSiteID) == INReplenishmentSource.Manufactured) { levelBomid = amBomMatl.CompBOMID; levelRevisionID = amBomMatl.CompBOMRevisionID; if (!string.IsNullOrWhiteSpace(levelBomid) && !string.IsNullOrWhiteSpace(levelRevisionID)) { AMBomItem bomItem = null; if (Filter.Current.IncludeBomsOnHold.GetValueOrDefault()) { bomItem = PXSelect <AMBomItem, Where <AMBomItem.bOMID, Equal <Required <AMBomItem.bOMID> >, And <AMBomItem.revisionID, Equal <Required <AMBomItem.revisionID> >, And2 <Where <AMBomItem.status, Equal <AMBomStatus.hold>, Or <AMBomItem.status, Equal <AMBomStatus.active> > >, And <Where <Required <AMBomItem.effStartDate>, Between <AMBomItem.effStartDate, AMBomItem.effEndDate>, Or <Where <AMBomItem.effStartDate, LessEqual <Required <AMBomItem.effStartDate> >, And <AMBomItem.effEndDate, IsNull> > > > > > > > > .Select(this, levelBomid, levelRevisionID, Filter.Current.BOMDate.GetValueOrDefault(), Filter.Current.BOMDate.GetValueOrDefault()); } else { bomItem = PXSelect <AMBomItem, Where <AMBomItem.bOMID, Equal <Required <AMBomItem.bOMID> >, And <AMBomItem.revisionID, Equal <Required <AMBomItem.revisionID> >, And <AMBomItem.status, Equal <AMBomStatus.active>, And <Where <Required <AMBomItem.effStartDate>, Between <AMBomItem.effStartDate, AMBomItem.effEndDate>, Or <Where <AMBomItem.effStartDate, LessEqual <Required <AMBomItem.effStartDate> >, And <AMBomItem.effEndDate, IsNull> > > > > > > > > .Select(this, levelBomid, levelRevisionID, Filter.Current.BOMDate.GetValueOrDefault(), Filter.Current.BOMDate.GetValueOrDefault()); } if (bomItem == null) { PXTrace.WriteWarning(JAMS.AM.Messages.GetLocal(JAMS.AM.Messages.ComponentBOMRevisionNotActive, levelBomid, levelRevisionID, inventoryItem.InventoryCD)); return(row); } } if (!string.IsNullOrWhiteSpace(levelBomid) && string.IsNullOrWhiteSpace(levelRevisionID)) { var compBomItem = filter.IncludeBomsOnHold == false ? PrimaryBomIDManager.GetActiveRevisionBomItemByDate(this, levelBomid, filter.BOMDate.GetValueOrDefault()) : PrimaryBomIDManager.GetNotArchivedRevisionBomItemByDate(this, levelBomid, filter.BOMDate.GetValueOrDefault()); if (compBomItem == null) { PXTrace.WriteWarning(JAMS.AM.Messages.GetLocal(JAMS.AM.Messages.NoActiveRevisionForBom, parentBomItem.BOMID)); return(row); } levelRevisionID = compBomItem.RevisionID; } if (string.IsNullOrWhiteSpace(levelBomid)) { var bomItem = filter.IncludeBomsOnHold == false ? PrimaryBomIDManager.GetActiveRevisionBomItemByDate(this, new PrimaryBomIDManager(this).GetPrimaryAllLevels(row.CompInventoryID, materialSiteID, row.SubItemID), filter.BOMDate.GetValueOrDefault()) : PrimaryBomIDManager.GetNotArchivedRevisionBomItemByDate(this, new PrimaryBomIDManager(this).GetPrimaryAllLevels(row.CompInventoryID, materialSiteID, row.SubItemID), filter.BOMDate.GetValueOrDefault()); if (bomItem == null) { PXTrace.WriteWarning(JAMS.AM.Messages.GetLocal(JAMS.AM.Messages.NoActiveRevisionForBom, parentBomItem.BOMID)); return(row); } levelBomid = bomItem.BOMID; levelRevisionID = bomItem.RevisionID; } row.ManufBOMID = levelBomid; row.ManufRevisionID = levelRevisionID; } return(row); }