Tuesday, August 5, 2014

Generate QR barcode in Dynamics AX 2012

I just realize that Dynamics AX 2012 already provided the QR code generation under "C Sharp Projects" nodes


Below is the sample code how to use it

static void QRBarcode(Args _args)
{
    Microsoft.Dynamics.QRCode.Encoder   qrCode;
    System.String                       netString;
    str                                 tempFileName;
    System.Drawing.Bitmap               netBitmap;
    Bitmap                              imageQR;
    FileIOPermission    perm;  
    BinData             binData;
    container           imageContainer;  
    ;
   
    netString = "TEST";  
    qrCode = new Microsoft.Dynamics.QRCode.Encoder();  
    netBitmap = qrCode.Encode(netString); //encode the string as Bitmap can be used already
   
    tempFileName = qrCode.GetTempFile(netString); //to get the QR temporary file
   
    perm = new FileIOPermission(tempFileName,'r');
    perm.assert();  
    binData = new binData();
    binData.loadFile(tempFileName);
    imageContainer = binData.getData(); //get the QR code image put inside container so can be stored inside database for storing or reporting purpose

    System.IO.File::Delete(tempFileName);

    CodeAccessPermission::revertAssert();      
}

By using the code above we don't need to put another 3rd party software to generate the QR bar code.

In standard AX process this QRCode function has been used to generate the E-Invoice QR bar code.

Sunday, June 22, 2014

Immediately get the table relation in form advance query

Adding a relation in the table sometimes is not enough to get the linkage table in the advance query/filter in the form, we still need to the cross reference update to make the table linkage immediately available at the advance query/filter in the form.




Friday, May 9, 2014

A currency to convert from is required to retrieve exchange rate information error

An error regarding currency information sometimes very hard to get a hint where is the missing part, below is one of the error for currency when you execute the "Order line not invoiced" report in Microsoft Dynamics AX 2012 R2.
I have had check in the transaction all of them using base currency but still hit this error.

A currency to convert from is required to retrieve exchange rate information.
(S)\Classes\xInfo\add
(S)\Classes\Info\add - line 94
(S)\Classes\Global\error - line 3
(S)\Classes\ExchangeRateHelper\handleError - line 23
(S)\Classes\ExchangeRateHelper\validateFromCurrency - line 6
(S)\Classes\ExchangeRateHelper\getExchangeRate1 - line 24
(S)\Classes\CurrencyExchangeHelper\calculate - line 42
(S)\Classes\CurrencyExchangeHelper\calculateTransactionToAccounting - line 21
(S)\Data Dictionary\Tables\Currency\Methods\mstAmount - line 20
(S)\Classes\Tax\amountExclTax - line 187
(S)\Classes\Tax\baseAmountExclTax - line 132
(S)\Data Dictionary\Maps\SalesPurchLine\Methods\amountExclTax - line 100
(S)\Data Dictionary\Tables\SalesLine\Methods\amountExclTax - line 3
(S)\Data Dictionary\Maps\SalesPurchLine\Methods\lineAmountExclTax - line 25
(S)\Data Dictionary\Tables\SalesLine\Methods\lineAmountExclTax - line 3
(S)\Classes\SalesNotInvoicedDP\getFromSalesLine - line 12
(S)\Classes\SalesNotInvoicedDP\processReport - line 21
(S)\Classes\SrsReportProviderQueryBuilder\initialize - line 59

The reason of this error is because of the AX system can't find the exchange rate within the date of transaction.
You can fix this by filled in the currency exchange rates within the range of the transaction date (for each of the currency exchange rate)

Thursday, January 23, 2014

AIF Web service error

AIF that hosted in web service sometimes cause an error that very hard to trace, below is one of the error generated when we accessing the AIF webservice.

The server was unable to process the request due to an internal error. For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs.

After a long time search also enable the debugging, I found that the NameSpace in the services is not properly update. So if you guys encounter this error please make sure the NameSpace define in AX is the same with the NameSpace that been generated in the web services.

Sample:
-<wsdl:operation name="find">
<soap:operation style="document" soapAction="http://schemas.microsoft.com/dynamics/2008/01/services/SalesOrder/find"/>

The bold character is the namespace, make sure that its the same with the name space in the AX services object.


Note: this is only one of the possibilities for the respective error message.

Tuesday, November 12, 2013

Dynamics AX 2012 R2 software upgrade checklist can't expand on windows server 2012

After we upgrade the AX 2012 R2 into a new CU we need to do the sofware checklist update inside AX as a routine after installing the hotfix or CU. If we open the client and run the software checklist update on Windows Server 2012, the check list item can't expand when we click the expand (+) and if the check list item can't expand then we can't go through the check list process.

I'm not sure what is the missing part here but looks like Windows server 2012 not certified yet for Dynamics AX 2012 R2 client.
To solve this issue we need to run the software update checklist in AX client under supported client OS (I have tested in Windows server 2008 R2 and Windows 7).

Friday, November 8, 2013

Testing out new tools AxBuild.exe from CU7 for parallel compiler

A new tool came out in Dynamics AX 2012 R2 CU7 which is AxBuild. This tool really help us to make the compiler run faster. Here is the screenshot of the parallel compilation using AxBuild.exe.

I have tested my self this tools run in virtual machine and it takes 1 hour 5 mins to do the full compilation.


For more information you can go to this link.
http://msdn.microsoft.com/library/d6da631b-6a9d-42c0-9ffe-26c5bfb488e3.aspx
and
http://blogs.msdn.com/b/axtools/archive/2013/11/04/parallel-x-compilation-for-microsoft-dynamics-ax2012-r2-in-cumulative-update-7.aspx

Thursday, November 7, 2013

Unable to find a unique Dimension code combination record corresponding to the entered values. error in dimension AX 2012

Recently I found an error when I build a SegmentedEntry in another customize form just like LedgerJournalTransDaily form.

"Unable to find a unique Dimension code combination record corresponding to the entered values." (can't find this error in label too)
When I try to debug the error I can't find any clue because this error send the notification after the modified event of the control. (I might miss some of the call stack that lead to this modified event). I tried to look again the standard function and found that I miss something in the "LedgerDimension" datasource field method, the method name is "resolveReference".
Here is the sample method code:
public Common resolveReference(FormReferenceControl _formReferenceControl)
{
    Common common = offsetLedgerDimensionController.resolveReference();

    return common;
}