如何自定义屏幕 GL501000 发布交易
How to custom the screen GL501000 Release Transactions
我正在尝试自定义 GL501000 发布交易屏幕,但在处理时它没有输入我的代码,它可能表明我应该使用什么事件来实现此目的。
提前致谢
using System;
using System.Text;
using PX.Data;
using System.Collections;
using System.Collections.Generic;
using PX.Objects.BQLConstants;
using PX.Objects.CS;
using PX.Objects.CM;
using PX.SM;
using System.Linq;
using PX.Objects;
using PX.Objects.GL;
namespace PX.Objects.GL
{
public class BatchRelease_Extension : PXGraphExtension<BatchRelease>
{
public override void Initialize()
{
base.Initialize();
PXGraph.InstanceCreated.AddHandler<JournalEntry>((JournalEntry graphGL) =>
{
graphGL.GetExtension<JournalEntry_Extension>().ModifyBatchFrom = true;
});
}
}
}
您似乎想知道这是从处理屏幕而不是一次性用户条目调用的。我建议您可以查看 Acumatica OpenUni 网站上的免费 T240 Processing Forms 培训。他们通过包含一个参数来表明这项工作源自一种处理形式,这可以简化您的工作并提高性能。训练示例显示:
public void AssignOrder(RSSVWorkOrder order, bool isMassProcess = false)
{
...
if (isMassProcess)
{
...
}
}
或者,您可能需要将添加的事件处理程序向下移动到 PostGraph 而不是 JournalEntry。它们都在代码存储库中的同一个文件中。尽管如此,如果您的目标是知道它是从处理屏幕调用的,我建议您考虑修改您的方法以匹配 T240 中的示例。
由于它是在静态方法中,重新处理它会很“有趣”,但你想替换:
pg.ReleaseBatchProc(copy);
与:
pg.ReleaseBatchProc(copy, isMassProcess: true);
并添加签名支持:
public virtual void ReleaseBatchProc(Batch b, bool unholdBatch = false, bool isMassProcess = false)
接下来,您将在批量处理时针对您的特殊情况使用 isMassProcess bool 值,然后调用原始签名:
public virtual void ReleaseBatchProc(Batch b, bool unholdBatch = false)
通过:
ReleaseBatchProc(b);
示例:
public virtual void ReleaseBatchProc(Batch b, bool unholdBatch = false, bool isMassProcess = false)
{
MyMethod(isMassProcess);
ReleaseBatchProc(b);
}
我正在尝试自定义 GL501000 发布交易屏幕,但在处理时它没有输入我的代码,它可能表明我应该使用什么事件来实现此目的。
提前致谢
using System;
using System.Text;
using PX.Data;
using System.Collections;
using System.Collections.Generic;
using PX.Objects.BQLConstants;
using PX.Objects.CS;
using PX.Objects.CM;
using PX.SM;
using System.Linq;
using PX.Objects;
using PX.Objects.GL;
namespace PX.Objects.GL
{
public class BatchRelease_Extension : PXGraphExtension<BatchRelease>
{
public override void Initialize()
{
base.Initialize();
PXGraph.InstanceCreated.AddHandler<JournalEntry>((JournalEntry graphGL) =>
{
graphGL.GetExtension<JournalEntry_Extension>().ModifyBatchFrom = true;
});
}
}
}
您似乎想知道这是从处理屏幕而不是一次性用户条目调用的。我建议您可以查看 Acumatica OpenUni 网站上的免费 T240 Processing Forms 培训。他们通过包含一个参数来表明这项工作源自一种处理形式,这可以简化您的工作并提高性能。训练示例显示:
public void AssignOrder(RSSVWorkOrder order, bool isMassProcess = false)
{
...
if (isMassProcess)
{
...
}
}
或者,您可能需要将添加的事件处理程序向下移动到 PostGraph 而不是 JournalEntry。它们都在代码存储库中的同一个文件中。尽管如此,如果您的目标是知道它是从处理屏幕调用的,我建议您考虑修改您的方法以匹配 T240 中的示例。
由于它是在静态方法中,重新处理它会很“有趣”,但你想替换:
pg.ReleaseBatchProc(copy);
与:
pg.ReleaseBatchProc(copy, isMassProcess: true);
并添加签名支持:
public virtual void ReleaseBatchProc(Batch b, bool unholdBatch = false, bool isMassProcess = false)
接下来,您将在批量处理时针对您的特殊情况使用 isMassProcess bool 值,然后调用原始签名:
public virtual void ReleaseBatchProc(Batch b, bool unholdBatch = false)
通过:
ReleaseBatchProc(b);
示例:
public virtual void ReleaseBatchProc(Batch b, bool unholdBatch = false, bool isMassProcess = false)
{
MyMethod(isMassProcess);
ReleaseBatchProc(b);
}