Route Version via a job in Dynamics Ax 2009


static void NewRouteVersion(Args _args)
{
RouteId             fromId,newId,routeId;
InventSiteId        siteId;
InventDim           inventDim;
RouteVersion        routeVersion,routeVersionNew;
InventTable         inventTable;
ItemId              itemId;
ConfigId            configId;
RouteTable          routeTable;
Route               tmpRoute;
RouteOpr            routeOpr;
Route               route;
RouteOpr            tmpRouteOpr;
RecId               RecId;

RouteVersion        locrouteVersion;
int                            i,len;
str                           s;

;
Select routeVersion where routeVersion.ItemId == “1101”
&&(routeVersion.Approved == Noyes::Yes
&& routeVersion.Active == Noyes::Yes) ;
if (routeVersion)
{
fromId      = routeVersion.RouteId;
newId       = fromId + “/15” ;

select locrouteVersion
order by RouteId desc
where locrouteVersion.ItemId == routeVersion.ItemId;
len = strlen(locrouteVersion.RouteId);
i = strscan(locrouteVersion.RouteId,’/’,1,len);

s = substr(locrouteVersion.RouteId,i+1,len);
if(s == “”)
{
newId = fromId + ‘/01’;
}
else
{
i = str2int(s) + 1;
newId = fromId + ‘/’ + int2str(i);
}

        routeId     = newid;
itemId      = routeVersion.ItemId;
routeVersion.inventDim();
configId    = configId;
siteId      = routeVersion.inventSiteId();
routeVersionNew.clear();
routeVersionNew.initValue();
routeVersionNew.data(routeVersion);
routeVersionNew.Approved   = false;
routeVersionNew.Active     = false;
routeVersionNew.ApprovedBy = “”;
routeVersionNew.RouteId    = newId;
routeVersionNew.insert();
while select routeTable where routeTable.RouteId == fromId
{
while select tmpRoute
where   tmpRoute.RouteId == fromId
{
route.clear();
route.initValue();
route           = tmpRoute.data();
route.RecId = 0;
route.RouteId   = newId;
route.insert();
}
while select tmpRouteOpr
where tmpRouteOpr.RouteRelation == newId
{
routeOpr.clear();
routeOpr.initValue();
routeOpr                = tmpRouteOpr.data();
routeOpr.RecId = 0;
routeOpr.RouteRelation   = newId;
routeOpr.insert();
}
}
}
}