- Print
- PDF
Lasernet FO Connector 6.15 New Features and Fixes
Lasernet Connector for Dynamics 365 Finance and Operations
Release version: 6.15
Release date: 6th August 2021
Introduction
This page describes the new features, fixes, and enhancements in Lasernet FO Connector 6.15.
Click to view the Lasernet FO Connector 6.15 Release Notes.
New Features, Fixes, and Enhancements - Lasernet FO Connector 6.15
Lasernet FO Connector 6.15 does not contain any major adjustments, and the focus is still on stability and compatibility.
A new Default Configuration for Lasernet 10 has been released along with Lasernet FO Connector 6.15.
The new Default Configuration also works with the previous versions of Lasernet FO Connector series 6.x. Version 6.15 is not required to support Lasernet 10 as all adjustments are managed within the Lasernet configuration.
The new Default Configuration supports loading the following information from Lasernet 10:
Lookup of connections in Lasernet FO Connector
Get printers into Lasernet FO Connector 6.x
Get printer profiles into Lasernet FO Connector 6.x
Get Customers ports into Lasernet FO Connector 6.x
Get Overlays into Lasernet FO Connector 6.x
Preview of overlays in Lasernet FO Connector 6.x
It is currently not possible to create Printer profiles through the new Lasernet Print Service, which was introduced with Lasernet 10. However, it is still possible to create Printer profiles for the module Printer Output (OnPrem) in Lasernet 10, similar to Lasernet 9.
It is possible to load the Printer profiles created for the module Printer Output.
Adjustments of Lasernet configuration to support Lasernet 10
The module GetMetadataInformation is replaced by the module GetMetadataInformationLN10.
The module GetMetadataInformationLN10 uses the following scripts (and criteria) to load information from Lasernet 10 into Lasernet FO Connector/Dynamics 365 FO:
GetMetadataInformationLN10 is replacing the existing GetMetadataInformation within the XML Transformer/Dynamics365 Transformer.
Scripts to support Lasernet 10
LN10GetOverlayList:
// (Lasernet 10) Gets overlay list for Dynamics 365 FO
function LN10GetOverlayList()
{
var overlays = configuration.getOverlays();
var result = '<LaserNet>';
//'<OverlayListResponse>';
for (idx = 0, count = overlays.length; idx < count; idx++)
{
result = result + '<ln:string>'+overlays[idx] +'</ln:string>';
}
result = result + //'</OverlayListResponse>'+
'</LaserNet>';
job.setJobData(result);
}
LN10GetOverlay:
// (Lasernet 10) Gets overlay thumbnail for Dynamics 365 FO
function LN10GetOverlay(overlayFileName, overlayWidth, overlayHeight)
{
var result = '<LaserNet>';
result = result + '<ln:OverlayGetResult>'+Base64.encode(configuration.getOverlayThumbnail(overlayFileName, overlayWidth, overlayHeight)) + '</ln:OverlayGetResult>';
result = result + '</LaserNet>';
job.setJobData(result);
}
LN10GetModuleList:
// (Lasernet 10) Gets module list for Dynamics 365 FO
function LN10GetModuleList()
{
var result = '<LaserNet>';
var modules = configuration.getModules();
for (idx = 0, count = modules.length; idx < count; idx++)
{
result = result + '<ln:Module>';
result = result + '<ln:Name>'+modules[idx].name+'</ln:Name>';
if (modules[idx].type == 'Printer Service') // This is for printer services
{
result = result + '<ln:Type>'+'Printer Output'+'</ln:Type>';
}
else
{
result = result + '<ln:Type>'+modules[idx].type+'</ln:Type>';
}
result = result + '<ln:Description>'+modules[idx].description+'</ln:Description>';
result = result + '<ln:Inactive>'+!modules[idx].active+'</ln:Inactive>';
if (modules[idx].printer)
{
result = result + '<ln:Printer>'+modules[idx].printer+'</ln:Printer>';
}
if (modules[idx].printserver)
{
result = result + '<ln:PrintServer>'+modules[idx].printserver+'</ln:PrintServer>';
}
result = result + '</ln:Module>';
}
result = result + '</LaserNet>';
job.setJobData(result);
}
LN10GetComputerList:
// (Lasernet 10) Gets computer list for Dynamics 365 FO
function LN10GetComputerList()
{
var result = '<LaserNet>';
var servers = configuration.getServers();
for (idx = 0, count = servers.length; idx < count; idx++)
{
Logger.logEvent(Debug, 'Server=' + servers[idx].name + ' (Hostname=' + servers[idx].hostname + ', Port='+ servers[idx].port +')');
result = result + '<ln:Server>';
result = result + '<ln:Name>' + servers[idx].name + '</ln:Name>';
result = result + '<ln:HostName>' + servers[idx].hostname + '</ln:HostName>';
result = result + '<ln:Port>' + servers[idx].port + '</ln:Port>';
result = result + '</ln:Server>';
}
result = result + '</LaserNet>';
job.setJobData(result);
}
LN10GetConnectionList:
// (Lasernet 10) Gets connection list for Dynamics 365 FO
function LN10GetConnectionList()
{
var result = '<LaserNet>';
var connections = configuration.getConnections();
for (idx = 0, count = connections.length; idx < count; idx++)
{
result = result + '<ln:ConnectionInfo>';
result = result + '<ln:Name>' + connections[idx].name + '</ln:Name>';
result = result + '<ln:Description>' + connections[idx].description + '</ln:Description>';
result = result + '<ln:GUID>' + connections[idx].guid + '</ln:GUID>';
result = result + '<ln:Type>' + connections[idx].type + '</ln:Type>';
result = result +'</ln:ConnectionInfo>';
}
result = result + '</LaserNet>';
job.setJobData(result);
}
LN10GetPrinterProfileList:
// (Lasernet 10) Gets printer profile list for Dynamics 365 FO
function LN10GetPrinterProfileList()
{
var result = '<LaserNet>';
var printerprofiles = configuration.getPrinterProfiles();
for (idx = 0, count = printerprofiles.length; idx < count; idx++)
{
result = result + '<ln:Printer>';
result = result + '<ln:Name>' + printerprofiles[idx].name + '</ln:Name>';
result = result + '<ln:PrinterName>' + printerprofiles[idx].printername + '</ln:PrinterName>';
for (idy = 0, county = printerprofiles[idx].profiles.length; idy < county; idy++)
{
result = result + '<ln:Profile>';
result = result + '<ln:Name>' + printerprofiles[idx].profiles[idy].name + '</ln:Name>';
result = result + '</ln:Profile>';
// Logger.logEvent(Debug, 'PrinterProfile=' + printerprofiles[idx].profiles[idy].name);
}
result = result + '</ln:Printer>';
}
result = result + '</LaserNet>';
job.setJobData(result);
}
227499@LAC365FO – Print Button on Lasernet Preview Screen does not result in printing
In previous versions, printing through Lasernet within the preview did not work as expected.
This has been fixed.
223936@LAC365FO – Range is being applied to nextLink URL, which already contains range
The following error occurred when running an OData report, which contains a range added within the Query wizard:
Error
Bad Request quotes(edd71bf8-3d17-ea11-a811-000d3a65412a)/quote_details) }}?$filter=producttypecode%20eq%201?$filter=producttypecode eq 1 Error code: 0x0 Message: Syntax error at position 21 in 'producttypecode eq 1?$filter=producttypecode eq 1'.
This has been fixed.
227317@LAC365FO – Table LACReportReplacementMapping is in Table group Miscellaneous
In previous versions, it was not possible to use the following tables in Cross-company data sharing in standard Dynamics 365 FO. The tables were grouped under Miscellaneous as a table group, which caused the issue in relation to Cross-company data sharing:
LACReportReplacementMapping
LACCultureInfo
LACExpressionFunction
LACMenuTable
LACReportGroupReport
LACWHSLicensePlateLabelRef
LACWHSLicensePlateLabelSetup
The following warning was displayed when trying to use one of the tables for Cross-company data sharing:
Warning
Table LACReportReplacementMapping is a Miscellaneous table as specified by the table group and may not be shared unless its Data Sharing Type is Duplicate.
In Lasernet FO Connector 6.15, the table group for the listed tables has been changed from Miscellaneous into Group.
228645@LAC365FO – Data missing in XML
In previous versions, reusing the same table multiple times within a Query would cause an empty output when disabling the first use of the table. The issue is caused by standard Dynamics 365 FO (kernel), which tries to optimize the Query and skips all instances of a table once it has been disabled.
A workaround was removing the disabled data sources. This would avoid the kernel optimizing the Query and avoid executing the disabled data sources.
This issue has been fixed in Lasernet FO Connector 6.15 by not applying the disabled data sources (tables) when building the Query at runtime.
The following would cause missing records from the data sources PurchAgreementHeader_Enable, AgreementHeader_Enabled, and VendTable_Enabled:
228681@LAC365FO – Form link condition does not work on replacement reports, but works on Query reports
In previous versions, it was not possible to use Form as an entry within the condition (Expression).
This has been fixed.
Expression:Forms.CustInvoiceJournal.CustInvoiceJour.RefNum:NAME<>Salesorder
24895@LAC365FO – Check loading of printer-profiles
In previous versions, loading Printer profiles from Lasernet would add the same Printer profiles to all the printers and not only the printers in Lasernet containing the profiles.
This was only an issue when loading from the Form Printer profiles, while everything worked as expected when loading from the Forms Lasernet server or Lasernet printers.
229365@LAC365FO – Feature Request: Translation of Lasernet Print Destinations
The Lasernet destinations were not properly translated for some of the languages within the printer-dialog, such as Spanish (es).
The translation is added for the following languages within the Printer dialog:
Es
Nl
de-CH
fr-CH
fr
de
Client Language es within the Printer dialog:
230415@LAC365FO – Lasernet Query is rounding values in XML when selecting more than one documents to print
In previous versions, multi-selection of records could cause an issue with the formatting of the output, such as numbers shown/rounding.
This has been fixed.
The following image gives an example in which the same value should be displayed for both records but was not properly displayed for the second record:
Both sales order records should have the same output/value, but the second sales order record did not contain the proper value for the field.
Value from SalesTable_amountInvoiced: 36.39
First order record properly displays with two decimals and the value 36.39:
Second order record does not properly display the value, as 36.40 was shown instead of 36.39: