2017-04-12 49 views
1

我在銷售訂單表單上有自定義代碼,可以防止編輯SOLine描述,除非它是特定的SOLine代碼。我看到我的自定義代碼已經到達,但似乎其他的東西正在重寫我的邏輯,在禁用它之後在該字段上進行編輯。我想知道是否有預定義的自動化可能會爲銷售訂單屏幕執行此操作,或者如果有其他地方我應該考慮防止此行爲。銷售訂單SOLines有條件禁用tranDesc被重寫

//我有這樣的證實,RowSelected和的setEnabled被稱爲開始

公共類SOOrderEntry_Extension調試代碼:PXGraphExtension {

#region Event Handlers  

protected void SOLine_RowSelected(PXCache cache, PXRowSelectedEventArgs e, PXRowSelected InvokeBaseHandler) 
{ 
    if(InvokeBaseHandler != null) 
    InvokeBaseHandler(cache, e); 
    var row = (SOLine)e.Row; 

    if(row != null && row.InventoryID.HasValue) { 
    //Only allow editing of parts description if the partno is 'NOTE' 
    InventoryItem inventoryItem = PXSelect<InventoryItem, Where<InventoryItem.inventoryID, Equal<Required<InventoryItem.inventoryID>>>>.Select(this.Base, row.InventoryID); 
    if(inventoryItem.InventoryCD == "NOTE") { 
     PXUIFieldAttribute.SetEnabled<SOLine.tranDesc>(cache, row, true); 
    } else { 
     PXUIFieldAttribute.SetEnabled<SOLine.tranDesc>(cache, row, false); 
    } 
    } 
} 

}

+0

沒有你的代碼,如何我們可以檢查嗎? – Hybridzz

+0

最好在銷售訂單頁面上包含您使用的代碼。 – Brendan

回答

1

不幸的是,你的RowSelected處理程序將因爲「銷售訂單」屏幕上配置的自動化步驟的方式,不會影響「行說明」列:

enter image description here

爲了保持線路描述打開進行編輯,你應該改變一些自動化步驟的禁止銷售訂單整個文檔詳細信息網格和訂閱RowSelected處理程序SOOrder DAC來允許在緩存級別編輯SOOrderSOLine DAC。下面是所需的改變,使行描述爲完成銷售訂單(如果需要的話,類似的變化應爲銷售訂單屏幕中定義其他自動化步驟進行):

  1. 訂閱SOOrder_RowSelected處理之後,單獨編輯爲SOOrderSOLine高速緩存級別的DAC:

    public class SOOrderEntryExt : PXGraphExtension<SOOrderEntry> 
    { 
        public void SOOrder_RowSelected(PXCache sender, PXRowSelectedEventArgs e) 
        { 
         SOOrder order = e.Row as SOOrder; 
         if (order != null && order.Status == SOOrderStatus.Completed) 
         { 
          sender.AllowUpdate = true; 
          Base.Transactions.Cache.AllowUpdate = true; 
         } 
        } 
    } 
    
  2. 修改銷售訂單'SO完成自動化步驟打開行描述以進行編輯。除了啓用線說明,有必要使SOOrder領域中的至少一個,否則保存按鈕永遠不會成爲完成銷售訂單啓用:

    enter image description here

+0

謝謝你的解釋,魯斯蘭。非常徹底和有益的。 –