The Interceptor API’s provides default API functions available in each intercepted method. This interface enables various operations and interactions within the pricefx.
Methods for adding new customers and products.
customer: ((customer) => Promise<any>) |
Adds a new customer.
product: ((product) => Promise<any>) |
Adds a new product to products.
await add.product({ sku: 'KS-2003', label: 'Test2', unitOfMeasure: 1, currency: 'CZK', formulaName: 'ActionButtons', attribute18: 'A' }); |
Used for obtaining data from Unity which are not accessible through configuration.
getCurrentUser: (() => Promise<User>) |
Returns the logged-in user.
Example:
await app.getCurrentUser() /* { "version": 2, "typedId": 123, "loginName": "donatas.ka", ... } */ |
Methods for managing configuration.
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.
Example:
await configuration.overrideConfig( 'applicationEnvironment', 'salesforce' ); |
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
Example:
const visibleDashboards = await configuration.retrieveConfig( 'customerSpecificFeatureFlag.dashboards.visible.account', [] ); |
Enables communication with CRMs in which Pricefx is embedded.
callAndReceive: ((message) => Promise<any>) |
Triggers postMessage with a message in the window with CRM.
Example:
const message = { fields: [ { id: 'name', value: 'New name' }, { id: 'description', value: 'New description' } ] }; return crmManager.callAndReceive({ action: 'createNewQuote', data: message }) |
findAccount: (() => Promise<any>) |
Returns Account from CRM with provided ID.
findAccounts: ((name) => Promise<{ Id: string; Name: string; }[]>) |
Returns max 10 Accounts from CRM which contains the value passed into the function.
findByQuery: ((query) => Promise<any>) |
Finds opportunities 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.
Example:
export const crmFindOpportunitiesPre = ({ result, searchText, api: { crmManager } }) => { const query = ` SELECT Id, Name, StageName, RecordType.Name FROM Opportunity WHERE Name = '%${searchText}%' LIMIT 10 `; return crmManager.findByQuery(query).then(list => { list.forEach(item => { item.Name = `${item.Name} (${item.RecordType.Name})`; }); result.list = list; return result; }); }; |
findOpportunitiesByQuery: ((query) => Promise<any>) |
Finds opportunities by SQL. Salesforce only, not implemented in other CRMs.
getAccountAssociatedValue: (() => Promise<any>) |
Returns the value of the accountAssociatedValue feature flag.
getAccountAssociationField: (() => Promise<string>) |
Returns the value of the accountAssociationField feature flag.
getCurrentUser: (() => Promise<CrmUser>) |
Retrieves the current user from the CRM.
getOpportunityAssociatedValue: (() => Promise<any>) |
Returns the value of the opportunityAssociatedValue feature flag.
getOpportunityLineItemURL: ((externalId) => Promise<string>) |
Returns a link to the opportunity line items with provided ID. Salesforce only.
getOpportunityURL: ((externalId) => Promise<string>) |
Returns a link to the opportunity with provided ID. Salesforce only.
getPayload: (() => Promise<any>) |
Returns CRM payload. The value of the payload will vary based on CRM used with Pricefx.
Example:
export const quotesDetailNew = async ({ quoteAPI, api: { crmManager } }) => { const payload = await 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: (() => Promise<string>) |
Returns the value of the quoteAccountReferenceField feature flag. (Deprecated, use getAccountAssociationField instead)
getSObjectURL: (() => Promise<string>) |
Returns a link of the SObject. Salesforce only.
getSugarCrmEntityById: ((module, id) => Promise<any>) |
Loads an entity by ID from the module. SugarCRM only.
Example:
const parentAccount = await crmManager.getSugarCrmEntityById('Accounts', parentId); |
isAccountPage: (() => Promise<boolean>) |
Returns true when Pricefx is embedded under an account page in CRM.
isOpportunityPage: (() => Promise<boolean>) |
Returns true when Pricefx is embedded under the opportunity page in CRM.
postCall: ((url, method, payload) => Promise<any>) |
Calls HTTP request in CRM. Salesforce and SugarCRM only.
Example:
export const quotesDetailSubmit = async ({ quoteAPI, api: { crmManager, notify } }) => { const externalRef = await quoteAPI.getHeaderValue('externalRef'); const opportunityUrl = await crmManager.getOpportunityURL(externalRef); const totalValue = await quoteAPI.getHeaderOutputResult('TotalAmount'); const payloadForSF = { PriceFx_Quote_No__c: quoteAPI.getHeaderValue('uniqueName'), Amount: totalValue }; crmManager.postCall(opportunityUrl, 'PATCH', payloadForSF).then(() => { notify.success('Opportunity was updated.'); }); }; |
reportOpportunityNumberOfQuotes: (() => Promise<void>) |
Sends the number of quotes back to SugarCRM. (Deprecated)
updateCache: ((path, data) => Promise<void>) |
Used to manipulate _initCache in SugarcrmManager. SugarCRM only.
Example:
// Data is a parent account for the current account crmManager.updateCache('sugarCRMData.payload.Account', data) |
Methods for fetching customer and product data.
customer: ((customerId) => Promise<Customer>) |
Fetches a customer by their ID.
customerByFilter: ((customFilter) => Promise<Customer[]>) |
Fetches customers based on a custom filter.
customerByName: ((customerName) => Promise<Customer[]>) |
Fetches customers by their name.
customerExtension: ((tableName, filter) => Promise<CustomerExtension[]>) |
Fetches customer extension data based on the table name and filter.
productById: ((sku) => Promise<any>) |
Fetches a product by its SKU.
productByLabel: ((label) => Promise<Product[]>) |
Fetches products by their label.
navigate: ((targetPage, targetPageState) => Promise<void>) |
Allows page navigation using interceptor API. This API uses Context Linking for navigation.
Example:
export const quotesListDataLoad = async ({ api, appPages }) => { await api.navigate(appPages.QC_NEW_QUOTE, { id: 'P-123' }); } |
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.
Example:
await api.notify.error( 'Error message, with help link', { urlName: "help", url: "<https://help.me>", duration: 0 } ) |
translate: ((key, params?) => Promise<string>) |
Translates text based on the provided key and parameters.
Example:
await api.translate( 'unity_interceptor_already_exists', { name: 'myInterceptor' } ) |
Methods related to URL handling.
getParameters: (() => Promise<string>) |
Retrieves URL parameters.