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