Я пытаюсь установить предупреждение в поле OrderQty, когда выбрана определенная UOM. У нас есть UOM, который имеет только кратные 50 числа, поэтому это должно означать, что количество должно быть кратно 50. Я хотел бы отобразить предупреждение, если пользователь ввел, скажем, 40, тогда он сказал бы, что это должно быть введено кратный 50. Мой код компилируется нормально, он просто не выдает предупреждение при вводе значения, которое должно вызвать исключение.
График ввода SOOrder:
protected void SOLine_OrderQty_FieldVerifying(PXCache cache, PXFieldVerifyingEventArgs e)
{
var row = (SOLine)e.Row;
if (row == null) return;
SOLine line = Base.Transactions.Current;
if (line.UOM != "CCP") return;
if (line.UOM == "CCP")
{
if (line.OrderQty % 50 == 0) return;
else
{
throw new PXSetPropertyException("Please enter a value in multiples of 50.", PXErrorLevel.Warning);
}
}
}
Я также пробовал:
protected void SOLine_OrderQty_FieldVerifying(PXCache cache, PXFieldVerifyingEventArgs e)
{
var row = (SOLine)e.Row;
if (row == null) return;
if (row.UOM != "CCP") return;
if (row.UOM == "CCP")
{
if (row.OrderQty % 50 == 0) return;
else
{
throw new PXSetPropertyException("Please enter a value in multiples of 50.", PXErrorLevel.Warning);
}
}
}
CCP - это UOM, в котором кол-во должно быть кратно 50, и никакая другая UOM не должна выдавать предупреждение, если оно не установлено.
Обновление 1:
Обновил код до этого:
protected void SOLine_OrderQty_FieldVerifying(PXCache cache, PXFieldVerifyingEventArgs e)
{
var row = (SOLine)e.Row;
if (row == null) return;
if (row.UOM != "CCP") return;
if (row.UOM == "CCP")
{
if ((decimal?)e.NewValue % 50 == 0) return;
if ((decimal?) e.NewValue % 50 != 0)
{
cache.RaiseExceptionHandling<SOLine.orderQty>(e.Row, ((SOLine)e.Row).OrderQty,
new PXSetPropertyException("Please enter a value in multiples of 50.", PXErrorLevel.Warning));
}
}
}
Я перешел в состояние e.NewValue для введенного значения. Предупреждающее сообщение все еще не выдано.