Showing posts with label NAV. Show all posts
Showing posts with label NAV. Show all posts

Friday, 16 September 2022

README.md (Markdown) file in AL Code for writing your version control or project definition details

 Sometimes it can be easy if put all the information in one place related what we changed in our AL extension specially when there are multiple developers are working together,

use of Markdown file.

Is it best idea?

Yes, unlike a documentation trigger of each object, I would say this is the file README.md can be your whole Project's documentation trigger 👀 Called MarkDown

How to use it?

Just visit your AL code, create a new file and name it with a README.md.

see below 👇


  • 2nd


  • 3rd interesting part > Write your own documentation 👲
Start writing your version control or anything else here we go, and then click on Right hand corner button (Open Preview)


See how it looks like :



We have some cool features and market extension
Use me to check those out


Enjoy 👦👦👦

Sunday, 19 September 2021

Convert each word's first letter in Capital

 Convert each word's first letter in Capital

Below is the code

Name DataType Subtype Length

nametext Text

newtext Text

ucase Text

textlen Integer

Convertext Text


nametext := 'first letter of this line going to be converted in Capital.';

WHILE STRPOS(nametext,' ') <> 0 DO BEGIN

  newtext := UPPERCASE(COPYSTR(COPYSTR(nametext,1,STRPOS(nametext,' ')-1),1,1));

  newtext += LOWERCASE(COPYSTR(nametext,2,STRPOS(nametext,' ')-2)) + ' ';

  Convertext += newtext;

  textlen := STRLEN(newtext);

  nametext := DELSTR(nametext,1,textlen);

END;

ucase := UPPERCASE(COPYSTR(nametext,1,1));

ucase += LOWERCASE(COPYSTR(nametext,2,STRLEN(nametext)));

MESSAGE(Convertext+ucase);











Sunday, 11 July 2021

Generate QR Code from NAV 2016

 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

No QRCodeInput Text

Local Variables:

Name DataType Subtype Length

 Set RunOnClient = Yes on DotNetVariables

IBarCodeProvider DotNet Microsoft.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

Yes IBarCodeProvider DotNet Microsoft.Dynamics.Nav.MX.BarcodeProviders.IBarcodeProvider.'Microsoft.Dynamics.Nav.MX, Version=11.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'

Local Variables:

Name DataType Subtype Length

QRCodeProvider DotNet Microsoft.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

No SourceFileName Text



Local Variables:

Name DataType Subtype Length

FileSystemObject Automation '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

No InvDateTime Text

No TotalAmt Text

No VATAmt Text

Yes TempBlob Record TempBlob


Local Variables:

Name DataType Subtype Length

CompanyInfo Record Company Information

SalesInvoiceHeader Record Sales Invoice Header

QRCodeInput Text

QRCodeFileName Text


// 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

QRCodeMgmt Codeunit QR Code Mgmt.

TempBlob Record TempBlob


<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






Saturday, 27 February 2021

Splits multiple email ids in to (List of Text) data type before sending an email notifications to someone through AL code.


EmailSplits('abc@gmail.com;xyz@gmail.com');

SmtpMail: Codeunit "SMTP Mail";
SmtpConf: Record "SMTP Mail Setup";
EmailBody: text;

SmtpMail.CreateMessage('Checking multiple Emails', SmtpConf."User ID", 
                        Receipt, 'Emails ', EmailBody, true);
        
    local procedure EmailSplits(EmaifieldValue: Text[250])
    var
        PosBgn: Integer;
        ValueLength: integer;
        PosEnd: Integer;
        SplitValue: Text;
    begin
        PosBgn := 1;
        ValueLength := STRLEN(EmaifieldValue);
        REPEAT
            IF STRPOS(EmaifieldValue, ';'0 THEN
                PosEnd := ValueLength
            ELSE
                PosEnd := (STRPOS(EmaifieldValue, ';'1);
            SplitValue := COPYSTR(EmaifieldValue, PosBgn, PosEnd);
            EmaifieldValue := DELSTR(EmaifieldValue, 1, PosEnd + 1);
            Receipt.Add(SplitValue);
        UNTIL EmaifieldValue = '';
    end;






Extension Unpublished/Uninstalled history required in BC Production environment

  There is a situation when someone can uninstall or unpublish any APP extension from the extension management in Production environment, th...