Wednesday, 19 October 2016

import-customer-mastervendor-master-and-their-primary-addresses on Ax 2009

https://shekhardiptiman.wordpress.com/2010/01/14/dynamics-ax-2009-%E2%80%93-import-customer-mastervendor-master-and-their-primary-addresses/

Friday, 30 September 2016

passing parameters between forms in AX

https://calebmsdax.wordpress.com/2013/02/22/passing-parameters-between-forms-in-ax/

Tuesday, 27 September 2016

Copy user groups from one user to another X++ in ax



//Copy user groups from one user to another X++
static void KR_AXEcopyUserGroup(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");
    }


}

Sunday, 11 September 2016

Thursday, 18 August 2016

Import Excel Data into Dynamics AX 2009

https://vasanthax.wordpress.com/2010/08/19/import-excel-data-into-dynamics-ax-2009/

Success One:: Class:
Class Declaraion:
public class KR_CustPaymentImport extends objectRun

{
}
//////////////////////////////////////////////////////////////////////////
2: Run: 
void run()
{
     LedgerJournalTable ledgerJournaltable;
    LedgerjournalTrans ledgerjournalTrans;
    LedgerJournalName   ledgerJournalName;
   NumberSeq           numberSeq;
    COMVariantType     type,typeLoc;
    LedgerJournalACType ledgerJournalACType;
    Dialog  dialog;
    DialogField             dialogField;
    Filename                filename;
   // NumberSeq               numSeq;
    str                     jourName;

     int                 lineNum;
    COMVariant  COMVariant1;
    SysExcelApplication app;
    SysExcelWorkbooks   Workbooks;
    SysExcelWorkbook    Workbook;
    SysExcelWorksheets  Worksheets;
    SysExcelWorksheet   Worksheet;
    SysExcelCells       Cells;
    SysExcelCell        RCell;
    int                 row;
    int temp;
     #Excel

    str COMVariant2Str(COMVariant _cv,
                       int _decimals = 0,
                       int _characters = 0,
                       int _separator1 = 0,
                       int _separator2 = 0)
    {
        switch(_cv.variantType())
        {
            case (COMVariantType::VT_BSTR):
                return _cv.bStr();

            case (COMVariantType::VT_R4):
                return num2str(_cv.float(),
                                _characters,
                                _decimals,
                                _separator1,
                                _separator2);

            case (COMVariantType::VT_R8):
                return num2str(_cv.double(),
                                _characters,
                                _decimals,
                                _separator1,
                                _separator2);

            case (COMVariantType::VT_DECIMAL):
                return num2str(_cv.decimal(),
                                _characters,
                                _decimals,
                                _separator1,
                                _separator2);

            case (COMVariantType::VT_DATE):
                return date2str(_cv.date(),
                                123,
                                2,
                                1,
                                2,
                                1,
                                4);

            case (COMVariantType::VT_EMPTY):
                return "";

            default:
                throw error(strfmt("@SYS26908",
                                    _cv.variantType()));

        }
        return "";
    }
    ;
    dialog = new Dialog("Import Customer Payment Journal.");
    dialogfield = dialog.addField(typeid(Filenameopen), "Select File");
    dialog.run();
    if (dialog.run())
        {
            filename = (dialogfield.value());
        }
    app = SysExcelApplication::construct();
    app.visible(false);
    Workbooks = app.Workbooks();
    Workbooks.open(filename,0);
    Workbook = Workbooks.item(1);
    Worksheets = Workbook.worksheets();
    Worksheet = Worksheets.itemFromNum(1);
    Cells = Worksheet.Cells();
    row = 2;
    RCell = Cells.Item(row, 1);
 select firstonly ledgerjournalName where ledgerJournalName.JournalName == 'ARPay';
    ledgerJournalTable.JournalName = LedgerJournalName.JournalName;
    ledgerJournalTable.initFromLedgerJournalName();
    ledgerJournalTable.insert();
    numberSeq = NumberSeq::newGetVoucherFromCode(ledgerJournalName.VoucherSeries);
    // numberSeq = NumberSeq::newGetVoucherFromCode(ledgerJournalName.VoucherSeries);
     ttsbegin;
   // while(RCell.Value().double() > 0)
     do
    {

        ledgerJournalTrans.clear();
        ledgerJournalTrans.voucher = numberSeq.voucher();
        ledgerJournalTrans.LineNum = lineNum;
        ledgerJournalTrans.AccountType = LedgerJournalACType::Cust;
        //ledgerjournalTable.JournalNum =(Cells.Item(row, 1).value().bStr());
        ledgerJournalTrans.JournalNum = ledgerJournalTable.JournalNum;
        ledgerJournalTrans.initValue();
        ledgerjournalTrans.Company= curext();
        ledgerjournalTrans.TransDate =(Cells.Item(row, 1).value().date()); //any2date(Cells.Item(row, 1).value());//
        ledgerJournalTrans.AccountNum =COMVariant2Str(Cells.Item(row, 2).value());
        ledgerjournalTrans.MarkedInvoice = Cells.Item(row, 3).value().bStr();
        ledgerjournalTrans.Txt =Cells.Item(row, 4).value().bStr();
        ledgerjournalTrans.AmountCurDebit = (Cells.Item(row, 5).value().double());
        ledgerjournalTrans.AmountCurCredit =(Cells.Item(row, 6).value().double());
        ledgerJournalTrans.OffsetAccountType = str2enum(LedgerJournalACType,cells.item(row, 7).value().bStr());//cells.item(row, 7).value().variantType(); //LedgerJournalACType::Bank;//  LedgerJournalACType::Bank;
        ledgerJournalTrans.OffsetAccount =Cells.Item(row, 8).value().bStr();//'PNCUS'; //ledgerJournalTrans.findOffsetAccount();
        ledgerJournalTrans.PaymMode =Cells.Item(row, 9).value().bStr();
        ledgerjournalTrans.CurrencyCode =Cells.Item(row, 10).value().bStr();
        ledgerjournalTrans.PaymReference=Cells.Item(row, 11).value().bStr();
        ledgerjournalTrans.krDeductionType=Cells.Item(row, 12).value().bStr();
        ledgerjournalTrans.Dimension[4]=Cells.Item(row, 2).value().bStr();
        ledgerjournalTrans.insert();
       // RCell = Cells.Item(row, 1);
        type = cells.item(row+1, 1).value().variantType();
         row++;

    }
    while (type != COMVariantType::VT_EMPTY);

    ttscommit;
    info("Customer payment lines imported Successfuly");
    info(strfmt("journal Number %1" , ledgerJournalTable.JournalNum));
    app.quit();

}

