Oracle Advanced Pricingインプリメンテーション・マニュアル リリース12 E05612-01 | ![]() 目次 | ![]() 前へ | ![]() 次へ |
この章では次のトピックについて説明します。
モディファイアまたは価格の実績値は、Get_Custom_Price機能を使用して計算されます。次に、Get_Custom_Price機能の例を示します。ここでは、自社の価格は、競合他社の価格より5%低く(競合他社の価格の95%)、その競合他社の価格は、別のカスタム・データベースまたはPL/SQL呼出しから取り出されています。
Get_Custom_Priceの実装に必要なタスクの概要を、次の図に示します。
Get_Custom_Priceの実装の概要
qp_custom.get_custom_priceに拡張コードを書き込みます。get_custom_priceを使用する場合は、qp_customのパッケージ本体を作成してから、「機能Get_Custom_Price」を作成する必要があります。価格設定エンジンは、次のパラメータ・セットを使用してApplication Programming Interface(API)のqp_custom.get_custom_priceを呼び出します。
P_price_formula_id: IN NUMBER
算式IDは、APIが呼び出された算式を識別します。
P_list_price: IN NUMBER
P_price_effective_date: IN DATE
P_req_line_attrs_tbl: IN QP_FORMULA_PRICE_CALC_PVT.REQ_LINE_ATTRS_TBL)
P_req_line_attrs_tblは、製品、価格設定属性、クオリファイア、および特殊属性などの情報を提供します。次のフィールドが含まれています。
Line_index: 価格要求明細の明細索引
Attribute_type: クオリファイア、製品、価格設定
コンテキスト: コンテキスト名(品目など)
属性: 属性名(Pricing_attribute1など)
Value_from: 属性値(149など)
ステップ番号
特殊属性は、算式明細のステップ番号など、その他の役に立つ情報を提供します。Get_Custom_Priceを使用する算式に複数のステップがある場合、ステップ番号が重要です。算式のステップ番号は、GET_CUSTOM_PRICE APIで使用できます。ステップ番号情報は、attribute_type=QP_GLOBALS.G_SPECIAL_ATTRIBUTE_TYPE、context=QP_GLOBALS.G_SPECIAL_CONTEXT、attribute=QP_GLOBALS.G_SPECIAL_ATTRIBUTE1の最終レコードと同様、p_req_line_attrs_tblの値として渡されます。
DML(挿入/更新/削除)操作は、get_custom_priceルーチンではサポートされません。エンジン変数がget_custom_price機能で参照されている場合、価格設定エンジンは、アップグレードの可能性を保証しません。
注意: ステップ番号情報は、attribute_type=QP_GLOBALS.G_SPECIAL_ATTRIBUTE_TYPE、context=QP_GLOBALS.G_SPECIAL_CONTEXT、attribute=QP_GLOBALS.G_SPECIAL_ATTRIBUTE1の最終レコードと同様、p_req_line_attrs_tblの値として渡されます。
GET_CUSTOM_PRICEの例
CREATE or REPLACE PACKAGE BODY QP_CUSTOM AS
FUNCTION Get_Custom_Price (p_price_formula_id IN NUMBER,
p_list_price IN NUMBER,
p_price_effective_date IN DATE,
p_req_line_attrs_tbl IN QP_FORMULA_PRICE_CALC_PVT.REQ_LINE_ATTRS_TBL)
RETURN NUMBER
is
BEGIN
if p_price_formula_id = 7538 then
return 14.01;
end if;
end get_custom_price;
END QP_CUSTOM;
プロファイル「GET_CUSTOM_PRICEのカスタマイズ」の値を設定します。
エンジンが、get_custom_price機能を呼び出すのは、プロファイル「GET_CUSTOM_PRICEのカスタマイズ」が「Y」に設定されている場合のみです。算式を設定し、プロファイルを設定しない場合は、実行時エラーが表示されます。プロファイルをサイト・レベルで設定します。
get_custom_price機能を使用するための算式を作成します。
次に、「価格設定算式」ウィンドウを示します。
「価格設定算式」ウィンドウ:
「ヘルプ」、「検証」を使用して、formula_idを必ずメモしてください。get_custom_price機能でこの算式IDを使用して、算式を識別します。
この算式を価格表明細に添付します。
次に、Oracle Advanced Pricingの「価格表」ウィンドウを示します。
「価格表」ウィンドウ
次のサンプル・コードは、Get_Custom_Price機能の本体をQPXCUSTB.plsファイルでコーディングする方法を示しています。ユーザーは、Get_Custom_Priceの機能仕様に加えて、QPXCUSTS.plsにあるタイプ定義を使用する必要があります。
Get_Custom_Priceのパラメータは、常に固定されており、カスタマイズできません。ユーザーが各自のカスタム・コードで使用できるのは、価格設定エンジンによって渡された入力パラメータです。この機能は、数値を戻します。ユーザーは、機能をコード化して希望する値(数値)を戻すことができます。この戻り値は、算式の評価で使用されます。
たとえば、式1×2を含む算式があるとします。1と2はステップ番号です。各ステップ番号は、1つの算式明細に対応しています。各算式明細にはタイプが1つあります。
ステップ1は、定数値タイプの算式明細に対応し、200個のコンポーネントが含まれており、ステップ2は、ファンクション・タイプの算式明細に対応しています。QP_CUSTOM.Get_Custom_Price機能によって戻された値は、このステップの値として使用されます。
算式を評価するために、価格設定エンジンは、最初に各ステップの値を取得し、式のステップをその値で置換します。ステップ1は、値200によって置換されます。ステップ2は、ユーザーがカスタマイズしたGet_Custom_Priceによって戻された値で置換されます(このGet_Custom_Price機能を使用するには、前述のプロファイル・オプションも「Yes」に設定する必要があります)。
Get_Custom_Priceがパッケージ本体Qp_customとしてカスタマイズされているとします。Get_Custom_Price機能名とパラメータはカスタマイズできませんが、その本体はカスタマイズできます。次にパラメータを示します。
p_price_formula_id: Get_Custom_Price機能を使用する算式の主キー。
p_list_price: Get_Custom_Priceを使用する算式を添付する価格表明細の定価。これにはNULL値を指定できます。
p_price_effective_date: 価格設定エンジンによる算式評価の日付。
p_req_line_attrs_tbl: 製品属性と価格設定属性のコンテキスト、属性、属性値のレコードとタイプ(製品属性または価格属性)が格納されたPL/SQL表。エンジンは、算式が添付されている現行明細の価格属性と製品属性を渡します。
パラメータは、価格設定エンジンによって機能に渡されるため、機能本体で使用できます。
FUNCTION Get_Custom_Price (p_price_formula_id IN NUMBER,
p_list_price IN NUMBER,
p_price_effective_date IN DATE,
p_req_line_attrs_tbl IN QP_FORMULA_PRICE_CALC_PVT.REQ_LINE_ATTRS_TBL)
RETURN NUMBER IS
v_requested_item VARCHAR2(240);
v_weight NUMBER;
l_step_number NUMBER;
BEGIN
IF
p_price_formula_id = 1726 -- Assume this is the internal Id/primary key for the sample Formula 1*2
THEN
Loop through the PL/SQL table of records passed by the Engine as an input parameter and containing Pricing Attributes and Product Attributes of the Price List Line or Modifier Line to which the current formula is attached.
FOR i IN 1.p_req_line_attrs_tbl.count LOOP
IF p_req_line_attrs_tbl(i).attribute_type = PRODUCT
AND
p_req_line_attrs_tbl(i).context = ITEM
AND
p_req_line_attrs_tbl(i).attribute = PRICING_ATTRIBUTE1
THEN
For this combination of Product Context and Attribute, the Attribute Value is the Inventory Item Id v_requested_item:= p_req_line_att rs_tbl(i).value;
END IF;
IF p_req_line_attrs_tbl(i).attribute_type = PRICING
AND
p_req_line_attrs_tbl(i).context = MIXED
AND
p_req_line_attrs_tbl(i).attribute = PRICING_ATTRIBUTE4
THEN
For this combination of Pricing Context and Attribute, let's say, the Attribute Value is the Weight of the item to which the formula is attached.
v_weight:= p_req_line_attrs_tbl(i).value;
For this combination of Special Context and Attribute, the Attribute Value is the Step Number of the formula line
IF p_req_line_attrs_tbl(j).attribute_type=QP_GLOBALS.G_SPECIAL_ATTRIBUTE_TYPE
and p_req_line_attrs_tbl(j).context=QP_GLOBALS.G_SPECIAL_CONTEXT
and p_req_line_attrs_tbl(j).attribute=QP_GLOBALS.G_SPECIAL_ATTRIBUTE1 THEN
l_step_number:=p_req_line_attrs_tbl(j).value;
END IF;
END LOOP; For Loop
RETURN v_weight;
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END Get_Custom_Price;
END QP_CUSTOM;
v_weightに値1.2がある場合、Get_Custom_Priceは値1.2を戻します。価格設定エンジンは、算式を200×1.2=240と評価します。