销售订单的Acumatica验证

时间:2017-08-29 20:32:54

标签: validation acumatica

我想在销售订单屏幕上执行一些验证,我正在比较客户(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 个答案:

答案 0 :(得分:2)

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

编辑:通过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;
        }
    }
}