REST API Oracle Sales Cloud (OSC) имеют ресурсы для групп продуктов и продуктов. Из этого организации могут создавать глубокие многоуровневые каталоги продуктов. Но отображение и навигация по этим каталогам в клиенте REST, таком как VBCS, может быть сложной задачей.

С помощью гуру пользовательского кода VBCS Дэвида Конечни мы недавно создали каталог, который выглядел следующим образом:

У Product Groups REST API есть следующие особенности:

  • Группа продуктов (/crmRestApi/resources/11.13.0.0/setupSalesCatalogs) имеет дочерние элементы, называемые подгруппами и продуктами.
  • Подгруппа группы товаров (/crmRestApi/resources/11.13.0.0/setupSalesCatalogs/{ProdGroupId}/child/ProductGroupSubgroupAdministration) не является обычной группой товаров и не обладает всеми ее свойствами, большинство особенно список подгрупп подгруппы.
  • Точно так же продукт в группе продуктов (/crmRestApi/resources/11.13.0.0/setupSalesCatalogs/{ProdGroupId}/child/ProductGroupProductSetup) не является обычным продуктом (/crmRestApi/resources/11.13. 0.0/products) и отсутствуют ключевые свойства.

Проблема здесь в том, что когда вы копаетесь в одной из этих подгрупп, вы хотите показать не объект ProductGroupSubgroupAdministration, а просто старую группу продуктов. Чтобы выполнить это, мы должны взломать некоторый пользовательский код.

  1. Отбросьте список и подключите его к бизнес-объекту «Группы продуктов». Включите только действие «Сведения».
  2. На странице сведений о группе продуктов отбросьте список и привяжите его к подгруппам. Не добавляйте ни одну из страниц действий CRUD.
  3. Выберите имя подгруппы и перейдите на вкладку «Действия» в инспекторе свойств. Добавьте новое пользовательское действие.
  4. Добавьте к действию пользовательский блок JavaScript и введите этот код:
// Replace com_oracle_abcs_fa_V7OhT with the variable used in your page
// Get the ProdGroupId for the subgroup
var prodId = $com_oracle_abcs_fa_V7OhT_setupSalesCatalogs_ProductGroupSubgroupAdministrationListArchetypeRecord.getValue('ProdGroupId');
// Create a new record with the ProdGroupId
var record = new Record({'_breeze_system_id' : prodId});
//  Navigate to the ProductGroup details page and pass in the record with the ProdGroupId Abcs.Pages().navigateToPage('com_oracle_abcs_fa_V7OhT_setupSalesCatalogsPage',
    ContextualData.createRecordToEditContext({entityId: 'com.oracle.abcs.fa.V7OhT.setupSalesCatalogs', data: record}));
resolve();

Чтобы настроить ссылки на продукты, сделайте то же самое.

  1. Перетащите список и привяжите его к дочернему элементу «Продукты» (ProductGroupProductSetup) группы продуктов.
  2. Установите действие для имени продукта на этот пользовательский JavaScript:
var prodId = $com_oracle_abcs_fa_V7OhT_setupSalesCatalogs_ProductGroupProductSetupListArchetypeRecord.getValue('InventoryItemId');
var record = new Record({'_breeze_system_id' : prodId});
Abcs.Pages().navigateToPage('ProductDetail',
    ContextualData.createRecordToEditContext({entityId: 'com.oracle.abcs.fa.xPiEu.products', data: record}));
resolve();

Это предполагает, что вы уже создали страницу ProductDetail, перейдя к списку страниц, создав новую страницу типа Detail и привязав ее к продукту (/crmRestApi/resources/11.13.0.0/products) Бизнес Объект.