首页 文章

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

提问于
浏览
0

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

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

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

现在我需要对屏幕AP Release Process屏幕做同样的事情 .

任何建议如何提供?

1 回答

  • 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);
            }
        }
    }
    

相关问题