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

Popular posts from this blog

How to Bypass Next in COC in D365 X++

create movement journal through code in d365 FO x++