I have created an extension for ARRegister DAC as bellow.
public class ARRegisterExt : PXCacheExtension<PX.Objects.AR.ARRegister>
{
#region Activation
public static bool IsActive()
{
return true;
}
#endregion
#region UsrLinksoftARInvoiceNumber
[PXDBString(50)]
[PXUIField(DisplayName = "Linksoft AR Invoice Number")]
public virtual string UsrLinksoftARInvoiceNumber { get; set; }
public abstract class usrLinksoftARInvoiceNumber : PX.Data.BQL.BqlString.Field<usrLinksoftARInvoiceNumber> { }
#endregion
}In the ARPaymentEntry extension I have add an event as below
protected void _(Events.FieldUpdated<ARAdjust, ARAdjustExt.usrLinksoftARInvoiceNumber> e)
{
ARAdjust row = e.Row;
var ext = e.Cache.GetExtension<ARAdjustExt>(row);
if (ext?.UsrLinksoftARInvoiceNumber == null)
return;
//ARRegister arRegister = SelectFrom<ARRegister>
// .Where<ARRegisterExt.usrLinksoftARInvoiceNumber.IsEqual<PX.Data.BQL.@P.AsString>>
//.View.Select(Base, ext.UsrLinksoftARInvoiceNumber);
ARRegister arRegister = PXSelect<ARRegister,
Where<ARRegisterExt.usrLinksoftARInvoiceNumber, Equal<Required<ARRegisterExt.usrLinksoftARInvoiceNumber>>>>
.Select(Base, ext.UsrLinksoftARInvoiceNumber);
if (arRegister != null)
{
e.Cache.SetValueExt<ARAdjust.adjdRefNbr>(row, arRegister.RefNbr);
}
}Here the arRegister always returns null. but relevant data is exists in database. I manually check the database. I did a debug and found that event is triggered correctly and the ext.UsrLinksoftARInvoiceNumber value also pass correctly.
my question is is it need to do a inner join between the DAC and Extention is such cases. But my extension is declared as public class ARRegisterExt : PXCacheExtension<PX.Objects.AR.ARRegister> so it is not implimnet the IBqlTable interface
how can i get the correct ARRegister DAC?