24 December 2013

Microsoft Dynamics AX 2015 Next release in 2014 or 2015 Dynamics AX 2013-2015 Road map


Microsoft Dynamics AX 2015 Road map

Click here to download the PDF file




The next major release of Microsoft Dynamics AX is code named ’Rainier’. It is a new cloud
optimized platform for deployments in private and public cloud as well as on-premises. It will
underline and the enable next generation of user experiences. Breakthrough application lifecycle
management with adoption of ‘what you need, when you need it’ along with new levels of
process and business insight will make ‘Rainier’ a true breakthrough release!
The first elements of ‘Rainier’ are expected to be available in Q4 CY2014 with key investments
areas including:

 Next Generation User Experience - a context-sensitive Windows 8 experience based on
HTML5 client technology
 Cloud Delivered – with a focus on enabling a “what you need, when you need it” approach
via Windows Azure and/or Windows Server
 Best in class lifecycle management – regardless of deployment choice from on-premise,
hybrid to full cloud
With ‘Rainier’ we will continue to deliver the most intuitive and simple solution for your
customer interactions, your people and your business by innovating and building out the
functionality footprint across retail, distribution, manufacturing, services and public sector.

Features

a. Cloud Based Solutions
b. Platform independence - Browser enabled clients
c. AD Federation and more integration with Azure
d. More investments on Visual Studio (Development Environment will be VS)
e. Application Development targetting any OS through Rainier
f. No longer need to invest on Sharepoint hosting as Enterprise portal will be eliminated
g. 3 key pillars - New client, Cloud Readiness, New Development Stack
h. No RPC based communication (Atleast, now it's assured that the event logs won't get full by RPC errors which was the case with AX 2009)
i. Programming language will still be X++ but everything will be .net compiled
j. Capability to expose updatable views using OData
k. HTML 5 based Web Client so more faster and richer experience

So, all looks exciting for the next major release of Dynamics AX which would be somewhere in end of 2014 or early 2015!

15 December 2013

Query range in AX 2012 /2009

dateQBR.value(queryRange(FromDateEdit.dateValue(), ToDateEdit.dateValue()));

-> below query you can write in form ->DataSource-> ExecuteQuery()

