NetSuite Custom Solution: PPAP Quality Control Report
Dec 9, 2024

Introduction
In a previous engagement with a client, I was asked if it would be possible to develop a custom reporting solution called a PPAP Report directly in NetSuite. My first response, what is a PPAP Report?
Per my client, a PPAP is a Production Part Approval Process which is a manufacturing inspection process that ensures a supplier can meet the quality and manufacturing requirements of the parts supplied to the customer. It can be ISO Certified and consists of several pages that must conform to a specific layout and include all necessary data fields. For my client, this report are to include several separate and distinct pages: a PPAP Cover Sheet/Checklist, a Part Submission Warrant, a Control Plan, a Potential Failure Mode and Effects Analysis (PFMEA), a Process Flow Chart, a Material Test Results page, a Performance Test Results page, and a Dimensional Test Results page. Note, there are additional pages that are a part of a PPAP but these were the pages that my client required.
After viewing a couple examples of the required pages within the PPAP report, I responsded with challenge accepted!
A couple of sample pages from my client's PPAP report.



Requirements
Aside from being able to generate the PPAP report as a pdf file, inclusive of all the pages mentioned previously within NetSuite were several additional requirements that were requested by my client.
Here is a list of some of the additional requirements.
The creation and editing of the data for the PPAP report can only be conducted by a member of the quality control team.
The PPAP report must have a revision control method i.e. the ability to lock the PPAP version but also the ability to “check-out” the PPAP to increment the PPAP version.
Standard data records for the CPLAN and PFMEA must automatically be populated on the Work Order during the start of the PPAP creation process.
The standard data records for the CPLAN and PFMEA are specific to the operational steps as defined within the Work Order record.
The standard data records for the CPLAN and PFMEA can be modified specifically for the work order.
Custom data records for the CPLAN and PFMEA can be added.
Several Data fields in which some were mandatory and only editable by a member of the Quality Control team.
The Solution
The generation of the PPAP report in the format for each page per my client’s specification wasn’t the biggest hurdle but rather the additional requirements as set by my client.
The creation and editing of the data for the PPAP report can only be conducted by a member of the quality control team.
The PPAP report must have a revision control method i.e. the ability to lock the PPAP version but also the ability to “check-out” the PPAP to increment the PPAP version.
The solution for the above two requirements was achieved by using NetSuite’s user event script to generate buttons relative to a predefined PPAP creation process flow. The buttons would only be displayed based on the user that is interacting with the work order (WO) record.
Clicking on a “Create PPAP” button executes a script which created a “PPAP Version” custom record as well as all of the subrecords that relates to the PPAP. The “PPAP Version” record was assigned to the WO and used to manage the version history number, the status of the PPAP i.e. checked out vs checked in and on a performance perspective to hold the data that will allow the PPAP Report generation to be efficient; I was concerned with NS script governance and how long it would take NS to render the PDF file.
Here's a high level of my PPAP Button process flow.

To overcome the data record and security requirements several custom records (tables) within NS were created. The first were standard records for the CPLAN in which my client’s Director of Quality would predefine and managed based on the operating steps that exist within their NS advance manufacturing configuration steps. These records were copied via a script based on each operating step that were already defined in the work order. By copying the records from the Standard CPLAN table, it was then added to another CPLAN WO table which associated the records to the specific WO. By doing this, I was able to control the editing of these records to NS Roles that were applicable to their Quality department, allow them to customize any CPLAN records on the WO and add any additional custom CPLAN records that was required for the WO. The same logic was applied for the PFMEA records as well as for additional sheets within the PPAP.
The generation of the PPAP Report was done using NetSuite’s SuiteScript 2.0 render module. Within the render module is the xmlToPdf method which passes a correctly formatted xml string to the BFO pdf generation engine within NetSuite. The xml string consisted of css and html tags to ensure the format of each page within the PPAP was per my client’s specifications. In addition I used pdfset to separate the pages as each page has a specific orientation i.e. some sheets are portait while others are landscaped orientation pages. To overcome my concern on NS governance and the potential for a long pdf file rendering time, I included a “Process PPAP” data button which collected all of the data from the WO and corresponding sub-records (displayed as editable sublists) to parse it as a JSON data format and stored on the PPAP version history record. After this occurs or in technical terms, if the PPAP version history record’s “ppap data” field is populated then a “View PPAP” button is also displayed on the WO.
Lastly, a “Release PPAP” button is used to lock the PPAP version which hides the “Process PPAP” data button and displays a “Check Out PPAP” button which controls the versioning of the PPAP.
The end result is a much more efficient way for my client to generate a PPAP report which looks almost exactly as they were previously creating it outside of NS.
Click here to view a sample of a PPAP report that was rendered from NS.
Do you need a custom solution in NetSuite or need help deploying a standard NetSuite function?
Let’s Talk! Give me a call at 617-733-4120 or send me an email at info@techliere.com!