Version is 19.110.0013
I have created an inner join extension table for APInvoice. This has caused an issue with the Quick Checks flow. Specifically, creation of a Quick Check creates a record within the APInvoice table, but not a corresponding record in the extension table.
My DAC
using PX.Data;
using PX.Objects.AP;
namespace MyProject.DAC
{
[PXTable(IsOptional = false)]
[Serializable()]
public class ApInvoiceExtension : PXCacheExtension<APInvoice>
{
#region MyCustomFlag
public abstract class myCustomFlag : IBqlField { }
[PXDBBool()]
[PXUIField(DisplayName = "Custom Flag")]
public virtual bool? MyCustomFlag { get; set; }
#endregion
}
}
My Table
CREATE TABLE [dbo].[ApInvoiceExtension](
[CompanyID] [int] NOT NULL,
[DocType] [char](3) NOT NULL,
[RefNbr] [nvarchar](15) NOT NULL,
[MyCustomFlag] [bit] NULL,
CONSTRAINT [ApInvoiceExtension_PK] PRIMARY KEY CLUSTERED
(
[CompanyID] ASC,
[DocType] ASC,
[RefNbr] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[ApInvoiceExtension] ADD DEFAULT ((0)) FOR [CompanyID]
GO
I'm quite sure this has to do with the definition of APQuickCheck which is a DAC with the following attribute
[PXProjection(typeof(Select2<APRegister,
InnerJoin<APInvoice, On<APInvoice.docType, Equal<APRegister.docType>,
And<APInvoice.refNbr, Equal<APRegister.refNbr>>>,
InnerJoin<APPayment, On<APPayment.docType, Equal<APRegister.docType>,
And<APPayment.refNbr, Equal<APRegister.refNbr>>>>>,
Where<APRegister.docType, Equal<APDocType.quickCheck>,
Or<APRegister.docType, Equal<APDocType.voidQuickCheck>>>>), Persistent = true)]
The saving against this projection ignores the required extension records. I wondered if the issue was because the APInvoice referenced here was from the PX.Objects.AP.Standalone namespace instead of the PX.Objects.AP namespace which I extended, so I did attempt to get around this by creating a DAC extension for this namespace as well. My extension looked like this
using PX.Data;
using PX.Objects.AP.Standalone;
namespace MyProject.DAC.Standalone
{
[PXTable(IsOptional = false)]
[Serializable()]
public class ApInvoiceExtension : PXCacheExtension<APInvoice>
{
#region MyCustomFlag
public abstract class myCustomFlag : IBqlField { }
[PXDBBool()]
[PXUIField(DisplayName = "Custom Flag")]
public virtual bool? MyCustomFlag { get; set; }
#endregion
}
}
This addition didn't change the behavior, Quick Checks still created an entry in APInvoice but not in my APInvoiceExtension table.

