This article is relevant if you are using NetSuite Advanced PDF templates and you want to avoid SuiteScript or workflows to access or reach data that is generally not available to native records.
Background
Since 2013, I have been writing about the NetSuite Advanced PDF framework for generating content. In 2015, our firm created a license-free tool for our clients that we call the Content Renderer Engine (CRE) designed to link together saved searches to reach otherwise difficult-to access information in NetSuite with the standard built-in tools.
In 2021, we rewrote the Content Renderer Engine, taking into account over 8 years of learning and client experience to more fully leverage the new SuiteQL capabilities, which include linking Saved Searches, Single Records and full SQL syntax to produce NetSuite data universes that could then be supplied to Advanced PDF technology, or more generally, to open-source-based Apache Freemarker template technologies (baked into NetSuite) to allow us to generate any type of string output.
The license-free tool continues to be used as a building block to solve more significant application concerns in our clients’ NetSuite-driven business ambitions. The Content Renderer Engine tools were designed to be a superior replacement to NetSuite’s native template approach. Until now, the tool effectively required leaving NetSuite native binding of Advanced PDF templates to instead couple to our more capable logic instead. What did this mean? In practice, the most common approach was to add an extra button on a NetSuite form to kick off the generation of the supercharged PDF and stop using NetSuite’s built-in template. Most everyone lived with this — but we now have a new approach!
NetSuite’s Prescribed Method to Add More Data
NetSuite offers a Help article called “Example of Using Custom Data Sources for Advanced Printing” to describe the technique to add more data to Advanced PDFs. The example in the Help document illustrates the technique to push a JSON object and an XML file together from a saved search to create a packing slip for a customer.
While possible, the challenge with the approach is that it is slow to craft the needed data and technically demanding because of the need to use SuiteScript and handy work to get this wired up. Further, it does not solve the native Advanced PDF data limitation concern described above.
Another approach offered in a StackOverflow article tries to answer the question: “NetSuite: How can I add a record to a Advanced PDF/HMTL Template?” but to use a native print button. This article is much closer to our goal.
The article’s presented innovation in thinking was to retrieve more data in NetSuite’s beforeLoad event and hook the results into the form object. Again, this solution requires a script, but we are now getting closer to our idealized use case.
Breakthrough: Use the Content Renderer Engine in Native NetSuite Advanced PDF
As I studied the suggested technical approach, I challenged a few members of our Senior Technical Analyst team to consider how we could bridge our tools using a hybrid of this technique.
I am delighted to say that they delivered! Here is what can now be easily produced with no SuiteScript:
- Define your Data Universe: use the CRE tool to very comfortably craft linked saved searches and SuiteQL (SQL) data together. Go as deep or broad as you need to access that hard-to-reach data.
- Confirm Data Reach: Use the CRE testing tools to confirm you can get to all the data. Because it offers superior syntax expression, the NetSuite Administrator becomes much more productive.
- Bind to NetSuite’s Native Record: we supply a simple ready-to-go SuiteScript that just needs to be deployed to the NetSuite business record in question. You then point to the CRE Profile containing the extra data universe definition so it can all automatically come together.
- Add Simple Advanced PDF Syntax: finally, edit your native NetSuite Advanced PDF template. Include a couple of extra FreeMarker syntax lines to access the data universe logically organized by the way it was named in the CRE definition.
Click the images down below in the step-by-step to get a better understanding.
Example Use Case: Bill Payment Settlement Transaction
As many know, since 2012, our firm has been the hands-down leader in crypto transactions and the integration to NetSuite. For the last 10 years, for a number of our staff, we denominate our obligations in US Dollars but settle our payments in Bitcoin. See the pattern in my 2108 article, How To Cross NetSuite Foreign Currency Boundaries with the Account Clearing Model.
Click the images above to see the payment settlement pattern.
The goal now is to have the Bitcoin settlement information addressed on the Native Advanced PDF. We have solved it. Click on the attached images in the following order to see how this is done:
Solve your NetSuite Related Advanced PDF Challenges
This article is an illustration of our commitment to extracting more value from the NetSuite business system investment. Through the use of expert technical skills and a focus on generating client value, the ability to bring our clients these tools without license charges illustrates our commitment to our clients’ success.
If you found this article relevant, feel free to sign up for notifications to new articles as I post them. If you are a NetSuite Administrator and you would like to be more productive with our tools and thus would value being in a relationship with a high-performance NetSuite Systems Integrator, let’s have a conversation.