///

Static LedgerJournalTable createLedgerJournalTable(LedgerJournalNameID _ledgerJournalNameID)
{
     LedgerJournalName   ledgerJournalName;
      LedgerJournalTable ledgerJournaltable;
      NumberSeq           numberSeqLoc;
     ;
/*elect firstonly ledgerjournalName where ledgerJournalName.JournalName == 'ARPay';
    ledgerJournalTable.JournalName = LedgerJournalName.JournalName;
    ledgerJournalTable.initFromLedgerJournalName();
    ledgerJournalTable.insert();*/
   // numberSeqLoc = NumberSeq::newGetVoucherFromCode(ledgerJournalName.VoucherSeries);
return ledgerJournaltable;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static void Main(Args _args)
{
KR_CustPaymentImport krCustPaymentImport;
krCustPaymentImport = new KR_CustPaymentImport();
krCustPaymentImport.run();
}

Tuesday, 26 July 2016

Form Data displaying Asending Or Descending through code

// Changed on 26 Jul 2016 at 05:09:16 by jredd
public void init()
{
    super();
         this.query().dataSourceNo(1).addSortField(fieldnum(Kr_eDoc_CheckRegister,kr_ChequeNumber),SortOrder::Descending);

// this.query().dataSourceNo(1).addSortField(fieldnum(TableName, Fieldname),SortOrder::Descending);
}

Tuesday, 5 July 2016

Dynamics AX 7 Development - IDE (Part I)

Discuss Dynamics AX Scenarios and cases & Dynamics AX Tips

Microsoft Dynamics AX 2012 R3 Installation Step By Step

Microsoft Dynamics AX 2012 R3 Installation Step By Step

Please Follow the steps bellow:

1- Open the Dynamics AX Media the double click the autorun.exe


2- when the Installer windows appear click the"Validate system requirements" to make sure that all prerequisites was installed.

3-Select the components that you attend to install. in our case we are going to select the Database, Application Object Server(AOS), and the client Component. then press the Validate Button.





















4- Make sure that there is no errors then Click Finish. if any error appears you must fix it before continue.

5- Go back to the Installer main windows and click "Microsoft Dynamics AX Components".

6- Press next in the welcome screen.

7- In the license screen select "I Accept the license terms" then press Next Button.  

8- in the Customer Experience screen i am going to select "I Don't want to join the program at this time" then click next.

9- Select file location then click next.

10- Click Install.

11- Wait until the Dynamics AX setup support files has been installed.

12- In the installation screen Select "Microsoft Dynamics AX" then click next.

13- In the installation type screen Select "Custom Installation" then click next.

14- Now Select the Database Component alone. then click next.

15- in the Prerequisite validation screen make sure that everything is ok then click Next.

16- then Select Create New Databases option then click next.

17- in the database information you can change the databases names or you can accept the default values. when you finish click next.

18- in the select additional models make sure to check the foundation Model then click next.

19- The "Prerequisite validation screen" will popped again. make sure that everything is OK then click Next.

20- Click Install.

21- Click Finish.

22- Check the log to make sure that the database was installed successfully.

23- Now Repeat steps 5 and 6.
24- In the installation screen Select "Microsoft Dynamics AX" then click next.

25- In the installation type screen Select "Custom Installation" then click next.

26- Now Select the Application Object Server(AOS), Client Complainants then click next.

27- The "Prerequisite validation screen" will popped again. make sure that everything is OK then click Next.

28- Select file location then click next.

29- In the "Connect to the databases" Screen select the server name, The databases names then click Next.

30- Leave the port information as is. then click Next.


31- Specify the AOS Account. in our case we are going to select Domain Account then click next.

32- Warring of using the user account will appear. Click OK.

33- Select the Client preferences then Click Next.

34-The "Prerequisite validation screen" will popped again. make sure that everything is OK then click Next.

35-Click Install.

36-Wait Until the installation process completed. then click Finish Button.

37-Check the log to make sure that tall components was installed successfully.

38- Restart the windows then run AX.

39-Congratulation AX was installed successfully. In next article we are going to illustrate how to complete the initialization checklist. 



Install Dynamics AX 2012 R3 Step by Step (Step 2)


In the previous article we discussed how to install AX basic componentstoday we are going to discuss how to complete the initialization checklist and the partition initialization chick list.
Please follow the following steps:

 
1- Since we are not going to discuss the Lifecycle services and Customer feedback options in this post we will mark this option as complete. Click mark as complete for both the "Lifecycle services" and the "Customer feedback options".


2- Click the "Compile Application".


3- a warning message will papers to inform you that this step will take long time (in my laptop around 5 hours). click Yes Button.


4- Don't panic if the system looks like not responding. just wait.


5- When the compile is finished make sure there is No errors.


6- Next step is to compile into .NET framework CIL. Click the "compile into .NET framework CIL" Link.


7- a warning message will appears to inform you that this step will take long time(in my laptop a round 1 hours).click Yes


8- when the compile into .NET framework CIL is finished. info log will appears make sure everything is ok then click close button. 


9- Since we are going to use the demo license please click mark as complete for both the "Provide license information" and "configure application functionality" .


10- Then Click the Modify data types.


11- Click Ok button on the modify data types form.


12- Then click "synchronize database (required)" to synchronize the database.


13- Since we are not going to create partitions please click mark as complete.


14- Under the Configure accounts and profiles node. click Mark as complete for both the "Initialize user profiles" and "Setup Application Integration framework".


15- Click the Configure system accounts.


16- Enter the logon Alias and the network domain of the account to use for the business connector proxy. and for the synchronization service account. then press ok.


17- Move to the partition initialization checklist and click on the Configure partition accounts.


18- Enter the logon Alias and the network domain and click Ok.


19- Click "Create reference data".


20- Since we are not going to create a new legal entitles in this step please click Mark as complete.


21- Click the "set up system parameters"


22- Select the system Language then click Close Button.


23- click close in the Infolog


24- since we are not going to import database data in this stage please click Mark as complete.


25- Close the system and reopen it.


26- Congratulation, we finished the installation check list. 


27- as you can see there is no demo company. in the next article we will discuss how to import Contoso demo data.


Install Dynamics AX 2012 R3 Step by Step (Step 3)


In the previous articles we discussed how to install AX basic components andinitialization checklist.  Today we are going to discuss how to import AX Demo Data. Before we can import the demo data we need to prepare the prerequisites. Two prerequisites are required. Download the demo data, and Test Data Transfer Tool.


Please follow the following steps

1- From the PartnerSource go to Microsoft Dynamics AX 2012 R3 page then Click Demo Material Link.

2- in the demo Material Table click the Contoso Demo Data.

3- from the Microsoft File Transfer Manager select the download path then click the Transfer button.

4- Go back to the Demo Material Table then from the description click the Test Data Transfer Tool (beta) to download the tool installer from the Downloadable tools section of Microsoft Dynamics Lifecycle Services.

5- Loging to the Microsoft Dynamics Lifecycle Services then click the Downloadable Tools.

6- Download the Microsoft Dynamics ax 2012 Test Data Transfer Tool.

7- Double Click the Contoso Demo Data file, then press accept button from the installer.

8- Select the path then click Install (Extract the demo data from the package to the database server that hosts the AX 2012 R3 business database for your environment).

9- after that we need to install Test Data Transfer Tool. Double Click the Test Data Transfer Tool installer file. when the installer start Click Next Button.

10- Select the Accept check box then click Next.

11- Select the path then click next. (Please remember this path you will need it latter).

12- Click Install button.

13- Click Finish button.

14- Go to Control Panel > Services, stop the AOS instance associated with your environment.

15- Using Windows Explorer, browse to the Test Data Transfer Tool (beta) folder.

16- On the File menu in Windows Explorer, click Open command prompt as administrator. 

17- Open the SQL Server Management studio, write down the instance name.

18- Backup MicrosoftDynamicsAX Database, in case anything goes wrong.

19- At the command prompt, enter the following command to import the demo data: dp.exe import [location of demo data] [Name of AX business database] [Servername\InstanceName]. in our case the command will look like this
dp.exe import e:\demodataMicrosoftDynamicsAXR3DemoData MicrosoftDynamicsAX SHAFEAA then press Enter.

20- Enter y or Y then press enter. Import process will Start (It may take over 30 minutes to import the demo data.)

21- when the import process finished go to Control Panel > Services, start the AOS instance associated with your environment.

22- Open Dynamics AX

Congratulation, the demo data have been imported.