• 検索結果がありません。

ショッピング・カートの実装

ドキュメント内 ATG Web Commerceストア設定ガイド (ページ 144-182)

Revoke Promotion

11 ショッピング・カートの実装

Oracle ATG Web Commerceのショッピング・カートは、INCOMPLETE状態にあるOrderです。ショッピング・

カートには、特定の顧客が注文したいと考えている品目およびその品目に関連付けられた数量と価格に関 する情報が格納されます。さらに、オーダーの出荷情報と支払情報もショッピング・カートに格納されます。

この章では、ページ開発者を対象として、コマース・サイトでショッピング・カートを管理する方法を説明しま す。この章には、次の項があります。

ShoppingCartコンポーネントの理解

顧客の現在のショッピング・カートおよび保存されているショッピング・カートを格納する

ShoppingCartコンポーネントに関する情報が記載されています。

ショッピング・カートの管理

ショッピング・カートの取得、作成、変更および保存に関する情報が記載されています。

この章で提示しているコード例の大半は、Commerceサンプル・カタログ内のJSPから引用されています。サ ンプル・カタログおよびサンプル・カタログを実行する方法の詳細は、サンプル・カタログについてを参照し てください。

ショッピング・カートを管理する方法を示す追加の例については、Motorpriseストア・リファレンス・アプリケー ションを参照できます。ATG Web Commerceビジネス・コマース・リファレンス・アプリケーション・ガイドを参 照してください。

Oracle ATG Web Commerceの複数サイト機能を使用している場合は、ショッピング・カートが(顧客が最初

の品目を追加したときに)ショッピング・カートが作成されたサイト、個々の品目が追加されたサイトおよび最 新のアクティビティが発生したサイトを追跡することに注意してください。複数サイトのカート構成はSite Administrationを介して実行されます。詳細は、『ATG Web Commerce Multisite Administration Guide』を 参照してください。

注意: ショッピング・カートは定義上INCOMPLETE状態にあるOrderであるため、この章では、「ショッピン グ・カート」と「オーダー」という用語が同じ意味で使用されます。

ShoppingCart コンポーネントの理解

ShoppingCartコンポーネントは、顧客のショッピング・カートを格納し、管理する役割を担います。このコン

ポーネントは、購買プロセス中に使用される顧客の現在のショッピング・カートを保守し、その顧客が保持し ている他のショッピング・カートがあれば、それを格納します。これらのショッピング・カートは、Oracle ATG Web Commerceオブジェクト・モデルのatg.commerce.order.Orderオブジェクトに相当し、オーダー・リ ポジトリ内のオーダー品目に相当します。

/atg/commerce/ShoppingCartコンポーネントは、デフォルトで、atg.commerce.order.OrderHolder のセッション限定インスタンスになります。次の表で、このコンポーネントの重要なプロパティを説明します。

プロパティ名 プロパティのタイプ 説明

current Order 現在のOrderオブジェクト。nullの場合は、

新規のOrderが自動的に作成されます。

currentEmpty boolean trueであれば、現在のOrderがnullである

か、現在のオーダーにCommerceItemsが含 まれていません。

currentExists boolean trueであれば、現在のOrderが存在します。

currentTransient boolean trueであれば、現在のOrderがnullである

か、一時オーダーです。

empty boolean trueであれば、現在のオーダーおよび保存さ

れているオーダーのコレクションの両方が空 です。

failoverRecoveryPricing Operation

String フェイルオーバーのときに実行する操作。デ

フォルト設定はORDER_TOTALです。

handlerOrderId String Orderを識別します。

last Order 最後に完了したOrder。Orderが精算のた

めに発行されると、ShoppingCart.current 内のOrderがShoppingCart.lastに移動 し、ShoppingCart.currentプロパティが再 初期化されます。

orderType String 新規Orderを作成するときに作成されるオー

ダーのタイプ。

この機能は、デフォルトで

/atg/commerce/order/OrderTools.

defaultOrderTypeに設定されています。

persistOrders boolean trueであれば、Orderが保持されています。

repriceAfterFailover Recovery

boolean trueであれば、フェイルオーバー・リカバリ後、

Orderが再価格設定されます。

restorableOrders RestorableOrders セッション・バックアップを介して復元できる

オーダーのセット。

プロパティ名 プロパティのタイプ 説明

saved Collection ユーザーの保存されているショッピング・カー

トのCollection。

アプリケーションがShoppingCart.savedか らShoppingCart.currentへカートを移動 するときは、

atg.commerce.order.OrderHolderで提 供されているハンドル・メソッドを使用する必 要があります。詳細は、『ATG Web

Commerce Platform API Reference』を参照し てください。

savedEmpty boolean trueであれば、保存されているショッピング・

カートのCollectionがnullまたは空です。

ショッピング・カートの管理

この項では、次のショッピング・カート関連タスクについて説明します。

ショッピング・カートの作成と取得 ショッピング・カートへの品目の追加 ショッピング・カートへの出荷情報の追加 ショッピング・カートへの支払情報の追加 ショッピング・カートの再価格設定 ショッピング・カートの保存

ショッピング・カートの作成と取得

この章で前述したように、ShoppingCartコンポーネントは、ユーザーの現在のショッピング・カートおよび 保存されているショッピング・カートを格納します。ShoppingCartコンポーネントのプロパティとハンドル・メ ソッドを使用して、新規のショッピング・カートを作成したり、ユーザーの保存されているショッピング・カートの 1つを取得し、それをユーザーの現在のショッピング・カートに変換したりできます。

次のJSPの例は、ショッピング・カートを作成し、取得する方法を示しています。この例では、

