SuiteCommerce
NetSuite 2017.1
2017-02-22

SuiteCommerce Advanced Elbrus: PDP Architecture Overhaul, Custom Fields API, and Composite Views

The Elbrus release of SuiteCommerce Advanced restructures the Product Details Page into new modules (Product, Item, ProductDetails, ProductLine), makes all Backbone.Views composite by default, exposes custom fields through the Commerce API, and adds Store Pickup, Quick Order, Quantity Pricing, and SuitePromotions features.

Affects:SuiteCommerce AdvancedCommerce APIItems APISearch APISuiteScript 1.0Backbone.ViewBackbone.CompositeViewItemsKeyMapping moduledistro.jsonSuiteCommerce Configuration record

What changed

The Elbrus release of SuiteCommerce Advanced (Bundle ID 165410) requires a NetSuite 2017.1 account. This is a major architectural release that restructures core front-end modules and introduces several new commerce features.

PDP Architecture Overhaul

The Product Details Page has been refactored into a form-based architecture. Several modules were removed and replaced:

  • ItemDetails → replaced by new modules: Product, Item, ProductDetails, ProductLine
  • ItemOptionsHelper → replaced by Product
  • ItemsKeyMapping → logic moved to Item module as Item.KeyMapping.js
  • ItemViews → replaced by Transaction.Line.Views

Item option templates are now split: one template for the PDP and a separate one for search result (Facets) views. The PDP now behaves as a form with automatic validation logic consistent with other SCA forms.

All Backbone.Views Are Now Composite Views

Every Backbone.View is now a Backbone.CompositeView by default. Views no longer need to declare themselves as composite using require(). A CompositeView.add() no-op method is included for backward compatibility with pre-Elbrus custom code. Any module that previously extended Backbone.View and manually opted into composite behavior should be reviewed—the require() call is now unnecessary.

Custom Field Support via Commerce API

Custom fields are now accessible through the Commerce API, Items API, and SuiteScript. Supported record types:

  • Custom Item Fields – renders on PDP, Checkout, My Account
  • Custom Transaction Body Fields – renders on Checkout, My Account (includes field metadata such as label)
  • Custom Transaction Column Fields – renders on PDP, Cart, Checkout, My Account
  • Custom Transaction Item Options – renders on PDP, Cart, Checkout, My Account

Setup requires NetSuite field configuration, SuiteCommerce Configuration record updates, and Handlebars template customization.

New Commerce Features

  • Store Pickup – New fulfillment option. Enable via checkoutApp.isPickupInStoreEnabled and set the custom form ID with checkoutApp.pickupInStoreSalesOrderCustomFormId in the SuiteCommerce Configuration record. Requires configuring retail locations, inventory eligibility, pickup hours, and stock buffer.
  • Quantity Pricing – Uses the Search API to return item quantity pricing in JSON. Enabled via the Elbrus bundle but requires NetSuite configuration. Can be disabled via distro.json. Not available with SiteBuilder Extensions.
  • Quick Order – Lets shoppers add items by SKU or part number. Enabled by default. Requires Search Fields setup in NetSuite. Can be disabled via distro.json. Not available with SiteBuilder Extensions.
  • SuitePromotions – Multiple promo codes per order. Configured via promocodes.allowMultiples. Supports item, order, and shipping promotions with stackability rules.

Facets as URL Parameters

Faceted navigation can now render facets as URL query parameters instead of path segments. Controlled by facetsAsUrlParameters (global) and facets.isParameter (per-facet) in the SuiteCommerce Configuration record under Shopping Catalog > Facets.

Single Secure Domain (HTTPS)

Shopping and Checkout can now run on a single HTTPS domain, eliminating the cross-domain redirect during checkout. Requires NetSuite 2017.1. Patch files are available for backporting to Denali, Mont Blanc, and Vinson releases.

Other Changes

  • IE8 dropped – No longer tested or supported. Sites will not crash but may exhibit unexpected behavior on IE8.
  • Mastercard 2-Series BIN – Updated regex in PaymentMethods.json (paymentmethods.regex).
  • Handlebars helpersbreaklines and ifEquals added in the HandlebarsExtras module.
  • Multi-Image Options – Multiple item option IDs can now trigger PDP image changes. Configured via productline.multiImageOption.
  • Script Debugger – When running the Field Set Setup script, you must now explicitly select API Version 1.0 in the SuiteScript debugger.
  • Custom Fields config subtab – New customFields.salesorder property under Advanced > Custom Fields in the SuiteCommerce Configuration record.

Bundles

  • SuiteCommerce Advanced Elbrus: 165410
  • Site Builder Extensions Elbrus: 165411
  • Site Builder Extensions Premium Elbrus: 165412
  • SuiteCommerce Configuration: 135010
  • Reference Product Lists Records: 53051 (required even if Product Lists are unused—without it, navigating to the cart throws: The record type [CUSTOMRECORD_NS_PL_PRODUCTLIST] is invalid)

What to do

  1. Verify your account is on NetSuite 2017.1 before installing the Elbrus bundle. Features have hard dependencies on this release.
  2. Install bundle 53051 (Reference Product Lists Records) regardless of whether you use Product Lists, to avoid cart errors.
  3. Audit custom PDP code. Any extensions that reference ItemDetails, ItemOptionsHelper, ItemsKeyMapping, or ItemViews modules must be migrated to the new Product, Item, ProductDetails, ProductLine, and Transaction.Line.Views modules. Update require() paths and model references accordingly.
  4. Remove composite view declarations. Any custom code calling require() to declare composite views is now unnecessary. The no-op shim prevents errors, but dead code should be cleaned up.
  5. Update item key mappings. If you extended ItemsKeyMapping, migrate your custom mappings to Item.KeyMapping.js inside the Item module.
  6. Review item option templates. SCA now uses separate templates for PDP and Facets. If you customized option rendering, ensure both template paths are addressed.
  7. Configure new features (Store Pickup, Quantity Pricing, Quick Order, SuitePromotions) in the SuiteCommerce Configuration record if needed, or disable them in distro.json.
  8. Set the Script Debugger to API Version 1.0 when running the Field Set Setup script.
  9. Test payment flows if you have custom Mastercard BIN validation logic—the default regex in PaymentMethods.json has changed for 2-Series ranges.
  10. Plan HTTPS migration. If you intend to use a single secure domain, configure it per the domain setup documentation. Backport patches are available for Denali, Mont Blanc, and Vinson.