Export Exchange Rates through Job in AX

 static void ExchangeRateJob(Args _args)

{
   SysExcelApplication  xlsApplication;
   SysExcelWorkBooks    xlsWorkBookCollection;
   SysExcelWorkBook     xlsWorkBook;
   SysExcelWorkSheets   xlsWorkSheetCollection;
   SysExcelWorkSheet    xlsWorkSheet;
   SysExcelRange        xlsRange;
   CustTable            custTable;
   int                  row = 1;
   str                  fileName;
    ExchangeRate             exchangeRate;

   ExchangeRateCurrencyPair exchangeRateCurrencyPair;

   date dateFrom, dateTo;
   ;
    dateFrom = mkDate(01,01,2018); // Supply the date range

   dateTo   = mkDate(31, 01, 2018);
   //Filename
   fileName = "D:\\ExchageRatesJan.xlsx";
   //Initialize Excel instance
   xlsApplication           = SysExcelApplication::construct();
   //Open Excel document
   //xlsApplication.visible(true);
   //Create Excel WorkBook and WorkSheet
   xlsWorkBookCollection    = xlsApplication.workbooks();
   xlsWorkBook              = xlsWorkBookCollection.add();
   xlsWorkSheetCollection   = xlsWorkBook.worksheets();
   xlsWorkSheet             = xlsWorkSheetCollection.itemFromNum(1);
   //Excel columns captions
   xlsWorkSheet.cells().item(row,1).value("From Currency");
   xlsWorkSheet.cells().item(row,2).value("To currency");
    xlsWorkSheet.cells().item(row,3).value("Exchange Rate");
    xlsWorkSheet.cells().item(row,4).value("Valid From");
    xlsWorkSheet.cells().item(row,5).value("Valid To");
    xlsWorkSheet.cells().item(row,6).value("Quotation Unit");
   row++;
   //Fill Excel with CustTable AccountNum and Name fields (only 20 records)
    While select

       validTimeState(dateFrom, dateTo)

       * from exchangeRate

       join exchangeRateCurrencyPair

        order by exchangeRateCurrencyPair.FromCurrencyCode

       where exchangeRateCurrencyPair.RecId == exchangeRate.ExchangeRateCurrencyPair

    {
       xlsWorkSheet.cells().item(row,1).value(exchangeRateCurrencyPair.FromCurrencyCode);
       xlsWorkSheet.cells().item(row,2).value(exchangeRateCurrencyPair.ToCurrencyCode);
       xlsWorkSheet.cells().item(row,3).value(exchangeRate.ExchangeRate/100);
       xlsWorkSheet.cells().item(row,4).value(exchangeRate.ValidFrom);
        xlsWorkSheet.cells().item(row,5).value(exchangeRate.ValidTo);
       xlsWorkSheet.cells().item(row,6).value(exchangeRateCurrencyPair.ExchangeRateDisplayFactor);
             row++;
   }

   //Check whether the document already exists
   if(WinApi::fileExists(fileName))
      WinApi::deleteFile(fileName);
   //Save Excel document
   xlsWorkbook.saveAs(fileName);
   //Open Excel document
   xlsApplication.visible(true);
   //Close Excel
   //xlsApplication.quit();
   //xlsApplication.finalize();
}

Comments