如果要在选择器覆盖中检查当前空值的语句?

时间:2018-02-28 16:00:31

标签: acumatica

我正在自定义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)
        {
        }

    }
}

0 个答案:

没有答案