ERP integration
NetSuite
The Carton Pack Pro installer and the steps to set Carton Pack Pro up in your NetSuite account. Included with Pro, Business and Enterprise.
Prerequisites
- Access to a NetSuite Administrator account
- A Carton Pack Pro organization on Pro, Business or Enterprise, where you are an Owner or Administrator, with at least one active carton under Catalog → Cartons
- To fill the Pack cheapest rate and Pack cheapest service fields with an estimate by postal code: an API key, a Ship-from postal code and a Country set under Configuration → Integrations → ShipStation API in Carton Pack Pro
- To fill them with the rate to the Ship To address instead: also the ShipStation warehouse ID (7a) and the ShipStation API secret (8c). The fields keep the estimate when ShipStation API cannot rate the Ship To address. A sales order that Auto pack new orders fills also keeps the estimate. Pack and ship replaces it on that order’s fulfillment
- To buy shipping labels: a ShipStation API account
- To buy shipping labels: a ship method without NetSuite’s own UPS, FedEx or USPS integration, created under Lists → Accounting → Shipping Items → New
- To buy shipping labels: a Static Employee group holding every employee who buys labels, created under Lists → Relationships → Groups → New
Step 1: Enable features
Navigate to: Setup → Company → Enable Features
SuiteCloud subtab
- Check these three boxes: Client SuiteScript, Server SuiteScript, SuiteCloud Development Framework. The installer deploys Carton Pack Pro with SuiteCloud Development Framework
Transactions subtab
Decide first: skip steps 2 and 3 if you will not use Save and pick, Pick or shipping labels. The two features below change how every sales order in the account is fulfilled.
- Check Advanced Shipping
- Check Pick, Pack and Ship
Finish
- Click Save
Step 2: Add the installer
2a: Upload the installer
Navigate to: Documents → Files → File Cabinet
- Open SuiteScripts
- Click New Folder
- Folder Name:
- Click Save
- Open CartonPackPro
- Click Add File and choose cpp_sl_install.js
2b: Create the script record
Navigate to: Customization → Scripting → Scripts → New
- Script File:
cpp_sl_install.js - Click Create Script Record
Main settings
- Name:
- ID:
Finish
- Click Save and Deploy
2c: Deploy it
Main settings
- Title:
- ID:
- Status: Released
Audience subtab
- Internal Roles: Administrator
Finish
- Click Save
Step 3: Install Carton Pack Pro
Decide first: if your items already have length, width and height fields, clear Create Length, Width, Height and Dimension Unit item fields first. You’ll map your own fields in Step 5.
Navigate to: Customization → Scripting → Script Deployments → Carton Pack Pro installer → URL
Carton Pack Pro installer
- Read the Changes list, NetSuite’s dry run of the install
- Click the Install button. Installed shows its release when it finishes
Afterward: do each step the page lists under Afterward:.
Step 4: Mark the items to pack
Navigate to: Lists → Accounting → Items
Repeat the steps below for each item that should be packed.
Items list
- On the item’s row, click Edit
Primary Information
- To buy shipping labels, set UPC Code to the item’s barcode number, where it has one
Sales / Pricing subtab
- Set Item Weight and its unit
Purchasing / Inventory or Custom subtab, whichever shows the fields
- Check Pack eligible
- Set Length, Width, Height and Dimension Unit. If you cleared the dimension fields box in Step 3, set your own dimension fields
- Check Stackable when other items can go on top of this one
- If the item nests, stack two units, measure their height, and set Nest increment to that height minus the item’s Height, in its Dimension Unit
Finish
- Click Save
Step 5: Map your own dimension fields
Decide first: skip this unless you cleared the dimension fields box in Step 3.
Navigate to: Customization → Lists, Records, & Fields → Record Types
Record Types list
- On the Carton Pack Pro Mapping row, click List
- On the DEFAULT row, click Edit
Main settings
- Set Length source, Width source, Height source and Dimension unit source to the IDs of your own item fields
Unit sources: Fill Dimension unit source if you fill Length, Width and Height source. Fill Weight unit source if you fill Weight source. Otherwise lines with those values are not packed.
Finish
- Click Save
Step 6: Create the labels folder
Decide first: skip this if you will not buy shipping labels.
Navigate to: Documents → Files → File Cabinet
- Click New Folder
- Folder Name:
- Restrict by Group: the group of every employee who buys labels, since the label PDFs hold the ship-to name, address and phone
- Click Save
Step 7: Set the warehouse and Auto pack
7a: Get the ShipStation warehouse ID
Decide first: skip this if you will not buy shipping labels and want Pack cheapest rate to stay an estimate by postal code.
Replace YOUR_SHIPSTATION_API_KEY with your ShipStation API key and run this. Use the warehouse_id of the warehouse whose postal code matches Ship-from postal code under Configuration → Integrations → ShipStation API in Carton Pack Pro. Then labels and the plan’s rates are priced from the same place.
curl -s https://api.shipengine.com/v1/warehouses \ -H "API-Key: YOUR_SHIPSTATION_API_KEY"
If none has that postal code, create one: replace each value in capitals with the address and phone you ship from. The response includes its warehouse_id.
curl -s https://api.shipengine.com/v1/warehouses \
-H "API-Key: YOUR_SHIPSTATION_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Main warehouse", "origin_address": {
"name": "YOUR CONTACT", "company_name": "YOUR COMPANY", "phone": "YOUR PHONE",
"address_line1": "YOUR STREET", "city_locality": "YOUR CITY",
"state_province": "YOUR STATE", "postal_code": "YOUR ZIP", "country_code": "US"}}'7b: Set the preferences
Navigate to: Setup → Company → General Preferences
Custom Preferences subtab
- ShipStation warehouse ID: the
warehouse_idfrom 7a. Skip it if you skipped 7a - Auto pack new orders: Checked: packs each new order on save. Cleared: Pick this order button only
Finish
- Click Save
Step 8: Create the API secrets
8a: Create a Carton Pack Pro API key
Navigate to: Configuration → API keys, in Carton Pack Pro
New key
- Name:
- Scopes: check read and write
Finish
- Click Create key
- Copy the
cpp_live_…key it shows
8b: Create the Carton Pack Pro API secret
Navigate to: Setup → Company → Preferences → API Secrets → Create New
Details tab
- Name:
- ID:
- Password: the key you copied
- Confirm Password: the same
Restrictions tab
- Clear Allow For All Scripts
- Restrict to Scripts:
- Clear Allow For All Domains
- Restrict to Domains:
Finish
- Click Save
8c: Create the ShipStation API secret
Decide first: skip this if you will not buy shipping labels and want Pack cheapest rate to stay an estimate by postal code.
Navigate to: Setup → Company → Preferences → API Secrets → Create New
Details tab
- Name:
- ID:
- Password: a key from the same ShipStation API account as the API key under Configuration → Integrations → ShipStation API in Carton Pack Pro, so labels and the plan’s rates use the same carrier accounts
- Confirm Password: the same
Restrictions tab
- Clear Allow For All Scripts
- Restrict to Scripts:
- Clear Allow For All Domains
- Restrict to Domains:
Finish
- Click Save
Step 9: Set the role permissions
Navigate to: Setup → Users/Roles → Manage Roles
Repeat the steps below for each role that packs orders or buys labels. If you checked Auto pack new orders in 7b, also repeat them for each role that creates sales orders. Skip Administrator.
Manage Roles list
- On the role’s row, click Edit. A standard role shows Customize instead: click it, then set Name for the new role
Permissions tab → Transactions subtab
- Set these levels. Add a line for any permission the role lacks:
- Sales Order: Edit. A role with View can preview but not save
- Item Fulfillment: Create or higher, for Save and pick and Pick. Edit or Full for Pack and ship and Mark shipped
Permissions tab → Lists subtab
- Set these levels. Add a line for any permission the role lacks:
- Items: View
- Custom Record Entries: View, for the mapping record
- Documents and Files: Full, so Void labels can delete a voided label’s PDF. Only a role that buys labels needs it
Finish
- Click Save
Afterward: give each role you customized to its employees under Lists → Employees → Employees → Edit → Access tab → Roles subtab.
Update Carton Pack Pro
Navigate to: Customization → Scripting → Script Deployments → Carton Pack Pro installer → URL
Carton Pack Pro installer
- Read the Changes list, NetSuite’s dry run of the update
- Click the Update to button
Afterward: do each step the page lists under Afterward:.
Check your work
Use a ShipStation API sandbox key
Decide first: skip this if you will not buy shipping labels.
Navigate to: Setup → Company → Preferences → API Secrets
API Secrets list
- Click ShipStation API key
Details tab
- Password: a ShipStation API sandbox key, which starts with
TEST_. Its test labels are free - Confirm Password: the same
Finish
- Click Update
Use a sandbox warehouse
Decide first: skip this if you will not buy shipping labels.
Navigate to: Setup → Company → General Preferences
Custom Preferences subtab
- ShipStation warehouse ID: a
warehouse_idthe 7a command lists when you run it with the sandbox key
Finish
- Click Save
Pack and ship a test order
Decide first: if you skipped Advanced Shipping in Step 1, click Save plan at step 3 instead. The dialog closes and the sales order shows the Pack fields. Stop there. If you will not buy shipping labels, stop after step 3.
Test items: in a sandbox or demo account, import kitchen-items.csv, kitchen-items-lot.csv and kitchen-items-serial.csv under Setup → Import/Export → Import CSV Records. Set Import Type to Items and Record Type to Inventory Item, Lot Numbered Inventory Item or Serialized Inventory Item, one per file. On Field Mapping, add Tax Schedule and give it a default value. Add their stock with an inventory adjustment. In each lot item’s Inventory Detail, add two lots, such as LOT-DEMO-A and LOT-DEMO-B. In each serial item’s, add one serial per unit, such as BES500-DEMO-01 to BES500-DEMO-05.
Sales order
- Open a test sales order with Status Pending Fulfillment and a shipping address, in View mode. To buy shipping labels, use an order whose Ship Via is the ship method from Prerequisites
- Click Pick this order. The dialog lists the order’s lines under Items, with a preview beside them
- Click Save and pick. The Item Fulfillment opens with Status Picked and the Pack fields filled in
Lot and serial numbered items: Save and pick can’t pick them yet. Fulfill those orders in NetSuite with Status Picked, then click Pack and ship.
Item Fulfillment
- Click Pack and ship
Pack and ship dialog
- Click Print carton labels. The carton labels open as one PDF in a new tab, each carton’s label followed by its pack sheet. The pack sheet lists what goes in the carton, with its lot and serial numbers
- Under Scan to verify, scan carton 1’s label, or type the code under its barcode, such as
C21964-1, and press Enter. Carton 1 is highlighted - Scan each unit into the highlighted carton, or type its UPC Code or Name/Number and press Enter. One scan counts a whole nest: on a row reading 6 × 20 nested, each scan counts 20
- For a lot or serial numbered item, scan or type the lot or serial number next, as the pack sheet lists it. For a number with no barcode, click I see that it matches on its row
- For an item with no UPC Code, click + on its row
- Repeat steps 6 to 9 for each other carton, starting with its label
- Click a carton’s Box weight
- Type a new weight, then press Enter
- Click Buy labels · $…. Each carton shows a tracking number, masked in the sandbox, such as
1ZXXXXXXXXXXXXXXXX
Shipping labels dialog
- Click Print all labels. The labels open as one PDF in a new tab
- Click Mark shipped. The dialog header shows Shipped
- Click Close. The fulfillment shows Status Shipped, and Pack carton contents lists each carton’s items, lots and serials
Afterward: click Edit on the test fulfillment, then Actions → Delete. If you buy shipping labels, also: delete the PDFs whose names start with its number from the Carton Pack Pro labels folder. Then repeat the two sandbox sub-steps above with your production ShipStation API key and its warehouse ID.