ShoppingCart.savedEmptyプロパティを確認して、現在のユーザーが保存されているショッピング・カー

トを持っているかどうかを判断します。ユーザーが保存されているショッピング・カートを持っていない場合は、

ショッピング・カートを作成するという選択肢がユーザーに与えられます。ユーザーが保存されているショッピ ング・カートを持っている場合は、保存されているショッピング・カートのいずれかを選択して、それを削除す るか現在のショッピング・カートに変換する、保存されているすべてのショッピング・カートを削除する、または 新規ショッピング・カートを作成するという選択肢がユーザーに与えられます。

<dsp:importbean bean="/atg/commerce/ShoppingCart"/>

<dsp:droplet name="/atg/dynamo/droplet/Switch">

<dsp:param bean="ShoppingCart.savedEmpty" name="value"/>

<dsp:oparam name="true">

<!-- since there are no saved carts, we cannot switch to another so we only give them the option to create a new cart -->

<dsp:input bean="ShoppingCart.create" value="Create" type="submit"/>

another shopping cart </dsp:oparam>

<dsp:oparam name="false">

<!-- We have other shopping carts, so let them do everything -->

Shopping Cart <dsp:select bean="ShoppingCart.handlerOrderId">

<dsp:droplet name="ForEach">

<dsp:param bean="ShoppingCart.saved" name="array"/>

<dsp:param value="savedcart" name="elementName"/>

<dsp:oparam name="output">

<dsp:getvalueof id="option26" param="savedcart.id"

idtype="java.lang.String">

<dsp:option value="<%=option26%>"/>

</dsp:getvalueof><dsp:valueof param="savedcart.id"/>

</dsp:oparam>

</dsp:droplet>

</dsp:select>:

<dsp:input bean="ShoppingCart.switch" value="Switch" type="submit"/> to, <dsp:input bean="ShoppingCart.delete" value="Delete" type="submit"/> or <dsp:input bean="ShoppingCart.create" value="Create" type="submit"/>

another shopping cart.<BR>

<dsp:input bean="ShoppingCart.deleteAll"

value="Delete All Shopping Carts" type="submit"/>

</dsp:oparam>

</dsp:droplet>

</dsp:form>

オーダーの取得の実装

OrderLookupサーブレットBeanを使用して、ユーザーの不完全なオーダー(つまりショッピング・カート)を

取得できます。OrderLookupを使用すれば、1つのオーダー、特定のコスト・センターに割り当てられてい るすべてのオーダー、特定のユーザーが確定したすべてのオーダーまたは特定のユーザーが確定し、

INCOMPLETEなど、特定の状態にあるすべてのオーダーを取得できます。

目的のショッピング・カートをShoppingCart.currentへ移動したら、ForEachサーブレットBeanを使用 して、カート内の商品に対する繰り返し処理を実行し、商品を表示できます。次のJSPのコード例は、それ を実行する方法を示しています。この例では、ユーザーがカートから任意の品目を削除できるように、個々 の品目の横にチェック・ボックスがレンダリングされます。同様に、ユーザーが任意の品目の数量を変更でき るように、個々の品目の横にテキスト・ボックスがレンダリングされます。

<droplet bean="ForEach">

<param name="array" value="bean:ShoppingCart.current.commerceItems">

<param name="elementName" value="item">

<oparam name="output">

<tr valign=top>

<td>

<input type="checkbox" unchecked

bean="CartModifierFormHandler.removalCatalogRefIds"

value="param:item.catalogRefId">

</td>

<td>

<input size=4 name="param:item.catalogRefId"

value="param:item.quantity">

</td>

<td>

<droplet src="product_fragment.jsp">

<param name="childProduct" value="param:item.auxiliaryData.productRef">

<%@ include file="product_fragment.jsp"%>

</droplet>

</oparam>

</droplet>

同様の機能の例は、<ATGdir>\MotorpriseJSP\j2ee-apps\motorprise\web-app\en\catalog\

cart.jspを参照してください。

ショッピング・カートへの品目の追加

この項では、CartModifierFormHandlerを使用して現在のショッピング・カートに品目を追加する方法を 説明します。この章には、次の項があります。

一度に1つずつ品目を追加する 一度に複数の品目を追加する デフォルトの商品タイプの上書き カスタム商品プロパティの処理

一度に1つずつ品目を追加する

現在のショッピング・カートに品目を追加する最も簡単な方法は、一度に 1つずつ品目を追加することです。

次のJSPのコード例は、それを実行する方法を示しています。

この例では、カートに追加する現在の製品のSKUをユーザーがドロップダウン・リストから選択できます。

ForEachサーブレットBeanを使用して、製品のSKUに対する繰り返し処理を実行し、ドロップダウン・リスト

にSKUを挿入します。このドロップダウン・リストはCartModifierFormHandlerのcatalogRefIdsプロ パティに関連付けられています。さらに、ユーザーは、テキスト・ボックスで、カートに追加される選択されて いるSKUの数量を指定できます。この数量は、CartModifierFormHandlerのquantityプロパティに 関連付けられています。

ユーザーがカートに追加発行ボタンをクリックすると、フォームが処理され、CartModifierFormHandler のプロパティが設定され、CartModifierFormHandlerのhandleAddItemToOrderメソッドが呼び出され ます。handleAddItemToOrderメソッドは、選択されているSKU

(CartModifierFormHandler.catalogRefIdsで指定されており、リポジトリIDによって識別される)の 数量(CartModifierFormHandler.quantityで指定されている)を現在のOrderに追加し、Orderを再

ドキュメント内 ATG Web Commerceストア設定ガイド (ページ 144-182)