在“从发票和备注发布操作”屏幕上运行代码



我有一个自定义,我想在发布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);
}

最新更新