Common Interceptor API

Overview

The Interceptor API’s provides default API functions available in each intercepted method. This interface enables various operations and interactions within the pricefx.

API Methods

add

Methods for adding new customers and products.

customer

JavaScript
customer: ((customer) => Promise<any>)

Adds a new customer.

Parameters:

  • customer: any - Customer Object.

product

JavaScript
product: ((product) => Promise<any>)

Adds a new product to products.

Parameters:

  • product: any - Product Object.

Example:

JavaScript
await api.add.product({
  sku: 'KS-2003',
  label: 'Test2',
  unitOfMeasure: 1,
  currency: 'CZK',
  formulaName: 'ActionButtons',
  attribute18: 'A'
});

app

Used for obtaining data from Unity which are not accessible through configuration.

getCurrentUser

JavaScript
getCurrentUser: (() => Promise<User>)

Returns the logged-in user.

Example:

JavaScript
await api.app.getCurrentUser()
/*
{
  "version": 2,
  "typedId": 123,
  "loginName": "donatas.ka",
  ...
}
*/

configuration

Methods for managing configuration.

overrideConfig

TypeScript
overrideConfig: ((path, value) => Promise<void>)

Used to temporarily set a value in the configuration. Updated configuration is valid only in the current web browser tab.

Parameters:

  • path: string - Name of configuration.

  • value: any - Configuration new value.

Example:

JavaScript
await api.configuration.overrideConfig(
  'applicationEnvironment',
  'salesforce'
);

retrieveConfig

TypeScript
retrieveConfig: ((path, defaultValue?) => Promise<any>)

Reads values from Pricefx configuration object.

You can use it to get values from feature flags or some other values such as:

  • type - dev | prod

  • partition

  • applicationEnvironment - standalone | salesforce | c4c | dynamics | sugarCRM

  • apiUrl

  • locale

Parameters:

  • path: string - Name of configuration.

  • defaultValue: any - (Optional) If retrieving the configuration is unsuccessful, the default value will be returned.

Example:

JavaScript
const visibleDashboards = await configuration.retrieveConfig(
 'customerSpecificFeatureFlag.dashboards.visible.account',
  []
);

crmManager

Enables communication with CRMs in which Pricefx is embedded.

callAndReceive

TypeScript
callAndReceive: ((message) => Promise<any>)

Triggers postMessage with a message in the window with CRM.

Parameters:

  • message: any - Data which will be sent to CRM.

Example:

JavaScript
const message = {
  fields: [
    { id: 'name', value: 'New name' },
    { id: 'description', value: 'New description' }
  ]
};
return api.crmManager.callAndReceive({ action: 'createNewQuote', data: message })

findAccount

TypeScript
findAccount: (() => Promise<any>)

Returns Account from CRM with provided ID.

findAccounts

TypeScript
findAccounts: ((name) => Promise<{ Id: string; Name: string; }[]>)

Returns max 10 Accounts from CRM which contains the value passed into the function.

Parameters:

  • name: any - Name of the account.

findByQuery

TypeScript
findByQuery: ((query) => Promise<any>)

Finds data in CRM’s by SQL query. Supported keywords: SELECT, FROM, WHERE, LIMIT, AND, and OR.
Supported operators for Salesforce, C4C, and Dynamics: =, !=, <, >, <=, >=, LIKE.
Supported operators for SugarCRM: =, LIKE.

Parameters:

  • query: string - Query which will be executed.

Example:

JavaScript
export const crmFindOpportunitiesPre = ({
  result,
  searchText,
  api
}) => {
  const query = `
    SELECT Id, Name, StageName, RecordType.Name
    FROM Opportunity
    WHERE Name = '%${searchText}%'
    LIMIT 10
  `;
  return api.crmManager.findByQuery(query).then(list => {
    list.forEach(item => {
      item.Name = `${item.Name} (${item.RecordType.Name})`;
    });
    result.list = list;
    return result;
  });
};

getAccountAssociatedValue

TypeScript
getAccountAssociatedValue: (() => Promise<any>)

Returns the value of the accountAssociatedValue feature flag.

getAccountAssociationField

TypeScript
getAccountAssociationField: (() => Promise<string>)

Returns the value of the accountAssociationField feature flag.

getCurrentUser

TypeScript
getCurrentUser: (() => Promise<CrmUser>)

Retrieves the current user from the CRM.

getOpportunityAssociatedValue

TypeScript
getOpportunityAssociatedValue: (() => Promise<any>)

Returns the value of the opportunityAssociatedValue feature flag.

getOpportunityLineItemURL

TypeScript
getOpportunityLineItemURL: ((externalId) => Promise<string>)

Returns a link to the opportunity line items with provided ID. Salesforce only.

Parameters:

  • externalId: string - Id of the opportunity.

getOpportunityURL

TypeScript
getOpportunityURL: ((externalId) => Promise<string>)

Returns a link to the opportunity with provided ID. Salesforce only.

Parameters:

  • externalId: string - Id of the opportunity.

getPayload

TypeScript
getPayload: (() => Promise<any>)

Returns CRM payload. The value of the payload will vary based on CRM used with Pricefx.

Example:

JavaScript
export const quotesDetailNew = async ({
  quoteAPI,
  api
}) => {
  const payload = await api.crmManager.getPayload();
  await quoteAPI.setHeaderValue('label', payload.Name);
  await quoteAPI.setHeaderInputValue('Customer', payload.Customer_Number__c);
  await quoteAPI.setHeaderInputValue('ProjectID', payload.Project_Id__c);
  await quoteAPI.setHeaderInputValue('ProjectName', payload.Project__c);
};

