2017-08-29 118 views
1

我想在銷售訂單屏幕上執行少量驗證,我比較客戶(客戶ID)字段和客戶訂單(客戶訂單號)字段,並嘗試在兩個字段匹配時給出錯誤消息。銷售訂單的Acumatica驗證

我不是一個程序員,但我嘗試了一些代碼,是給很多的錯誤,我不能夠解決它......

namespace PX.Objects.SO 
{ 
    public class SOOrderEntry_Extension:PXGraphExtension<SOOrderEntry> 
    { 
     public const string ordernbrErrorMessage = "Customer name and customer number cannot be same."; 


    public void SOOrder_RowPersisting(PXCache sender, PXRowPersistingEventArgs e) 
    { 
     if (!ValidateCustomerID(sender, e.Row as SOOrder)) 
      { 
       PXUIFieldAttribute.SetError<SOOrder.customerID>(sender, e.Row, ordernbrErrorMessage); 
      } 
    } 



     public bool ValidateCustomerID(PXCache sender, SOOrder soOrder) 
     { 
      if (soOrder != null) 
      { 
       string soCustomerID = PXSelectorAttribute.GetField(sender, soOrder, typeof(SOOrder.customerID).Name, soOrder.CustomerID, typeof(Customer.acctCD).Name) as string; 
       string soCustomerOrderNbr = soOrder.CustomerOrderNbr; 

       if (soCustomerID != null && soCustomerOrderNbr != null) 
       { 
        return !soCustomerID.Trim().Equals(soCustomerOrderNbr.Trim(), StringComparison.OrdinalIgnoreCase); 
       } 
      }    

      return true; 

     } 
    } 
} 

這是我的一些客戶名稱第一個條目,並訂單號

enter image description here

這是我用同一​​客戶名稱和訂單號第2項

enter image description here

在它沒有顯示任何錯誤消息的代碼做修改之後......我重新啓動該網站,並檢查,但沒有結果

回答

2

我固定下面的語法錯誤。但是我會傾向於認爲這個驗證沒有實際的用例。 CustomerID是數據庫中的一個整數(數字)字段,用於標識客戶記錄,通常這不會顯示給用戶。 CustomerOrderNbr是一個自由格式的文本字段,可以包含從用戶輸入的任何字符串值。我不希望用戶在CustomerOrderNbr中輸入CustomerID。

編輯:改變SOOrder.CustomerID通過Customer.AcctCD

namespace PX.Objects.SO 
{ 
    public class SOOrderEntry_Extension:PXGraphExtension<SOOrderEntry> 
    { 
     public const string ordernbrErrorMessage = "Customer name and customer number cannot be same."; 

     public void SOOrder_RowPersisting(PXCache sender, PXRowPersistingEventArgs e) 
     { 
      if (!ValidateCustomerID(sender, e.Row as SOOrder)) 
      { 
       PXUIFieldAttribute.SetError<SOOrder.customerID>(sender, e.Row, ordernbrErrorMessage); 
      } 
     } 

     public bool ValidateCustomerID(PXCache sender, SOOrder soOrder) 
     { 
      if (soOrder != null) 
      { 
       string soCustomerID = PXSelectorAttribute.GetField(sender, soOrder, typeof(SOOrder.customerID).Name, soOrder.CustomerID, typeof(Customer.acctCD).Name) as string;     string soCustomerOrderNbr = soOrder.CustomerOrderNbr; 

       if (soCustomerID != null && soCustomerOrderNbr != null) 
       { 
        return !soCustomerID.Trim().Equals(soCustomerOrderNbr.Trim(), StringComparison.OrdinalIgnoreCase); 
       } 
      }    

      return true; 
     } 
    } 
} 
+0

我想要實現此驗證的原因是因爲我不希望同樣的客戶的每一個新的時間具有相同的訂單號碼訂單被提出... – user8534573

+0

這工作! 謝謝... – user8534573

+0

但即使客戶訂單號爲空或更改,它也會出現錯誤...我只是希望它在兩個字段匹配時產生錯誤 – user8534573