Quantity Pricing Displayed in Web Store Even When “Require Login for Pricing” is Enabled


In some implementations of the Kilimanjaro, Vinson, and Elbrus releases of SuiteCommerce Advanced, quantity pricing displays in the web store even when Require Login for Pricing is enabled.

Step 1: Extend QuantityPricing.View.js

  1. Create an extensions directory to store your custom module. Depending on your implementation, this directory might already exist.
  2. Within this directory, create a custom module with a name similar to the module being customized.For example, create Modules/extensions/QuantityPricing.Extension@1.0.0.
  3. In your new QuantityPricing.Extension@1.0.0 directory, create a subdirectory called JavaScript.For example: Modules/extensions/QuantityPricing.Extension@1.0.0/JavaScript
  4. In your new JavaScript subdirectory, create a JavaScript file to extend QuantityPricing.View.js.Name this file according to best practices.QuantityPricing.View.Extension.js
  5. Open this file and extend the QuanitityPricing.View method as shown in the following code snippet.
define(
   'QuantityPricing.View.Extension'
,   [
      'QuantityPricing.View'
   ,   'QuantityPricing.Utils'
   ,   'SC.Configuration'
   ,   'Profile.Model'
   ,   'Backbone'
   ,   'underscore'
   ]
,   function (
      QuantityPricingView
   ,   QuantityPricingUtils
   ,   Configuration
   ,   ProfileModel
   ,   Backbone
   ,   _
   )
{
   'use strict';

      _.extend(QuantityPricingView.prototype,
      {
         initialize: function ()
         {

            this.profileModel = ProfileModel.getInstance();

            this._isEnabled = !this.profileModel.hidePrices();

            this.price_schedule = QuantityPricingUtils.rearrangeQuantitySchedule(this.model.get('item'), _.isFunction(this.model.getSelectedMatrixChilds) ? this.model.getSelectedMatrixChilds() : []);

            this.model.on('change', function ()
            {
               var new_price_schedule =  QuantityPricingUtils.rearrangeQuantitySchedule(this.model.get('item'), _.isFunction(this.model.getSelectedMatrixChilds) ? this.model.getSelectedMatrixChilds() : []);

               if (!_.isEqual(this.price_schedule, new_price_schedule))
               {
                  this.price_schedule = new_price_schedule;
                  this.render();
               }
            }, this);

            this.item_key = this.model.get('item').id + '' + (new Date()).getMilliseconds();
         }

      });
});
  1. Save the file.

Step 2: Prepare the Developer Tools For Your Customization

  1. Open your new QuantityPricing.Extension@1.0.0 module directory.
  2. Create a file in this directory and name it ns.package.json.Modules/extensions/QuantityPricing.Extension@1.0.0/ns.package.json
  3. Paste the following code into your new ns.package.json file:
{
    "gulp": {
        "javascript": [
            "JavaScript/*.js"
        ]
    }
}
  1. Open the distro.json file. This is located in your root directory.
  2. Add your custom module to the modules object.Your code should look similar to the following example:
{
"name": "SuiteCommerce Advanced Aconcagua",
"version": "2.0",
"isSCA": true,
"buildToolsVersion": "sco-2018.1.0",
"folders": {
    "modules": "Modules",
    "suitecommerceModules": "Modules/suitecommerce",
    "extensionsModules": "Modules/extensions",
    "thirdPartyModules": "Modules/third_parties",
    "distribution": "LocalDistribution",
    "deploy": "DeployDistribution"
},
     "modules": {
        "extensions/QuantityPricing.Extension": "1.0.0",
        "suitecommerce/Account": "sco-2018.1.0",
        ...
  1. This ensures that the Gulp tasks include your module when you deploy. In this example, the custom modules are added at the beginning of the list of modules. However, you can add the modules anywhere in the modules object. The order of precedence in this list does not matter.
  2. Add QuantityPricing.Extension as a dependency to SCA entry point within the SC.Shopping.Starter and SC.MyAccount.Starter entrypoints of the JavaScript array.Your Distro.js file should look similar to the following
"tasksConfig": {
//...
"javascript": [
         //...
         {
               "entryPoint": "SC.Shopping.Starter",
               "exportFile": "shopping.js",
               "dependencies": [
                  //...
                    "ProductDetailToQuote",
                    "StoreLocator",
                    "SC.CCT.Html",
                    "QuantityPricing.View.Extension"
                ],
                           //...
         {
               "entryPoint": "SC.MyAccount.Starter",
               "exportFile": "myaccount.js",
               "dependencies": [
                  //...
                    "GoogleMap.Configuration",
                    "StoreLocatorAccessPoints",
                    "SC.CCT.Html",
                    "QuantityPricing.View.Extension"
                ],
                           //...

Step 3: Test and Deploy Your Customization

  1. Test your source code customizations on a local server or deploy them to your NetSuite account If you are currently running SCA on a local server, your changes should appear on your local site immediately.
  2. Confirm your results.Upon successful deployment, quantity pricing will not display in the web store when Require Login for Pricing is enabled.

Leave a comment

Your email address will not be published. Required fields are marked *