Lasernet FO Connector Release Version 6.15.0
Release date: 6th August 2021
This document describes the enhancements in Lasernet FO Connector 6.15.0
Lasernet version 6.15.0 contains all the models including the model for the integration with D365CE and the models for Lasernet print buttons.
The newly introduced package LACMSHotfixes contains hotfixes for the standard Dynamics 365 Finance and Operations.
It is possible to install/deploy this package separately and the package will get updated once new hotfixes are introduced for the standard Dynamics 365 Finance and Operations.
Both the package and the release notes for LACMSHotfixes are accessible as separate downloads.
Component | Package |
---|---|
Lasernet | Core and main engine for Lasernet FO Connector |
Lasernet81Spec | Additional requirements in relation to 8.1 and newer versions of standard Dynamics 365 Finance and Operations |
PRNButtons | Lasernet print buttons |
PRNButtonsLACAdaptor | Adaptor between the Lasernet print buttons and Lasernet |
LACMSHotfixes | Hotfixes for standard Dynamics 365 Finance and Operations |
LACCE | Provide the integration to CE from Lasernet FO Connector |
Lasernet Test Suite | Test and Performance Suite |
New model LasernetPU35Spec
The new model LasernetPU35Spec is added for supporting the Wave labels in standard Dynamics 365 Finance and Operations.
The model LasernetPU35Spec is only added to the PU34+ package and it’s possible to download and install a separate package containing this model.
LAC365FO version 6.15.0 is only supported from Lasernet version 9 and a setup for Lasernet version 9 is required for any new installation and when upgrading from Lasernet 8.
The version number should contain version 6.15.0 such as the following after either installing or deploying the AOT package:
Lasernet > Setup > Parameters
Add the AOT-package
- Either through LCS - Apply a deployable package to an environment
- Or by installing a deployable package – Requires RDP access to environment
Major enhancements
Lasernet 10
LAC365FO version 6.15 does not contain any major adjustments and focus is still on stability and compatibility and a new Default Configuration for Lasernet 10 is released at the same time as LAC365FO version 6.15.
The new Default Configuration also works with the previous versions of LAC365FO version 6.x and LAC365FO version 6.15 isn’t required for supporting Lasernet 10 as all adjustments are managed within the Lasernet configuration.
The new Default Configuration support loading of the following information from Lasernet 10:
(same information as was supported with Lasernet 9)
Lookup of connections in LAC365FO
Get printers into LAC365FO version 6.x
Get printer profiles into LAC365FO version 6.x
Get ‘Customers ports’ into LAC365FO version 6.x
Get overlays into LAC365FO version 6.x
Preview of overlays in LAC365FO version 6.x
It’s currently not possible to get the printer profiles created through the new Lasernet Print Service which was introduced with Lasernet 10. But still possible to get Printer profiles created 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.
The required adjustments to the Lasernet configuration to support Lasernet 10 are described at the end of this document (before the list of the Bug fixes and enhancements)
Bug fixes and enhancements
227499@LAC365FO – Print Button on Lasernet Preview Screen does not result in printing
Printing through Lasernet within the preview didn’t work as expected.
This is fixed in LAC365FO version 6.15.0 in which Print through the preview is now working as expected.
223936@LAC365FO – Range is being applied to nextLink URL, which already contains range.
The following error was thrown when running an OData report which contains a range added within the Query Wizard.
This is fixed in LAC365FO version 6.15.0.
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'.
227317@LAC365FO – Table LACReportReplacementMapping is in Table group Miscellaneous
It was not possible in previous versions of LAC365FO to use the following tables in the cross-company data sharing in standard D365FO. The tables had Miscellaneous as a table group which caused the issue in relation to the 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 the 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. '
The table group for the listed tabled are changed from Miscellaneous into Group in LAC365FO version 6.15.0.
228645@LAC365FO – Data missing in XML
Re-using 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 as standard D365FO (kernel) tries to optimize the Query and would skip 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 is fixed in LAC365FO version 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 work on query reports
In previous versions of LAC365FO, it was not possible to use Form as an entry within the condition (expression).
LAC365FO version 6.15 does support the use of Form as an entry for the expression.
Expression:Forms.CustInvoiceJournal.CustInvoiceJour.RefNum:NAME<>Salesorder
224895@LAC365FO – Check loading of printer-profiles
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 and everything did work 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).
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
Multi-selection of records could cause an issue with the formatting of the output. (like which numbers are shown / rounding).
This is fixed in LAC365FO version 6.15.0.
The following image gives an example for which the same value should get displayed for both records but wasn’t properly shown for the second record.
This is fixed in LAC365FO version 6.15.
Both sales-order (records) should have the same output/value but the second sales order (record) didn’t provide the proper value for the field.
Value from SalesTable_amountInvoiced: 36.39
First order (record) properly displayed with 2 decimals and the value 36.39:
Second order (record) wasn’t properly shown as the value 36.40 was shown instead of 36.39:
Adjustments of Lasernet configuration to support Lasernet 10
GetMetadataInformationLN10 (passthrough module in LN10)
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 LAC365FO/D365FO:
GetMetadataInformationLN10 is replacing the existing GetMetadataInformation within the XML Transformer / Dynamics365 Transformer .
Scripts to supporting 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); }
Bug fixes and enhancements – LAC365FO version 6.15.0
Case no. | Description | Ticket no. |
---|---|---|
227499@LAC365FO | Print Button on Lasernet Preview Screen does not result in printing. | #20904 |
223936@LAC365FO | Range is being applied to the nextLink URL, which already contains range. |
|
224895@LAC365FO | Printer profiles is added to all printers when Updating printer profiles from the 'Printer profiles' . |
|
224896@LAC365FO | A new approach is introduced for loading printer, printer profiles, overlays and connections in Lasernet 10 . |
|
227317@LAC365FO | Table LACReportReplacementMapping is in Table group Miscellaneous. | #20894 |
228645@LAC365FO | Data missing in XML. | #20944 |
228681@LAC365FO | Form link condition does not work on replacement reports, but works on query reports. | #20818 |
229365@LAC365FO | Feature Request: Translation of Lasernet Print Destinations . | #21067 |
230415@LAC365FO | Lasernet Query is rounding values in XML when selecting more than one document to print. |
|
Add a comment
Please log in or register to submit a comment.