我需要更改Release过程的工作方式。具体来说,我需要更改Cash Sales网站上的Release按钮,以使用自定义字段填充Cash Account和Subaccount字段。我发现发布按钮会将流程转发到位于ARDocumentRelease.ReleaseDoc()
的{{1}}。这让我相信我需要自定义'PX.Objects.AR'中存在的函数,但我不确定这是否可行。
是否可以自定义PX.Objects DLL中存在的函数?如果没有,我是否可以强制DLL中的函数接收现金帐户和子帐户值而不是基本字段的自定义字段?
答案 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;
}
}