2017-08-09 6 views

答えて

1

POLine DACにはすでに「QtyAvail(手元の数量)」フィールドがあります。カスタマイズプロジェクトを作成し、画面を追加し、Grid:Transactionsに移動し、画面のコントロールを&公開に追加するだけです。

あなたは十分であろうPOラインとINItemStatusから利用可能な数量にフィールドを追加する必要がある場合はあなたがそれを追加することができます。

using System; 
using PX.Data; 
using PX.Objects.PO; 
using PX.Objects.IN; 

public class POLine_Extension : PXCacheExtension<POLine> { 
    [PXDecimal] 
    [PXUIField(DisplayName = "Qty Avail", Enabled = false)] 
    [PXDBScalar(typeof(
    Search<INSiteStatus.qtyAvail, 
     Where<INSiteStatus.inventoryID, Equal<POLine.inventoryID>, 
     And<INSiteStatus.siteID, Equal<POLine.siteID>>>>))] 
    public virtual decimal? QtyAvail { get; set; } 
    public abstract class qtyAvail : IBqlField {} 
} 

が続いPXDBScalarフィールドはDACが選択されている場合、その値が設定されています。これはおそらくもっと良い方法ですが、POOrderEntryグラフ拡張内のPOに&という行が追加されたときにフィールドに値を設定すると、在庫IDとサイトIDのFieldUpdatedイベントを処理してQtyを取得する関数を実行できます基本的に同じBQLを使用して、その値をDAC拡張フィールドに設定します。

public class POOrderEntry_Extension : PXGraphExtension<POOrderEntry> 
{ 
    public virtual void POLine_InventoryID_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e) 
    { 
     UpdateQtyAvailable(sender, e); 
    } 
    public virtual void POLine_SiteID_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e) 
    { 
     UpdateQtyAvailable(sender, e); 
    } 
    private void UpdateQtyAvailable(PXCache sender, PXFieldUpdatedEventArgs e) 
    { 
     if (e.Row == null) return; 
     POLine row = (POLine)e.Row; 

     foreach(INSiteStatus siteStatus in PXSelect<INSiteStatus, 
      Where<INSiteStatus.inventoryID, Equal<Required<INSiteStatus.inventoryID>>, 
       And<INSiteStatus.siteID, Equal<Required<INSiteStatus.siteID>>>>>.Select(sender.Graph, row.InventoryID, row.SiteID)) 
     { 
      sender.SetValueExt<POLine_Extension.qtyAvail>(row, siteStatus.QtyAvail); 
     } 
    } 
} 
+1

POLine DACでQtyAvailフィールドが表示されません。また、IN402000のQtyOnHandフィールドは実行時に計算され、他のQtyAvailフィールドとは異なる値を持つ可能性があります。 –

+0

あなたのコードは、PO詳細グリッドにQty Availを表示するように動作しますが、在庫IDを選択した後にグリッドに新しい行を追加すると、Qty Avail列の値は依然として0.00です。あなたは、Inventory IDを選択した後、自動的にQty Availを更新するイベントを手伝ってくれますか?コードをステップバイステップであなたに感謝します。 –

+1

私はこれを追加して元の答えを編集しました。 –

関連する問題