顧客に報酬を与えるプロモーション品目の追加
大きい数量を購入した顧客に報酬を与える品目を販売オーダーに追加します。
たとえば、顧客がAS54888デスクトップ・コンピュータに対して数量5をオーダーした場合、同じオーダーの別のオーダー明細に無料のAS9000ルーターを追加します。
設定のサマリー
オーダー管理拡張または製品変換ルールを使用して、プロモーション品目を追加できます。 これを行うには、オーダー管理拡張と製品変換ルールを同時に使用しないことをお薦めします。
-
拡張を作成するか、製品変換ルールを作成します。
-
設定をテストします。
拡張機能の作成
- createLineParamsメソッドのsetProductNumberパラメータを使用して、追加する品目を指定します。
- createLineParamsのsetOrderedQuantityパラメータを使用して、追加する品目の数量を指定します。
- IF文を使用して、新規明細を追加するかどうかを決定するしきい値として使用する数量を指定します。
- createLineParamsを使用して、追加する新しい行にProductNumber、OrderedUOMおよびOrderedQuantity属性を設定できます。 これを使用して他の属性を設定することはできません。 変換後ルールを使用して、他の属性の値を設定できます。
たとえば:
import oracle.apps.scm.doo.common.extensions.CreateLineParams;
if (!"SUBMIT_AFTR_VALID".equals(header.getAttribute("CustomerPONumber"))) return; /* This line is only for testing purposes. Remove it after you successfully test this extension.*/
def createLineParams = new CreateLineParams();
createLineParams.setProductNumber("AS9000");
/* Specify the item.
that you want to add on the new line.*/
createLineParams.setOrderedUOM("Each")
createLineParams.setOrderedQuantity(1); /* Specify the quantity for the item that you're adding on the new line. */
def lines = header.getAttribute("Lines");
while (lines.hasNext()) {
def line = lines.next();
def isClosed = line.isClosed()
def isCanceled = line.isCanceled()
def isTransformed = line.isTransformed()
def transformLines = line.getTransformedLines();
if (isClosed || isCanceled || isTransformed || transformLines.size() != 0) {
continue;
}
if (line.getAttribute("ProductNumber") == AS54888 && line.getAttribute("OrderedQuantity") >= 5)
/* Specify the quantity that you want to use as the threshold that determines when to add a new line. */
{
line.createNewLine(createLineParams);
}
}
詳細は、オーダー管理機能拡張の作成の概要を参照してください。
製品変換ルールの作成
演習
-
在庫品目のIDを取得します。
-
SQLを実行します。
SELECT DISTINCT item_number, inventory_item_id FROM fusion.egp_system_items_b WHERE upper(item_number) LIKE '&ITEM_NUMBER%')
詳細は、「SQLを使用したオーダー管理データの問合せ」を参照してください。
-
問合せ結果で、ITEM_NUMBER列でAS54888を含む行を見つけます。 問合せでこれらの値が返されるとします。
ITEM_NUMBER
INVENTORY_ITEM_ID
AS54888
300000001688530L
AS9000
300000003387164L
-
-
「設定および保守」作業領域に移動してから、タスクに移動します。
-
オファリング: オーダー管理
-
機能領域: オーダー
-
タスク: 製品変換ルールの管理
-
-
「製品変換ルールの管理」ページで、新しいルールを作成します。
拡張モードを使用しないでください。
-
If領域で、条件を設定します。
コード
説明
OrderTransformationRules.FulfillLineVO.InventoryItemId is 300000001688530L
FulfillLineVOは、履行明細の属性の実行時値を含む仮想オブジェクトです。 オーダー管理では、販売オーダーの作成時にFulfillLineVOが移入されます。
この文は、InventoryItemId属性の値を取得することを示します。 この属性はFulfillLineVO仮想オブジェクト(VO)にあり、OrderTransformationRulesディクショナリにはFulfillLineVOが含まれます。
InventoryItemId属性に300000001688530L (AS54888デスクトップ・コンピュータ)が含まれている場合は、このルールの次の条件に進みます。 そうでない場合は、ルールを終了します。
OrderTransformationRules.FulfillLineVO.OrderedQty is same or more than 5
OrderedQty属性の値を取得します。
OrderedQty属性の値が5以上の場合は、このルールのThen文に進みます。 そうでない場合は、ルールを終了します。
-
Then領域で、新しいアクションを追加します。
コード
説明
Assert New OrderTransformationRules.AddNewOrderLine
新しいオーダー明細を販売オーダーに追加します。
newItemId: 300000003387164L
Visionルーターである300000003387164L品目をオーダー明細に追加します。
新規オーダー明細などの新規オブジェクトを追加するには、新規アサートを使用します。
viewRowImpl:OrderTransformationRules.FulfillLineVO.viewRowImpl
viewRowImpl:FLine.ViewRowImplを使用して、ランタイム値を含む行を指定します。
-
「保存>リリース」をクリックします。
詳細は、「オーダー管理でのビジネス・ルールの使用の概要」を参照してください。
設定のテスト
-
別のブラウザに戻り、販売オーダーを作成します。
-
オーダー明細を追加します。
属性
値
項目
AS54888
数量
5以上
-
「送信」をクリックします。
-
オーダー管理が新しいオーダー明細を追加したことを確認します。
属性
値
項目
AS9000ルーター
数量
1
価格
0