method response to validate the values is in warehouse app is Processcontrol()
exist in class WHSWorkExecuteDisplay
but some menu Item classes overwrite this .
public boolean processControl(WhsControl _control, str _value)
{
var fieldValues = _control.parmContext().fieldValues;
var controlData = _control.parmContext().controlData;
switch (true)
{
case _control is WhsControlQty:
Qty qty = WHSWorkExecuteDisplay::str2numDisplay(_value);
if (qty > controlData.getQty() &&
(!InventTable::find(fieldValues.parmItemId()).whsAllowPhysNeg() ||
!WMSLocation::find(fieldValues.parmWMSLocationId(), fieldValues.parmInventLocationId()).whsLocationProfile().AllowNegative))
{
return _control.fail("@WAX1172");
}
break;
case _control is WhsControlUOM:
UnitOfMeasure unitOfMeasure = UnitOfMeasure::findBySymbol(_control.parmData());
if (unitOfMeasure && decRound(fieldValues.parmQty(), unitOfMeasure.DecimalPrecision) != fieldValues.parmQty())
{
return _control.fail(strFmt("@WAX:NumberOfDecimalsAllowed", _control.parmData(), unitOfMeasure.DecimalPrecision));
}
InventDimId inventDimIdProduct = controlData.findInventDimIdProduct();
// Validate against negative inventory rules
if (WHSCatchWeightHelper::convertInventQuantity(fieldValues.parmItemId(), _control.parmData(), fieldValues.parmQty(), inventDimIdProduct) > controlData.getQty() &&
(!InventTable::find(fieldValues.parmItemId()).whsAllowPhysNeg() ||
!controlData.wmsLocation().whsLocationProfile().AllowNegative))
{
return _control.fail("@WAX1172");
}
break;
case _control is WhsControlContainerType:
WhsControlContainerType controlContainer = _control as WhsControlContainerType;
controlContainer.initializeContainerType();
break;
}
return super(_control, _value);
}
Comments
Post a Comment