OrderPrepare コマンド
このコマンドは、オーダーの価格、割引、配送料、および税を決定することにより、オーダーを準備します。
オーダー参照番号が指定されていないと、現在の全保留オーダーが、指定のストアの現在の顧客のために準備されます。

パラメーター値
- http://host_name/path/
- (必須) WebSphere Commerce サーバーおよび構成パスの完全修飾名
- langId
- セッション期間中の優先言語を設定またはリセットします。
ストアでサポートされている言語は、STORELANG テーブルにあります。
- forUser
- このコマンドの実行対象のユーザーのログオン ID。
このパラメーターを指定できるのはオーダーを処理する権限がある人だけです。
- forUserId
- forUser と同様ですが、ユーザーは USERS テーブル中にある内部ユーザー ID によって識別されます。
- URL
- (必須) コマンドが正常に完了した時に呼び出される URL
- storeId
- オーダーが準備されるストアの参照番号。
- orderId
- 準備されるオーダーの参照番号。
このパラメーターが省略された場合、このコマンドは、現行の保留オーダーをデフォルトとします。
詳しくは、オーダーの省略形を参照してください。
- outOrderName
- リダイレクト URL に追加される、名前と値の対の名前を指定します。
追加されるそれぞれの名前と値のペアの値は、準備済みオーダーの参照番号です。
名前が指定されていない場合、デフォルト名 orderId が使用されます。
- remerge (再マージ)
- 可能であれば同じ順序と同じ correlationGroup 属性で、他の OrderItems と共にマージする OrderItems のリスト。
OrderItems は、InventoryStatus が "NALC" であるか、1 つまたは複数の allocate (割り振り)、backorder (バック・オーダー)、
および reverse (取り消し) パラメーターによって指定されなければ、マージされません。
- merge (マージ)
- correlationGroup 属性には関係なく、可能であれば同じ順序で、他の OrderItems と共にマージする OrderItems のリスト。
- check (検査)
- CheckInventory タスク・コマンドで検査する OrderItems のリスト。
- allocate (割り振り)
- 既存の在庫から割り振られる OrderItems のリスト。
- backorder
- 将来の在庫から割り振られる OrderItems のリスト。
- reverse (取り消し)
- 割り振りを解除する (つまり、必要に応じて既存または将来の在庫から割り振り解除する) OrderItems のリスト。
注: remerge (再マージ)、merge (マージ)、check (検査)、allocate (割り振り)、
backorder (バック・オーダー)、および reverse (取り消し) パラメーターは、ATP 在庫が使用可能な場合にのみ適用できます。
(STORE テーブルの ALLOCATIONGOODFOR 列を参照してください。)
それらは AllocateInventory タスク・コマンドに渡される OrderItems のリストを表しています。
そのタスク・コマンドは、以下に指定されているように CheckInventoryAvailability、AllocateExistingInventory、
AllocateExpectedInventory、DeallocateExistingInventory、および DeallocateExpectedInventory タスク・コマンドを呼び出します。 さらに、これらのパラメーターはオーダー・サブシステム・コマンド
のヘルプで詳述されている OrderItem 省略形を認めます。
以下は、デフォルトの ATP パラメーター値です:
- remerge=*
- merge=*n
- check=*n
- allocate=*
- backorder=*
- reverse=*
例
以下の例は、参照番号 1 のオーダーを準備し、OrderDisplay コマンドにリダイレクトしてこのオーダーを表示します。
http://myhostname/webapp/wcs/stores/servlet/OrderPrepare?orderId=1
&URL=/webapp/commerce/OrderDisplay
動作
- 指定したオーダーを (OrderDisplay コマンドによって) 表示するか、
あるいは (OrderProcess コマンドによって) 処理するために準備します。
オーダー番号が指定されていないと、このコマンドは、指定のストアに属している現在の顧客の現在の全保留オーダーを準備します。
- 指定したオーダーの状況は、'P'、'I'、'E'、'W'、または 'N' のいずれかでなければなりません。
- OrderPrepare コマンドは PrepareOrder タスク・コマンドを呼び出し、
指定したオーダーごとに以下の処理を行います。
- 生成されたオーダー・アイテムを削除します (ORDERITEMS テーブルの PREPAREFLAGS 列を参照)。
- オーダー内のすべてのオーダー・アイテムが購入可能であるか確認してください (CATENTRY テーブルの BUYABLE 列を参照)。
- ATP 在庫割り振りが使用可能な場合 (STORE テーブルの ALLOCATIONGOODFOR 列を参照)、
AllocateInventoryタスク・コマンドを呼び出して、
ATP パラメーター (merge (マージ)、remerge (再マージ)、check (検査)、allocate (割り振り)、 backorder (バック・オーダー)、および reverse (取り消し)) によって識別される OrderItem を処理し、
割り振り済みオーダー・アイテムまたはバック・オーダー・アイテムに関する見積使用可能時間、配送オフセット、および配送センターを入手します。
このタスク・コマンドで、オーダー・アイテムを分割することもできますし、マージすることもできます。
このタスク・コマンドのデフォルトのインプリメンテーションでは、
GetEligibleFulfillmentCenters、
CheckInventoryAvailability、
AllocateExistingInventory、
AllocateExpectedInventory、
DeallocateExistingInventory、
および DeallocateExpectedInventory タスク・コマンドを呼び出して、
ATP パラメーターで指定された操作を実行します。
これらのタスク・コマンドは、RECEIPT、
RADETAIL、およびその関連テーブルを呼び出して、
既存の在庫の可用性および予定在庫の可用性を判別します。
- ATP 在庫が使用可能でない場合は、
ResolveFulfillmentCenter タスク・コマンドを呼び出し、
在庫の可用性に基づいて、各 OrderItem に配送センターを割り振ります。
このタスク・コマンドのデフォルトのインプリメンテーションでは、
CheckInventory タスク・コマンドを呼び出して、
在庫の可用性を判別します。
CheckInventory タスク・コマンドのデフォルトのインプリメンテーションでは、
INVENTORY テーブルを使用します。
- ValidateDynamicKitConfiguration タスク・コマンドを呼び出します。
- GetContractSpecialPrice タスク・コマンドを呼び出すか、
あるいはそれが定義されていない場合は GetBaseSpecialPrice タスク・コマンドを呼び出すことによって、
手動でオーバーライドされた価格 (ORDERITEMS テーブルの PREPAREFLAGS 列を参照) を持つ単価を除く、
各オーダー・アイテムごとの新規の単価を入手します。
- 各オーダー・アイテムごとの単価に数量を掛け、それを ORDERITEMS テーブルの TOTALPRODUCT 列に保管します。
- STENCALUSG テーブルの USAGEFLAGS 列で示される計算方法で、
金額を再計算します。
最初に、STENCALUSG テーブルの CALMETHOD_ID_INI 列で示されるすべてのメソッドが呼び出されます。
次に、CALMETHOD_ID_APP 列で示されるすべてのメソッドが呼び出されます。
下位互換性を保つため、フラグが使用法 -1 に設定されている場合、
CMDREG テーブルで定義されていれば、
STENCALUSG テーブルの CALMETHOD_ID_APP 列に示されるメソッドの代わりに ApplyOrderAdjustments タスク・コマンドが呼び出されます。
下位互換性を保つため、このフラグが使用法 -2 に設定されている場合、CMDREG テーブルで定義されていれば、
CALMETHOD_ID_APP 列に示されるメソッドの代わりに ApplyOrderShippingCharges タスク・コマンドが示されます。
下位互換性を保つため、このフラグが使用法 -3、-4 に設定されている場合、CMDREG テーブルで定義されていれば、
STENCALUSG テーブルの CALMETHOD_ID_APP 列で示されるメソッドの代わりに ApplyOrderTaxes タスク・コマンドが呼び出されます。
- それぞれの配送先住所ごとにサブオーダー (SUBORDERS テーブルの行) を再計算した後、
CALUSGAEFLAGS 列で示される各計算方法ごとに STENCALUSG テーブルの CALMETHOD_ID_SUM 列で示されるメソッドを呼び出すことによって、
各サブオーダーごとに再計算された情報を合計します。
- オーダーが OrderProcess コマンドに対して準備が整っていることを示すために、そのオーダーをロックします。
ロックは、有効期限が切れるか、(OrderItemUpdate コマンドを使用するなどして) Order を変更するか、
あるいは明示的に OrderUnlock コマンドを使用することによって、リセットできます。
ロックの有効期限は、STORE テーブルの QUOTEGOODFOR 列に保管されています。
例外条件
- オーダーが指定したパラメーターと一致しないと、コマンドは、ErrorOrderNoneCmd エラー表示コマンドを指定して ECApplicationException例外をスローします。
- オーダーの商品またはアイテムのいずれも購入可能でないと、このコマンドは、 BadOrderDataErrorView エラー表示コマンドを指定して ECApplicationException 例外をスローします。
オーダー・エラーの例外条件について詳しくは、オーダー・エラー表示のエラー・コードを参照してください。
- 以下の条件のいずれかが真である場合には、このコマンドは ECApplicationException 例外をスローして、
RetrievePriceErrorView エラー表示コマンドを指定します。
- 入力取引条項 (契約) が無効あるいは使用に適格でない。
- オーダーで使用されている取引条項 (契約) が非互換の支払いメソッドに該当する。
- 価格表が商品またはアイテムについて全く検索できない。
- STENCALUSG テーブルの USAGEFLAGS 列で示される計算のいずれかで各オーダー・アイテムの値が順番に計算されず、
STENCALUSG テーブルの USAGEFLAGS 列で値を計算する必要がある場合、ECApplicationException 例外が出されます。
- Order に OrderItem がない場合、ECApplicationException 例外が出されます。