我有一个自定义,我想在发布Invoice时运行一些代码(web服务调用)。在训练中,在我的Graph Extension中,我使用并修改了如下示例,其中CreateAPBills
方法是我想在Release Action(最终是RowPersisted事件)上运行的方法:
public class ARInvoiceEntryExt : PXGraphExtension<ARInvoiceEntry>
{
public PXAction<ARInvoice> release;
[PXUIField(DisplayName = "Release", MapEnableRights = PXCacheRights.Update, MapViewRights = PXCacheRights.Update)]
[PXProcessButton]
public IEnumerable Release(PXAdapter adapter)
{
PXGraph.InstanceCreated.AddHandler<ARInvoiceEntry>((graph) =>
{
graph.RowPersisted.AddHandler<ARInvoice>((cache, args) =>
{
if (args.TranStatus == PXTranStatus.Completed)
{
CreateAPBill(cache);
}
});
});
return Base.release.Press(adapter);
}
不幸的是,这似乎不起作用。我错过了什么?
我认为您已经颠倒了惯例。PXAction成员以大写字母开头,方法以小写字母开头。此外,请尝试使您的方法受到虚拟保护,并检查它是否有效。
public PXAction<ARInvoice> Release;
[PXUIField(DisplayName = "Release", MapEnableRights = PXCacheRights.Update, MapViewRights = PXCacheRights.Update)]
[PXProcessButton]
protected virtual IEnumerable release(PXAdapter adapter)
{
PXGraph.InstanceCreated.AddHandler<ARInvoiceEntry>((graph) =>
{
graph.RowPersisted.AddHandler<ARInvoice>((cache, args) =>
{
if (args.TranStatus == PXTranStatus.Completed)
{
CreateAPBill(cache);
}
});
});
return Base.release.Press(adapter);
}