Skip to main content
Question

Updating INTranSplit from Custom Graph Throws "Source cannot be empty" and "Transaction Date cannot be empty"

  • July 27, 2026
  • 1 reply
  • 19 views

Forum|alt.badge.img+3

Hi Team,

I am trying to update a custom field on the INTranSplit DAC from a custom graph. The update itself succeeds, but when I call Save.Press(), Acumatica throws the following validation errors:

Error: Updating 'IN Transaction Split' record raised at least one error.
Error: 'Source' cannot be empty.
Error: 'Transaction Date' cannot be empty.

The custom field (UsrPickedQty) exists on INTranSplit, and I am only updating that extension field.

 

public class TestGraph : PXGraph<TestGraph>
{
public SelectFrom<INTranSplit>
.InnerJoin<INTran>
.On<INTranSplit.FK.Tran>
.InnerJoin<INLocation>
.On<INTranSplit.locationID.IsEqual<INLocation.locationID>
.And<INTranSplit.siteID.IsEqual<INLocation.siteID>>>
.Where<
INTran.tranType.IsEqual<INTranType.assembly>
.And<INTranSplit.lotSerialNbr.IsNotNull>>
.OrderBy<INTranSplit.lineNbr.Asc>
.View Picked;

public PXAction<DummyDAC> UpdateSplit;

[PXButton]
[PXUIField(DisplayName = "Update Split")]
protected virtual IEnumerable updateSplit(PXAdapter adapter)
{
foreach (INTranSplit split in Picked.Select().RowCast<INTranSplit>()
.Where(x => x.RefNbr == "000039"))
{
split.GetExtension<AKINTranSpliteExt>().UsrPickedQty = 2;

Picked.Update(split);

Save.Press();
}

return adapter.Get();
}
}

What is the recommended way to update a custom field on INTranSplit and persist the change?

Version: 26R1

1 reply

Forum|alt.badge.img+8
  • Captain II
  • July 27, 2026

There’s logic that’s running within the DAC that might be interfering with the update of the record outside of the graph it’s usually used with.

OrigModule, for example, as a PXDBDefault attribute:

[PXDBDefault(typeof(INRegister.origModule))]

Same with TranDate:

[PXDBDefault(typeof(INRegister.tranDate))]

And, most importantly, RefNbr has a PXDBDefault along with PXParent.

[PXDBDefault(typeof(INRegister.refNbr))]
[PXParent(typeof(FK.Tran))]

So these may be causing the DAC to look for values from it’s Parent when you’re trying to save.

If you only need to update those fields, one way to avoid PXDatabase calls would be to use CacheAttached to modify those attributes on those fields within your specific graph.