インライン編集を使用した商談売上明細の編集

商談売上明細のインライン編集機能を使用すると、ユーザーはRedwood営業内で収益詳細を直接迅速かつ効率的に更新できます。 この直観的な機能により、編集プロセスが簡素化され、データの正確性を確保し、ユーザーの生産性を高めながら、調整に必要な時間と労力が削減されます。

この機能により、ユーザーはインタフェース内で商談売上明細を直接すばやく更新し、時間を節約し、複雑なナビゲーションの必要性が軽減されるため、効率が向上します。 編集プロセスを合理化することで、データの正確性が向上し、意思決定が迅速化され、全体的な生産性が向上し、営業チームはディールのクローズにすばやく集中できます。

有効化のステップ

Visual Builder Studioを活用して、アプリケーションを公開します。 Visual Builderを使用したアプリケーションの拡張の詳細は、Oracle Help Center関心のあるアプリケーション・サービス領域→「Books」→「Configuration and Extension」を参照してください。

Visual Builder拡張機能によるインライン編集の有効化

  • 「売上」サブビューでのインライン編集の有効化: 商談詳細ページで拡張変数"enableInlineEdit"の値を"true"に更新します
  • 製品カタログでのインライン編集の有効化(製品の追加シナリオ): 製品カタログ・ページで拡張変数"enableInlineEdit"の値を"true"に更新します

ユース・ケースのサポート例:

ユース・ケース: ピッカーで製品グループが選択されている場合、「タイプ」および「作業負荷」またはカスタム属性を移入します

導入手順:

  • 商談売上サブビュー・レイアウトを複製します
  • レイアウトに必須属性を含めます。
  • スマート・ピッカーをサポートするために、ProductGroupに新しいフィールド・テンプレートを作成します。
  • フィールド・トリガー用のjavascript関数を記述し、必要なロジックを追加します。
  • ピッカー・テンプレートに添付されるJS関数を記述します。
  • その他のスマート・ピッカーjavascriptメソッドを記述します

ピッカー関数のサンプル・コード・ブロック:

製品グループのフィールド・テンプレート:

<template id="inlineProductGepTemplate">
<oj-bind-if test="[[$cell.mode === 'edit' ]]">
<div
:style.display="[($functions.isAttributeDisplayable($componentContext, 'ProdGroupName')) ? 'flex' : 'none']]">
<oj-cx-es-smart-picker extension-id="oracle_cx_digitalsalesUI"
:id="[[['productGroupPicker' + $value.RevnId() + $uniqueId ]]" class="oj-flex-item oj-sm-12 oj-md-12"
columns="[[[[[['Name']]]]]" key="ProdGroupId"
:title="{{ $value.ProdGroupName }}"
entity-name="[[$metadata.ProdGroupId.extension.SmartPickerEntityName ]]\"
filter-array="[[$functions.getProductGroupPickerFilterData($componentContext) ]]"
readonly="[[[[$functions.isVirtualFieldReadonly, $metadata.ProdGroupName, $metadata.ProdGroupName, 'ProdGroupName')]]"
is-create-record-enabled="[$1616 on-selected-selected-changed="[$functions.prodGroupFieldUpdateTrigger, on-selected-selected-changed="[$dynamicLayoutContext]="[$functions.prodGroupFieldUpdateTrigger] on-record-record-changed="[$dynamicLayoutContext]="[$functions.prodGroupFieldUpdateTrigger][$functions.prodGroupFieldUpdateTrigger, on-changed-changed=selected-selected-record-changed="[$1618]="[$functions.prodGroupFieldUpdateTrigger]$componentContext.parentObjectData,event) ]]"
selected-record-display-name="{{ $value.ProdGroupName }}"
get-back-attribute-list="[[[[['Name_localizedValue'] ]]"
on-get-back-attribute-values-changed="[[function(event, data) { $functions.setTablePickerDisplayName(event, data, $dynamicLayoutContext, 'ProdGroupName') } ]]"
data-oj-field="ProdGroupName" required="[[$metadata.ProdGroupId.required ]]"
translation-bundles="[[{srGlobal: $translations.srGlobal, elasticSearchBundle: $translations.elasticSearchBundle}]]"
is-saved-search-enabled="false">
</oj-cx-es-smart-picker>

<oj-menu-button class="oj-flex-bar-end oj-sm-padding-1x-start" id="territory_menu_ProdGroupName"
:aria-label="[[$metadata.ProdGroupName.labelHint+ ' - Actions']]"
:style.display="[$functions.isVirtualFieldReadonly($componentContext, $metadata.ProdGroupName, 'ProdGroupName') ? 'none' : $functions.hideTerritoryMenu($componentContext) ? 'none' : 'block' ]]"
style="height:var(--oj-text-field-inside-edge-height);box-shadow:0 0 4px 0 hsla(30,8.3%,9.4%,9.4%,.1), 0 1px 2px 0 hsla(30,8.3%,9.4%,.2);"
display="icons">
<oj-menu slot="menu" on-oj-action="[$functions.updateProductSmartPicker]]">
<oj-option value="[[['DisableTerritory'+ '_' + 'productGroupPicker'+ $value.RevnId() + $uniqueId]]"
id="DisableTerritory_productGroupPicker">


disabled="[[$functions.disableTerritoryOption($componentContext)]]"
id="EnableTerritory_productGroupPicker">
<span class="oj-ux-ico-search-list" slot="startIcon"></span>
<oj-bind-text value="Filter By Territory"></oj-bind-text>
</oj-option>
</oj-menu>
<span class="oj-ux-ico-overflow-h" slot="endIcon"></span>
</oj-menu-button>
</div>
</oj-bind-if>
<oj-bind-if test="[[$cell.mode === 'navigation' ]]">
<div class="oj-fa-digital-sales-cx-iss-truncate-long-text" :title="[[$value.ProdGroupName ]]">
<oj-bind-text value="[[$value.ProdGroupName ]]"></oj-bind-text>
</div>
</oj-bind-if>
</template>"]


フィールド・トリガーJavascript関数:

{"code":400,"message":"String at index 0 is too long (5105); max allowed is 5000"}