2017-01-08 2 views
0

投影型DACの投影クエリを拡張/変更する方法はありますか?Acumatica ProjectionベースのDACクエリを拡張する

たとえば、投影に結合ステートメントを追加して、新しく結合されたテーブルを使用可能なフィールドに使用する必要がある場合。

PXCacheExtensionにカスタムフィールドを追加すると、期待どおりに動作しますが、PXCacheExtension DACの上部にPXProjectionクエリを指定しても効果はないようです。

オリジナル:

[Serializable] 
    [PXProjection(typeof(Select5<EPApproval, InnerJoin<Note, 
            On<Note.noteID, Equal<EPApproval.refNoteID>, 
           And<EPApproval.status, Equal<EPApprovalStatus.pending>>>,>, 
           Where2<Where<EPApproval.ownerID, IsNotNull, And<EPApproval.ownerID, Equal<CurrentValue<AccessInfo.userID>>>>, 
             Or2<Where<EPApproval.workgroupID, InMember<CurrentValue<AccessInfo.userID>>, 
             Or<EPApproval.workgroupID, IsNull>>, 
             Or<EPApproval.workgroupID, Owned<CurrentValue<AccessInfo.userID>>>>>, 
           Aggregate<GroupBy<EPApproval.refNoteID, 
     GroupBy<EPApproval.curyInfoID, 
     GroupBy<EPApproval.bAccountID, 
     GroupBy<EPApproval.ownerID, 
     GroupBy<EPApproval.approvedByID, 
     GroupBy<EPApproval.curyTotalAmount>>>>>>>>))] 
    public partial class EPOwned : EPApproval{ 

拡張:

[Serializable] 
[PXProjection(typeof(Select5<EPApproval, InnerJoin<Note, 
            On<Note.noteID, Equal<EPApproval.refNoteID>, 
           And<EPApproval.status, Equal<EPApprovalStatus.pending>>>, 
           LeftJoin<RQRequest, On<RQRequest.noteID, Equal<Note.noteID>>>>, 
           Where2<Where<EPApproval.ownerID, IsNotNull, And<EPApproval.ownerID, Equal<CurrentValue<AccessInfo.userID>>>>, 
             Or2<Where<EPApproval.workgroupID, InMember<CurrentValue<AccessInfo.userID>>, 
             Or<EPApproval.workgroupID, IsNull>>, 
             Or<EPApproval.workgroupID, Owned<CurrentValue<AccessInfo.userID>>>>>, 
           Aggregate<GroupBy<EPApproval.refNoteID, 
     GroupBy<EPApproval.curyInfoID, 
     GroupBy<EPApproval.bAccountID, 
     GroupBy<EPApproval.ownerID, 
     GroupBy<EPApproval.approvedByID, 
     GroupBy<EPApproval.curyTotalAmount>>>>>>>>))] 
public class EPOwnedExt : PXCacheExtension<EPApprovalProcess.EPOwned> { 

おかげ

答えて

3

投影DACの投影クエリを変更するには、継承されたDACを作成し、PXSubstituteAttributeとそれを飾る必要があります。 1 BLCあたり1 PXSubstituteAttribute、カスタムFAAccrualTranCstではなく、基本FAAccrualTranクラスで使用されるために:

[Serializable] 
[PXProjection(typeof(Select2<GLTran, 
    LeftJoin<FAAccrualTran, On<GLTran.tranID, Equal<FAAccrualTran.tranID>>>, 
    Where<GLTran.module, NotEqual<BatchModule.moduleFA>, And<GLTran.released, Equal<True>>>>), new Type[] { typeof(FAAccrualTran) })] 
[PXSubstitute(GraphType = typeof(AssetGLTransactions))] 
... 
[PXSubstitute(GraphType = typeof(AssetMaint))] 
public partial class FAAccrualTranCst : FAAccrualTran 
{ 
    ... 
} 

あなたはPXSubstituteAttribute複数回とDACを飾ることができます。以下はFAAccrualTran DAC用のサンプルです。

PXSubstituteAttributeのGraphTypeプロパティに値を指定しなかった場合、カスタムDACはすべてのBLCのベースDACを置き換えます。

+0

ありがとうRuslanDev、それは動作します。継承されたDACではなくPXCacheEntensionでも動作するかどうか知っていますか?ありがとう。 – Matx

+0

@Matxでは、DAC拡張クラスでは機能しません。継承されたDACでのみ機能します。 – RuslanDev

関連する問題