【问题标题】:How to paste custom field values from the AR Invoice and AP Bill details directly into GL Transactions?如何将 AR Invoice 和 AP Bill 详细信息中的自定义字段值直接粘贴到 GL Transactions 中?
【发布时间】:2018-02-12 23:49:27
【问题描述】:

我在 ARTran、APTran 和 GLTran DAC 中创建了一个自定义的 DB 绑定字段,称为 Stock Number

public class ARTranExt : PXCacheExtension<PX.Objects.AR.ARTran>
{
    public abstract class usrLineStockNbr : IBqlField { }

    [PXDBString(10)]
    [PXUIField(DisplayName = "Stock Number")]
    public virtual string UsrLineStockNbr { get; set; }
}

public class APTranExt : PXCacheExtension<PX.Objects.AP.APTran>
{
    public abstract class usrLineStockNbr : IBqlField { }

    [PXDBString(10)]
    [PXUIField(DisplayName = "Stock Number")]
    public virtual string UsrLineStockNbr { get; set; }
}

public class GLTranExt : PXCacheExtension<PX.Objects.GL.GLTran>
{
    public abstract class usrLineStockNbr : IBqlField { }

    [PXDBString(10)]
    [PXUIField(DisplayName = "Stock Number")]
    public virtual string UsrLineStockNbr { get; set; }
}

如何将 AR 发票和 AP 账单详细信息中的自定义字段值直接粘贴到 GL 交易中?

【问题讨论】:

    标签: acumatica acumatica-kb


    【解决方案1】:

    要将自定义字段值从 ARTran 粘贴到 GLTran,您应该为 ARReleaseProcess BLC 创建一个扩展并覆盖 ReleaseInvoice 方法,如图所示在下面的示例中:

    public class ARReleaseProcess_Extension : PXGraphExtension<PX.Objects.AR.ARReleaseProcess>
    {
        public delegate List<ARRegister> ReleaseInvoiceDel(
            JournalEntry je,
            ref ARRegister doc,
            PXResult<ARInvoice, CurrencyInfo, Terms, Customer, Account> res,
            out PMRegister pmDoc);
    
        [PXOverride]
        public List<ARRegister> ReleaseInvoice(
            JournalEntry je,
            ref ARRegister doc,
            PXResult<ARInvoice, CurrencyInfo, Terms, Customer, Account> res,
            out PMRegister pmDoc,
            ReleaseInvoiceDel del)
        {
            je.RowInserting.AddHandler<GLTran>((s, a) =>
            {
                var tran = (GLTran)a.Row;
                var arTran = (ARTran)PXResult<ARTran>.Current;
    
                if (tran != null && tran.TranLineNbr != null &&
                    arTran != null && arTran.TranType == tran.TranType &&
                    arTran.RefNbr == tran.RefNbr && arTran.LineNbr == tran.TranLineNbr)
                {
                    var stockNbr = arTran.GetExtension<ARTranExt>().UsrLineStockNbr;
                    if (!string.IsNullOrEmpty(stockNbr))
                        tran.GetExtension<GLTranExt>().UsrLineStockNbr = stockNbr;
                }
            });
    
            return del(je, ref doc, res, out pmDoc);
        }
    }
    

    新生成的 GL Batch 应如下所示: 下面的 AR 发票发布后:

    要将自定义字段值从 APTran 粘贴到 GLTran,您应该为 APReleaseProcess BLC 创建一个扩展并覆盖 ReleaseInvoice 方法,如图所示在下面的示例中:

    public class APReleaseProcess_Extension : PXGraphExtension<PX.Objects.AP.APReleaseProcess>
    {
        public delegate List<APRegister> ReleaseInvoiceDel(
            JournalEntry je,
            ref APRegister doc,
            PXResult<APInvoice, CurrencyInfo, Terms, Vendor> res,
            bool isPrebooking,
            out List<INRegister> inDocs);
    
        [PXOverride]
        public virtual List<APRegister> ReleaseInvoice(
            JournalEntry je,
            ref APRegister doc,
            PXResult<APInvoice, CurrencyInfo, Terms, Vendor> res,
            bool isPrebooking,
            out List<INRegister> inDocs,
            ReleaseInvoiceDel del)
        {
            je.RowInserting.AddHandler<GLTran>((s, a) =>
            {
                var tran = (GLTran)a.Row;
                var apTran = (APTran)PXResult<APTran>.Current;
    
                if (tran != null && tran.TranLineNbr != null &&
                    apTran != null && apTran.TranType == tran.TranType &&
                    apTran.RefNbr == tran.RefNbr && apTran.LineNbr == tran.TranLineNbr)
                {
                    var stockNbr = apTran.GetExtension<APTranExt>().UsrLineStockNbr;
                    if (!string.IsNullOrEmpty(stockNbr))
                        tran.GetExtension<GLTranExt>().UsrLineStockNbr = stockNbr;
                }
            });
    
            return del(je, ref doc, res, isPrebooking, out inDocs);
        }
    }
    

    以下是新 GL 批次的示例: 在发布以下 AP 法案期间产生:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-10
      • 2017-07-15
      • 2017-06-18
      • 1970-01-01
      • 1970-01-01
      • 2020-06-25
      • 2022-07-28
      • 2012-05-25
      相关资源
      最近更新 更多