統合アルゴリズムを使用した複雑なロジックの実装
統合アルゴリズムを使用して、オーダー管理を統合するときに特殊な動作を実装します。
次に例を示します。
ノート
-
オーダー管理から履行明細の属性値(品目摘要、数量、単位、契約開始日、契約終了日など)を取得します。
-
価格設定管理作業領域で統合アルゴリズムを使用して、属性の値を単一のテキスト文字列に連結し、サービス・マッピングを使用して売掛管理にマップします。
-
売掛/未収金の請求書の摘要に文字列が表示されます。
-
販売オーダーに保証などのカバレッジ品目が含まれている場合は、カバレッジ品目の摘要に別の連結文字列を作成します。 この文字列には、カバレッジ品目の摘要に加え、対象明細の文字列と同じ属性値が含まれます。
マッピング要件が複雑すぎてサービス・マッピングのみに対応できないため、連結文字列を作成し、対象品目があるオーダー明細から必要なデータを取得する統合アルゴリズムを設定します。
この例で使用する品目を次に示します。
-
OAL_STD_01ネットワーク・ゲートウェイ・スイッチは対象品目です。
-
OAL_EW_4M_Fixed延長保証は、ゲートウェイ・スイッチをカバーするカバレッジ品目です。
設定のサマリー
-
統合アルゴリズムを作成します。
-
統合アルゴリズムに関数を追加します。
-
統合アルゴリズムにステップを追加します。
-
サービス・マッピングを管理します。
-
設定をテストします。
同様の設定のマルチメディアのデモについては、「オーダー管理の機能改善」を参照してください。 デモンストレーションは49:35から始まり、59:03に終了します。
統合アルゴリズムの作成
-
アルゴリズムを作成します。
-
Order Managementの管理に必要な権限があることを確認します。
-
価格設定管理作業領域に移動します。
-
価格設定管理作業領域で、「タスク」をクリックします。
-
Order Management Configurationで、「アルゴリズムの管理」をクリックします。
-
「アルゴリズムの管理」ページで、新しいアルゴリズムを作成します。
属性
値
名前
翻訳済摘要カスタム
説明
対象明細の摘要を取得し、請求書のカバレッジ明細の摘要に追加します。
-
-
「変数」をクリックし、「処理」>「行の追加」をクリックして値を設定します。
属性
値
名前
ARIntegration
データ型
データ・オブジェクト
必須
チェック・マークが含まれます。
Input/Output
入力と出力
内部サービス・スキーマ
FulfillmentIntegration.InvoiceService
この値は、請求書サービスから必要な属性値を取得するようにアルゴリズムに指示します。
この変数には、売掛管理との統合に必要なオブジェクト定義が格納されます。
-
「保存」をクリックします。
統合アルゴリズムへの関数の追加
演習
-
関数を追加します。
-
「関数」をクリックし、「処理」>「行の追加」をクリックして、値を設定します。
属性
値
名前
GetCoveredFromDocRef
問合せタイプ
ビュー・オブジェクト参照
説明
対象品目があるオーダー明細を識別する値を取得します。
-
引数領域で、「行の追加」をクリックし、引数を追加します。
属性
値
名前
FLineId
コメント
この引数を使用して、カバレッジ品目を含む履行明細を識別するFLineId (履行明細識別子)を送信し、対象品目を識別する値を返します。
-
「ビュー・オブジェクト問合せ」をクリックし、新しい問合せを追加します。
属性
値
アプリケーション・モジュール
oracle.apps.scm.doo.common.process.model.applicationModule. DooExtensibleMapperAM
これは事前定義済の値です。 他の値は使用しないでください。
アプリケーション構成
DooExtensibleMapperAMLocal
これは事前定義済の値です。 他の値は使用しないでください。
ビュー・オブジェクト
DocumentReferenceVO
このビュー・オブジェクトには、カバレッジ品目および対象品目のマッピング値が含まれています。
表示基準
getCoveredLine
DocumentReferenceVOビュー・オブジェクトのgetCoveredLineビュー基準は、アルゴリズムが対象品目を含む履行明細を識別するのに役立ちます。
単一行
チェック・マークが含まれます。
-
バインド変数領域で、新しいバインド変数を作成します。
属性
値
バインド変数名
flineId
バインド変数値
FLineId
-
「保存」をクリックします。
-
-
別の関数を追加します。
属性
値
名前
GetCoveredFLine
問合せタイプ
ビュー・オブジェクト参照
アプリケーション・モジュール
oracle.apps.scm.doo.common.process.model.applicationModule.DooExtensibleMapperAM
これは事前定義済の値です。 他の値は使用しないでください。
アプリケーション構成
DooExtensibleMapperAMLocal
これは事前定義済の値です。 他の値は使用しないでください。
ビュー・オブジェクト
FulfillLineVO
表示基準
getFLineByFLineId
単一行
チェック・マークが含まれます。
バインド変数名
FLineId
バインド変数値
FLineId
-
別の関数を追加します。
属性
値
名前
GetItemDesc
問合せタイプ
ビュー・オブジェクト参照
アプリケーション・モジュール
oracle.apps.scm.doo.common.process.model.applicationModule.DooExtensibleMapperAM
これは事前定義済の値です。 他の値は使用しないでください。
アプリケーション構成
DooExtensibleMapperAMLocal
これは事前定義済の値です。 他の値は使用しないでください。
ビュー・オブジェクト
oracle.apps.scm.productModel.items.publicView.ItemPVO
表示基準
GetItem
単一行
チェック・マークが含まれます。
バインド変数名
InventoryItemId,OrganizationId
バインド変数値
InventoryItemId,OrganizationId
-
「保存」をクリックします。
統合アルゴリズムへのステップの追加
アルゴリズムが現在処理しているオーダー明細に対象品目が含まれているか、カバレッジ品目が含まれているかによって、異なる方法で実行される条件ステップを追加します。
演習
-
アルゴリズム・タブをクリックし、「ステップの追加>条件付きアクション」をクリックして、値を設定します。
属性
値
名前
マップ翻訳済摘要
説明
対象品目およびカバレッジ品目の摘要を連結します。
-
データ・セット領域で、3つの新しいデータ・セットを追加します。
名前
変数パス
プライマリ
カーディナリティ
データ・セット結合
FLine
ARIntegration.FulfillLine
チェック・マークが含まれます。
空のままにします。
空のままにします。
ARLine
ARIntegration.ARInterfaceLine
チェック・マークは含まれません。
1つ
FulfillLineId:{Fline.FulfillLineId}
AllFLines
ARIntegration.FulfillLine
チェック・マークは含まれません。
複数
空のままにします。
データ・セットは、アルゴリズムがアクセスできるデータをフィルタおよび検索するのに役立ちます。
-
FLine。 アルゴリズムが摘要を保証品目に書き込むために使用する履行明細からの詳細が含まれます。
-
ARLine。 アルゴリズムが連結文字列を書き込む宛先を識別します。
-
AllFLines。 カバレッジ明細のデータを使用して、対象品目を含む履行明細から摘要を取得してください。 AllFLinesを使用すると、アルゴリズムは、対象品目を含む明細が見つかるまで、販売オーダーのすべての履行明細を走査できます。
-
-
条件の実行領域で、「条件の追加」>「ローカル変数の追加」をクリックし、2つのローカル変数を追加します。
変数名
デフォルト
CoveredFlineDocRefRow
空のままにします。
CoveredFlineRow
空のままにします。
これらの変数を使用して、データの処理中にアルゴリズムに必要な一時値を格納します。
-
条件の実行領域で、「条件の追加」>「デフォルト処理」をクリックします。
対象品目の連結文字列を作成するコードを追加します。
デフォルト処理領域で、処理ウィンドウにコードを追加します。
ARLine.TranslatedDescription = FLine.ProductDescription + ' warranty coverage ' + FLine.ContractStartDate + ' through ' + FLine.ContractEndDate
説明
コード
説明
ARLine.TranslatedDescription =
TranslatedDescriptionという名前の変数を作成し、ARLineデータ・セットに追加します。
連結文字列の値をTranslatedDescription変数に格納します。
FLine.ProductDescription
現在処理中の履行明細の摘要の値を取得します。 これは、FLineデータ・セットの対象品目の説明です。
FLine.ContractStartDate
FLineデータ・セットから対象品目の契約開始日の値を取得します。
対象品目にカバレッジを追加する場合は、カバレッジ品目ではなく対象品目の契約開始日および契約終了日を使用します。 カバレッジ品目は、1年などの期間のカバレッジを提供しますが、特定の開始日および終了日については提供しません。 かわりに、対象品目の開始日と終了日を設定します。 このようにして、様々な対象品目に対してカバレッジ品目を使用できます。
FLine.ContractEndDate
FLineデータ・セットから対象品目の契約終了日の値を取得します。
+ ' ' +
ある文字列の値を別の文字列に連結します。 これらの連結文字列の間にスペースを挿入します。
+ ' warranty coverage ' +
+ ' through ' +
ある文字列の値を別の文字列に連結します。 これらの連結文字列の間にテキストを挿入します。 たとえば、これらの連結文字列の間にフレーズ
warranty coverage
を挿入します。このアクションは、標準品目または出荷可能品目を含む履行ラインに適用されます。
このコードは、属性値を連結する方法を指定します。 このコードがレンダリングするランタイム値の例を次に示します。
Network Gateway Switch, warranty coverage 2021-03-01 through 2021-07-01
-
カバレッジ品目の連結文字列を作成するコードを追加します。
品目がカバレッジ品目である場合にのみ適用される新しい条件付き処理を追加します。 カバレッジ品目の連結は、対象品目の場合とは若干異なります。 また、対象品目がある明細から詳細を取得する必要があります。
-
条件の実行領域で、「条件の追加」>「True条件」をクリックします。
-
条件付きアクション領域で、True Conditionウィンドウでコードを追加します。
FLine.SalesProductTypeCode in ['COVERAGE','PREVENTIVE_MAINTENANCE','SERVICE_LEVEL_AGREEMENT','SOFTWARE_MAINTENANCE','INCLUDED_WARRANTY']
履行明細のSalesProductTypeCode属性は、保守契約や保証などのカバレッジ品目を明細に含めるかどうかを指定します。 そのため、このコードは、明細にカバレッジ品目が含まれている場合にのみ、この条件付き処理を実行するように指定します。
-
処理ウィンドウでコードを追加します。
CoveredFlineDocRefRow = GetCoveredFromDocRef(FLine.FulfillLineId) if (CoveredFlineDocRefRow?.DocSublineId != null) { // Locate the covered line according to DocSublineId CoveredFLineRow = AllFLines.locate([FulfillLineId: Long.parseLong(CoveredFlineDocRefRow?.DocSublineId)]) // If we can't find the covered line in memory then get it if (CoveredFLineRow == null) CoveredFLineRow = GetCoveredFLine(CoveredFlineDocRefRow?.DocSublineId) def item = CoveredFLineRow?.ProductDescription // If we can't find the description for the covered line in memory then get it if (item == null) { def itemRow = GetItemDesc(CoveredFLineRow.InventoryItemId, CoveredFLineRow.InventoryOrganizationId) item = itemRow.Description; } ARLine.TranslatedDescription = FLine.ProductDescription + ' for ' + item + ' ' + FLine.OrderedQty.toString() + ' ' + FLine.OrderedUom + ' ' + FLine.ContractStartDate + ' through ' + FLine.ContractEndDate }
説明
コード
説明
CoveredFlineDocRefRow = GetCoveredFromDocRef(FLine.FulfillLineId)
アルゴリズムで以前に作成したGetCoveredFromDocRef関数を使用して、対象品目を含む履行明細を識別する値を取得します。
アルゴリズムで以前に作成したCoveredFlineDocRefRow変数に値を格納します。
if (CoveredFlineDocRefRow?.DocSublineId!=null)
DocSublineId
に値が含まれているかどうかを確認します。 値が含まれている場合は、販売オーダーに対象明細が含まれており、その明細を処理する必要があることを意味します。CoveredFLineRow = AllFLines.locate([FulfillLineId: Long.parseLong(CoveredFlineDocRefRow?.DocSublineId)])
アルゴリズムで以前に作成したCoveredFLineRow属性の値を、対象品目を含む履行明細に設定します。
CoveredFlineDocRefRow?.DocSublineId
は、AllFLinesデータ・セットのDocSublineId
属性からこの値を取得することを意味します。if (CoveredFLineRow == null) CoveredFLineRow = GetCoveredFLine(CoveredFlineDocRefRow?.DocSublineId)
メモリーにカバー・ラインが見つからない場合は、取得します。 前に作成したGetCoveredFLine関数で
DocSublineId
属性を使用して検索し、結果を使用してCoveredFLineRowの値を対象品目を含む行に設定します。def item = CoveredFLineRow?.ProductDescription
item
という名前の変数を定義し、その値をProductDescription属性の内容に設定します。 CoveredFLineRowで識別される履行明細からProductDescriptionの値を取得します。if (item == null)
{ def itemRow = GetItemDesc(CoveredFLineRow.InventoryItemId, CoveredFLineRow.InventoryOrganizationId) item = itemRow.Description; }
item
変数が空の場合、メモリー内の対象行の説明を検索する必要があることを意味します。itemRowという名前の変数を定義します。
前にアルゴリズムに追加したGetItemDescメソッドを使用して、CoveredFLineRowに含まれる履行明細からInventoryItemId属性およびInventoryOrganizationId属性の値を取得します。 これらの値を使用して、行に品目が含まれていることを確認してから、itemRowの値をこの履行明細に設定します。
item
変数を、itemRowで識別される履行明細の摘要の値に設定します。ARLine.TranslatedDescription = FLine.ProductDescription + ' for ' + item + ' ' + FLine.OrderedQty.toString() + ' ' + FLine.OrderedUom + ' ' + FLine.ContractStartDate + ' through ' + FLine.ContractEndDate
TranslatedDescriptionという名前の変数を作成し、ARLineデータ・セットに追加します。 連結文字列の値をTranslatedDescriptionに格納します。
FLineには、現在処理している明細の属性値(カバレッジ品目)が含まれます。
-
FLine.ProductDescription
は、カバレッジ品目の摘要です。 -
item
は、デスクトップ・コンピュータなどの対象品目の説明を含む変数です。 -
FLine.OrderedQty.toString()
は、文字列に変換されたカバレッジ品目の数量です。 -
FLine.ContractStartDate
は、カバレッジ品目の開始日です。 -
FLine.ContractEndDate
は、カバレッジ品目の終了日です。
この摘要は、カバレッジ品目がある請求書明細に送られるため、カバレッジの対象となる品目を識別するのに役立ちます。
このコードがレンダリングするランタイム値の例を次に示します。
Extended Warranty 4 month fixed, for Network Gateway Switch 1 Ea 2021-03-01 through 2021-07-01
-
-
「保存してクローズ」をクリックし、「アルゴリズムの管理」タブを閉じます。
-
サービス・マッピングの管理
新しい統合アルゴリズムのデータ属性が提供されるように、サービス・マッピングを変更します。
-
サンド・ボックスを作成します。 詳細は、「サービス・マッピングを編集できるようにサンドボックスを作成」を参照してください。
-
タスク・ペインのオーダー管理構成で、「サービス・マッピングの管理」をクリックします。
-
「サービス・マッピングの管理」ページで、FulfillmentIntegrationをクリックします。
-
「ソース」をクリックします。
-
ソース列にInvoiceSourceを含む「行」をクリックします。
-
翻訳済摘要を売掛管理に送信するために使用する属性を追加します。
-
エンティティ・マッピング・リストで、エンティティ列にARInterfaceLineを含む「行」をクリックします。
-
ARInterfaceLineの詳細領域で、「処理」>「行の追加」をクリックし、値を設定します。
属性
値
属性
TranslatedDescription
ビュー・オブジェクト属性
空のままにします
式
空のままにします
-
-
履行明細の属性を追加します。
-
エンティティ・マッピング・リストで、エンティティ列にFulfillLineを含む「行」をクリックします。
-
FulfillLineの詳細領域で、新しい属性を追加します。
属性
ビュー・オブジェクト属性
SalesProductTypeCode
SalesProductTypeCode
ProductDescription
ProductDescription
OrderedQty
OrderedQty
OrderedUom
OrderedUom
ContractStartDate
ContractStartDate
ContractEndDate
ContractEndDate
-
-
アルゴリズムをコールするように、サービスの属性を設定します。
-
「サービス」をクリックします。
-
サービス列にInvoiceServiceを含む「行」をクリックします。
-
値を設定します。
実装タイプ
実装
アルゴリズム
翻訳済摘要カスタム
これは、この手順で以前に作成した統合アルゴリズムの名前です。
-
-
売掛管理に送信するペイロードにサービスが属性を含めるように、サービスに属性を追加します。
-
エンティティ・リストで、エンティティ列にARInterfaceLineを含む行をクリックします。
-
ARInterfaceLineエンティティ領域で、属性を追加します。
属性
読込み
書込み
翻訳済摘要
チェック・マークが含まれます。
チェック・マークが含まれます。
-
エンティティ・リストで、エンティティ列にFulfillLineを含む行をクリックします。
-
FulfillLineエンティティ領域で、属性を追加します。
-
SalesProductTypeCode
-
ProductDescription
-
OrderedQty
-
OrderedUom
-
ContractStartDate
-
ContractEndDate
読取り属性および書込み属性に、追加する各属性のチェック・マークが含まれていることを確認してください。
-
-
「保存してクローズ」をクリックします
-
-
アルゴリズムを公開します。
-
「タスク」をクリックし、Order Management Configurationの下の「アルゴリズムの管理」をクリック
-
「アルゴリズムの管理」ページで、名前列の翻訳済説明カスタムを含む行をクリックします。
-
「処理」→「公開」をクリックします。
-
設定のテスト
-
販売オーダーを作成します。
-
オーダー管理作業領域に移動し、販売オーダーを作成し、2つのオーダー明細を追加します。
品目
数量
OAL_STD_01ネットワーク・ゲートウェイ・スイッチ
1
OAL_EW_4M_Fixed延長保証
1
-
「送信」をクリックします
-
販売オーダー番号を確認します。 この例では、529986と仮定します。
-
-
オーダー管理がデータをOracle Receivablesに正しく送信することを確認します。
-
売掛管理の管理に必要な権限があることを確認します。 詳細は、「Order Managementの実装に必要な権限」を参照してください。
-
請求作業領域に移動し、「タスク」>「トランザクションの管理」をクリックします。
詳細は、「売掛/未収金トランザクションを完了するための要件」を参照してください。
-
「トランザクションの管理」ページで、トランザクションを検索します。
属性
値
ビジネス・ユニット
Vision Operations
トランザクション・ソース
分散オーダー・オーケストレーション
リファレンス
529986
-
「トランザクションのレビュー」ページで、「イメージだけを表示」をクリックします。
-
表示された印刷済請求書で、ネットワーク・スイッチがある請求書明細の摘要を確認します。
属性
値
説明
Network Gateway Switch, warranty coverage 2021-03-01 through 2021-07-01
この値は、対象品目の摘要と、カバレッジの開始日と終了日を連結したものです。 アルゴリズムで作成したデフォルト処理の結果です。
-
延長保証がある請求書明細の摘要を確認します。
属性
値
説明
Extended Warranty 4 month fixed, for Network Gateway Switch 1 Ea 2021-03-01 through 2021-07-01
この値は、カバレッジ品目の摘要と、対象品目の摘要、次にカバレッジ品目の数量、単位、開始日および終了日を連結したものです。
この明細にはカバレッジ品目が含まれているため、アルゴリズムの条件を満たします。 アルゴリズムで作成した条件アクションの結果です。
-