Showing posts with label Permission. Show all posts
Showing posts with label Permission. Show all posts

Thursday, July 4, 2019

Insert Record level security with query value in ax 2012 by code (X++)

static void AXCopyUsergroupRLSBytableWithVlaue(Args _args)
{

    SysRecordLevelSecurity  SysRecordLevelSecurity,insertRLS,copyvalue,updatevalues;
    dialogfield srcdf,destdf;
    dialog dialog;
    userGroupid dest;

    sysQueryRun queryRun;
    Query query = new Query() ;

    QueryRun        rlsqueryRun;
    int             dataSourceNo;
    queryBuildDataSource queryBuildDataSource;
    queryBuildRange queryBuildRange;
    int i;





    ;
    dialog = new dialog("copying user group's Record Level security ");

    destdf = dialog.addField(typeid(userGroupid),"Destination");

    if(dialog.run())
    {
     
        dest = destdf.value();
     
      if( dest !="")
        {
          ttsbegin;
       //insert new table in RLS table to destination user group;       
   
            insertRLS.tabId   = 18174;
            insertRLS.groupId = dest;
            insertRLS.companyId = curext();
            insertRLS.insert();     


          //fetch same query values from another table;

            select * from copyvalue
            where copyvalue.groupId == dest
            && copyvalue.tabId == 624;//example project table

            rlsqueryRun = new QueryRun(copyvalue.Restriction);
            dataSourceNo = rlsqueryRun .query().dataSourceCount();
            queryBuildDataSource          = rlsqueryRun .query().dataSourceNo(dataSourceNo);

               for(i = 1;i <= queryBuildDataSource.rangeCount();i++)
               {
                     queryBuildRange      = queryBuildDataSource.range(i);

                   
               }


          select forupdate  updatevalues  where updatevalues.groupId == dest 
           && updatevalues.tabId == 18174;
            if (updatevalues.Restriction)
            {
                queryRun = new SysQueryRun(updatevalues.Restriction);
            }

            else
            {
                query.addDataSource(updatevalues.TabId);
                queryRun = new SysQueryRun(query);
            }

            queryRun.query().dataSourceTable(updatevalues.tabId).addRange(fieldnum(PAYFDocumentMoveTracking,PROJID)).value(queryBuildRange.value());
            updatevalues.restriction = queryRun.pack();
            updatevalues.doUpdate();

            ttscommit;
            info("User groups RLS has been copied!");
        }
    }
    else
    {
        info("Canceled by user");
    }


}

Tuesday, May 24, 2016

Copy Usergroup Record level security By table

static void AXCopyUsergroupRLSBytable(Args _args)
{
    SysRecordLevelSecurity  SysRecordLevelSecurity,insertRLS;
    dialogfield srcdf,destdf;
    dialog dialog;
    userGroupid src,dest;
    ;
    dialog = new dialog("copying user group's Record Level security ");
    srcdf = dialog.addField(typeid(userGroupid),"Source");
    destdf = dialog.addField(typeid(userGroupid),"Destination");

     if(dialog.run())
    {
        src = srcdf.value();
        dest = destdf.value();
        if(src!="" && dest !="")
        {
          ttsbegin;
          info("Copying RLS to destination user group");
            select * from SysRecordLevelSecurity
            where SysRecordLevelSecurity.groupId == src
            && SysRecordLevelSecurity.tabId == 40017;//PAYFGOSIItemCodeInfo table id
            {

            insertRLS.data(SysRecordLevelSecurity);
            insertRLS.groupId = dest;

            insertRLS.insert();

            }
             ttscommit;
            info("User groups RLS has been copied!");
        }
     }
     else
    {
        info("Canceled by user");
    }



}

Thursday, May 5, 2016

Check user group history In AX

static void checkUserGroup(Args _args)
{
    UserGroupList           UserGroupList;
     UserInfo    UserInfo;
    ;

    while select UserGroupList
    where UserGroupList.groupId == "UsergroupId"
    {
        info(strfmt('|  Users - %1     |   modifiedBy - %2     |   modify datetime - %3    |', UserGroupList.userId,UserGroupList.createdBy,UserGroupList.createdDateTime));
    }


}


