Acumatica APRegisterExt未将数据保存在APInvoiceEntry上

Acumatica APRegisterExt未将数据保存在APInvoiceEntry上,acumatica,Acumatica,构建18.203.0006 页码:AP301000 您好,我通过添加两个新的复选框字段扩展了APRegister类。我想重复所有APTran交易,寻找以FBL和GAS开始的SUID。如果我找到它们,新的勾选框应该会勾选 当前,字段(勾选框)不会保存到数据库中。我不知道如何告诉Acumatica,APRegisterExt已经更新 APINVOICECENTRY_扩展名: namespace PX.Objects.AP { public class APRegisterExt : PXCach

构建18.203.0006 页码:AP301000

您好,我通过添加两个新的复选框字段扩展了APRegister类。我想重复所有APTran交易,寻找以FBL和GAS开始的SUID。如果我找到它们,新的勾选框应该会勾选

当前,字段(勾选框)不会保存到数据库中。我不知道如何告诉Acumatica,APRegisterExt已经更新

APINVOICECENTRY_扩展名:

namespace PX.Objects.AP
{
  public class APRegisterExt : PXCacheExtension<PX.Objects.AP.APRegister>
  {
    #region UsrGroupAEmail
    [PXDBBool]
    [PXUIField(DisplayName="GroupA Email")]

    public virtual bool? UsrGroupAEmail { get; set; }
    public abstract class usrGroupAEmail : IBqlField { }
    #endregion

    #region UsrGroupBEmail
    [PXDBBool]
    [PXUIField(DisplayName="GroupB Email")]

    public virtual bool? UsrGroupBEmail { get; set; }
    public abstract class usrGroupBEmail : IBqlField { }
    #endregion
  }
}
namespace PX.Objects.AP
{
    public class APInvoiceEntry_Extension : PXGraphExtension<APInvoiceEntry>
    {
        #region Event Handlers
        protected void APInvoice_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
        {
            APInvoice invoice = e.Row as APInvoice;
            if (invoice == null) return;

            var apRX = invoice.GetExtension<APRegisterExt>();

            PXResultset<APTran> Tlist = PXSelectJoin<APTran,
                                           LeftJoin<POReceiptLine,
                                                 On<POReceiptLine.receiptNbr, Equal<APTran.receiptNbr>,
                                                And<POReceiptLine.lineNbr, Equal<APTran.receiptLineNbr>>>>,
                                                Where<
                                                      APTran.tranType, Equal<Current<APInvoice.docType>>,
                                                  And<APTran.refNbr, Equal<Current<APInvoice.refNbr>>>>,
                                                  OrderBy<
                                                      Asc<APTran.tranType,
                                                      Asc<APTran.refNbr,
                                                      Asc<APTran.lineNbr>>>>>.Select(Base);

            apRX.UsrGroupBEmail = false;
            apRX.UsrGroupAEmail = false;

            foreach (APTran item in Tlist)
            {
                if (item.SubID.Value.ToString().StartsWith("FBL") || item.SubID.Value.ToString().StartsWith("GAS"))
                {
                    apRX.UsrGroupBEmail = true;
                    cache.SetValue<APRegisterExt.usrGroupBEmail>(e.Row, true);
                }
                else
                {
                    apRX.UsrGroupAEmail = true;
                }
            }
        }

        #endregion
    }

}
名称空间PX.Objects.AP
{
公共类APRegisterExt:PXCacheExtension
{
#区域UsrGroupAEmail
[PXDBBool]
[PXUIField(DisplayName=“GroupA电子邮件”)]
公共虚拟bool?UsrGroupAEmail{get;set;}
公共抽象类usrGroupAEmail:IBqlField{}
#端区
#区域UsrGroupBEmail
[PXDBBool]
[PXUIField(DisplayName=“GroupB电子邮件”)]
公共虚拟bool?UsrGroupBEmail{get;set;}
公共抽象类usrGroupBEmail:IBqlField{}
#端区
}
}
APINVOICECENTRY_扩展名:

namespace PX.Objects.AP
{
  public class APRegisterExt : PXCacheExtension<PX.Objects.AP.APRegister>
  {
    #region UsrGroupAEmail
    [PXDBBool]
    [PXUIField(DisplayName="GroupA Email")]

    public virtual bool? UsrGroupAEmail { get; set; }
    public abstract class usrGroupAEmail : IBqlField { }
    #endregion

    #region UsrGroupBEmail
    [PXDBBool]
    [PXUIField(DisplayName="GroupB Email")]

    public virtual bool? UsrGroupBEmail { get; set; }
    public abstract class usrGroupBEmail : IBqlField { }
    #endregion
  }
}
namespace PX.Objects.AP
{
    public class APInvoiceEntry_Extension : PXGraphExtension<APInvoiceEntry>
    {
        #region Event Handlers
        protected void APInvoice_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
        {
            APInvoice invoice = e.Row as APInvoice;
            if (invoice == null) return;

            var apRX = invoice.GetExtension<APRegisterExt>();

            PXResultset<APTran> Tlist = PXSelectJoin<APTran,
                                           LeftJoin<POReceiptLine,
                                                 On<POReceiptLine.receiptNbr, Equal<APTran.receiptNbr>,
                                                And<POReceiptLine.lineNbr, Equal<APTran.receiptLineNbr>>>>,
                                                Where<
                                                      APTran.tranType, Equal<Current<APInvoice.docType>>,
                                                  And<APTran.refNbr, Equal<Current<APInvoice.refNbr>>>>,
                                                  OrderBy<
                                                      Asc<APTran.tranType,
                                                      Asc<APTran.refNbr,
                                                      Asc<APTran.lineNbr>>>>>.Select(Base);

            apRX.UsrGroupBEmail = false;
            apRX.UsrGroupAEmail = false;

            foreach (APTran item in Tlist)
            {
                if (item.SubID.Value.ToString().StartsWith("FBL") || item.SubID.Value.ToString().StartsWith("GAS"))
                {
                    apRX.UsrGroupBEmail = true;
                    cache.SetValue<APRegisterExt.usrGroupBEmail>(e.Row, true);
                }
                else
                {
                    apRX.UsrGroupAEmail = true;
                }
            }
        }

        #endregion
    }

}
名称空间PX.Objects.AP
{
公共类APInvoiceEntry_扩展名:pxGrapherExtension
{
#区域事件处理程序
已选择受保护的无效APInvoice_行(PXCache缓存,PXRowSelectedEventArgs e)
{
APInvoice发票=e.行作为APInvoice;
如果(发票==null)返回;
var apRX=invoice.GetExtension();
PXResultset Tlist=PXSelectJoin,
订货人<
Asc>>。选择(基本);
apRX.UsrGroupBEmail=false;
apRX.UsrGroupAEmail=false;
foreach(Tlist中的APTran项)
{
if(item.SubID.Value.ToString().StartsWith(“FBL”)| | item.SubID.Value.ToString().StartsWith(“GAS”))
{
apRX.UsrGroupBEmail=true;
SetValue(例如,行,true);
}
其他的
{
apRX.UsrGroupAEmail=true;
}
}
}
#端区
}
}

请有人告诉我如何将数据保存到新的勾选框中,以便缓存更新。

考虑将逻辑移动到注册表行。 重要的是,APTran.subID是一个Int数据类型。 在For循环期间读取子表/DAC Base.Transactions.Select()用于检测FBL或GAS的SubCD启动

foreach(APTran item in Base.Transaction.Select())
{ 
    Sub sub = PXSelect<Sub, 
           Where<Sub.subID, Equal<Required<Sub.subID>>>>
            .Select(graph, item.SubID);

    if (item.SubCD.StartsWith("FBL") || 
                 item.SubCD.StartsWith("GAS"))
    {
         apRX.UsrGroupBEmail = true;
    }
    else
    {
         apRX.UsrGroupAEmail = true;
    }

}
foreach(Base.Transaction.Select()中的APTran项)
{ 
Sub-Sub=PXSelect
.选择(图形,项.SubID);
如果(子条款)开始使用(“FBL”)||
项目分包开工(含“天然气”)
{
apRX.UsrGroupBEmail=true;
}
其他的
{
apRX.UsrGroupAEmail=true;
}
}
要完成此操作,您可能还需要在更新APTran_SubID_field期间重置两个标志,而不管更改的值:

protected void APTran_SubID_FieldUpdated(PXCache sender, 
        PXFieldUpdatedEventArgs e, PXFieldUpdated del)
{
    del?.Invoke(sender,e);

    var apRX = Base.Document.Current.GetExtension<APRegisterExt>();

    apRX.UsrGroupBEmail = false;
    apRX.UsrGroupAEmail = false;
}
protectedvoid APTran\u SubID\u FieldUpdated(PXCache发送方,
PXFieldUpdatedEventArgs e,PXFieldUpdated del)
{
del?.Invoke(发送方,e);
var apRX=Base.Document.Current.GetExtension();
apRX.UsrGroupBEmail=false;
apRX.UsrGroupAEmail=false;
}