Inventory Dimension enable /disable based upon item selected
Hi Friends, Well we have seen a no of times we face the
issue to have the correct Inventory
dimension field enabled/disabled based upon Item selected . How to achieve this
:
1.
Add below declaration in your class declaration
of form
public class
FormRun extends ObjectRun
{
InventDimCtrl_Frm
inventDimFormSetup;
}
2.
Add below piece in form’s Init method :
public
void init()
{
element.updateDesign(InventDimFormDesignUpdate::Init);
}
3.
Add below method :
InventDimCtrl_Frm
inventDimSetupObject()
{
return
inventDimFormSetup;
}
4. Add below method :
void
updateDesign(InventDimFormDesignUpdate mode)
{
inventDimParm inventDimParmVisible;
inventDimParm inventDimParmEnabled;
switch
(mode)
{
case
InventDimFormDesignUpdate::Init
:
case
InventDimFormDesignUpdate::LinkActive
:
if
(!inventDimFormSetup)
{
inventDimFormSetup = InventDimCtrl::newFromForm(element);
}
inventDimFormSetup.parmSkipOnHandLookUp(true);
if
(element.args().dataset() == tableNum(datasource))
{
inventDimParmVisible =
EcoResProductDimGroupSetup::newItemId(Item_Adjustment.ItemId).inventDimParmActiveDimensions();
}
else
{
inventDimParmVisible.initProductDimensionsAllGroups();
}
inventDimFormSetup.parmDimParmVisibleGrid(inventDimParmVisible);
break;
case
InventDimFormDesignUpdate::Active
:
inventDimFormSetup.formActiveSetup();
inventDimParmEnabled =
EcoResProductDimGroupSetup::newItemId(datasource.ItemId).inventDimParmActiveDimensions();
inventDimParmEnabled.InventLocationIdFlag = true;
inventDimFormSetup.parmDimParmEnabled(inventDimParmEnabled);
inventDimFormSetup.formSetControls(true);
//inventDimFormSetup.
break;
case
InventDimFormDesignUpdate::FieldChange
:
inventDimFormSetup.formActiveSetup();
inventDimParmEnabled =
EcoResProductDimGroupSetup::newItemId(datasource.ItemId).inventDimParmActiveDimensions();
inventDimFormSetup.parmDimParmEnabled(inventDimParmEnabled);
//inventDimFormSetup.
inventDimFormSetup.formSetControls(true);
break;
default
:
throw
error(strfmt("@SYS54195",funcname()));
}
}
5.
Add below lines in Active method of DS :
public
int active()
{
int
ret;
ret = super();
element.updateDesign(InventDimFormDesignUpdate::Active);
return
ret;
}
6 Add below line in ItemId’s modified method :
element.updateDesign(InventDimFormDesignUpdate::FieldChange);
Well you are ready to go :
PS :
You want to enable\ disable one particular Dimension field irrespective of Item selected , how to do :
Simple put the corresponding flag true or
false as
inventDimParmEnabled.InventLocationIdFlag = true;
Hope this will help you guys J