belowlevels

///


/// LevelsBelow
///

///
/// levelid
///
///
/// levelRef
///
///
/// boolean
///
///
/// LevelsBelow
///
Public Server static boolean LevelsBelow(EAMLevelId levelid = ‘’, EAMLevelId levelRef = ‘’)
{
EAMBelowLevels eambelowLevels;
EAMLevels levelsfilter;
int maxlevels, curlevel;
int lCount, sno;
boolean flag;
;
try
{
ttsbegin;
delete_from eambelowLevels;
ttscommit;
}
catch(Exception::Deadlock)
{
retry;
}
maxlevels = EAMBelowLevels::maxLevels();
if(strltrim(strrtrim(levelid)) == ‘’)
{
lCount = 1;
while select levelcode,leveldescription,referencelevel,currentlevel,level1 from Levelsfilter where Levelsfilter.CurrentLevel ==1
{
if(!(EAMBelowLevels::exist(LevelsFilter.Level1,LevelsFilter.ReferenceLevel))) // rcm update( if condition only)
{
ttsbegin;
eambelowLevels.SNo = LCount;
eambelowLevels.CurrentLevel = Levelsfilter.CurrentLevel;
eambelowLevels.LevelCode = levelsFilter.Level1;
eambelowLevels.LevelDescription = Levelsfilter.LevelDescription;
eambelowLevels.LevelRef = levelsFilter.ReferenceLevel;
eambelowLevels.insert();
ttscommit;
}
LCount++;
}
for(lCount = 0; lcount <= maxlevels; Lcount++)
{
while select currentlevel,levelcode,currentlevel from eambelowLevels where eambelowLevels.CurrentLevel == lCount+1
{
eambelowLevels::Levels(eambelowLevels.LevelCode,eambelowLevels.CurrentLevel);
}
}
return true;
}
if(strltrim(strrtrim(levelRef)) != ‘’)
{
select levelcode,leveldescription,referencelevel,currentlevel,level1 from Levelsfilter where Levelsfilter.LevelCode == levelid && Levelsfilter.ReferenceLevel == levelRef;
curlevel = Levelsfilter.CurrentLevel;
}
else
{
select levelcode,leveldescription,referencelevel,currentlevel,level1 from Levelsfilter where Levelsfilter.LevelCode == levelid;
curlevel = Levelsfilter.CurrentLevel;
}
flag = true;
sno = 1;
ttsbegin;

eambelowLevels.SNo = sno;
eambelowLevels.CurrentLevel = levelsFilter.CurrentLevel;
eambelowLevels.LevelCode = levelsFilter.LevelCode;
eambelowLevels.LevelDescription = Levelsfilter.LevelDescription;
eambelowLevels.LevelRef = levelsFilter.ReferenceLevel;
eambelowLevels.insert();
for(lCount = curLevel; lcount <= maxlevels; Lcount++)
{
if(flag)
{
eambelowLevels::Levels(levelid,curLevel);
flag = false;
}
while select currentlevel,levelcode from eambelowLevels where eambelowLevels.CurrentLevel == lCount+1
{
eambelowLevels::Levels(eambelowLevels.LevelCode, eambelowLevels.CurrentLevel);
}
}

ttscommit;
return true;
}