作为标题,我不知道如何自定义此页面(处理页面)。我有覆盖初始化的扩展,如下所示
Base.INDocumentList.SetProcessDelegate(delegate(List<INRegister> list){ ReleaseDocExt(list); });
但是当我处理项目时 ReleaseDocExt 没有运行。
作为标题,我不知道如何自定义此页面(处理页面)。我有覆盖初始化的扩展,如下所示
Base.INDocumentList.SetProcessDelegate(delegate(List<INRegister> list){ ReleaseDocExt(list); });
但是当我处理项目时 ReleaseDocExt 没有运行。
我能够创建一个扩展并覆盖发布过程。如果我包含此扩展程序,系统将显示“Hello, World!” 尝试从批处理屏幕释放任何 IN 文档时:
namespace PX.Objects.IN
{
public class INDocumentRelease_Extension:PXGraphExtension<INDocumentRelease>
{
public override void Initialize()
{
Base.INDocumentList.SetProcessDelegate(delegate(List<INRegister> list){ ReleaseDocExt(list); });
}
public static void ReleaseDocExt(List<INRegister> list)
{
throw new PXException("Hello, World!!");
}
}
}
从库存屏幕之一(如收据 (IN.30.10.00) 屏幕)释放文档时,不会调用此代码。原因是这些屏幕直接调用 INDocumentRelease 类中的静态方法,而不是创建图形来执行此操作:
public PXAction<INRegister> release;
[PXUIField(DisplayName = Messages.Release, MapEnableRights = PXCacheRights.Update, MapViewRights = PXCacheRights.Update)]
[PXProcessButton]
public virtual IEnumerable Release(PXAdapter adapter)
{
PXCache cache = receipt.Cache;
List<INRegister> list = new List<INRegister>();
foreach (INRegister indoc in adapter.Get<INRegister>())
{
if (indoc.Hold == false && indoc.Released == false)
{
cache.Update(indoc);
list.Add(indoc);
}
}
if (list.Count == 0)
{
throw new PXException(Messages.Document_Status_Invalid);
}
Save.Press();
PXLongOperation.StartOperation(this, delegate() { INDocumentRelease.ReleaseDoc(list, false); });
return list;
}
因此,系统没有机会在此过程中包含您的扩展。
如果您绝对需要自定义此过程,您还需要覆盖各个屏幕中的发布操作。Acumatica 也可以修改此代码以避免使用静态函数,而是实例化一个可以自定义的 INDocumentRelease 实例。
最后,我想警告您自定义交易发布流程 - 确保您知道自己在做什么!