我可以自定义现金销售中的发布操作吗?

时间:2018-04-02 20:33:44

标签: acumatica

我需要更改Release过程的工作方式。具体来说,我需要更改Cash Sales网站上的Release按钮,以使用自定义字段填充Cash Account和Subaccount字段。我发现发布按钮会将流程转发到位于ARDocumentRelease.ReleaseDoc()的{​​{1}}。这让我相信我需要自定义'PX.Objects.AR'中存在的函数,但我不确定这是否可行。

是否可以自定义PX.Objects DLL中存在的函数?如果没有,我是否可以强制DLL中的函数接收现金帐户和子帐户值而不是基本字段的自定义字段?

1 个答案:

答案 0 :(得分:2)

ARDocumentRelease是进程列表页面,为每个文档版本调用ARReleaseProcess并且是图表。您可以创建图表扩展以覆盖它所做的调用,这是对ReleaseDocProc的虚拟调用,这意味着您可以在图表扩展中使用PXOverride来覆盖调用。没有测试,它可能看起来像这样......

public class ARReleaseProcessExtension : PXGraphExtension<PX.Objects.AR.ARReleaseProcess>
{
    [PXOverride]
    public virtual List<PX.Objects.AR.ARRegister> ReleaseDocProc(PX.Objects.GL.JournalEntry je, PX.Objects.AR.ARRegister ardoc, List<PX.Objects.GL.Batch> pmBatchList,
        PX.Objects.AR.ARDocumentRelease.ARMassProcessReleaseTransactionScopeDelegate onreleasecomplete, 
        Func<PX.Objects.GL.JournalEntry, PX.Objects.AR.ARRegister, List<PX.Objects.GL.Batch>, PX.Objects.AR.ARDocumentRelease.ARMassProcessReleaseTransactionScopeDelegate, List<PX.Objects.AR.ARRegister>> del)
    {
        //Code before...

        //The base call...
        var ret = del?.Invoke(je, ardoc, pmBatchList, onreleasecomplete);

        //Code after...

        return ret;
    }
}