Core Printing

System Setup / Plugin Customization / Plugin Configuration [SET062].

A built-in Crystal Report-based engine manages the current DATASCOPE WMS Core printing. This process allows custom Report (RPT) files to be created for the system's specific printing parts. These are then populated using a dataset and spooled to the printers configured within the different modules.

This allows for customization within the RPT files; however, customers are still hooked on using the Crystal Engine. Some of its limitations are speed and stability within the printing engine. Printing thousands of labels can be heavy on Crystal and slow in some cases.

To resolve the problem statement, the most simple and flexible solution is to introduce a DATASCOPE WMS Plugin for the core printing process in the system. This means that if configured, the system will call this new plugin, and it can then manage the printing whichever way it likes.

Release notes 24.1 (Ticket # 8326) - A new Printing Plugin has been developed.

If you don’t like reading, you can watch the video.

RELEASE NOTES

  • Release notes 23.4 (Ticket #8326) - Add new Core Printing plugin

Try it!

Plugin details

Type

Plugin Name

Interface

Location

Method Name

Module

Linked Action

Printing

Core Printing

ICorePrinting

DATASCOPE.SDK.PluginInterfaces

 

<various>

Core Printing

The DATASCOPE SDK.dll will provide you access to all the available Interfaces and Classes required to develop your plugin.

 The plugin's return type will be a string. The string will have three options: True, False, or Error. This will allow the plugin to tell the core system to print the report, not print the report or return an error message.

  • If the plugin returns a “True,” = the document has been printed, and the core system DOES NOT need to print anything.

  • If the plugin returns a “False” - the document has NOT been printed, and the core system MUST print the document.

  • If the plugin returns an “Error” - the message will be thrown in the core system and be displayed to the Operator.

 This logic will give the plugin an additional function that can handle some of the printing but not all of it. So, suppose the 3rd party developer only wants the plugin to handle Track ID Reprints. In that case, they can code it so that when called for any other print job, it simply returns a False, indicating that the core system should continue to print the document.

The new plugin will be created within the existing core print process in the Webservices and WebAPI printing processes.

The existing printing is contained in a single location within the Webservices and WebAPI print processes. This is the most logical point of entry for the Plugin to be placed for a minimally invasive implementation.

The existing plugin “template” should be used where it is only loaded if configured in the tables.

 The following parameters will be supplied to the plugin and defined in the interface:

  • pBaseProperties - This is standard on all plugins and business objects and provides the developers with some basic information like Company ID, Operator, GUID, etc., for use in the plugin as needed.

  • pSystemAction—This is the System Action linked to the print job being processed. It is a key field as it indicates the “type” of print that is happening. The developers can use this field to determine whether they are handling the print or not if the plugin is not printing everything.

  • pWarehouse—This is the Warehouse code linked to the print job. In the core system, this and System Action determine the Printer and/or report name.

  • pReportName—This may or may not get used, but it will contain the name of the core-configured Crystal Report template file that would be used by the core if it were to print.

  • pData—This is the RAW data that the system would have used to bind to the report being printed. The developer can use or not use this as he or she sees fit. There is no specific structure to this, and if the developer needs it, they can dump it out using the plugin first. This changes from system action to system action.

  • pNoPages - This is the number of pages the core system requested to print for the particular print job being processed.

  • pPrinterName—This is the name of the Printer to which the core system would have printed the print job. This will be a network printer installed on the WMS Server.

image-20240402-131131.png

To develop your own plugin:

For more information regarding building the plugin, refer to the high-level overview on how to build a basic plugin - Developing your own plugins

For more information, refer to What is needed to work with Plugins?

  • Open a Class Library Project within Visual Studio

  • Insert the DATASCOPE SDK

  • Insert the inheritance from the DATASCOPE SDK

  • Select the required Interface.

  • Write your code as per your own requirement.

  • Build it into a single .dll file and save it in the C:/ Program Files / DATASCOPE / DATASCOPE WMS WebAPI / Plugins folder on the server.

  • Test it in the module.

To configure this plugin:

  • From the Main Menu, browse to System Setup / Plugin Customization / Plugin Configuration

  • Select Core Printing Plugin from the Plugin Name drop-down.

  • Select ADD from the Action drop-down

  • Enter a Display Name (i.e. CorePrinting)

  • Add the compiled DLL file name, developed by a developer, in the Dll FileName field - for example CorePrinting.dll

  • Select Save to save the configuration.

  • This plugin will now be configured for either all modules with a Print buttons, or depending on the return string, only certain modules.

For more information on configuring a plugin, refer to Create a Custom Plugin and link it to a Module or System Setting (configuring plugins) or Developing your own plugins | Configuring the plugin in the software