class PurchaseHelper

商品購入関連のヘルパークラス.

TODO 購入時強制会員登録機能(#521)の実装を検討 TODO dtbcustomer.buytimes, dtbcustomer.buytotal の更新

Properties

$arrShippingKey

Methods

void
completeOrder(integer $orderStatus = ORDER_NEW)

受注を完了する.

void
cancelOrder(integer $order_id, integer $orderStatus = ORDER_CANCEL, boolean $is_delete = false)

受注をキャンセルする.

string
rollbackOrder(integer $order_id, integer $orderStatus = ORDER_CANCEL, boolean $is_delete = false)

受注をキャンセルし, カートをロールバックして, 受注一時IDを返す.

void
verifyChangeCart(string $uniqId, CartSession $objCartSession)

カートに変化が無いか検証する.

array
getOrderTemp(integer $uniqId)

受注一時情報を取得する.

array
getOrderTempByOrderId(integer $order_id)

受注IDをキーにして受注一時情報を取得する.

void
saveOrderTemp(integer $uniqId, array $params, Customer $objCustomer = NULL)

受注一時情報を保存する.

getShippingTemp(bool $has_shipment_item = false)

配送情報をセッションから取得する.

void
clearShipmentItemTemp(integer $shipping_id = null)

配送商品をクリア(消去)する

void
setShipmentItemTemp(integer $shipping_id, integer $product_class_id, integer $quantity)

配送商品を設定する.

getShippingPref(boolean $is_multiple)

配送先都道府県の配列を返す.

boolean
isMultiple()

複数配送指定の購入かどうか.

void
saveShippingTemp(array $arrSrc, integer $shipping_id)

配送情報をセッションに保存する.

void
unsetShippingTemp() deprecated

セッションの配送情報を破棄する.

static void
unsetAllShippingTemp(bool $multiple_temp = false)

セッションの配送情報を全て破棄する

static void
unsetOneShippingTemp(integer $shipping_id)

セッションの配送情報を個別に破棄する

void
copyFromCustomer(array $dest, Customer $objCustomer, string $prefix = 'order', array $keys = array('name01', 'name02', 'kana01', 'kana02', 'company_name', 'sex', 'zip01', 'zip02', 'country_id', 'zipcode', 'pref', 'addr01', 'addr02', 'tel01', 'tel02', 'tel03', 'fax01', 'fax02', 'fax03', 'job', 'birth', 'email'))

会員情報を受注情報にコピーする.

void
copyFromOrder($dest, $src, $prefix = 'shipping', $src_prefix = 'order', $arrKey = null)

受注情報を配送情報にコピーする.

void
extractShipping(string $arrSrc)

配送情報のみ抜き出す。

setDefaultPurchase($uniqId, $cartKey, $objCustomer, $objCartSess)

No description

array
getSelectablePayment($objCartSess, $deliv_id, $is_list = false)

配送業者IDから, 支払い方法, お届け時間の配列を取得する.

getDelivDate(CartSession $objCartSess, integer $productTypeId)

お届け日一覧を取得する.

getDateArray($start_day, $end_day)

お届け可能日のスタート値から, お届け日の配列を取得する.

void
registerShipping(integer $order_id, array $arrParams, boolean $convert_shipping_date = true)

配送情報の登録を行う.

void
registerShipmentItem(integer $order_id, integer $shipping_id, array $arrParams)

配送商品を登録する.

registerOrderComplete($orderParams, $objCartSession, $cartKey)

受注登録を完了する.

integer
registerOrder(integer $order_id, array $arrParams)

受注情報を登録する.

void
registerOrderDetail(integer $order_id, array $arrParams)

受注詳細情報を登録する.

array
getOrder(integer $order_id, integer $customer_id = null)

受注情報を取得する.

array
getOrderDetail(integer $order_id, boolean $has_order_status = true)

受注詳細を取得する.

void
setDownloadableFlgTo(array $arrOrderDetail)

ダウンロード可能フラグを, 受注詳細に設定する.

array
getShippings(integer $order_id, boolean $has_items = true)

配送情報を取得する.

array
getShipmentItems(integer $order_id, integer $shipping_id, boolean $has_detail = true)

配送商品を取得する.

static boolean
sendOrderMail(integer $order_id, object $objPage = NULL)

注文受付メールを送信する.

void
sfUpdateOrderStatus(integer $orderId, integer|null $newStatus = null, integer|null $newAddPoint = null, integer|null $newUsePoint = null, array $sqlval = array())

受注.対応状況の更新

sfUpdateOrderNameCol(integer $order_id, boolean $temp_table = false)

受注の名称列を更新する

boolean
isUsePoint(integer $status)

ポイント使用するかの判定

boolean
isAddPoint(integer $status)

ポイント加算するかの判定

cleanupSession(integer $orderId, CartSession $objCartSession, Customer $objCustomer, integer $cartKey)

セッションに保持している情報を破棄する.

void
setShipmentItemTempForSole(CartSession $objCartSession, integer $shipping_id)

単一配送指定用に配送商品を設定する

integer
getNextOrderID()

新規受注の注文IDを返す

void
cancelPendingOrder(bool $cancel_flg)

決済処理中スタータスの受注データのキャンセル処理

checkDbAllPendingOrder()

決済処理中スタータスの全受注検索

checkDbMyPendignOrder()

No description

checkSessionPendingOrder()

No description

Details

at line 81
void completeOrder(integer $orderStatus = ORDER_NEW)

受注を完了する.

下記のフローで受注を完了する.

  1. トランザクションを開始する
  2. カートの内容を検証する.
  3. 受注一時テーブルから受注データを読み込む
  4. ユーザーがログインしている場合はその他の発送先へ登録する
  5. 受注データを受注テーブルへ登録する
  6. トランザクションをコミットする

実行中に, 何らかのエラーが発生した場合, 処理を中止しエラーページへ遷移する

決済モジュールを使用する場合は対応状況を「決済処理中」に設定し, 決済完了後「新規受付」に変更すること

Parameters

integer $orderStatus 受注処理を完了する際に設定する対応状況

Return Value

void

at line 140
void cancelOrder(integer $order_id, integer $orderStatus = ORDER_CANCEL, boolean $is_delete = false)

受注をキャンセルする.

受注完了後の受注をキャンセルする. この関数は, 主に決済モジュールにて, 受注をキャンセルする場合に使用する.

対応状況を引数 $orderStatus で指定した値に変更する. (デフォルト ORDERCANCEL) 引数 $isdelete が true の場合は, 受注データを論理削除する. 商品の在庫数は, 受注前の在庫数に戻される.

Parameters

integer $order_id 受注ID
integer $orderStatus 対応状況
boolean $is_delete 受注データを論理削除する場合 true

Return Value

void

at line 183
string rollbackOrder(integer $order_id, integer $orderStatus = ORDER_CANCEL, boolean $is_delete = false)

受注をキャンセルし, カートをロールバックして, 受注一時IDを返す.

受注完了後の受注をキャンセルし, カートの状態を受注前の状態へ戻す. この関数は, 主に, 決済モジュールに遷移した後, 購入確認画面へ戻る場合に使用する.

対応状況を引数 $orderStatus で指定した値に変更する. (デフォルト ORDERCANCEL) 引数 $isdelete が true の場合は, 受注データを論理削除する. 商品の在庫数, カートの内容は受注前の状態に戻される.

Parameters

integer $order_id 受注ID
integer $orderStatus 対応状況
boolean $is_delete 受注データを論理削除する場合 true

Return Value

string 受注一時ID

at line 230
void verifyChangeCart(string $uniqId, CartSession $objCartSession)

カートに変化が無いか検証する.

ユニークIDとセッションのユニークIDを比較し, 異なる場合は エラー画面を表示する.

カートが空の場合, 購入ボタン押下後にカートが変更された場合は カート画面へ遷移する.

Parameters

string $uniqId ユニークID
CartSession $objCartSession

Return Value

void

at line 266
array getOrderTemp(integer $uniqId)

受注一時情報を取得する.

Parameters

integer $uniqId 受注一時情報ID

Return Value

array 受注一時情報の配列

at line 279
array getOrderTempByOrderId(integer $order_id)

受注IDをキーにして受注一時情報を取得する.

Parameters

integer $order_id 受注ID

Return Value

array 受注一時情報の配列

at line 296
void saveOrderTemp(integer $uniqId, array $params, Customer $objCustomer = NULL)

受注一時情報を保存する.

既存のデータが存在しない場合は新規保存. 存在する場合は更新する.

Parameters

integer $uniqId 受注一時情報ID
array $params 登録する受注情報の配列
Customer $objCustomer Customer インスタンス

Return Value

void

at line 336
getShippingTemp(bool $has_shipment_item = false)

配送情報をセッションから取得する.

Parameters

bool $has_shipment_item 配送商品を保有している配送先のみ返す。

at line 359
void clearShipmentItemTemp(integer $shipping_id = null)

配送商品をクリア(消去)する

Parameters

integer $shipping_id 配送先ID

Return Value

void

at line 380
void setShipmentItemTemp(integer $shipping_id, integer $product_class_id, integer $quantity)

配送商品を設定する.

Parameters

integer $shipping_id 配送先ID
integer $product_class_id 商品規格ID
integer $quantity 数量

Return Value

void

at line 414
getShippingPref(boolean $is_multiple)

配送先都道府県の配列を返す.

Parameters

boolean $is_multiple

at line 429
boolean isMultiple()

複数配送指定の購入かどうか.

Return Value

boolean 複数配送指定の購入の場合 true

at line 442
void saveShippingTemp(array $arrSrc, integer $shipping_id)

配送情報をセッションに保存する.

XXX マージする理由が不明(なんとなく便利な気はするけど)。分かる方コメントに残してください。

Parameters

array $arrSrc 配送情報の連想配列
integer $shipping_id 配送先ID

Return Value

void

at line 460
void unsetShippingTemp() deprecated

deprecated 2.12.0 から EC-CUBE 本体では使用していない。

セッションの配送情報を破棄する.

Return Value

void

at line 471
static void unsetAllShippingTemp(bool $multiple_temp = false)

セッションの配送情報を全て破棄する

Parameters

bool $multiple_temp 複数お届け先の画面戻り処理用の情報も破棄するか

Return Value

void

at line 485
static void unsetOneShippingTemp(integer $shipping_id)

セッションの配送情報を個別に破棄する

Parameters

integer $shipping_id 配送先ID

Return Value

void

at line 503
void copyFromCustomer(array $dest, Customer $objCustomer, string $prefix = 'order', array $keys = array('name01', 'name02', 'kana01', 'kana02', 'company_name', 'sex', 'zip01', 'zip02', 'country_id', 'zipcode', 'pref', 'addr01', 'addr02', 'tel01', 'tel02', 'tel03', 'fax01', 'fax02', 'fax03', 'job', 'birth', 'email'))

会員情報を受注情報にコピーする.

ユーザーがログインしていない場合は何もしない. 会員情報を $dest の order* へコピーする. customerid は強制的にコピーされる.

Parameters

array $dest コピー先の配列
Customer $objCustomer Customer インスタンス
string $prefix コピー先の接頭辞. デフォルト order
array $keys コピー対象のキー

Return Value

void

at line 547
void copyFromOrder($dest, $src, $prefix = 'shipping', $src_prefix = 'order', $arrKey = null)

受注情報を配送情報にコピーする.

受注情報($src)を $dest の order_* へコピーする.

TODO 汎用的にして \Eccube\Framework\Util\Utils へ移動

Parameters

$dest
$src
$prefix
$src_prefix
$arrKey

Return Value

void

at line 571
void extractShipping(string $arrSrc)

配送情報のみ抜き出す。

Parameters

string $arrSrc 元となる配列

Return Value

void

at line 581
setDefaultPurchase($uniqId, $cartKey, $objCustomer, $objCartSess)

Parameters

$uniqId
$cartKey
$objCustomer
$objCartSess

at line 619
array getSelectablePayment($objCartSess, $deliv_id, $is_list = false)

配送業者IDから, 支払い方法, お届け時間の配列を取得する.

結果の連想配列の添字の値は以下の通り - 'arrDelivTime' - お届け時間の配列 - 'arrPayment' - 支払い方法の配列 - 'img_show' - 支払い方法の画像の有無

Parameters

$objCartSess
$deliv_id
$is_list

Return Value

array 支払い方法, お届け時間を格納した配列

at line 645
getDelivDate(CartSession $objCartSess, integer $productTypeId)

お届け日一覧を取得する.

Parameters

CartSession $objCartSess
integer $productTypeId

at line 705
getDateArray($start_day, $end_day)

お届け可能日のスタート値から, お届け日の配列を取得する.

Parameters

$start_day
$end_day

at line 740
void registerShipping(integer $order_id, array $arrParams, boolean $convert_shipping_date = true)

配送情報の登録を行う.

$arrParam のうち, dtb_shipping テーブルに存在するカラムのみを登録する.

TODO UPDATE/INSERT にする

Parameters

integer $order_id 受注ID
array $arrParams 配送情報の連想配列
boolean $convert_shipping_date yyyy/mm/dd(EEE) 形式の配送日付を変換する場合 true

Return Value

void

at line 783
void registerShipmentItem(integer $order_id, integer $shipping_id, array $arrParams)

配送商品を登録する.

Parameters

integer $order_id 受注ID
integer $shipping_id 配送先ID
array $arrParams 配送商品の配列

Return Value

void

at line 841
registerOrderComplete($orderParams, $objCartSession, $cartKey)

受注登録を完了する.

引数の受注情報を受注テーブル及び受注詳細テーブルに登録する. 登録後, 受注一時テーブルに削除フラグを立てる.

Parameters

$orderParams
$objCartSession
$cartKey

at line 914
integer registerOrder(integer $order_id, array $arrParams)

受注情報を登録する.

既に受注IDが存在する場合は, 受注情報を更新する. 引数の受注IDが, 空白又は null の場合は, 新しく受注IDを発行して登録する.

Parameters

integer $order_id 受注ID
array $arrParams 受注情報の連想配列

Return Value

integer 受注ID

at line 968
void registerOrderDetail(integer $order_id, array $arrParams)

受注詳細情報を登録する.

既に, 該当の受注が存在する場合は, 受注情報を削除し, 登録する.

Parameters

integer $order_id 受注ID
array $arrParams 受注情報の連想配列

Return Value

void

at line 990
array getOrder(integer $order_id, integer $customer_id = null)

受注情報を取得する.

Parameters

integer $order_id 受注ID
integer $customer_id 会員ID

Return Value

array 受注情報の配列

at line 1010
array getOrderDetail(integer $order_id, boolean $has_order_status = true)

受注詳細を取得する.

Parameters

integer $order_id 受注ID
boolean $has_order_status 対応状況, 入金日も含める場合 true

Return Value

array 受注詳細の配列

at line 1069
void setDownloadableFlgTo(array $arrOrderDetail)

ダウンロード可能フラグを, 受注詳細に設定する.

ダウンロード可能と判断されるのは, 以下の通り.

  1. ダウンロード可能期限が期限内かつ, 入金日が入力されている
  2. 販売価格が 0 円である

受注詳細行には, is_downloadable という真偽値が設定される.

Parameters

array $arrOrderDetail 受注詳細の配列

Return Value

void

at line 1092
array getShippings(integer $order_id, boolean $has_items = true)

配送情報を取得する.

Parameters

integer $order_id 受注ID
boolean $has_items 結果に配送商品も含める場合 true

Return Value

array 配送情報の配列

at line 1124
array getShipmentItems(integer $order_id, integer $shipping_id, boolean $has_detail = true)

配送商品を取得する.

Parameters

integer $order_id 受注ID
integer $shipping_id 配送先ID
boolean $has_detail 商品詳細も取得する場合 true

Return Value

array 商品規格IDをキーにした配送商品の配列

at line 1164
static boolean sendOrderMail(integer $order_id, object $objPage = NULL)

注文受付メールを送信する.

端末種別IDにより, 携帯電話の場合は携帯用の文面, それ以外の場合は PC 用の文面でメールを送信する.

Parameters

integer $order_id 受注ID
object $objPage LC_Page インスタンス

Return Value

boolean 送信に成功したか。現状では、正確には取得できない。

at line 1196
void sfUpdateOrderStatus(integer $orderId, integer|null $newStatus = null, integer|null $newAddPoint = null, integer|null $newUsePoint = null, array $sqlval = array())

受注.対応状況の更新

必ず呼び出し元でトランザクションブロックを開いておくこと。

Parameters

integer $orderId 注文番号
integer|null $newStatus 対応状況 (null=変更無し)
integer|null $newAddPoint 加算ポイント (null=変更無し)
integer|null $newUsePoint 使用ポイント (null=変更無し)
array $sqlval 更新後の値をリファレンスさせるためのパラメーター

Return Value

void

at line 1304
sfUpdateOrderNameCol(integer $order_id, boolean $temp_table = false)

受注の名称列を更新する

Parameters

integer $order_id 更新対象の注文番号
boolean $temp_table 更新対象は「受注_Temp」か

at line 1342
boolean isUsePoint(integer $status)

ポイント使用するかの判定

$status が null の場合は false を返す.

Parameters

integer $status 対応状況

Return Value

boolean 使用するか(会員テーブルから減算するか)

at line 1364
boolean isAddPoint(integer $status)

ポイント加算するかの判定

Parameters

integer $status 対応状況

Return Value

boolean 加算するか

at line 1403
cleanupSession(integer $orderId, CartSession $objCartSession, Customer $objCustomer, integer $cartKey)

セッションに保持している情報を破棄する.

通常、受注処理(completeOrder)完了後に呼び出され、 セッション情報を破棄する.

決済モジュール画面から確認画面に「戻る」場合を考慮し、 セッション情報を破棄しないカスタマイズを、モジュール側で 加える機会を与える.

$orderId が使われていない。

Parameters

integer $orderId 注文番号
CartSession $objCartSession カート情報のインスタンス
Customer $objCustomer Customer インスタンス
integer $cartKey 登録を行うカート情報のキー

at line 1421
void setShipmentItemTempForSole(CartSession $objCartSession, integer $shipping_id)

単一配送指定用に配送商品を設定する

Parameters

CartSession $objCartSession カート情報のインスタンス
integer $shipping_id 配送先ID

Return Value

void

at line 1440
integer getNextOrderID()

新規受注の注文IDを返す

Return Value

integer

at line 1452
void cancelPendingOrder(bool $cancel_flg)

決済処理中スタータスの受注データのキャンセル処理

Parameters

bool $cancel_flg 決済処理中ステータスのロールバックをするか(true:する false:しない)

Return Value

void

at line 1464
checkDbAllPendingOrder()

決済処理中スタータスの全受注検索

at line 1484
checkDbMyPendignOrder()

at line 1528
checkSessionPendingOrder()