1 line
7.6 KiB
Plaintext
1 line
7.6 KiB
Plaintext
{"Name":"Example PO Items Received vs Ordered","Active":true,"Notes":"Includes Prepare that determines the difference between Ordered and Received for display, and #if_eq Helper used to display red if difference between QuantityReceived and QuantityOrdered","Roles":33130,"AType":26,"IncludeWoItemDescendants":false,"Template":"<html>\n<body>\n\t<div >\t \n\t\t<table > \n \t\t<thead>\n <tr class=\"heading\">\n <td colspan=\"24\">Purchase Order Items Received compared to Ordered</td>\n </tr>\n <tr>\n <td colspan=\"24\"> </td>\n </tr>\n <tr>\n <td colspan=\"3\" class=\"bodyhead leftlean\">PO Status</td>\n <td colspan=\"3\" class=\"bodyhead leftlean\">PO#</td>\n\t\t\t <td colspan=\"3\" class=\"bodyhead leftlean\">Vendor</td>\n <td colspan=\"2\" class=\"bodyhead centerlean\">PO Ordered Date</td>\n <td colspan=\"2\" class=\"bodyhead centerlean\">Item Received Date</td>\n <td colspan=\"6\" class=\"bodyhead centerlean\">Part</td>\n <td colspan=\"2\" class=\"bodyhead centerlean\">Qty Ordered</td>\n <td colspan=\"2\" class=\"bodyhead centerlean\">Qty Received</td> \n\t\t\t <td colspan=\"1\" class=\"bodyhead centerlean\">Diff +/- </td> \n </tr>\n <tr>\n <td colspan=\"24\"> </td>\n </tr>\n \t\t</thead>\n \n <tbody> \n {{#each ayReportData}}\n {{#each Items}}<!-- the #each for the Sample Data MUST encompass the section where its gonna show - in this case the tbody, so needs to be placed within -->\n <!-- note that the #each Items as is looping through the Items of each PO, not the PO header\n <!-- to get alternating coloured rows when one PO per line, need CSS statements PLUS this # each MUST be placed BEFORE the tr /tr -->\n\t\t\t\t<tr>\n\t\t\t\t <td colspan=\"3\" class=\"leftlean\">{{../StatusViz}}</td>\n <td colspan=\"3\" class=\"leftlean\">{{../Serial}}</td> <!-- note the ../ in front of the variable name when calling a variable from 'above' the Items array of the object -->\n\t\t\t <td colspan=\"3\" class=\"leftlean\">{{../VendorViz}}</td> <!-- note the ../ in front of the variable name when calling a variable from 'above' the Items array of the object -->\n <td colspan=\"2\" class=\"centerlean\">{{ayDate ../OrderedDate}}</td> <!-- note the ../ in front of the variable name when calling a variable from 'above' the Items array of the object -->\n <td colspan=\"2\" class=\"centerlean\">{{ayDate ReceivedDate}}</td>\n <td colspan=\"6\" class=\"centerlean\">{{PartViz}} {{PartNameViz}}</td>\n <td colspan=\"2\" class=\"centerlean\">{{QuantityOrdered}}</td>\n <td colspan=\"2\" class=\"centerlean\">{{QuantityReceived}}</td> \n {{#if_eq QuantityOrdered QuantityReceived }} <td colspan=\"1\" class=\"centerlean fontgreen\">{{ThisItemQtyDiff}}</td> {{else}}<td colspan=\"1\" class=\"centerlean fontred\">{{ThisItemQtyDiff}}</td>{{/if_eq}}\n\t\t\t <!-- {{#if_eq ThisItemQtyDiff \"0\" }} <td colspan=\"1\" class=\"centerlean fontgreen\">{{ThisItemQtyDiff}}</td> {{else}}<td colspan=\"1\" class=\"centerlean fontred\">{{ThisItemQtyDiff}}</td>{{/if_eq}} -->\n\t\t\t\t</tr>\n\n \t {{/each}} \n {{/each}} \n </tbody>\n\n </table>\n\n \n\t</div>\n</body>\n</html>","Style":".singlePage\n{\npage-break-after: always;\n}\n\ntable { \n font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif;\n border-collapse: collapse;\n white-space: pre-wrap;\n width: 100%;\n table-layout: fixed;\n }\n\nthead {\n display: table-header-group; /* so as to print the table-header on all subsequent pages */\n}\n\n.heading {\n border-style: solid;\n border-width: 1pt;\n border-color: #e8e5e5; \n margin: 10pt;\n background-color: #e8e5e5;\n padding: 5pt; \n font-size: 14pt; \n text-align: center;\n} \n\n.bodyhead {\n border-style: solid;\n border-width: 1pt;\n border-color: #e8e5e5; \n margin: 10pt;\n background-color: #e8e5e5;\n font-size: 12pt; \n}\n\n\n.rightlean {\n text-align: right;\n}\n.leftlean {\n text-align: left;\n}\n.centerlean {\n text-align: center;\n}\ntbody tr:nth-child(even) {\n font-size: 9pt;\n background-color: lightgray; /* MUST checkmark Print background in PDF Options for this to show */\n height: 50px;\n overflow-wrap: break-word;\n} \ntbody tr:nth-child(odd) {\n font-size: 9pt;\n background-color: lightgoldenrodyellow; /* MUST checkmark Print background in PDF Options for this to show */\n height: 50px;\n overflow-wrap: break-word;\n} \n\n\ntfoot {\n /* display: table-footer-group; uncomment to print the table-footer on all pages, not just last page - */\n page-break-inside: avoid;\n /* position: fixed; uncommenting position: will force footer to bottom BUT then leftlean and rightlean don't work AND tbody overwrites */\n \n bottom: 0;\n width: 100%;\n border-top: 1px solid black; \n}\n\n\n.fontgreen {\n color: green;\n}\n.fontblue {\n color: blue;\n}\n.fontred {\n color:red;\n}\n","JsPrerender":"async function ayPrepareData(reportData){ \n //this function (if present) is called with the report data \n //before the report is rendered\n //modify data as required here and return it to change the data before the report renders\n //see the help documentation for details\n\n\n \n //Iterate through all the records in the reportData adding the dollar amount of each item to the AllPONet variable\n for (EachPO of reportData.ayReportData) \n {\n \n for (Item of EachPO.Items) //Iterate through all the poitems of THIS po \n\t\n {\n let ThisItemQtyDiff = 0; //Declare a temporary variable to hold the difference for this item\n \n if (Item.QuantityOrdered != null) //make sure QuantityOrdered has a value before attempting to use it\n {\n \n ThisItemQtyDiff = Item.QuantityOrdered - Item.QuantityReceived;\n }\n Item.ThisItemQtyDiff=ThisItemQtyDiff;\n }\n }\n\n\n\n\n\n return reportData;\n}","JsHelpers":"//Register custom Handlebars helpers here to use in your report script\n//https://handlebarsjs.com/guide/#custom-helpers\nHandlebars.registerHelper('loud', function (aString) {\n return aString.toUpperCase()\n})\n\n//custom helper so can do a direct comparison - i.e. if value equals xxxx, then show, else show yyyyy\n//note that this HAS to be added here in Helpers, is NOT built in\nHandlebars.registerHelper('if_eq', function(a, b, opts) {\n if(a == b) // Or === depending on your needs\n return opts.fn(this);\n else\n return opts.inverse(this);\n});","RenderType":0,"HeaderTemplate":"<span style=\"font-size:6pt;width: 94%; text-align:left; \"> (set in report template's PDF Options) Printed date: <span class=\"date\"></span></span>","FooterTemplate":"<span style=\"font-size:6pt;width: 96%; text-align: right; \"> (set in report template's PDF Options showing x of ALL pages printed) Page <span class=\"pageNumber\"></span> of <span class=\"totalPages\">","DisplayHeaderFooter":true,"PaperFormat":10,"Landscape":true,"MarginOptionsBottom":"10mm","MarginOptionsLeft":"10mm","MarginOptionsRight":"10mm","MarginOptionsTop":"10mm","PageRanges":null,"PreferCSSPageSize":false,"PrintBackground":true,"Scale":1.00000} |