Choose your language

Choose your login

Support

How can we help?

PaperCut's AI-generated content is continually improving, but it may still contain errors. Please verify as needed.

Lightbulb icon
Lightbulb icon

Here’s your answer

Sources:

* PaperCut is constantly working to improve the accuracy and quality of our AI-generated content. However, there may still be errors or inaccuracies, we appreciate your understanding and encourage verification when needed.

Lightbulb icon

Oops!

We currently don’t have an answer for this and our teams are working on resolving the issue. If you still need help,
User reading a resource

Popular resources

Conversation bubbles

Contact us

Description functions (conditional statement)

This page applies to:

In your line item descriptions, rather than using generic static text, you can create a function that defines a dynamic description that returns the specific options selected by the customer when they place an order.

New Order form

A screenshot of the New Order form, showing the order description.

The New Order form, showing the order description.

This function is called a <line item>Description(order) function, for example:

printingCostsDescription (order)

This function has the following structure:

  • Define the function and pass in the order object
  • Declare the variables
  • Define the variables
  • Define the description string
  • Return a value back to the calling function

Example: Printing Costs description

New Order form

A screenshot showing the New Order form, showing cost estimations.

An exmaple of the New Order form, showing cost estimations.

Costing script

To create a dynamic description for a Printing Costs line item, add the following to your script:

Define the function and pass in the order object

function printingDescription(order) {

Declare the variables

  var paperStockText; 
  var colorText; 
  var printingCostsText;

Define the variables

// 3.1 Concatenate the paper stock options
  paperStockText = order.paperStock.size + ", " + order.paperStock.color + ", " + order.paperStock.type;
  
// 3.2 Determine whether to display color or grayscale
  if (order.color.enabled) {
      colorText = "Color";
  } else {
      colorText = "Grayscale";
  }

Define the Printing Costs description string

  printingCostsText = paperStockText + " | " + colorText + " | " + numberOfPages + " pages";

Return the value to the calling function

  return printingCostsText 
}

Example Finishing Costs description function

New Order form
A screenshot showing the New Order form, showing cost estimations.

An exmaple of the New Order form, showing cost estimations.

Costing script

For Finishing options, the variable definitions are a bit more complex as Binding options can have sub-attributes.

Define the function and pass in the order object

function finishingDescription(order) {

Declare the variables

  var frontCoverText = '';
  var backCoverText = '';
  var bindingText = '';
  var bindingAttributeName = '';
  var bindingSubAttributeText = '';
  var finishingText = '';

Define the variables

  // 3.1 Front cover description text (e.g. "Front Cover: Clear Acetate")
  if (order.frontCover.name != 'No Cover') {
      frontCoverText = "Front cover: " + order.frontCover.name + 
      (order.frontCover.printOnCover == null ? '' : ", " + order.frontCover.printOnCover)
  }

  // 3.2 Back cover description text(e.g. "Back cover: Frosted Acetate")
  if (order.backCover.name != 'No Cover') {
      backCoverText = "Back cover: " + order.backCover.name;
  }

  // 3.3 Binding descriptive text — Display the binding option only if it IS NOT 'No binding'
  if (order.binding.name != 'No binding') {
      bindingText = order.binding.name;
  }

  // 3.4 Binding descriptive text — Check if the selected binding option 
  // has sub-attributes (e.g. Position > Top left)
  if (order.binding.attributes) {
    // Display Comb Binding sub-attributes and the selected 
    // options (i.e. Binding Edge and Color).
    // If 'Comb binding' is selected, this will produce text  
    // similar to: Comb binding: Long, Red.
      if (order.binding.name == 'Comb binding'); {
        bindingSubAttributeText = ": 
        " + order.binding.attributes[0].option.name 
        + ", " + order.binding.attributes[1].option.name + " | "
      }

      // If 'Stapling' is selected, this will produce text similar: 
      // to Stapling: Top Left.
      if (order.binding.name == 'Stapling') {
        bindingSubAttributeText = ": " +  
        order.binding.attributes[0].option.name + " | "
      }
    }

Define the Finishing Costs description string

  finishingText = frontCoverText + " | " + backCoverText + " | " + bindingText + bindingSubAttributeText;

  // Remove any trailing vertical pipes in the description.
  if (finishingText.endsWith('| '))
  {
      finishingText =  finishingText.substring
      (0, finishingText.length - 3);
  }

Return the value to the calling function

  return finishingText;
}

Comments