首页 文章

销售订单的Acumatica验证

提问于
浏览
1

我想在销售订单屏幕上执行一些验证,我正在比较客户(customerID)字段和客户订单(CustomerOrderNbr)字段,并尝试在两个字段匹配时给出错误消息 .

我不是程序员,但我尝试了一些代码,这些代码会产生很多错误,我无法解决它...

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

这是我的第二个条目,具有相同的客户名称和订单号

enter image description here

在对代码进行更改后,它没有显示任何错误消息...我重新启动了网站并检查但没有结果

1 回答

  • 2

    我修复了下面的语法错误 . 但是,我倾向于认为此验证没有实际用例 . CustomerID是数据库中用于标识客户记录的整数(数字)字段,通常不会向用户显示 . CustomerOrderNbr是一个自由格式文本字段,可以包含从用户输入的任何字符串值 . 我不希望用户在CustomerOrderNbr中输入CustomerID .

    EDIT :通过Customer.AcctCD更改了SOOrder.CustomerID

    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;
            }
        }
    }
    

相关问题