getQuoteAccountReferenceField

TypeScript
getQuoteAccountReferenceField: (() => Promise<string>)

Returns the value of the quoteAccountReferenceField feature flag. (Deprecated, use getAccountAssociationField instead)

getSObjectURL

TypeScript
getSObjectURL: (() => Promise<string>)

Returns a link of the SObject. Salesforce only.

getSugarCrmEntityById

TypeScript
getSugarCrmEntityById: ((module, id) => Promise<any>)

Loads an entity by ID from the module. SugarCRM only.

Parameters:

  • module: string - Name of the module.

  • id: string - Id of the object in module.

Example:

JavaScript
const parentAccount = await api.crmManager.getSugarCrmEntityById('Accounts', parentId);

isAccountPage

TypeScript
isAccountPage: (() => Promise<boolean>)

Returns true when Pricefx is embedded under an account page in CRM.

Example:

JavaScript
export const quotesDetailSubmit = async ({
  api
}) => {
  if(await api.crmManager.isAccountPage()) {
    await api.notify.success('We on account page');
  }
};

isOpportunityPage

TypeScript
isOpportunityPage: (() => Promise<boolean>)

Returns true when Pricefx is embedded under the opportunity page in CRM.

Example:

JavaScript
export const quotesDetailSubmit = async ({
  api
}) => {
  if(await api.crmManager.isOpportunityPage()) {
    await api.notify.success('We on opportunity page');
  }
};

postCall

TypeScript
postCall: ((url, method, payload) => Promise<any>)

Calls HTTP request in CRM. Salesforce and SugarCRM only.

Parameters:

  • url: string - API call url.

  • method: GET | POST | PUT | DELETE - Method which will be used for API call.

  • payload: any - Body of the API call.

Example:

JavaScript
export const quotesDetailSubmit = async ({
  quoteAPI,
  api
}) => {
  const externalRef = await quoteAPI.getHeaderValue('externalRef');
  const opportunityUrl = await api.crmManager.getOpportunityURL(externalRef);
  const totalValue = await quoteAPI.getHeaderOutputResult('TotalAmount');
  const payloadForSF = {
    PriceFx_Quote_No__c: quoteAPI.getHeaderValue('uniqueName'),
    Amount: totalValue
  };
  api.crmManager.postCall(opportunityUrl, 'PATCH', payloadForSF).then(() => {
    api.notify.success('Opportunity was updated.');
  });
};

updateCache

TypeScript
updateCache: ((path, data) => Promise<void>)

This function is used to manipulate _initCache in SugarcrmManager. It is mainly used to modify the parent account under the account page in SugarCRM. SugarCRM only.

Parameters:

  • path: string - Path to Cache.

  • data: any - Data for update.

Example:

JavaScript
// Data is a parent account for the current account
crmManager.updateCache('sugarCRMData.payload.Account', data)

fetch

Methods for fetching customer and product data.

customer

TypeScript
customer: ((customerId) => Promise<Customer>)

Fetches a customer by their ID.

Parameters:

  • customerId: string - Customer ID.

customerByFilter

TypeScript
customerByFilter: ((customFilter) => Promise<Customer[]>)

Fetches customers based on a custom filter.

Parameters:

  • customFilter: string - Criteria.

customerByName

TypeScript
customerByName: ((customerName) => Promise<Customer[]>)

Fetches customers by their name.

Parameters:

  • customerName: string - Customer Name.

customerExtension

TypeScript
customerExtension: ((tableName, filter) => Promise<CustomerExtension[]>)

Fetches customer extension data based on the table name and filter.

Parameters:

  • tableName: string - Name of the Customer Table.

  • filter: string - Advance filter.

productById

TypeScript
productById: ((sku) => Promise<any>)

Fetches a product by its SKU.

Parameters:

  • label: string - Product sku.

productByLabel

TypeScript
productByLabel: ((label) => Promise<Product[]>)

Fetches products by their label.

Parameters:

  • label: string - Product label.

TypeScript
navigate: ((targetPage, targetPageState) => Promise<void>)

Allows page navigation using interceptor API. This API uses Context Linking for navigation.

Parameters:

  • targetPage: string - Page to which user should be navigated.

  • targetPageState: any - Additional parameters for navigation.

Example:

JavaScript
export const quotesListDataLoad = async ({ api, appPages }) => {
  await api.navigate(appPages.QC_NEW_QUOTE, { id: 'P-123' });
}

notify

API for displaying notifications.

Methods:

  • alert: Displays a blue notification message.

  • error: Displays a red notification message.

  • info: Displays a blue notification message.

  • success: Displays a green notification message.

  • warning: Displays an orange notification message.

Parameters:

  • message: string - Translation value key.

  • options: {duration?: number, url?: string, urlName?: string} - (Optional) Settings for notification.

Example:

JavaScript
await api.notify.error(
  'Error message, with help link',
  {
    urlName: "help",
    url: "<https://help.me>",
    duration: 0
  }
)

translate

TypeScript
translate: ((key, params?) => Promise<string>)

Translates text based on the provided key and parameters.

Parameters:

  • key: string - Translation value key.

  • params: any - Parameters for translation string formatting.

Example:

JavaScript
await api.translate(
  'unity_interceptor_already_exists',
  {
    name: 'myInterceptor'
  }
)

url

Methods related to URL handling.

getParameters

TypeScript
getParameters: (() => Promise<string>)

Retrieves URL parameters.