我想在销售订单屏幕上执行一些验证,我正在比较客户(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;
}
}
}
这是我的第一个条目,其中包含一些客户名称和订单号
这是我的第二个条目,具有相同的客户名称和订单号
在对代码进行更改后,它没有显示任何错误消息...我重新启动了网站并检查但没有结果
答案 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;
}
}
}