2016-08-29 2 views
0

28-08-2016でQTを作成した後、businessDateを30-08-2016に変更してSOOrderにコピーします.SOOrderにコピーした後、再びQTを開きますステータスが[完了]に変わります。しかし、SOLineのRequestDateは更新されませんでした。RequestDate not updateイベントSOLineでRowUpdateイベントを使用しています

protected void SOOrder_Status_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e) 
{ 
    var row = (SOOrder)e.Row; 
    SOOrderExt rowExt = PXCache<SOOrder>.GetExtension<SOOrderExt>(row); 

    if(row != null) 
    { 
    if(row.OrderType == "QT" && row.Status == "C") 
    { 
     rowExt.UsrRequestDate = Base.Accessinfo.BusinessDate; 
    } 
    else 
    { 
     rowExt.UsrRequestDate = row.OrderDate; 
    } 
    } 
} 

protected void SOOrder_OrderDate_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e) 
{ 
    var row = (SOOrder)e.Row; 
    SOOrderExt rowExt = PXCache<SOOrder>.GetExtension<SOOrderExt>(row); 
    if(row != null) 
    { 
    rowExt.UsrRequestDate = row.OrderDate; 
    } 
} 

答えて

0

あなたの問題は間違っていると思います。 SOLine _RowUpdatedに登録しました。詳細はイベントです。しかし、コピーオーダー機能はドキュメント(SOOrder)のみを更新し、細部には触れません。あなたは少しでもあなたの流れを考え直すべきです。

しかし、実際に私の質問は - なぜ詳細な要求日を更新する標準ロジック(画像に示されている)を使用しないのですか?私の要件として enter image description here

+0

、私はQTを作成するからQTに完成日数をチェックしたいです。 SOOrderにコピーするときにRequestDateを更新したいのですが、SOOrderでこのコードを使用していますが、SOLineはまだ動作していません。 – YSP

+0

注文作成日と完了データの差を維持したい場合は、SOORder_Status_FieldUpdateイベントでステータスが変更されたときにビジネスデータから更新できる新しいカスタムフィールドを用意することをお勧めします。 Order.CreatedDateTimeからあなたのカスタムフィールド –

+0

私は答えとしてそれを更新しました、それを修正できますか? – YSP

0
protected void SOOrder_Status_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e) 
{ 
    var row = (SOOrder)e.Row; 
    SOOrderExt rowExt = PXCache<SOOrder>.GetExtension<SOOrderExt>(row); 

    if(row != null) 
    { 
    if(row.OrderType == "QT" && row.Status == "C") 
    { 
     rowExt.UsrRequestDate = Base.Accessinfo.BusinessDate; 
    } 
    else 
    { 
     rowExt.UsrRequestDate = row.OrderDate; 
    } 
    } 
} 

protected void SOOrder_OrderDate_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e) 
{ 
    var row = (SOOrder)e.Row; 
    SOOrderExt rowExt = PXCache<SOOrder>.GetExtension<SOOrderExt>(row); 
    if(row != null) 
    { 
    rowExt.UsrRequestDate = row.OrderDate; 
    } 
} 
+0

あなたのコードにロジックが重複していると思います。 Persist関数はRequestDateをOnに変更します*すべてのSave *は注文ステータスではありません。 あなたのイベントは同じことを行いますが、完了した行だけになります。 私はあなたのタスクに間違ったアプローチを使用していると思っています。注文の作成と完了に時間差があり、カスタムフィールドを作成してQTオーダーの完全ステータスを設定したときに計算します。 –

+0

@ SergeyMar、それは大丈夫です、私はそれを得ました。ありがとうございました – YSP

+0

@ SergeyMar、私はすでに新しいフィールドを作成し、OrderType == 'QT' && Status == 'C'として条件を取っていますが、なぜ私の新しいカスタムフィールドをまだ更新していませんか? – YSP

関連する問題