Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
minLevel1
maxLevel2
outlinefalse
typelist
printablefalse

Anchor
Interceptor_Editor
Interceptor_Editor
How to

...

Edit Interceptor in

...

Note: Dynamic interceptors are not compatible with Ember Unity parts.

Prerequisites: Make sure you have the Develop Interceptors role assigned.

Steps to create an interceptor:

...

Pricefx

Info

Available from version 14.0

You can edit Interceptor's code directly from Pricefx.

  1. Go to Administration > Configuration > CRM Integration > Interceptors.

  2. Click the Set Interceptor button which will display a modal window where you can create an interceptor.
    Note that all interceptors have pfxInterceptor_as a prefix which will be used when saving them as an Advanced Configuration record. You can also set the interceptor as temporary which means that the given interceptor will be activated only for your own browser session.

    Image Removed

    Now Edit interceptor.

  3. The window with the code of the currently Active interceptor will appear.

...

How to Add Interceptor Method Template in Pricefx

Prerequisites:

  • Make sure you have the Develop Interceptors role assigned.

  • You have crated Interceptor, and it’s assigned to CRM config.

Steps to edit an Interceptor:

  1. In Configuration > Interceptors you will see all available intercepted methods. Each method refers to an event in UnityPricefx Interceptor Methods. Some of these events are:

    • quotesDetailNewCheck
      This method is triggered after clicking the New button at /#/qc/quotes, but before the Quote is created. If this method returns false, the Quote will not be created and the user will stay at the Quote list. In this method you do not have access to quoteAPI, but you can use other APIs for checking conditions from CRMs.

    • quotesDetailNew
      The starting point for this event is clicking the New button at /#/qc/quotes. The method is triggered after the new Quote is recalculated and saved at backend and the user is redirected to the Quote detail page /#/qc/quotes/<quoteId>.

    • quotesDetailEdit
      Triggered when a user opens the Quote detail page.

    • quotesDetailRecalculate
      Triggered when a user clicks the Recalculate button on the Quote detail page /#/qc/quotes/<quoteId>.

    • quotesDetailSubmit
      Triggered when a user clicks the OK button in the Submit modal dialog on the Quote detail page /#/qc/quotes/<quoteId> after clicking Submit.

    • quotesDetailTabSwitch
      Triggered at Quote detail at open and then when the user switches to a different tab.

      To see a regularly updated list of all available methods and when they are triggered, visit Interceptors documentation page interceptor Method Names.

  2. As you expand one of the method fields, you will see Add PRE Code, and/or Add POST Code buttons (according to each method’s compatibility):


    When clicking any of them, a modal window will show:

    Image Removedimage-20241002-121106.pngImage Added


    There is a dropdown menu with available templates, and you can also paste your JavaScript code in there. More technical explanations how this code is structured and what PRE and POST means are available below.

  3. Reload the interceptor every time after modifying the interceptor to apply changes.

    Image Added

  4. Finally, you can test the interceptor's functionality, in this case by creating a new quote:

...

How to

...

Edit Interceptor in

...

VSCode or VSCodium

Prerequisites: Make sure you have the Develop Interceptors role assigned.

For a better user experience during development, we strongly recommend to use IntelliJ with the Pricefx Studio plugin. The prerequisites are the same as above: having the Develop Interceptors using VSCode with the Pricefx Code extension as IntelliJ offers JavaScript code highlighting only in paid versions of the IDE.

  1. Install and login to the partition in which you want to edit interceptor. Here's how to get it done Pricefx Code.

  2. Open the interceptor you would like to edit.

    image-20241002-123003.pngImage Added

  3. Save the file after editing is done. A notification should appear and inform that the interceptor was saved.

  4. Reload the interceptor every time after modifying the interceptor to apply changes.

    Image Added

How to Edit Interceptor in IntelliJ

Prerequisites: Make sure you have the Develop Interceptors and General Admin role assigned.

Steps to create edit an interceptorInterceptor:

  1. Check your version of Pricefx Studio in Plugins and update the version if necessary. If the plugin is missing, install Pricefx Studio first.

    Image RemovedImage Added

     

  2. Edit the Config.js file to be able to fetch and deploy your solution to the correct environment.

    Image RemovedImage Added

     

  3. After creating a new Dynamic Interceptor on the Configuration > Interceptors page, you can fetch it. Select the Environment and Partition that you want to work with and locate your interceptor in the Advanced configuration. Then click the Fetch button.

    Image RemovedImage Added

     

  4. The procedure is similar to deploying your solution after some changes.

    Image RemovedImage Added

     

  5. After the code is deployed, use the Reload Interceptor functionality.

    Image Removed

How to Create Interceptor in VSCode or VSCodium

IntelliJ offers JavaScript code highlighting only in paid versions of the IDE. As an alternative, for VSCode and VSCodium we have developed Pricefx Code extension which offers Interceptor and Configuration file editing. The extension works only with permissions which are mentioned above.

For details see Pricefx Code.

How Interceptors Work

This sample of a JavaScript code will be structured like this:

Code Block
export const compensationsDetailCreateNewRevision = async ({ compensationPlanOriginAPI, compensationPlanNewRevisionAPI, api: { notify }}) => {
  await notify.success('Triggered interceptor compensationsDetailCreateNewRevision');
  // TODO: Add your code
}

For each method that should trigger something, there will be a function exported. This function has one argument which has different APIs that will offer interaction with Unity, and CLIC data manipulation.

To find the type definitions and documentation of all available methods and their available APIs, click here. If you struggle to find out exactly what is available, you can run a specific interceptor method with a debugger:

Code Block
export const quotesDetailNew = (parameter) => {
  debugger;
};

PRE and POST Methods

Some methods have both the options – to add PRE and POST code.

The idea behind is that the PRE code will run before the intercepted method, i.e. when you have a PRE method to create a new quote, this will run before the quote is created, and in case your PRE method returns false it will stop and the quote will not be created.

If it returns some value, it is passed to Unity and can be used according to the method.

Then, the POST code will run.

...

  1. Image Added