如何在Acumatica中自定义屏幕发布AP文档(AP501000)

如何在Acumatica中自定义屏幕发布AP文档(AP501000),acumatica,Acumatica,我在自定义屏幕发布AP文档(screnid=AP501000)时遇到问题。如果我已经在screen AP Bill And Adjusment中创建了一些附加字段,那么我在DAC APTran中创建了两个字段(UsrJobOrderNbr和usrNoSeriFaktur)。我创建了名为aptrantextension的DAC扩展。以下是sintaks: using PX.Objects.CR; using PX.Objects.EP; using PX.Objects.FA; using PX.

我在自定义屏幕发布AP文档(screnid=AP501000)时遇到问题。如果我已经在screen AP Bill And Adjusment中创建了一些附加字段,那么我在DAC APTran中创建了两个字段(UsrJobOrderNbr和usrNoSeriFaktur)。我创建了名为aptrantextension的DAC扩展。以下是sintaks:

using PX.Objects.CR;
using PX.Objects.EP;
using PX.Objects.FA;
using PX.Objects.PO;
using System;
using PX.Data;
using PX.Objects.GL;
using PX.Objects.CM;
using PX.Objects.CS;
using PX.Objects.IN;
using PX.Objects.TX;
using PX.Objects.DR;
using PX.Objects.PM;
using System.Collections.Generic;
using PX.Objects;
using PX.Objects.AP;

namespace SGLCustomization
{
   [Serializable]
   public class APTranExtension: PXCacheExtension<PX.Objects.AP.APTran>
   {
       #region UsrJobOrderNbr`enter code here`
       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
  }
} 
using PX.Objects.CR;
using PX.Objects.EP;
using PX.Objects.FA;
using PX.Objects.PO;
using System;
using PX.Data;
using PX.Objects.GL;
using PX.Objects.CM;
using PX.Objects.CS;
using PX.Objects.IN;
using PX.Objects.TX;
using PX.Objects.DR;
using PX.Objects.PM;
using System.Collections.Generic;
using PX.Objects;
using PX.Objects.AP;
using PX.Objects.AR;

namespace SGLCustomization
{
   [Serializable]
   public class APTaxTranExtension: 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
   }
}
使用PX.Objects.CR;
使用PX.Objects.EP;
使用PX.Objects.FA;
使用PX.Objects.PO;
使用制度;
使用PX数据;
使用PX.Objects.GL;
使用PX.Objects.CM;
使用PX.Objects.CS;
使用PX.Objects.IN;
使用PX.Objects.TX;
使用PX.Objects.DR;
使用PX.Objects.PM;
使用System.Collections.Generic;
使用PX.Objects;
使用PX.Objects.AP;
命名空间SGL自定义
{
[可序列化]
公共类APTranExtension:PXCacheExtension
{
#区域UsrJobOrderNbr`在此处输入代码`
公共抽象类usrJobOrderNbr:IBqlField{}
[PXDBString(25,IsFixed=true,IsUnicode=true)]
[PXUIField(DisplayName=“工单编号”)]
[PX选择器(类型)(搜索),
类型(JobOrderNbr.customerID),
类型(工单编号状态),
类型(JobOrderNbr.usrJobOrderNoRef))]
公共字符串UsrJobOrderNbr
{
得到;
设置
}
#端区
}
} 
我还创建了名为APTaxTranExtension的DAC扩展,下面是sintaks:

using PX.Objects.CR;
using PX.Objects.EP;
using PX.Objects.FA;
using PX.Objects.PO;
using System;
using PX.Data;
using PX.Objects.GL;
using PX.Objects.CM;
using PX.Objects.CS;
using PX.Objects.IN;
using PX.Objects.TX;
using PX.Objects.DR;
using PX.Objects.PM;
using System.Collections.Generic;
using PX.Objects;
using PX.Objects.AP;