this.query().dataSourceName("QualityInspectionControl").addRange(fieldNum(QualityInspectionControl,QuaityChecked)).value(queryvalue(NoYes::No));
this.query().dataSourceTable(tablenum(QualityInspectionControl)).addRange(fieldnum(QualityInspectionControl,QuaityChecked)).value(queryVal

query range in ax 2009 date function

Fist add following peace of line in init() method


criteriaApproved = this.query().dataSourceTable(tablenum(VendTrans)).addRange(fieldnum(VendTrans,Approved));

followin line in execute query()

dateQBR.value(strfmt('(CustTrans.TransDate >= %1) && (CustTrans.TransDate <= %2)', Date2StrXpp(01\01\2010), Date2StrXpp(31\10\2010)));

06 December 2013

AX 2012 Enterprise Portal Development Cookbook AX 2012 EP

AX 2012 Enterprise Portal Development Cookbook

Please click here to download Enterprise Portal Development Cookbook

X++ code for Ledger journal posting with one line / journal posting in AX

Example class for reference: \Classes\TutorialJournalCheckPost\main

Example: Using Ledger Journal
The following is an example of creating a journal with one journal line and then
posting the journal.

static void ExampleLedgerJournal(Args _args)
{
LedgerJournalName LedgerJournalName;
LedgerJournalTable ledgerJournalTable;
LedgerJournalTrans ledgerJournalTrans;
LedgerJournalCheckPost ledgerJournalCheckPost;
NumberSeq numberseq;
LedgerJournalNameId LedgerJournalNameId = 'GenJrn';
BankAccountID BankAccountID = 'EUR OPER';
ledgerAccount offsetAccount = '601500';
amountCur amountCur = 102;
;
ttsbegin;
// Find a ledgerJournalName record
select firstonly LedgerJournalName
where LedgerJournalName.JournalName ==
LedgerJournalNameId;
//Created the ledgerJournalTable
ledgerJournalTable.JournalName =
LedgerJournalName.JournalName;
ledgerJournalTable.initFromLedgerJournalName();
ledgerJournalTable.Name = 'Hotel';
ledgerJournalTable.insert();
numberseq =
NumberSeq::newGetVoucherFromCode(ledgerJournalName.VoucherS
eries);
ledgerJournalTrans.Voucher = numberseq.voucher();
//Generate the transaction line
ledgerJournalTrans.JournalNum =
ledgerJournalTable.JournalNum;
ledgerJournalTrans.CurrencyCode = 'EUR';
ledgerJournalTrans.ExchRate =
Currency::exchRate(ledgerJournalTrans.CurrencyCode);
ledgerJournalTrans.AccountNum = BankAccountID;
ledgerJournalTrans.AccountType =
LedgerJournalACType::Bank;
ledgerJournalTrans.AmountCurCredit = amountCur;
ledgerJournalTrans.TransDate = today();
ledgerJournalTrans.Txt = 'Room Stay';
ledgerJournalTrans.OffsetAccount = offsetAccount;
ledgerJournalTrans.OffsetAccountType =
LedgerJournalACType::Ledger;
ledgerJournalTrans.insert();
info(strfmt('Journal Id:
%1',ledgerJournalTable.JournalNum));
//Post the Journal
ledgerJournalCheckPost =
ledgerJournalCheckPost::newLedgerJournalTable(ledgerJournal
Table,NoYes::Yes);
ledgerJournalCheckPost.run();
ttscommit;
}

X++ coding for Ledger Voucher posting with example / Ledger Voucher posting / voucher posting in AX

Example Class for Reference : \Classes\TutorialLedgerVoucher\runSalesPost
Example: Using LedgerVoucher
The following job posts a petty cash disbursement for a payment for a stapler and
some stamps. The accounts and amounts are set in the variable declaration.
Usually these would be obtained from parameters, user input or a calculation.

static void ExampleLedgerVoucher(Args _args)
{
LedgerVoucher ledgerVoucher;
LedgerVoucherTransObject ledgerVoucherTransObject;
Dimension dimension;
NumberSeq numSeq;
NumberSequenceCode NumberSequenceCode =
'Acco_18';
ledgerAccount accountNumPetty = '110180';
// Petty cash
ledgerAccount accountNumOffsetOffice =
'606300'; // Office Supplies
ledgerAccount accountNumOffsetPostage =
'606500'; // Postage
amountMST amountPetty = 55;
amountMST amountOffice = 50;
amountMST amountPostage = 5;
;
numSeq =
NumberSeq::newGetNumFromCode(NumberSequenceCode);
ttsbegin;
//First Step - Create Voucher
ledgerVoucher =
ledgerVoucher::newLedgerPost(DetailSummary::Summary,
SysModule::Ledger,
LedgerParameters::numRefLedgerExchAdjVoucher().NumberSequen
ce) ;
//Second Step - Create Voucher Number
ledgerVoucher.AddVoucher(LedgerVoucherObject::newVoucher(nu
mseq.num(),
today(),
Sysmodule::Ledger,
LedgerTransType::None));
//Create the first Transaction - this is the credit
side of the transaction (-55)
//The other two DR transactions should total to the CR
otherwise it won't post.
ledgerVoucherTransObject =
LedgerVoucherTransObject::newCreateTrans(
ledgerVoucher.findLedgerVoucherObject(),
LedgerPostingType::LedgerJournal,
accountNumPetty, // Ledger Account
dimension,
CompanyInfo::standardCurrency(),
-
amountPetty, // Amount
0, //
TableId
0); //
ReciID
ledgerVoucherTransObject.parmTransTxt("Petty cash
disbursement");
ledgerVoucher.addTrans(ledgerVoucherTransObject);
//Create the second Transaction
ledgerVoucherTransObject =
LedgerVoucherTransObject::newCreateTrans(
ledgerVoucher.findLedgerVoucherObject(),
LedgerPostingType::LedgerJournal,
accountNumOffsetOffice,
dimension,
CompanyInfo::standardCurrency(),
amountOffice, // Amount
0,
// TableId
0);
// ReciID
ledgerVoucherTransObject.parmTransTxt("Red stapler");
ledgerVoucher.addTrans(ledgerVoucherTransObject);
//Create third Transaction
ledgerVoucherTransObject =
LedgerVoucherTransObject::newCreateTrans(
ledgerVoucher.findLedgerVoucherObject(),
LedgerPostingType::LedgerJournal,
accountNumOffsetPostage,
dimension,
CompanyInfo::standardCurrency(),
amountPostage,
0,
// TableId
0);
// ReciID
ledgerVoucherTransObject.parmTransTxt("Stamps");
ledgerVoucher.addTrans(ledgerVoucherTransObject);
//Last Step - To Balance Voucher and Close
ledgerVoucher.end();
numseq.used();
ttsCommit;
}

03 December 2013

Refreshing form's datasource without affecting cursor position / How to retain cursor position? in AX

WE can do in two ways

1.Just calling the Research method by passing true boolean value
MyTable_ds.research(true); // boolean value retain the cursor position
------------
2.you can use method setPosition() and getPosotion()
{
int position;
;
position= MyTable_ds.getPosition();
MyTable_ds.research();
MyTable_ds.setPosition(position);
}



Happy Daxing
Sunil

02 December 2013

Surrogate key

Hi,

A surrogate key is a AX -generated record identifier. In Dynamics Ax terms, it is a RecId field, used as the primary key of a table.

Happy Daxing
SUNIL

01 December 2013

how to deploy ssrs reports in ax 2012 by using management shell

1.Type the following command to deploy the report. For example, let's deploy
the CustTransList report:
Publish-AXReport -ReportName CustTransList

2.To deploy multiple reports using PowerShell, we can use the following command:

Publish-AXReport -ReportName Sales, SalesAnalysis

3.To deploy all the reports using PowerShell, we can use the following command:
Publish-AXReport –ReportName *

4.To deploy reports to a different Report Server, we can use the following command:
Publish-AXReport – ReportName -ServiceAOSName
-ServicesAOSWSDLPort

===================================

1) Open Windows Powershell as Administrator
2) Type the below command :-

To Deploy specific report:
C:\AosService\PackagesLocalDirectory\Plugins\AxReportVmRoleStartupTask\DeployAllReportsToSSRS.ps1 -Module ApplicationSuite -ReportName PurchPurchaseOrder* -PackageInstallLocation "C:\AosService\PackagesLocalDirectory"
To Deploy all Reports:
 c:\AosService\PackagesLocalDirectory\Plugins\AxReportVmRoleStartupTask\DeployAllReportsToSSRS.ps1 -PackageInstallLocation "c:\AosService\PackagesLocalDirectory"


Trial balance export to Azure Blob Storage

The file will be automatically generated from D365 using a batch job. The trial balance file should include all dimensions. (Main-Dept-Cost ...