I am trying to get a custom field (Absolute Variance Quantity in INPIDetail/INPIDetailExt) to get summed up and have that amount sent to a custom header (Total Absolute Variance Quantity in INPIHeader/INPIHeaderExt).
The population of Absolute Variance Quantity works just fine, I’m just stumped by the process of having it update Total Absolute Variance Quantity.

Here is my code so far:

And as text:
public class INPIReviewExtension2 : INPIHeader
{
//PXGraphExtension<PX.Objects.IN.INPIReview>,
[PXFilterable]
[PXImport(typeof(INPIHeader))]
public
SelectFrom<INPIDetail>.
LeftJoin<InventoryItem>.On<INPIDetail.FK.InventoryItem>.
LeftJoin<INSubItem>.On<INPIDetail.FK.SubItem>.
Where<
INPIDetail.pIID.IsEqual<INPIHeader.pIID.AsOptional>.
And<
INPIDetail.inventoryID.IsNull.
Or<InventoryItem.inventoryID.IsNotNull>>>.
OrderBy<INPIDetail.lineNbr.Asc>.
View PIDetail;
public
SelectFrom<INPIDetail>.
Where<INPIDetail.FK.PIHeader.SameAsCurrent>.
View PIDetailPure;
public
SelectFrom<INPIHeader>.
Where<INPIHeader.pIID.IsEqual<INPIHeader.pIID.FromCurrent>>.
View PIHeaderInfo;
public SelectFrom<INSetup>.View INSetup;
public
PXSetup<INSite>.
Where<INSite.siteID.IsEqual<INPIHeader.siteID.FromCurrent>>
insite;
public PXFilter<PIGeneratorSettings> GeneratorSettings;
public INBarCodeItemLookup<INBarCodeItem> AddByBarCode;
public PXSetup<INSetup> Setup;
public PXSelect<INPIHeader, Where<INPIHeader.status, Equal<INPIHdrStatus.counting>>> PIHeader;
protected void INPIDetail_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
{
var row = (INPIHeader)e.Row;
if(row==null){
return;
}
decimal total_var_abs_qty = (decimal)0.00;
foreach (INPIDetail detail in PIDetailPure.Select())
{
if (detail == null || detail.Status == INPIDetStatus.Skipped)
continue;
if(detail.VarQty < 0){
total_var_abs_qty += (decimal)detail.VarQty*-1;
}else{
total_var_abs_qty += (decimal)detail.VarQty;
}
}
//TODO: Sending total_var_qty to INPIHeaderExt.usrTotalAbsVarQty
var header = (INPIHeader)cache.Current;
cache.SetValueExt<INPIHeaderExt.usrTotalAbsVarQty>(e.Row, total_var_abs_qty);
return;
}
}
The current code compiles fine but my total absolute variance value remains at zero even when the absolute variance value for a row is updated. There’s probably a lot of code in the Class section I don’t need, but I can clean that up once the main issue is solved.
I tried borrowing some of the methodology used in the source code for how it updates Variance Quantity.
Any ideas? Thanks in advance.