Copy User group Record level security to another user group In AX

static void AXCopyUsergroupRLS(Args _args)
{
    SysRecordLevelSecurity  SysRecordLevelSecurity,insertRLS;
    dialogfield srcdf,destdf;
    dialog dialog;
    userGroupid src,dest;
    ;
    dialog = new dialog("copying user group's Record Level security ");
    srcdf = dialog.addField(typeid(userGroupid),"Source");
    destdf = dialog.addField(typeid(userGroupid),"Destination");

     if(dialog.run())
    {
        src = srcdf.value();
        dest = destdf.value();
        if(src!="" && dest !="")
        {
          ttsbegin;
          info("Copying RLS to destination user group");
          while select * from SysRecordLevelSecurity
            where SysRecordLevelSecurity.groupId == src
            {

            insertRLS.data(SysRecordLevelSecurity);
            insertRLS.groupId = dest;
            insertRLS.insert();

            }
             ttscommit;
            info("User groups RLS has been copied!");
        }
     }
     else
    {
        info("Canceled by user");
    }



}

Copy one user permissions group to another user in AX

static void AXcopyUserGroup(Args _args)
{
    usergrouplist usergrouplist,ins;
    userid src,dest;
    dialogfield srcdf,destdf;
    dialog dialog;
    ;
    dialog = new dialog("copying user's user groups");
    srcdf = dialog.addField(typeid(userid),"Source");
    destdf = dialog.addField(typeid(userid),"Destination");



    if(dialog.run())
    {
        src = srcdf.value();
        dest = destdf.value();
        if(src!="" && dest !="")
        {
            ttsbegin;
            while select * from usergrouplist
            where usergrouplist.userId == dest
            {
                info(strfmt("Before update: '%1'-'%2'",usergrouplist.userid,usergrouplist.groupId));
            }

            info("Deleting user groups from destination user");
            delete_from usergrouplist
                where  usergrouplist.userId == dest;


            info("Copying user groups to destination user");
            while select * from usergrouplist
            where usergrouplist.userId == src
            {
                info(strfmt("source user: '%1'-'%2'",usergrouplist.userid,usergrouplist.groupId));
                ins.clear();
                ins.data(usergrouplist);
                ins.UserId = dest;
                ins.insert();
            }
            ttscommit;
            info("User groups has been copied!");
        }
    }
    else
    {
        info("Canceled by user");
    }


}

Copy one UserGroup Users list to another user group in AX

static void AXcopyUserGroupUserlist(Args _args)
{
    usergrouplist usergrouplist,ins,exitslist;
    userGroupid src,dest;
    dialogfield srcdf,destdf;
    dialog dialog;
    ;
    dialog = new dialog("copying user group's user lists ");
    srcdf = dialog.addField(typeid(userGroupid),"Source");
    destdf = dialog.addField(typeid(userGroupid),"Destination");



    if(dialog.run())
    {
        src = srcdf.value();
        dest = destdf.value();
        if(src!="" && dest !="")
        {
            ttsbegin;


            info("Copying user groups USER ID to destination user GROUP ");
            while select * from usergrouplist
            where usergrouplist.groupId == src
            {
                select exitslist where exitslist.UserId == usergrouplist.userId
                && exitslist.groupId == dest;

                if(exitslist.RecId == 0)
                {
                ins.clear();
                ins.userId = usergrouplist.userId;
                ins.groupId = dest;
                ins.insert();
                }

            }
            ttscommit;
            info("User groups has been copied!");
        }
    }
    else
    {
        info("Canceled by user");
    }


}

Sending Email using X++ Code in D365 F&O/ AX 7 in HTML fomat

  I was just researching on the emailing capabilities in D365 and found that SysINetMail, SysMailer and some of the smmOutlook classes are d...