Monday, 14 March 2016

Bundle batch process in AX 2012

Below is the link to bundle batch process in AX 2012

https://letsdodynamicsax.wordpress.com/2015/07/16/how-to-bundle-batch-process-in-ax-2012/

Open VS in CUS layer

1. To open VS in VS, properties of VS has to bet in Target as shown below
2. "E:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe" /AXConfig C:\Users\sbandy\Desktop\AXCUS.axc

where E:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe is the path where VS is installed and is the path where AX configuration is present.

Thursday, 10 March 2016

DrillThrough Report in SSRS

1.  Open the report for which DrillThrough functionality needs to be applied.
2.  Create a new datamethod as shown below
















3. Rename the newly added dataMethod to VoucherDrillThrough
4. open the dataMethod VoucherDrillThrough and we will find the newly added Business logic project added to the same solution as shown below.


5.  Navigate to View > Application Explorer > Visual Studio Projects > C# Projects > SRSDrillThroughCommon as shown below
6.  Double click SRSDrillThroughCommon C# project, it will be added to our solution as shown below. Then, right click Reference > Add Reference > in the Businesslogic (VendorInvoiceSpendReport.BL) as shown below



7. Double click on data method and add the namespace
using.Microsoft.Dynamics.AX.Application.Reports; and add the following method as shown in the screen shot below.


8. Now the Datamethod is ready, Select the field for which drillThrough is required as shown below and select textbox properties.


9. Write the expression by passing the required parameters using the datamethod name


10.Save and deploy.
11. Follow the below link to resolve the errors after deploying

https://community.dynamics.com/ax/b/ax2012r3technicalconsultantblog/archive/2015/05/12/dynamics-ax-2012-r3-report-deployment-error-with-visual-studio-2013-loading-this-assembly-would-produce-a-different-grant-set-from-other-instances

12. Redeploy it again and deploy.





Collapse/Expand in SSRS

1. Select the row for which collapse/expand has to be set and select row visibilty
set the properties as shown in the screen shot below
















In Screenshot SubtotalGrp is the textbox name of the above row(+/- button will appear) on which collapse/expand should work.

Sunday, 21 February 2016

To import a new model file in AX

1.Open Microsoft Dynamics AX Management Shell(Run as administrator) from Administrative tools
2. Run the following command in PS C:\Windows\system32>

Install-AXModel -File "C:\Users\sbandy\Desktop\Suneela\Direct_Energy_AX\Merged Models\6.STOPurch_CUSTOM" -Details



Tuesday, 2 February 2016

To run different designs in controller class

1. In main method 
static void main(Args _args)
{
    DESVendorSpendReportController controller;


    controller = new DESVendorSpendReportController();
    controller.parmReportName(ssrsReportStr(DESVendorInvoiceSpendReport, Reporting));
    controller.parmArgs(_args);

    controller.startOperation();
}
2. in PreRunModifyContract class
Protected void preRunModifyContract()
{
    DESVendorSpendReportContract   contract;
    NoYesId                        LE;
        super();
    contract   = this.parmReportContract().parmRdpContract() as DESVendorSpendReportContract;
    LE         = contract.parmsubtotalByLegalEntityAndVendor();
   
    if (LE )
    {
                            this.parmReportContract().parmReportName(ssrsReportStr(DESVendorInvoiceSpendReport,LEInvDateReporting));
    }
    }

Monday, 25 January 2016

Loopkup filter  based on another field  in SYSQUERY form 

The requirement is to filter one lookup field value based on another field selection in SysQuery form.

Follow the below steps to filter VendorAccount field based on legal entities selection

Example:

1. Create a new Query called DESVendorSpendReport having DataArea as Root and VendTable underneath it.
create a relation under VendTable like DataArea.id == VendTable.DataAreaid
2. Set AllowCrossCompany property of the Query to true.
3. Write the below code in SysQueryForm > Range(DataSource) > RangeValue(field) > Lookup method

public void lookup(FormControl _formControl, str _filterStr)
{

   CompanyInfo          companyInfo;
   Query                query;
   QueryBuildDataSource qbds;
   SysTableLookup       lookup;
   SysDictField         sysDictField;
   VendTable            vendTable;
   TmpSysQuery          tmpSysQuery;
   TmpSysQueryCompanyRange tmpSysQueryCompanyRange;
   Container               selectedCompanies;
   
   ;
   sysDictField = new SysDictField(Range.Table_Id, Range.Field_Id);
   if (sysDictField.label() == "Vendor account")
   {
        recordsMarked = CompanyRanges_DS.recordsMarked();
        lastIndex     = recordsMarked.lastIndex();

        for (tmpSysQueryCompanyRange = CompanyRanges_DS.getFirst(); tmpSysQueryCompanyRange ; tmpSysQueryCompanyRange = CompanyRanges_DS.getNext() )
        {
            if (tmpSysQueryCompanyRange.IsCompanySelected == NoYes::Yes)
            {
                selectedCompanies = conIns(selectedCompanies, 1, tmpSysQueryCompanyRange.CompanyId);
            }
        }

        if (selectedCompanies)
        {
            lookup = SysTableLookup::newParameters(tableNum(DESVendorSpendReport),                      _formControl);
            lookup.addLookupfield(fieldNum(DESVendorSpendReport, AccountNum));
            lookup.addLookupfield(fieldNum(DESVendorSpendReport, Id));

            query = new Query();

            qbds = query.addDataSource(tableNum(DESVendorSpendReport));
            qbds.addRange(fieldNum(DESVendorSpendReport, id)).value(con2Str(selectedCompanies));
            lookup.parmQuery(query);

            lookup.performFormLookup();
          }
      else
      {
        SysLookup::lookupRange(_formControl, range, sysQueryForm.query());
      }
   }
   else
   {
     SysLookup::lookupRange(_formControl, range, sysQueryForm.query());
   }

}