It looks like there is another defaulting logic on that page that works when the Production Nbr field is assigned a value.
This is in PX.Objects.AM.MoveEntryBase<TWhere>
protected virtual void AMMTran_ProdOrdID_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
{
AMMTran ammTran = (AMMTran)e.Row;
if (string.IsNullOrWhiteSpace((ammTran != null) ? ammTran.ProdOrdID : null))
{
return;
}
if (this.ampsetup.Current == null)
{
this.ampsetup.Current = PXSelectBase<AMPSetup, PXSelect<AMPSetup>.Config>.Select(this, Array.Empty<object>());
}
AMProdItem amproditem = (AMProdItem)PXSelectorAttribute.Select<AMMTran.prodOrdID>(sender, ammTran);
if (amproditem == null)
{
return;
}
int? firstOperationID = amproditem.FirstOperationID;
int? lastOperationID = amproditem.LastOperationID;
bool singleOpeation = firstOperationID.GetValueOrDefault() == lastOperationID.GetValueOrDefault() & firstOperationID != null == (lastOperationID != null);
bool flag = this.IsImport || this.IsContractBasedAPI;
if (flag && singleOpeation)
{
sender.SetValueExt<AMMTran.operationID>(ammTran, amproditem.LastOperationID);
}
if (!flag)
{
AMProdOper oper = this.ampsetup.Current.InclScrap.GetValueOrDefault() ? PXSelectBase<AMProdOper, PXSelectJoin<AMProdOper, InnerJoin<AMProdItem, On<AMProdOper.orderType, Equal<AMProdItem.orderType>, And<AMProdOper.prodOrdID, Equal<AMProdItem.prodOrdID>>>>, Where<AMProdOper.orderType, Equal<Required<AMProdOper.orderType>>, And<AMProdOper.prodOrdID, Equal<Required<AMProdOper.prodOrdID>>, And<Sub<AMProdItem.qtytoProd, Add<AMProdOper.qtyComplete, AMProdOper.qtyScrapped>>, Greater<decimal0>>>>, OrderBy<Asc<AMProdOper.operationCD>>>.Config>.SelectWindowed(this, 0, 1, new object[]
{
ammTran.OrderType,
ammTran.ProdOrdID
}) : PXSelectBase<AMProdOper, PXSelectJoin<AMProdOper, InnerJoin<AMProdItem, On<AMProdOper.orderType, Equal<AMProdItem.orderType>, And<AMProdOper.prodOrdID, Equal<AMProdItem.prodOrdID>>>>, Where<AMProdOper.orderType, Equal<Required<AMProdOper.orderType>>, And<AMProdOper.prodOrdID, Equal<Required<AMProdOper.prodOrdID>>, And<Sub<AMProdItem.qtytoProd, AMProdOper.qtyComplete>, Greater<decimal0>>>>, OrderBy<Asc<AMProdOper.operationCD>>>.Config>.SelectWindowed(this, 0, 1, new object[]
{
ammTran.OrderType,
ammTran.ProdOrdID
});
if (oper != null && oper.OperationID != null)
{
sender.SetValueExt<AMMTran.operationID>(ammTran, oper.OperationID);
}
else if (ammTran.OperationID == null)
{
sender.SetValueExt<AMMTran.operationID>(ammTran, amproditem.FirstOperationID);
}
}
sender.SetValueExt<AMMTran.inventoryID>(ammTran, amproditem.InventoryID);
sender.SetValueExt<AMMTran.subItemID>(ammTran, amproditem.SubItemID);
sender.SetValueExt<AMMTran.siteID>(ammTran, amproditem.SiteID);
sender.SetValueExt<AMMTran.locationID>(ammTran, amproditem.LocationID);
sender.SetValueExt<AMMTran.uOM>(ammTran, amproditem.UOM);
sender.SetValue<AMMTran.wIPAcctID>(ammTran, amproditem.WIPAcctID);
sender.SetValue<AMMTran.wIPSubID>(ammTran, amproditem.WIPSubID);
this.SyncTransactionAttributes(ammTran);
}