namespace SGLCustomization
{
   [Serializable]
   public class APTranExtension: PXCacheExtension<PX.Objects.AP.APTran>
   {
       #region UsrJobOrderNbr`enter code here`
       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
  }
} 
using PX.Objects.CR;
using PX.Objects.EP;
using PX.Objects.FA;
using PX.Objects.PO;
using System;
using PX.Data;
using PX.Objects.GL;
using PX.Objects.CM;
using PX.Objects.CS;
using PX.Objects.IN;
using PX.Objects.TX;
using PX.Objects.DR;
using PX.Objects.PM;
using System.Collections.Generic;
using PX.Objects;
using PX.Objects.AP;
using PX.Objects.AR;

namespace SGLCustomization
{
   [Serializable]
   public class APTaxTranExtension: 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
   }
}
使用PX.Objects.CR;
使用PX.Objects.EP;
使用PX.Objects.FA;
使用PX.Objects.PO;
使用制度;
使用PX数据;
使用PX.Objects.GL;
使用PX.Objects.CM;
使用PX.Objects.CS;
使用PX.Objects.IN;
使用PX.Objects.TX;
使用PX.Objects.DR;
使用PX.Objects.PM;
使用System.Collections.Generic;
使用PX.Objects;
使用PX.Objects.AP;
使用PX.Objects.AR;
命名空间SGL自定义
{
[可序列化]
公共类APTaxTranExtension:PXCacheExtension
{
#乌斯努塞里法克图尔地区
公共抽象类usrNoSeriFaktur:IBqlTable{}
[PXDBString(50,IsFixed=true)]
[PXUIField(DisplayName=“无序列号/附加说明”)]
公共字符串UsrNoSeriFaktur{get;set;}
#端区
}
}
我还在GLTranExtension中创建扩展DAC,以存储来自APTranExtension和APTaxTranExtension的值。以下是我的GLTranExtension的sintaks:

using System;
using PX.Data;
using PX.Objects.CM;
using PX.Objects.CS;
using PX.Objects.PM;
using PX.Objects.CR;
using PX.Objects.TX;
using System.Collections.Generic;
using PX.Objects;
using PX.Objects.GL;

namespace SGLCustomization
{
   [Serializable]
  public class GLTranExtension: 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
  }
}
使用系统;
使用PX数据;
使用PX.Objects.CM;
使用PX.Objects.CS;
使用PX.Objects.PM;
使用PX.Objects.CR;
使用PX.Objects.TX;
使用System.Collections.Generic;
使用PX.Objects;
使用PX.Objects.GL;
命名空间SGL自定义
{
[可序列化]
公共类GLTranExtension:PXCacheExtension
{
#区域UsrJobOrderNbr
公共抽象类usrJobOrderNbr:IBqlField{}
[PXDBString(25,IsFixed=true,IsUnicode=true)]
[PXUIField(DisplayName=“工单编号”)]
[PX选择器(类型)(搜索),
//类型(JobOrderNbr.jobOrderNbrCD),
类型(JobOrderNbr.customerID),
类型(JobOrderNbr.status))]
公共字符串UsrJobOrderNbr{get;set;}
#端区
#乌斯努塞里法克图尔地区
公共抽象类usrNoSeriFaktur:IBqlTable{}
[PXDBString(75,IsFixed=true)]
[PXUIField(DisplayName=“无序列号/附加说明”)]
公共字符串UsrNoSeriFaktur{get;set;}
#端区
#乌斯林地区
公共抽象类usrInvoiceNbr:IBqlTable{}
[PXDBString(60,IsFixed=true)]
[PXUIField(DisplayName=“供应商参考/客户订单”)]
公共字符串UsrInvoiceNbr{get;set;}
#端区
}
}
我的目标是当我输入交易,然后在屏幕发布AP文档(AP501000)中发布文档时,我的新附加字段中的所有值也已发送到日记账交易屏幕(GL301000)中

我已经创建了一个ReleaseProcessExtension BLC来提供它,但它不起作用。以下是我的APReleaseProcessExtension代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using PX.Data;
using PX.Objects.AP;
using PX.Objects.GL;
using PX.Objects.CM;
using PX.Objects.CA;
using PX.Objects.CR;
using PX.Objects.CS;
using PX.Objects.CT;
using PX.Objects.PM;
using SGLCustomization;
using SGLCustomization1;

namespace SGLCustomization1
{

