2017-11-07 6 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 그래프를 인스턴스화하고 ARTran 레코드를 해당 ARInvoiceEntry 그래프 컨텍스트에 삽입합니다.
  4. ARTran 삽입을 처리 할 수 ​​있도록 오른쪽 ARInvoiceEntry 그래프 컨텍스트에서 후크가 호출됩니다.