Sunday, 2 February 2014

Print Management Report


Print Management Report

What is this?

Managing print settings of report with the help of print management framework. It can be number of copies, printing style, printer , design selection based on country, module ,customer specification.

When we need this?

Generally when we have Accountable documents which we will be sharing with customers r vendors our report should match reporting standard and sometime customer specific requirements may be design, copy styles.

Examples of Reports where print management is used.

·         Project Invoice
·         Purchase Order
·         Project Quotation and many more
The DP approaches for these reports are not same .. Some of the reports DP are developed with Normal DP approach and some with pre-processor.

Lets Do It

Create any DP based report either pre-processor or normal DP. I will take Purchase Requisition as example.Let us modify PurchReq to print Management report.
Purchase Requisition is not a form letter report. So update the class from report run print management specific controller



Lets save it here and proceed with populating required prerequisites i.e. 2 enum 4 classes.

Create a node in Doctype and NodeType base enums

Add new Node with report name to base enum PrintMgmtNodeType and PrintMgmtDocumentType.

Specify base table id and default report format in PrintMgmtDocType

Edit getQueryTableId() method and add following code


case PrintMgmtDocumentType:: PurchReq:
            tableId = tableNum(PurchReqTableVersion);
            break;

Edit getDefaultReportFormat and add following code


 case PrintMgmtDocumentType:: PurchReq:
            return ssrsReportStr(PurchReq, Report);

Never ever dare to keep break statement after this code.

Register the new report in document type of node derivative and construct the derivative in node.

Edit getDocumentTypes in PrintMgmtNode_Purch

docTypes.addEnd(PrintMgmtDocumentType:: PurchReq);

Edit construct in PrintMgmtNode

case PrintMgmtNodeType::PurchReq:
            return new PrintMgmtNode_Purch();

Never ever dare to keep break statement after this code.

Edit the PrintMgmtHierarchy derivative so that you get to default the design in printManagement

Edit getNodesImplementation in PrintMgmtHierarchy_Purch and add following code

supportedNodes.addEnd(PrintMgmtNodeType::PurchReq);

Edit getParentImplementation in PrintMgmtHierarchy_Purch and add following code

case PrintMgmtNodeType::PurchReq:
 // No record to reference, but there is another node in the hierarchy
result.parmReferencedTableBuffer(null);
result.parmNodeDefinition(PrintMgmtNode::construct(PrintMgmtNodeType::PurchReq));
break;

Move back to controller and add following methods

Override initPrintMgmtReportRun

And runPrintMgmt


Populate the report design to printMgmtReportFormat table

Register the design names which should be available in print management options
Through addax and AddOther

addAx(PrintMgmtDocumentType::PurchReq);
addOther(PrintMgmtDocumentType::PurchReq, ssrsReportStr(PurchReq, Report), ssrsReportStr(PurchReq, Report), countryRegionId);

That’s Itt!! Done with Print Management ..

How will you set the Print Management design?

·         Select a module the report is related to.
·         GoTo Setup -> Forms -> Form Setup



Click Print Management Button and in Print Management Setup form select the design you would like to go for in Purchase Requisition node.