我对Acumatica中的BLC有疑问。 我们知道使用ARInvoiceEntry BLC屏幕发票和备忘录(AR301000)中的发布过程,它调用ARDocumentRelease静态方法ReleaseDoc。 ReleaseDoc调用虚拟的ReleaseDocProc方法,该方法创建GLTran记录。
我的问题:这个条件是否也在APInvoiceEntry BLC中实现了APDocumentRelease静态方法ReleaseDoc。而ReleaseDoc也会调用虚拟的ReleaseDocProc方法吗?
因为我在屏幕发票和备忘录中有一个额外的字段,并且想要在单击按钮释放时将此附加字段中的值发送到日记帐事务。尽管从屏幕发票和备忘录以及AR发布流程屏幕中发布。我已经完成了这个定制。
现在我需要为屏幕AP发布流程屏幕做同样的事情。
任何建议如何提供它?
答案 0 :(得分:1)
尝试这样的事情(我从问题How to Customize screen Release AP Documents (AP501000) in Acumatica复制了代码并对其进行了修改):
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);
}
}
}