2016-04-18 4 views
2

カスタマイズ画面に問題がありますAPドキュメント(screnid = AP501000)をリリースします。私はすでに画面AP Bill and Adjusmentにいくつかの追加フィールドを作成している場合、私はDAC APTran(UsrJobOrderNbrとusrNoSeriFaktur)の2つのフィールドを作成しました。 DAC ExtensionをAPTranExtensionという名前で作成します。以下、これはsintaksです:画面をカスタマイズする方法AcumaticaのAPドキュメント(AP501000)をリリースします

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 
    } 
} 

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

私もAPTranExtensionから値を格納するために、GLTranExtensionに拡張DACを作成しますおよびAPTaxTranExtension。これは、以下の私のGLTranExtensionのsintaksです:I入力トランザクションは、その後、私は、画面のリリースAPドキュメント(AP501000)に文書を解放するとき

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 
    } 
} 

私の目標は、私の新しい追加フィールドのすべての値は、すでにジャーナル取引に送ら画面(GL301000)も表示されます。

私はすでにAPReleaseProcessExtension 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 
    } 
} 

私の目標、あなたは正しい方向に動いているが、あなたは[PXOverride]属性を追加するのを忘れました

+0

です。エラーは何ですか?またはエラーがなく、いつものように動作します。あなたのコードをデバッグしようとしましたか? – Hybridzz

+0

エラーはありませんが、追加フィールドの一部の値は、リリース後にジャーナルトランザクションの画面に表示されません。私のコードはうまくいかないようです。任意の提案どのようにこの問題を解決するには? – HariEko

+0

コードをデバッグしようとしましたか?メソッドが呼び出されているときに、行挿入ハンドラを呼び出すのですか? – Hybridzz

答えて

2

を提供するために、私を助けてください。 PXOverrideAttributeがなければ、メソッドReleaseDocProcは呼び出されません。代わりに、ベースグラフのReleaseDocProcが呼び出されます。

拡張でオーバーライドされたメソッドには常にPXOverrideAttributeを指定する必要があります。イベントハンドラは、にPXOverrideAttributeとマークするべきではないことに注意してください。

だから、最終的なコードは、(それがACU 5.3U6で基本メソッドのシグネチャと互換性がありませんでしたと私はメソッドのシグネチャを変更した)そのようになります。私もTaxTranと請求書を削除しました

public class APReleaseProcessExtension : 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 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; 
      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; 
       } 
      } 
     }); 
     return del(je, ref doc, res, isPrebooking, out inDocs); 
    } 
} 

このコードから関連する拡張機能を使用して簡単にします。あなたは簡単にそれを返すことができます。

これがあなたの質問に答えることを願っています。

+0

Hello Dmitry、 最終コードに対応するカスタマイズコードを変更しました。 素晴らしい作品です。 ありがとうございます。 – HariEko

+0

私はあなたを助けてくれてうれしいです。答えを正しく記入してください:) –

+0

申し訳ありません、私はこのフォーラムの新人です どのように答えを正しい答えとしてマークすることができますか? 私はあなたの提案をすることができます.. :) – HariEko

関連する問題