Discount Code Importer

A package that helps with importing commercetools discount codes in JSON format to the commercetools platform. This package is built to be used in conjunction with sphere-node-cli

Configuration

The constructor accepts two arguments:

  • A required object containing the following values:

    • apiConfig (Object): AuthMiddleware options for authentication on the commercetools platform. (Required. See here)

    • accessToken (String): Access token to be used to authenticate requests to API. Requires scope of [manage_orders]

    • batchSize (Number): Amount of codes not more than 500 to process concurrently (Optional. Default: 50)

    • continueOnProblems (Boolean): Flag whether to continue processing if an error occurs (Optional. Default: false)

  • An optional logger object having four functions (info, warn, error and verbose)

Usage with sphere-node-cli

You can use this package from the sphere-node-cli. In order for the cli to import discount codes, the file to import from must be a valid JSON and follow this structure:

[
 {
  "name": {
   "en": "Sammuy",
   "de": "Valerian"
  },
  "description": {
   "en": "some new promo",
   "de": "super Angebot"
  },
  "cartDiscounts": [
   {
    "typeId": "cart-discount",
    "id": "some-cart-discount-id"
   }
  ],
  "cartPredicate": "lineItemTotal(1 = 1) >  \"10.00 USD\"",
  "isActive": true,
  "maxApplications": 10,
  "maxApplicationsPerCustomer": 2,
  "code": "MyDiscountCode1"
 },
 {
  "name": {
   "en": "Sammuy",
   "de": "Valerian"
  },
  "description": {
   "en": "some new promo",
   "de": "super Angebot"
  },
  "cartDiscounts": [
   {
    "typeId": "cart-discount",
    "id": "some-cart-discount-id"
   }
  ],
  "cartPredicate": "lineItemTotal(1 = 1) >  \"20.00 USD\"",
  "isActive": false,
  "maxApplications": 10,
  "maxApplicationsPerCustomer": 2,
  "code": "MyDiscountCode2"
 },
 {
  "name": {
   "en": "Sammuy",
   "de": "Valerian"
  },
  "description": {
   "en": "some new promo",
   "de": "super Angebot"
  },
  "cartDiscounts": [
   {
    "typeId": "cart-discount",
    "id": "some-cart-discount-id"
   }
  ],
  "cartPredicate": "lineItemTotal(1 = 1) >  \"50.00 USD\"",
  "isActive": false,
  "maxApplications": 10,
  "maxApplicationsPerCustomer": 2,
  "code": "MyDiscountCode3"
 },
 ...
]

Then you can import this file using the cli:

Custom optional configuration can be passed in as described above using the -c flag

Direct Usage

If you would like to have more control, you can also use this module directly in Javascript. To do this, you need to install it:

Then you can use it to import discount codes:

On successful completion, a call to the .summaryReport() method returns a report in the following format:

Note: By default, if a discount code already exists, the module tries to build update actions for it, and if no update actions can be built, the code will be ignored

Last updated