  public class APReleaseProcessExtension: PXGraphExtension<APReleaseProcess>
  {
      public delegate List<APRegister> ReleaseDocProcDel(JournalEntry je, ref APRegister doc, PXResult<APInvoice, CurrencyInfo, Terms, Vendor, Account> res, out PMRegister pmDoc);
      public List<APRegister> ReleaseDocProc(JournalEntry je, ref APRegister doc, PXResult<APInvoice, CurrencyInfo, Terms, Vendor, Account> res, out PMRegister pmDoc, ReleaseDocProcDel del)
      {
          je.RowInserting.AddHandler<GLTran>((sender, e) =>
          {
              GLTran glTran = e.Row as GLTran;
              APTran apTran = PXResult<APTran>.Current;
              if (glTran != null && apTran != null)
              {
                  APTranExtension apTex = PXCache<APTran>.GetExtension<APTranExtension>(apTran);
                  if (apTran != null && apTex.UsrJobOrderNbr != null)
                  {
                      GLTranExtension glTex = PXCache<GLTran>.GetExtension<GLTranExtension>(glTran);
                      glTex.UsrJobOrderNbr = apTex.UsrJobOrderNbr;
                  }
              }

              APInvoice api = PXResult<APInvoice>.Current;
              if (api != null && api.InvoiceNbr != null)
              {
                  GLTranExtension glTex = PXCache<GLTran>.GetExtension<GLTranExtension>(glTran);
                  glTex.UsrInvoiceNbr = api.InvoiceNbr;
              }

              APTaxTran apTax = PXResult<APTaxTran>.Current;
              if (apTax != null)
              { 
                  APTaxTranExtension apTaxEx = PXCache<APTaxTran>.GetExtension<APTaxTranExtension>(apTax);
                  if (apTax != null && apTaxEx.UsrNoSeriFaktur != null)
                  {
                      GLTranExtension glTex = PXCache<GLTran>.GetExtension<GLTranExtension>((GLTran)e.Row);
                      glTex.UsrNoSeriFaktur = apTaxEx.UsrNoSeriFaktur;

                  }
              }
          });
          return del(je, ref doc, res, out pmDoc);
      }
    #region Event Handlers
    #endregion
  }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用PX数据;
使用PX.Objects.AP;
使用PX.Objects.GL;
使用PX.Objects.CM;
使用PX.Objects.CA;
使用PX.Objects.CR;
使用PX.Objects.CS;
使用PX.Objects.CT;
使用PX.Objects.PM;
使用SGL定制;
使用SGLCustomization1;
命名空间SGLCustomization1
{
公共类APReleaseProcessExtension:PXGrapherExtension
{
公共代表列表发布DocProcDel(JournalEntry je,参考注册文件,PXResult res,out PMRegister pmDoc);
公共列表ReleaseDocProc(JournalEntry je,参考注册文档,PXResult res,out PMRegister pmDoc,ReleaseDocProcDel del)
{
je.RowInserting.AddHandler((发送方,e)=>
{
GLTran GLTran=e。行作为GLTran;
APTran APTran=PXResult.Current;
if(glTran!=null&&apTran!=null)
{
aptrantextension apTex=PXCache.GetExtension(apTran);
if(apTran!=null&&apTex.UsrJobOrderNbr!=null)
{
GLTranExtension glTex=PXCache.GetExtension(glTran);
glTex.UsrJobOrderNbr=apTex.UsrJobOrderNbr;
}
}
APInvoice api=PXResult.Current;
if(api!=null&&api.InvoiceNbr!=null)
{
GLTranExtension glTex=PXCache.GetExtension(glTran);
glTex.UsrInvoiceNbr=api.InvoiceNbr;
}
APTaxTran apTax=PXResult.Current;
如果(apTax!=null)
{ 
APTaxTranExtension apTaxEx=PXCache.GetExtension(apTax);
if(apTax!=null&&apTaxEx.UsrNoSeriFaktur!=null)
{
gltrantextension glTex=PXCache.GetExtension((GLTran)e.Row);
glTex.UsrNoSeriFaktur=apTaxEx.UsrNoSeriFaktur;
}
}
});