Friday, November 17, 2017

Import References for SSRS Report user Control in Enterprise portal axapta

Following Import References  are required in using section for Creating SSRS Report user Control in Enterprise portal axapta

 using System;  
 using System.Collections.Generic;  
 using System.Linq;  
 using System.Web;  
 using System.Web.UI;  
 using System.Web.UI.DataVisualization.Charting;  
 using System.Web.UI.WebControls;  
 using Microsoft.Dynamics.Framework.Portal.UI.WebControls;  
 using Microsoft.Dynamics.Framework.Portal.UI.WebControls.WebParts;  
 using System.Diagnostics;  
 using Microsoft.Dynamics.AX.Framework.Reporting.Shared;  
 using Microsoft.Dynamics.Framework.BusinessConnector.Session;  
 using Microsoft.Dynamics.AX.Framework.Portal.Data;  
 using Microsoft.Dynamics.Framework.Portal.CommonControls;  
 using System.Globalization;  
 using Microsoft.Dynamics.AX.Framework.Services.Client;  
 using Microsoft.Dynamics.Framework.Portal;  
 using Microsoft.Dynamics.Framework.Portal.UI;  
 using Proxy = Microsoft.Dynamics.Framework.BusinessConnector.Proxy;  
 using Microsoft.Dynamics.Framework.BusinessConnector.Adapter;  
 using System.Security.Principal;  

Add Financial dimension Lookup at Enterprise portal in Axapta

To Add Financial dimension Lookup at Enterprise portal in Axapta you can to help with below code.

 protected void BusinessSector_LookUp(object sender, AxLookupEventArgs e)  
     {  
       //Getcurrent user to filter record based on current user   
       String usr = WindowsIdentity.GetCurrent().Name;  
       int pos = usr.IndexOf('\\');  
       usr = pos != -1 ? usr.Substring(pos + 1) : usr;  
       AxLookup lookup = (AxLookup)sender;  
       // Create the lookup data set. The respective table will be used.  
       Proxy.SysDataSetBuilder sysDataSetBuilder;  
       sysDataSetBuilder = Proxy.SysDataSetBuilder.constructLookupDataSet(AxSession.AxaptaAdapter, TableMetadata.TableNum(AxSession, "DimensionFinancialTag"));  
       // Set the generated data set as the lookup data set.  
       lookup.LookupDataSet = new DataSet(AxSession, sysDataSetBuilder.toDataSet());  
       using (Proxy.Query query = lookup.LookupDataSet.DataSetViews[0].MasterDataSource.query())  
       {  
         query.dataSourceNo(1).addRange(TableArrayFieldMetadata.FieldNum(this.AxSession, "DimensionFinancialTag", "FinancialTagCategory")).value = "5637146078";  
       }  
       // Specify the fields for the lookup.  
       lookup.Fields.Add(AxBoundFieldFactory.Create(AxSession, lookup.LookupDataSetViewMetadata.ViewFields["Description"]));  
       lookup.Fields.Add(AxBoundFieldFactory.Create(AxSession, lookup.LookupDataSetViewMetadata.ViewFields["Value"]));  
       lookup.SelectField = "Value";  
 }  

X++ code to print sales invoice on printer directly

Below is the X++ code to print sales invoice on printer directly.

  Args          salesArgs = new Args();  
   SalesInvoiceContract  salesInvoiceContract;  
   SalesInvoiceController controller;  
   SrsReportRunImpl    srsReportRunImpl;  
   str fileName;  
   CustInvoiceJour     custInvoiceJour;// = _args.record();  
     select custInvoiceJour where custInvoiceJour.InvoiceId=="INV_00000009";  
   salesArgs.record(custInvoiceJour);  
   controller       = new SrsReportRunController();  
   salesInvoiceContract  = new SalesInvoiceContract();  
   controller.parmReportName(ssrsReportStr(SalesInvoice,Report));  
   controller.parmShowDialog(false);  
   controller.parmReportContract().parmPrintSettings().printMediumType(SRSPrintMediumType::Printer);  
   // controller.parmReportContract().parmPrintSettings().printerName(@"\\espprn03\Follow Me - MFP");  
   salesInvoiceContract.parmRecordId(custInvoiceJour.RecId); // Record id must be passed otherwise the report will be empty  
   salesInvoiceContract.parmCountryRegionISOCode(SysCountryRegionCode::countryInfo()); // comment this code if tested in pre release  
   controller.parmReportContract().parmRdpContract(salesInvoiceContract);  
   controller.startOperation();  

Thursday, November 16, 2017

Ax 2012 Form Development,User control,Role centers,Citrix lookup issues




Simple form development using multiple tables
How to create role center in Ax 2012


Custom lookup issue On citrix client



How to create User control on EP website


Saturday, November 4, 2017

Enable disable sales Invoice,Confirmation,packing slip and Picking list button in Ax 2012

Sometimes we need to enable disable button in Sales order form then you can apply your code in below method in SalesTableType class

\Classes\SalesTableType\canConfirmationBeUpdated
\Classes\SalesTableType\canInvoiceBeUpdated
\Classes\SalesTableType\canPackingslipBeUpdated
\Classes\SalesTableType\canPickingListBeUpdated

For sales order list page you can refer below method.

\Classes\SalesTableListPageInteraction\setButtonEnabled


Thursday, November 2, 2017

