Hi, I just made it work! but with another approach. that one did not worked:
I had to override the CopyBomToProductionDetails method in a ProdMaint graph extension — that’s the exact function Acumatica uses to copy data from BOM to Production Order. After calling the base method, I looped through the material lines, matched each one to its BOM counterpart using OperationID and item keys, copied the custom fields, and updated the record. Now it copies perfectly every time.
namespace PX.Objects.AM
{
public class ProdMaint_Extension : PXGraphExtension<ProdMaint>
{
public delegate void CopyBomToProductionDetailsDelegate(AMProdItem row);
[PXOverride]
public void CopyBomToProductionDetails(AMProdItem row, CopyBomToProductionDetailsDelegate baseMethod)
{
baseMethod(row);
foreach (AMProdMatl prodMatl in Base.ProdMatlRecords.Select())
{
var result = PXSelect<AMBomMatl,
Where<AMBomMatl.bOMID, Equal<Required<AMBomMatl.bOMID>>,
And<AMBomMatl.revisionID, Equal<Required<AMBomMatl.revisionID>>,
And<AMBomMatl.operationID, Equal<Required<AMBomMatl.operationID>>,
And<AMBomMatl.inventoryID, Equal<Required<AMBomMatl.inventoryID>>,
And<AMBomMatl.subItemID, Equal<Required<AMBomMatl.subItemID>>>>>>>>
.Select(Base, row.BOMID, row.BOMRevisionID, prodMatl.OperationID, prodMatl.InventoryID, prodMatl.SubItemID);
if (result == null || result.Count == 0) continue;
AMBomMatl bomMatl = (AMBomMatl)result[0];
var bomExt = bomMatl.GetExtension<AMBomMatlExt>();
var prodExt = prodMatl.GetExtension<AMProdMatlExt>();
prodExt.UsrStucklisteBreiteProd = bomExt.UsrStucklisteBreite;
prodExt.UsrStucklisteLangeProd = bomExt.UsrStucklisteLange;
Base.ProdMatlRecords.Update(prodMatl);
}
}
}
}