Reputation: 31
My problem is that we inserted some routeOpr with the following logic (embedded in a job, see below) and now the RouteOpr form shows all the routeOpr entries in the RouteOpr Form no matter which ressource was selected.
Can someone please explain what the "RouteOpr" form is supposed to to if it is called via
'Organisation administration' / 'Area page' -> select a Ressource and click on 'Applicable for' / 'Operations'
With some debugging I already found out what the query for the form is, but I don't understand why the form isn't just showing the routeOpr entries for the specific ressource.
RouteOpr routeOpr;
WrkCtrRouteOprActivity wrkCtrRouteOprActivity;
WrkCtrActivity wrkCtrActivity;
WrkCtrActivityRequirementSet wrkCtrActivityRequirementSet;
WrkCtrAbility wrkCtrAbility;
WrkCtrActivityRequirementView wrkCtrActivityRequirementView;
changeCompany('someCompany')
{
WHILE SELECT routeOpr
EXISTS JOIN wrkCtrRouteOprActivity
WHERE routeOpr.RecId == wrkCtrRouteOprActivity.RouteOpr
EXISTS JOIN wrkCtrActivity
WHERE wrkCtrRouteOprActivity.Activity == wrkCtrActivity.RecId
EXISTS JOIN wrkCtrActivityRequirementSet
WHERE wrkCtrActivity.RecId == wrkCtrActivityRequirementSet.Activity
NOTEXISTS JOIN wrkCtrActivityRequirementView
WHERE wrkCtrActivityRequirementSet.RecId == wrkCtrActivityRequirementView.ActivityRequirementSet
NOTEXISTS JOIN wrkCtrAbility
WHERE wrkCtrActivityRequirementView.AbilityType == wrkCtrAbility.AbilityType
&& wrkCtrActivityRequirementView.AbilityRecId == wrkCtrAbility.AbilityRecId
&& (((wrkCtrAbility.LevelValue >= wrkCtrActivityRequirementView.MinimumLevelNeeded)))
&& ((wrkCtrAbility.WrkCtrId == 'someWrkCtrId'))
&& ((wrkCtrAbility.ValidFrom <= systemDateGet())
&& ((wrkCtrAbility.ValidTo >= systemDateGet())))
{
Debug::printDebug(strFmt("%1 %2 %3", routeOpr.OprId, routeOpr.WrkCtrIdCost, routeOpr.ItemRelation));
}
}
select forUpdate route;
select forUpdate routeOpr;
select forUpdate wrkCtrActivityResourceRequirement;
select forUpdate wrkCtrActivityRequirementSet;
select forUpdate wrkCtrActivityRequirement;
route.clear();
route.RouteId = routeVersion.RouteId;
route.OprNum = 10;
route.OprNumNext = 0;
route.OprId = oprId;
route.Level = 1;
route.AccError = 1.00;
route.insert();
routeOpr.clear();
routeOpr.ItemCode = TableGroupAll::Table;
routeOpr.ItemRelation = routeVersion.ItemId;
routeOpr.RouteCode = RouteAll::Route;
routeOpr.RouteRelation = routeVersion.RouteId;
routeOpr.OprId = route.OprId;
routeOpr.ProcessPerQty = 1.00;
routeOpr.FormulaFactor1 = 1.00;
routeOpr.WrkCtrIdCost = ressource;
routeOpr.COL_UnitId = "HMIN";
routeOpr.ProcessTime = str2num(time);
routeOpr.RouteGroupId = "SOLL=IST";
routeOpr.ToHours = 0.0002;
routeOpr.insert();
wrkCtrActivityRequirementSet = routeOpr.activityRequirementSet();
wrkCtrActivityRequirementSet.selectForUpdate(true);
//wrkCtrActivityRequirementSet.LoadPercent = 100;
//wrkCtrActivityRequirementSet.Quantity = 1;
wrkCtrActivityRequirementSet.update();
wrkCtrActivityRequirement.clear();
wrkCtrActivityRequirement.ActivityRequirementSet = wrkCtrActivityRequirementSet.RecId;
wrkCtrActivityRequirement.RelationshipType = WrkCtrActivityRequirementType::Resource;
wrkCtrActivityRequirement.UsedForJobScheduling = NoYes::Yes;
wrkCtrActivityRequirement.UsedForOperationScheduling = NoYes::Yes;
wrkCtrActivityRequirement.insert();
wrkCtrActivityResourceRequirement.clear();
wrkCtrActivityResourceRequirement.setActivityRequirement(wrkCtrActivityRequirement.RecId);
wrkCtrActivityResourceRequirement.WrkCtrId = ressource;
wrkCtrActivityResourceRequirement.insert();
Upvotes: 0
Views: 831
Reputation: 31
Apart from the incorrect job, the actual error was that I didn't set the value of the wrkCtrActivityResourceRequirement.ResourceDataAreaId
field.
So i made a job which sets the field like this
wrkCtrActivityResourceRequirement.ResourceDataAreaId = curExt2dataareaid(tableNum(WrkCtrTable));
and now the correct entries are shown.
(I didn't notice the error because the field was set visible = No,
so it was not shown in the table browser.)
Upvotes: 1