Add custom Lookup for Employee id in Ax 2012

To Add customLookup for Employee id in Ax 2012 you can try below code sample in datasource filed of the form.

You can add data method to lookup easily to get the name of the employee. Here HcmWorker is a master table of employee and personnel number and name is the field of Hcmworker table.


   SysTableLookup     sysTableLookup = SysTableLookup::newParameters(tableNum(HcmWorker),_formControl);  
   Query          query = new Query();  
   QueryBuildDataSource  queryBuildDataSource = query.addDataSource(tableNum(HcmWorker));  
    queryBuildDataSource.addRange(fieldnum(HcmWorker,Tester)).value(queryvalue(Noyes::Yes));  
   sysTableLookup.addLookupfield(fieldNum(HcmWorker,PersonnelNumber));  
   sysTableLookup.addLookupMethod(tableMethodStr(HcmWorker,Name));  
   sysTableLookup.parmQuery(query);  
   sysTableLookup.performFormLookup();  

Friday, October 6, 2017

Ax 2012 Dynamic or run time Query Range without coding in Reports

I am sharing This clip which will show you How to Add Dynamic or runtime Query Range without coding in Report In Axapta. This tips will work in all version of Axapta. Ax versions which are available in Market are from ax 2.5 to Dynamics 365.

How to use query range in a smart way to avoid customization and coding.

Dynamics ax is very much user-friendly ERP. I hope you will like this tips.


Monday, October 2, 2017

Code sample to open existing excel file in Axapta

Code sample to open excel file in Axapta. You can use below code in any version of Axapta. First, you need to paste the file in particular folder path then you can open it by using job or class.

You can check below code through job x++ editor. This code can be helpful if you want to provide the menu item to export template for the user.

  fileName = "C:\\Users\\Public\\Documents\\TestTemplate.xlsx"  
   ;  
   WinAPI::shellExecute(fileName);  
   WinAPI::setFileAttributes(filename,1);  

Friday, September 29, 2017

Overview of Ax build version and history summary

I Want to share information from one video which I have created recently. URL is as below.



By viewing This video you will able to know Introduction of Microsoft Dynamics Ax and build version in the Hindi language.

Following topics included in this clip.
1.Axapta is born
2.Build versions of MS Axapta
3.Purpose of different versions of Axapta.
4.Journey of ax 2012
5.CU and RU Updates
6.Roadmap survey
7.Axapta service packs
8. Purpose of ERP
9. Year of versions
10.Working knowledge of Axapta

If you like this clip then you can go for subscription to know latest updates on ax in future.

Wednesday, September 27, 2017

Delete Cascade,Loop statement ,Query build data source and Ax tips

Delete Cascade Option in Ax 2012

This clip will show you How can you Delete Cascade Option in Table Ax 2012.You can understand this option better way by reading below.

Types of delete action
Cascade
Restricted
Cascade+restricted

A cascading deletion action will delete all records in the related table, where the foreign key is equivalent to the primary key of the current table. That is, deleting the parent record will also delete the child record(s) in the related table.
This cascading will take place whether the deletion is performed in code or directly by a user through the user interface.
Restricted

A restricting delete action will raise an error message if the user tries to delete a record, where records exist in the related table where the foreign key is equivalent to the primary key of the current table.
This error will only appear if the deletion is performed through the user interface. A deletion from X++ code will be allowed to proceed and will not be cascaded to the related table. In this case the programmer should call .validateDelete() themselves prior to the call to .delete()
Cascade+Restricted

This delete action normally works as a Restricted delete action. However, if the deletion is performed through X++ code, no error will be raised and the deletion will be cascaded to the related table.



If ,While for, switch etc Statement in Axapta

This clip will show you Ax 2012  Loop Statements, conditions and query build data source at runtime.

It also includes switch statement, if else if conditions, query ranges, ternary operator etc



Dynamics Ax 2012 Tips and tricks

This video clip will show you why dynamics Axapta is user-friendly ERP software.Summarize the features like security roles assignment, workflow, outlook and excel integration, master upload facility, menu driven, add to favorites, administration, go to the main form, master form, page navigation, search etc.

In this clip, you will get Idea what is Axapta and how it works and why demand of Axapta is increasing day by day.


A version of Axapta included in this clip is ax 2012 r3, Most of the bugs fixed in R3 modules.


Monday, September 11, 2017

Introducing new website to find correct answer for your question including D365

I am Introducing new website to find correct answer for your question including D365 and SQL along with many section .

The title is Genius Advice  website and URL is  Expert advice on your issues



We have shown you way of working and purpose of the website on below clip. Many more section will come in future.

You can visit and if you like then you can register to become permanent genius person on that site. 

Tuesday, August 8, 2017

How to get all Columns of Table in ax 2012 by job x++ code

To get all Columns of Table in ax 2012 by job x++ code you can try below code . If you table have large number of columns and do not have much time then you can use this job to get all columns to use in your code.

This job can be very useful for your development.

  DictTable  dictTable = new sysDictTable(tableNum(testTable));  
   fieldId  fieldId=dictTable.fieldNext(0);  
   dictField dictField;  
   while(fieldId)  
   {  
     dictField=dictTable.fieldObject(fieldId);  
         info(strFmt('testTable.%1 = %2;',  
               dictField.name(),  
               any2str("")));  
     fieldId= dictTable.fieldNext(fieldId);  
   }