在 Acumatica 系统中自定义发布 AP 文档
Customize Release AP Document in Acumatica System
我对 Acumatica 中的 BLC 有疑问。
正如我们所知,屏幕发票和备忘录 (AR301000) 中的发布过程使用调用 ARDocumentRelease 静态方法 ReleaseDoc 的 ARInvoiceEntry BLC。
ReleaseDoc 调用虚拟 ReleaseDocProc 方法,创建 GLTran 记录。
我的问题:这种情况是否也在调用 APDocumentRelease 静态方法 ReleaseDoc 的 APInvoiceEntry BLC 中实现。 ReleaseDoc 也调用虚拟 ReleaseDocProc 方法 ?
因为我在屏幕发票和备忘录中有一个附加字段,并且希望在单击按钮释放时将此附加字段中的值发送到日记账交易。尽管从屏幕发票和备忘录以及从 AR 发布过程屏幕发布。我已经完成了这个定制。
现在我需要对屏幕 AP Release Process 屏幕做同样的事情。
有什么建议如何提供吗?
尝试这样的事情(我从问题 复制粘贴代码并修改它):
using System;
using System.Collections.Generic;
using PX.Data;
using PX.Objects.AP;
using PX.Objects.GL;
using PX.Objects.CM;
using PX.Objects.CS;
using PX.Objects.IN;
namespace SGLCustomizeProject
{
public class ARRelaseProcessExtension : PXGraphExtension<APReleaseProcess>
{
public delegate List<APRegister> ReleaseDocProcDel(JournalEntry je, ref APRegister doc, PXResult<APInvoice, CurrencyInfo, Terms, Vendor> res, bool isPrebooking, out List<INRegister> inDocs);
[PXOverride]
public virtual List<APRegister> ReleaseDocProc(JournalEntry je, ref APRegister doc, PXResult<APInvoice, CurrencyInfo, Terms, Vendor> res, bool isPrebooking, out List<INRegister> inDocs, ReleaseDocProcDel del)
{
je.RowInserting.AddHandler<GLTran>((sender, e) =>
{
GLTran glTran = e.Row as GLTran;
APInvoice api = PXSelect<APInvoice, Where<APInvoice.refNbr, Equal<Required<GLTran.refNbr>>, And<APInvoice.docType, Equal<Required<GLTran.tranType>>>>>.Select(sender.Graph, glTran.RefNbr, glTran.TranType);
if (api != null && api.InvoiceNbr != null)
{
GLTranExtension glTex = PXCache<GLTran>.GetExtension<GLTranExtension>(glTran);
glTex.UsrInvoiceNbr = api.InvoiceNbr;
}
});
return del(je, ref doc, res, isPrebooking, out inDocs);
}
}
}
我对 Acumatica 中的 BLC 有疑问。 正如我们所知,屏幕发票和备忘录 (AR301000) 中的发布过程使用调用 ARDocumentRelease 静态方法 ReleaseDoc 的 ARInvoiceEntry BLC。 ReleaseDoc 调用虚拟 ReleaseDocProc 方法,创建 GLTran 记录。
我的问题:这种情况是否也在调用 APDocumentRelease 静态方法 ReleaseDoc 的 APInvoiceEntry BLC 中实现。 ReleaseDoc 也调用虚拟 ReleaseDocProc 方法 ?
因为我在屏幕发票和备忘录中有一个附加字段,并且希望在单击按钮释放时将此附加字段中的值发送到日记账交易。尽管从屏幕发票和备忘录以及从 AR 发布过程屏幕发布。我已经完成了这个定制。
现在我需要对屏幕 AP Release Process 屏幕做同样的事情。
有什么建议如何提供吗?
尝试这样的事情(我从问题
using System;
using System.Collections.Generic;
using PX.Data;
using PX.Objects.AP;
using PX.Objects.GL;
using PX.Objects.CM;
using PX.Objects.CS;
using PX.Objects.IN;
namespace SGLCustomizeProject
{
public class ARRelaseProcessExtension : PXGraphExtension<APReleaseProcess>
{
public delegate List<APRegister> ReleaseDocProcDel(JournalEntry je, ref APRegister doc, PXResult<APInvoice, CurrencyInfo, Terms, Vendor> res, bool isPrebooking, out List<INRegister> inDocs);
[PXOverride]
public virtual List<APRegister> ReleaseDocProc(JournalEntry je, ref APRegister doc, PXResult<APInvoice, CurrencyInfo, Terms, Vendor> res, bool isPrebooking, out List<INRegister> inDocs, ReleaseDocProcDel del)
{
je.RowInserting.AddHandler<GLTran>((sender, e) =>
{
GLTran glTran = e.Row as GLTran;
APInvoice api = PXSelect<APInvoice, Where<APInvoice.refNbr, Equal<Required<GLTran.refNbr>>, And<APInvoice.docType, Equal<Required<GLTran.tranType>>>>>.Select(sender.Graph, glTran.RefNbr, glTran.TranType);
if (api != null && api.InvoiceNbr != null)
{
GLTranExtension glTex = PXCache<GLTran>.GetExtension<GLTranExtension>(glTran);
glTex.UsrInvoiceNbr = api.InvoiceNbr;
}
});
return del(je, ref doc, res, isPrebooking, out inDocs);
}
}
}