2017-11-07 28 views
0

受注明細(SOLine)の行にカスタムフィールド値を販売請求書(ARTran)にプロポーズしようとしています。私は他の例を見てきましたが、下記を参照してください...動作するようにコードを取得することはできません。AcumaticaカスタムフィールドSOLineをARTranに転送

using PX.Objects.SO; 

namespace PX.Objects.SO 
{ 

public class SOInvoiceEntry_Extension:PXGraphExtension<SOInvoiceEntry> 
{ 

#region Event Handlers 
public delegate void InvoiceCreatedDelegate(ARInvoice invoice, SOOrder 
source); 
[PXOverride] 
public void InvoiceCreated(ARInvoice invoice, SOOrder source, 
InvoiceCreatedDelegate baseMethod) 
{ 
    baseMethod(invoice,source); 

ARTran.RowInserted.AddHandler<ARTran>((cache, args) => 
{ 
var arTran = (ARTran)args.Row; 

ARTranExt arTranExt = PXCache<ARTran>.GetExtension<ARTranExt>(arTran); 
SOLineExt soLineExt = PXCache<SOLine>.GetExtension<SOLineExt>(soLine); 
arTranExt.UsrContactID = soLineExt.UsrContactID; 
}); 

} 




#endregion 

} 


} 

答えて

0

あなたはARTran、ARInvoiceEntryを作成し、グラフ上にハンドラを入れたい:

PXGraph.InstanceCreated.AddHandler<ARInvoiceEntry>((graph) => 
{ 
    graph.RowInserting.AddHandler<ARTran>((sender, e) => 
    { 
    } 
} 

ARTranの行を挿入していないSOInvoiceEntryグラフのイベントをキャッチします.ARInvoiceEntryは行をインストレートするイベントです。

InvoiceCreatedはおそらくそれを置くのに適切な場所ではありません。通常は、CreateInvoiceアクションを呼び出す前に、イベントフックを置いています。

シーケンスは次のとおりです。InstanceCreatedで

  1. あなたがインスタンス化されるジェネリック型Tのいずれかのグラフにフックを追加します。あなたのケースでは、タイプはARInvoiceEntry

  2. コールCreateInvoiceアクションです。

  3. このアクションは、ARInvoiceEntryグラフをインスタンス化し、そのARInvoiceEntryグラフコンテキストにARTranレコードを挿入します。
  4. あなたのフックはARTranの挿入を処理するように、正しいARInvoiceEntryグラフコンテキストで呼び出されます。
関連する問題