【问题标题】:Customize Release Button in Bill and Adjustment Screen of Acumatica ERP System (Version 2021 R1)在 Acumatica ERP 系统(版本 2021 R1)的账单和调整屏幕中自定义发布按钮
【发布时间】:2021-07-21 13:37:25
【问题描述】:

我需要在 Bill and Adjusment 输入屏幕中为 Release 流程创建一些自定义代码。 我已经为 APInvoice、APTran、APtaxTran 和 GLTran 创建了 DAC 扩展,请看下面的代码。

1)。 APInvoiceExt(DAC 扩展)

using PX.Data;
namespace PX.Objects.AP
{
  public class APInvoiceExt : PXCacheExtension<PX.Objects.AP.APInvoice>
  {
     #region UsrJadeRefNbr
     public abstract class usrJadeRefNbr : IBqlField{}
     [PXDBString(50, IsFixed = true, IsUnicode = true)]
     [PXUIField(DisplayName = "Jade Ref. Nbr.")]
     public virtual string UsrJadeRefNbr { get; set; }
    #endregion
  }
}

2)。 APTranExt(DAC 扩展)

using PX.Data;
using SGLCustomizeProject;
namespace PX.Objects.AP
{
  public class APTranExt : PXCacheExtension<PX.Objects.AP.APTran>
  {
      #region UsrJobOrderNbr
      public abstract class usrJobOrderNbr : IBqlField{}
      [PXDBString(25, IsFixed = true, IsUnicode = true)]
      [PXUIField(DisplayName="Job Order Nbr")]
      [PXSelector(typeof(Search<JobOrderNbr.jobOrderNbrCD,
                        Where<JobOrderNbr.status,
                            Equal<statusActive>>>),
              typeof(JobOrderNbr.customerID),
              typeof(JobOrderNbr.status),
              typeof(JobOrderNbr.usrJobOrderNoRef))]
      public string UsrJobOrderNbr
     {
        get;
        set;
     }

     #endregion
  }
}

3)。 APtaxTranExt(DAC 扩展)

using PX.Data;
namespace PX.Objects.AP
{
    public class APTaxTranExt : PXCacheExtension<PX.Objects.AP.APTaxTran>
    {
        #region UsrNoSeriFaktur
        public abstract class usrNoSeriFaktur : IBqlTable { }
        [PXDBString(50, IsFixed = true)]
        [PXUIField(DisplayName = "No Seri Faktur / Additional Narration")]
        public string UsrNoSeriFaktur { get; set; }
        #endregion
    }
}

4)。 GLTranExt(DAC 扩展)

using PX.Data;
using SGLCustomizeProject;
namespace PX.Objects.GL
{
    public class GLTranExt : PXCacheExtension<PX.Objects.GL.GLTran>
    {
        #region UsrJobOrderNbr
        public abstract class usrJobOrderNbr : IBqlField { }
        [PXDBString(25, IsFixed = true, IsUnicode = true)]
        [PXUIField(DisplayName = "Job Order Nbr")]
        [PXSelector(typeof(Search<JobOrderNbr.jobOrderNbrCD,
                          Where<JobOrderNbr.status,
                              Equal<statusActive>>>),
                  //typeof(JobOrderNbr.jobOrderNbrCD),
                  typeof(JobOrderNbr.customerID),
                  typeof(JobOrderNbr.status))]
        public string UsrJobOrderNbr { get; set; }
        #endregion

        #region UsrNoSeriFaktur
        public abstract class usrNoSeriFaktur : IBqlTable { }
        [PXDBString(75, IsFixed = true)]
        [PXUIField(DisplayName = "No Seri Faktur / Additional Narration")]
        public string UsrNoSeriFaktur { get; set; }
        #endregion

        #region UsrInvoiceNbr
        public abstract class usrInvoiceNbr : IBqlTable { }
        [PXDBString(60, IsFixed = true)]
        [PXUIField(DisplayName = "Vendor Ref. / Customer Order")]
        public string UsrInvoiceNbr { get; set; }
        #endregion
    }
}

然后我需要扩展 APInvoiceEntry BLC 来自定义 Release 按钮​​,下面是我创建的源代码。

5. APInvoiceEntry_Extension(BLC 扩展)

   using System.Collections;
   using System.Collections.Generic;
   using PX.Objects.GL;
   namespace PX.Objects.AP
   {
        public class APInvoiceEntry_Extension : PXGraphExtension<APInvoiceEntry>
        {
            #region Customize Button Release
            public PXAction<APInvoice> release;
            [PXUIField(DisplayName = "Release", MapEnableRights = PXCacheRights.Insert, MapViewRights = PXCacheRights.Insert)]
            [PXProcessButton]
            public IEnumerable Release(PXAdapter adapter)
            {
                PXGraph.InstanceCreated.AddHandler<JournalEntry>((graph) =>
                {
                    graph.RowInserting.AddHandler<GLTran>((sender, e) =>
                    {
                        APInvoice api = PXResult<APInvoice>.Current;
                        string refNbr = api.RefNbr;
                        if (api != null && api.InvoiceNbr != null)
                        {
                            GLTranExt glEx = PXCache<GLTran>.GetExtension<GLTranExt>((GLTran)e.Row);
                            glEx.UsrInvoiceNbr = api.InvoiceNbr;
                        }

                        APTran aptran = PXResult<APTran>.Current;
                        if (aptran != null)
                        {
                            APTranExt apTranEx = PXCache<APTran>.GetExtension<APTranExt>(aptran);

                            if (aptran != null && apTranEx.UsrJobOrderNbr != null)
                            {
                                GLTranExt glex = PXCache<GLTran>.GetExtension<GLTranExt>((GLTran)e.Row);
                                glex.UsrJobOrderNbr = apTranEx.UsrJobOrderNbr;
                            }
                        }

                        APTaxTran aptax = PXResult<APTaxTran>.Current;
                        if (aptax != null)
                        {
                            APTaxTranExt aptaxEx = PXCache<APTaxTran>.GetExtension<APTaxTranExt>(aptax);
                            if (aptax != null && aptaxEx.UsrNoSeriFaktur != null)
                            {
                                GLTranExt gltEx = PXCache<GLTran>.GetExtension<GLTranExt>((GLTran)e.Row);
                                gltEx.UsrNoSeriFaktur = aptaxEx.UsrNoSeriFaktur;

                            }
                        }
                    });
                });

                return Base.release.Press(adapter);
            }
            #endregion
        }
     }

然后我去系统检查结果。

然后我检查日记帐交易屏幕以确保结果。但是我得到了自定义字段的空白值(Job Order Nbr & No Seri faktur),而(Vendor Ref)工作正常。

然后我尝试调试代码,我找到了问题的原因。

有谁知道如何解决这个问题?

【问题讨论】:

    标签: c# customization acumatica


    【解决方案1】:

    我认为这是因为您使用的是电流。尝试使用 .select(Base);

    选择它

    【讨论】:

    • 我已经尝试过您的建议,但它不起作用。它给出错误消息“PXResult 不包含 'Select' 的定义。”
    猜你喜欢
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    相关资源
    最近更新 更多