Thursday, October 20, 2016

Run report SSRS SrsReportRunController and passing parameter from form in AX 2012 R3

void clicked()
    Query query;
    LedgerJournalTable          dataTable;
    SrsReportRunController      controller;

    dataTable = LedgerJournalTable;


    controller = new SrsReportRunController();

    query = controller.parmReportContract().parmQueryContracts().lookup('
    //Set parameter value;
MyCustomReportView, JournalNum)).Value(dataTable.JournalNum);





Thursday, October 13, 2016

Reverse Settlement Accout Receivable on AX 2012 R3

static void Update_Reverse_Settlement(Args _args)
    CustTrans           invCustTrans,findCustTrans;
    SpecTransManager    specTransManager;
    DocumentNum         invdocnumx,paydocnumx;
    CustSettlement      custSettlement;
    AccountNum          accnumx;
    date                paydatex;
    CustTable           custTable;

    invdocnumx  = 'PY16100100561';
    accnumx     = '631331';

    select invCustTrans
    order by TransDate asc
    where   invCustTrans.DocumentNum == invdocnumx
        &&  invCustTrans.AmountMST > 0
        &&  invCustTrans.AccountNum == accnumx;
    while select findCustTrans where findCustTrans.RecId == invCustTrans.RecId
        custTable = custTable::find(findCustTrans.AccountNum);

        if(findCustTrans.TransType != ledgerTransType::Payment)
            //We must go to the customer settlement table and locate the records that were used to settle the invoice in scope and pass them into the class
            // that manages the marking and updating of applied credits and payments to invoices. We remove the credit marking to remove the link between the invoice
            //and the credits used to settle the invoice. Then we must reverse the transactions using the reverseTransact method on the customer transaction table
              select firstonly custSettlement where custSettlement.TransCompany == findCustTrans.dataAreaId &&
                                                    custSettlement.TransRecId   == findCustTrans.RecId &&
                                                    custSettlement.AccountNum   == findCustTrans.AccountNum;

            specTransManager = SpecTransManager::newRefTableId(custTable,tablenum(custSettlement), true);
            specTransManager.insert(custSettlement.DataAreaId, custSettlement.TableId, custSettlement.RecId, custSettlement.SettleAmountCur, findCustTrans.CurrencyCode);
            custSettlement.CustVendSettlement::markOffsets(specTransManager, findCustTrans.CurrencyCode, true);

            if (CustTrans::reverseTransact(custTable,null,settleDatePrinc::DateOfPayment,custSettlement.TransDate))
    info(strFmt('Done %1',findCustTrans.txt));



Monday, October 10, 2016

Using jumpref method on PurchReqLine on AX 2012 R3

Override method jumpRef ItemId field on Form DataSources

public void jumpRef()
    PurchReqLine    _purchRLine;
    Args            args;
    MenuFunction    menuFunction;
    Common          rec;
    _purchRLine = PurchReqLine;
    rec = InventTable::find(_purchRline.ItemId);

    args = new Args();

    // Create a new MenuFunction that launches the Reasons Menu Item

    menuFunction = new MenuFunction(menuitemdisplaystr(EcoResProductDetailsExtended),MenuItemType::Display);;       

Friday, August 19, 2016

Disable Password Policy on Active Directory (Domain) Win Server 2012

1. Administrative Tools > Group Policy Management

2.  Default Domain Policy > Settings > Security Settings > Account Policies/Password Policy

3. Right Click on Account Policies/Password Policy, select Edit...

4. Right Click, select properties, and change/update policy setting for each Policy.

Error System.IO.File::Move when using batch process on AX 2012 R3


On syntax

System.IO.File::Move(fileName, newFileName);

You get this error when using batch process:

 "System.IO.IOException: The process cannot access the file because it is being used by another process"

A. Your AOS services is using user which have less security access to folders.
B. You read or access files but not closed yet.

A. Add more security access to user who run the AOS services.

B. Closing File


Close the files before CodeAccessPermission::revertAssert();


io              = new TextIO(filenameOp, "r");;

io = null;


Build Generate Increament CIL

Close and Open AX.

Tuesday, July 19, 2016

Error when configuring Management Reporter 2012 for Dynamics AX 2012 R3


You get error message when config MR 2012:

"An unexpected error occurred while querying the Metadata service"

System.ServiceModel.FaultException`1[Microsoft.Dynamics.Performance.Deployment.DataProvider.AX.AX2012MetadataService.MetadataFault]: An exception of type MetdataException has occurred while performing the operation. (Fault Detail is equal to Microsoft.Dynamics.Performance.Deployment.DataProvider.AX.AX2012MetadataService.BatchFault).

You add custom fields to table which is used as Financial Dimension.

e.g. You add custom fields to InventLocation, and use the table as Custom as Financial Dimension.


Add relations to fields on the table.
Every additional fields on the table which is used to Financial Dimension must have relations.

a. How to add table to be use on Financial Dimension:

b. Another same problem
Thank's to David Orr

Friday, April 22, 2016

Get List of Number Sequence in AX 2012 R3

static void Test_NumberSeqTableRef(Args _args)
    NumberSequenceTable         _nst;
    NumberSequenceReference     _nsr;
    NumberSequenceDataType      _nsd;
    while select _nst
        order by _nst.NumberSequence 
        join _nsr
            where _nst.RecId == _nsr.NumberSequenceId
        join _nsd
            where _nsd.RecId == _nsr.NumberSequenceDatatype
            && _nst.Txt like 'AAA *'
        info(strFmt('%1 ; %2 ; %3 ; %4 ; %5 ; %6',_nst.NumberSequence,_nst.Txt,_nst.Format,_nst.Highest,
        _nsd.referenceLabelForDisplay(), _nsd.referenceModuleLabel() ));