拡張、ルールおよび制約での明細のフィルタ
オーダー管理拡張またはビジネス・ルールの作成時に改訂しない明細を除外し、履行明細で許可する変更を制約するようにしてください。
たとえば:
-
まだ進行中の履行明細の値を変更するビジネス・ルールを作成した場合は、取消済、クローズ済、バックオーダー中、またはOrder Managementが請求にすでに送信した明細をフィルタで除外します。
-
配送済のオーダー・ラインをフィルタリングします。 たとえば、受入済で返品明細用に搬送済のアウトバウンド明細またはアウトバウンド明細について、すでに出荷済の明細をフィルタで除外します。
-
フィルタにより、請求属性に加えた変更(たとえば、オーダー明細の「請求」タブ)のみを処理し、オーダー明細を請求にまだ送信していない場合にのみ処理します。 たとえば、会計基準、支払条件、売掛/未収金トランザクション・タイプなどのみを変更します。 その他の属性は変更しないでください。
-
NullPointerExceptionエラーを回避します。 ロジックが計算の一部として属性値の使用に依存する場合は、値を含まない属性を含む行をフィルタで除外します。
-
明細カテゴリ・コードに従ってフィルタします。 たとえば、返品明細ではなくオーダー明細のみを処理するには、ORDERに従って履行明細のcategoryCode属性をフィルタします。 返品のみを処理するには、値RETURNに従ってフィルタします。
-
オーダー管理拡張、変換前ルールまたは変換後ルールを使用して属性のデフォルト値を設定する場合は、会計基準属性および請求ルール属性の値を移入するときに、元の返品を参照する履行明細をフィルタで除外します。
役立つ可能性のある詳細を次に示します。
-
出荷できない明細をフィルタで除外します。 保証など、出荷不可の品目を出荷しようとしないでください。 出荷不可の行をフィルタで除外する例は、「オーケストレーション・プロセス・ステップの履行明細の選択」を参照してください。
-
契約など、カバレッジ品目を参照する明細をフィルタで除外します。 予約とは、在庫に品目を予約することを意味します。 契約は物理品目ではないため、在庫に格納しないため、予約しないでください。 詳細は、「明細選択ルールでの拡張可能フレックスフィールドの使用例」を参照してください。
-
アウトバウンド販売オーダーで出荷しない返品明細をフィルタで除外します。 詳細は、「出荷返品明細からのオーケストレーション・プロセスの防止」を参照してください。
-
すでに取引コンプライアンスに合格した明細をフィルタで除外します。 明細が渡された場合は、取引コンプライアンスの明細をスクリーニングするリクエストを送信しないでください。 詳細は、「明細選択ルールでの拡張可能フレックスフィールドの使用」を参照してください。
オーダー管理拡張でのフィルタの作成
Order Managementが現在履行している明細を改訂し、クローズ済、取消済、出荷済、またはOrder Managementがすでに売掛/未収金に送信されている明細を改訂したくないとします。 行をフィルタする拡張を記述します。
//
//===========================================================
import oracle.apps.scm.doo.common.extensions.ValidationException;
def lines = header.getAttribute("Lines");
while( lines.hasNext() ) {
def line = lines.next();
Long referenceFlineId = line.getAttribute("ReferenceFulfillmentLineIdentifier");
// If the reference line is null then this isn't a revision.
if(referenceFlineId != null) {
// Get running line if this is a revision.
def runningLine = getLinesFromRunningOrder(referenceFlineId);
if( runningLine == null ) {
// We have an error condition. No fline found with referenceFlineId.
throw new ValidationException("Something's not right. Couldn't find line using reference fline id.");
}
if (runningLine.getAttribute("FulfillLineStatusCode") == "CLOSED" ||
runningLine.getAttribute("FulfillLineCanceledFlag") == "Y" || //Line is cancelled.
runningLine.getAttribute("FulfillLineShippedQty") != null || //Line is shipped.
runningLine.getAttribute("FulfillLineInvoiceInterfacedFlag") == "Y" ){ //Line is interfaced to invoicing.
// This line isn't valid for setting default values.
continue;
}
}
else {
// This sales order doesn't have a revision.
//Its ok to set the default value for attributes.
}
//Put your defaulting logic here.
//line.setAttribute(<attribute name>, <value>);
}
Object getLinesFromRunningOrder(Long runningLineId) {
// Create an instance of the FulfillLinePVO public view object (PVO).
def flinePVO = context.getViewObject("oracle.apps.scm.doo.publicView.analytics.FulfillLinePVO");
// Create a view criteria object.
def vc = flinePVO.createViewCriteria();
// Create a view criteria row.
def vcrow = vc.createViewCriteriaRow();
// Set query conditions on the view criteria row.
vcrow.setAttribute("FulfillLineId", runningLineId);
vc.add(vcrow);
def rowset = flinePVO.findByViewCriteriaWithBindVars(vc, -1, new String [0], new String [0]);
if (rowset.hasNext()) {
def fline = rowset.first();
return fline;
}
}
ビジネス・ルールでのフィルタの作成
変換前ルール、変換後ルール、明細選択基準、割当ルールなど、履行明細をフィルタするビジネス・ルールを作成します。
明細選択基準の例を次に示します。
明細選択基準により、出荷できない明細がフィルタで除外されるため、Order Managementでは、出荷システムやOracle Global Order Promisingなどの出荷可能明細を処理する出荷可能明細のみが履行システムに送信されます。
ノート
-
設定およびメンテナンス作業領域のオーケストレーション・プロセス定義の管理タスクを使用します。
-
明細選択基準を使用して、ルールを追加します。
-
必要に応じて、出荷可能なオーケストレーション・プロセス・ステップごとにルールを追加します。 たとえば、品目が保証の場合、出荷可能ではありません。 出荷可能ではない明細をフィルタで除外するには、スケジュール・ステップ、予約の作成ステップ、出荷リクエストの作成ステップなど、スケジュール、予約または出荷タスクを参照する各ステップにルールを追加することをお薦めします。
-
If文全体がスクリーン・キャプチャに表示されません。 文全体は次のとおりです:
-
DooSeededOrchestrationRules.DOOFLine.categoryCode is "ORDER"
-
DooSeededOrchestrationRules.DOOFLine.shippableFlag is "Y"
-
-
履行明細を選択するためにビジュアル情報ビルダーを使用することはできません。 オーケストレーション・プロセスを編集し、Oracle Business Rulesを使用する必要があります。
-
nonKitModelFlag属性に明細選択基準にYが含まれ、オーダー明細に構成モデルが含まれ、モデルにキットが含まれている場合、ルールは明細を選択して処理します。
-
ルールのIf文を次に示します。
If DooSeededOrchestrationRules.DOOFLine.nonKitModelFlag is Y
-
nonKitModelFlagは一時属性です。 データはアクティブな作業メモリーにのみ存在するため、後からダウンストリーム履行でアクセスすることはできません。
-
変換前ルールの例
行のフィルタ処理後にのみ、属性の値を設定する変換前ルールを記述します。 たとえば:
-
オーダー明細がクローズ済、取消済、出荷済または請求にすでに送信されていない場合は、リクエスト出荷日属性のデフォルト値を設定します。
変換後の規則の詳細については、「変換ルールの概要」を参照してください。
履行明細で許可する変更の制約
ノート
-
設定およびメンテナンス作業領域の処理制約の管理タスクを使用します。
-
エンティティ属性をオーダー履行明細に設定します。
-
詳細領域を使用してフィルタを追加します。
履行明細がクローズ済または取消済の場合、またはOrder Managementで出荷済または請求済の場合は、ユーザーに出荷先サイトなどの明細の値を変更させないとします。
属性名
検証操作
値文字列
取消済
次と等しい
Yes
請求済
次と等しい
Yes
出荷数量
nullでない
-
ステータス
次と等しい
クローズ
特定の基準を満たす明細の支払条件を含まない販売オーダーをユーザーが発行できないようにする制約を作成することもできます。 たとえば、明細が返品明細ではないか、明細が転送用です。 詳細は、「販売オーダーに支払条件を表示」を参照してください。