在Acumatica系统中自定义发布AP文档

时间:2016-04-22 03:49:34

标签: c# acumatica

我对Acumatica中的BLC有疑问。 我们知道使用ARInvoiceEntry BLC屏幕发票和备忘录(AR301000)中的发布过程,它调用ARDocumentRelease静态方法ReleaseDoc。 ReleaseDoc调用虚拟的ReleaseDocProc方法,该方法创建GLTran记录。

我的问题:这个条件是否也在APInvoiceEntry BLC中实现了APDocumentRelease静态方法ReleaseDoc。而ReleaseDoc也会调用虚拟的ReleaseDocProc方法吗?

因为我在屏幕发票和备忘录中有一个额外的字段,并且想要在单击按钮释放时将此附加字段中的值发送到日记帐事务。尽管从屏幕发票和备忘录以及AR发布流程屏幕中发布。我已经完成了这个定制。

现在我需要为屏幕AP发布流程屏幕做同样的事情。

任何建议如何提供它?

1 个答案:

答案 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);
        }
    }
}