How to General QR Code from NAV 2016

1. Using of Microsoft.Dynamics.Nav.MX.dll, you can find the DLL fine the below path from your installation folder or from the DVD folder.

…ServiceTier\program files\Microsoft Dynamics NAV\90\Service\Add-ins\ElectronicInvoice

Create a Codeunit object or use any object to create below functions.

CreateQRCodeInput

GetQRCode

GetBarCodeProvider

MoveToMagicPath

GenerateQRCode

LOCAL CreateQRCodeInput(Name : Text;VATNo : Text;InvDateTime : Text;TotalAmt : Text;VATAmt : Text) QRCodeInput : Text[1024]

Var Name DataType Subtype Length

No Name Text

No VATNo Text

No InvDateTime Text

No TotalAmt Text

 

No VATAmt Text

QRCodeInput :=’Seller Name:’ + Name + ‘;’ +’VAT No.:’ + VATNo + ‘;’ +’TimeStamp:’ + InvDateTime + ‘;’ +’Total Amt:’ + TotalAmt + ‘;’ + VATAmt;

LOCAL GetQRCode(QRCodeInput : Text) QRCodeFileName : Text[1024]

Parameters:

Var Name DataType Subtype Length

NoQRCodeInputText

Local Variables:

Name DataType Subtype Length

Set RunOnClient = Yes on DotNetVariables

IBarCodeProviderDotNetMicrosoft.Dynamics.Nav.MX.BarcodeProviders.IBarcodeProvider.’Microsoft.Dynamics.Nav.MX, Version=11.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35′

 

 

 

GetBarCodeProvider(IBarCodeProvider);

QRCodeFileName := IBarCodeProvider.GetBarcode(QRCodeInput);

LOCAL GetBarCodeProvider(VAR IBarCodeProvider : DotNet “Microsoft.Dynamics.Nav.MX.BarcodeProviders.IBarcodeProvider”)

Parameters:

Var Name DataType Subtype Length

Set RunOnClient = Yes on DotNetVariables

YesIBarCodeProviderDotNetMicrosoft.Dynamics.Nav.MX.BarcodeProviders.IBarcodeProvider.’Microsoft.Dynamics.Nav.MX, Version=11.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35′

Local Variables:

Name DataType Subtype Length

QRCodeProviderDotNetMicrosoft.Dynamics.Nav.MX.BarcodeProviders.QRCodeProvider.’Microsoft.Dynamics.Nav.MX, Version=11.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35′

QRCodeProvider := QRCodeProvider.QRCodeProvider;

IBarCodeProvider := QRCodeProvider;

LOCAL MoveToMagicPath(SourceFileName : Text) DestinationFileName : Text[1024]

Parameters:

Var Name DataType Subtype Length

NoSourceFileNameText

 

 

 

Local Variables:

Name DataType Subtype Length

FileSystemObjectAutomation’Windows Script Host Object Model’.FileSystemObject

DestinationFileName := ThreeTierMgt.ClientTempFileName(‘,’);

IF ISCLEAR(FileSystemObject) THEN

CREATE(FileSystemObject,TRUE,TRUE);

FileSystemObject.MoveFile(SourceFileName,DestinationFileName);

GenerateQRCode(InvDateTime : Text;TotalAmt : Text;VATAmt : Text;VAR TempBlob : Record TempBlob)

Parameters:

Var Name DataType Subtype Length

NoInvDateTimeText

NoTotalAmtText

NoVATAmtText

YesTempBlobRecordTempBlob

Local Variables:

Name DataType Subtype Length

CompanyInfoRecordCompany Information

SalesInvoiceHeaderRecordSales Invoice Header

QRCodeInputText

QRCodeFileNameText

// Save a QR code image into a file in a temporary folder

CompanyInfo.GET;

CompanyInfo.TESTFIELD(“VAT Registration No.”);

QRCodeInput := CreateQRCodeInput(CompanyInfo.Name,CompanyInfo.”VAT Registration No.”,InvDateTime,TotalAmt,VATAmt);

QRCodeFileName := GetQRCode(QRCodeInput);

QRCodeFileName := MoveToMagicPath(QRCodeFileName); // To avoid confirmation dialogue on RTC

// Load the image from file into the BLOB field

CLEAR(TempBlob);

ThreeTierMgt.BLOBImport(TempBlob,QRCodeFileName);

// Erase the temporary file

IF NOT ISSERVICETIER THEN

IF EXISTS(QRCodeFileName) THEN

ERASE(QRCodeFileName);

In My case I am using Table 112 (Sales Invoice Header) and one custom report to Generate and print the QR code in the report.

Expanded Data Type Data Source Name Include Caption

1 DataItem Sales Invoice Header <Sales Invoice Header> No

0 Column “Sales Invoice Header”.”QR Code” QRCode_SalesInvoiceHeader No

 

0 Column “Sales Invoice Header”.”Sell-to Customer No.” SelltoCustomerNo_SalesInvoiceHeader No

Insert a Image in the report designer and Calcfield on TempBlob report


I have added a button on Posted Sales Invoice Page 132

Local Variables:

Name DataType Subtype Length

QRCodeMgmtCodeunitQR Code Mgmt.

TempBlobRecordTempBlob

<Action1170000000> – OnAction()

CALCFIELDS(“Amount Including VAT”,Amount);

QRCodeMgmt.GenerateQRCode(FORMAT(CURRENTDATETIME),FORMAT(“Amount Including VAT”),FORMAT(“Amount Including VAT” – Amount),TempBlob);

“QR Code” := TempBlob.Blob;

MODIFY;

COMMIT;

REPORT.RUNMODAL(REPORT::”Print QR Code”,TRUE,FALSE,Rec);

OutPut