我正在自定义ARPaymentEntry逻辑,以便它使用我们在"发票和备忘录中的自定义字段"屏幕并影响"付款和应用程序"屏幕。此必填字段是ARRegister的扩展,目前只有两个状态,A和B.
以下代码的方式,如果我在P& A屏幕上保存了一个付款,其中一行带有" A"记录,它只允许我添加" A"该付款的记录。因此,如果我们在那里得到一条" A"或" B"值,它只会通过选择器允许这些值。这是我想要做的第一部分。
如果我更改代码以手动将其检查的值设置为" A",则选择器将仅在"付款和应用程序"上显示带有该字母的记录。屏幕,但它也只允许" A"记录来自"发票和备忘录"屏幕通过"输入付款按钮"。
我接下来要做的是创建某种if语句,可以查看Current2 Custom.DAC.ARRegisterExtension.customField的值是否为null,如果是,则不进行评估,但如果是不为null,它应该针对当前值进行评估。这样,I& M屏幕仍然可以将单个记录传递给P& A,并且用户可以从任何发票中选择P& A屏幕上的起始文档,并且在选择第一个发票之后它将限制用户到该类型。我一直在研究这个BQL查询中的if语句,试图得到正确的结果,但是我还没有能够提出正确的解决方案。
如果有什么我可以在这里澄清的话,请告诉我,我知道这有点啰嗦......
我改变的部分是:
Where<Custom.DAC.ARRegisterExtension.customField, Equal<Current2<Custom.DAC.ARRegisterExtension.customField>>,
以下是代码:
using PX.Data;
using Custom.DAC;
namespace PX.Objects.AR
{
public class ARPaymentEntry_Extension : PXGraphExtension<ARPaymentEntry>
{
#region AdjdRefNbr
protected string _AdjdRefNbr;
[PXDBString(15, IsKey = true, IsUnicode = true, InputMask = ">CCCCCCCCCCCCCCC")]
[PXDefault()]
[PXUIField(DisplayName = "Reference Nbr.", Visibility = PXUIVisibility.Visible)]
[ARInvoiceType.AdjdRefNbr(typeof(Search2<ARInvoice.refNbr,
LeftJoin<ARAdjust, On<ARAdjust.adjdDocType, Equal<ARInvoice.docType>,
And<ARAdjust.adjdRefNbr, Equal<ARInvoice.refNbr>,
And<ARAdjust.released, NotEqual<True>,
And<ARAdjust.voided, NotEqual<True>,
And<Where<ARAdjust.adjgDocType, NotEqual<Current<ARRegister.docType>>,
Or<ARAdjust.adjgRefNbr, NotEqual<Current<ARRegister.refNbr>>>>>>>>>,
LeftJoin<ARAdjust2, On<ARAdjust2.adjgDocType, Equal<ARInvoice.docType>,
And<ARAdjust2.adjgRefNbr, Equal<ARInvoice.refNbr>,
And<ARAdjust2.released, NotEqual<True>,
And<ARAdjust2.voided, NotEqual<True>>>>>,
LeftJoin<Customer, On<ARInvoice.customerID, Equal<Customer.bAccountID>>>>>,
Where<Custom.DAC.ARRegisterExtension.customField, Equal<Current2<Custom.DAC.ARRegisterExtension.customField>>,
And<ARInvoice.docType, Equal<Optional<ARAdjust.adjdDocType>>,
And<ARInvoice.released, Equal<True>,
And<ARInvoice.openDoc, Equal<True>,
And<ARAdjust.adjgRefNbr, IsNull,
And<ARAdjust2.adjdRefNbr, IsNull,
And<ARInvoice.customerID, In2<Search<Override.BAccount.bAccountID,
Where<Override.BAccount.bAccountID, Equal<Optional<ARRegister.customerID>>,
Or<Override.BAccount.consolidatingBAccountID, Equal<Optional<ARRegister.customerID>>>>>>,
And<Where<ARInvoice.pendingPPD, NotEqual<True>,
Or<Current<ARRegister.pendingPPD>, Equal<True>>>>>>>>>>>>), Filterable = true)]
#endregion
protected virtual void ARAdjust_AdjdRefNbr_CacheAttached(PXCache cache)
{
}
}
}