Index: /branches/version-2_5-dev/html/install/sql/create_table_mysql.sql
===================================================================
--- /branches/version-2_5-dev/html/install/sql/create_table_mysql.sql (revision 19912)
+++ /branches/version-2_5-dev/html/install/sql/create_table_mysql.sql (revision 19928)
@@ -590,4 +590,5 @@
subtotal numeric,
discount numeric,
+ deliv_fee numeric,
charge numeric,
use_point numeric,
@@ -645,4 +646,5 @@
subtotal numeric,
discount numeric,
+ deliv_fee numeric,
charge numeric,
use_point numeric,
@@ -697,5 +699,4 @@
deliv_id int NOT NULL,
time_id int,
- shipping_fee numeric,
shipping_time text,
shipping_num text,
Index: /branches/version-2_5-dev/html/install/sql/create_table_pgsql.sql
===================================================================
--- /branches/version-2_5-dev/html/install/sql/create_table_pgsql.sql (revision 19912)
+++ /branches/version-2_5-dev/html/install/sql/create_table_pgsql.sql (revision 19928)
@@ -592,4 +592,5 @@
subtotal numeric,
discount numeric,
+ deliv_fee numeric,
charge numeric,
use_point numeric,
@@ -647,4 +648,5 @@
subtotal numeric,
discount numeric,
+ deliv_fee numeric,
charge numeric,
use_point numeric,
@@ -699,5 +701,4 @@
deliv_id int NOT NULL,
time_id int,
- shipping_fee numeric,
shipping_time text,
shipping_num text,
Index: /branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php
===================================================================
--- /branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php (revision 19909)
+++ /branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php (revision 19928)
@@ -1477,25 +1477,35 @@
/**
- * 都道府県、支払い方法から配送料金を取得する.
- *
- * @param array $arrData 各種情報
- * @return string 指定の都道府県, 支払い方法の配送料金
+ * 都道府県から配送料金を取得する.
+ *
+ * @param integer|array $pref_id 都道府県ID 又は都道府県IDの配列
+ * @return string 指定の都道府県, 商品種別の配送料金
*/
function sfGetDelivFee($pref_id, $product_type_id) {
$objQuery =& SC_Query::getSingletonInstance();
- // 配送業者から配送料を取得
- if($deliv_id != "") {
-
- // 都道府県が指定されていない場合は、東京都の番号を指定しておく
- if($pref_id == "") {
- $pref_id = 13;
- }
-
- $objQuery =& SC_Query::getSingletonInstance();
- $where = "product_type_id = ? AND pref = ?";
- $arrRet= $objQuery->select("fee", "dtb_delivfee", $where, array($product_type_id, $pref_id));
- }
- return $arrRet[0]['fee'];
+ /*
+ * FIXME 都道府県が指定されていない場合は、東京都の番号を指定しておく
+ * http://svn.ec-cube.net/open_trac/ticket/410
+ */
+ if($pref_id == "") {
+ $pref_id = 13;
+ }
+ if (!is_array($pref_id)) {
+ $pref_id = array($pref_id);
+ }
+ $sql = <<< __EOS__
+ SELECT SUM(T1.fee) AS fee
+ FROM dtb_delivfee T1
+ JOIN dtb_deliv T2
+ ON T1.deliv_id = T2.deliv_id
+ WHERE T1.pref = ? AND T2.product_type_id = ?
+__EOS__;
+
+ $result = 0;
+ foreach ($pref_id as $pref) {
+ $result += $objQuery->getOne($sql, array($pref, $product_type_id));
+ }
+ return $result;
}
Index: /branches/version-2_5-dev/data/class/helper/SC_Helper_Purchase.php
===================================================================
--- /branches/version-2_5-dev/data/class/helper/SC_Helper_Purchase.php (revision 19927)
+++ /branches/version-2_5-dev/data/class/helper/SC_Helper_Purchase.php (revision 19928)
@@ -225,4 +225,15 @@
/**
+ * 配送先都道府県の配列を返す.
+ */
+ function getShippingPref() {
+ $results = array();
+ foreach ($_SESSION['shipping'] as $val) {
+ $results[] = $val['shipping_pref'];
+ }
+ return $results;
+ }
+
+ /**
* 複数配送指定の購入かどうか.
*
@@ -552,14 +563,4 @@
$objQuery =& SC_Query::getSingletonInstance();
- // 別のお届け先を指定が無ければ, お届け先に登録住所をコピー
- /* FIXME
- if ($orderParams['deliv_check'] == "-1") {
- $keys = array('name01', 'name02', 'kana01', 'kana02', 'pref', 'zip01',
- 'zip02', 'addr01', 'addr02', 'tel01', 'tel02', 'tel03');
- foreach ($keys as $key) {
- $orderParams['deliv_' . $key] = $orderParams['order_' . $key];
- }
- }
- */
// 不要な変数を unset
$unsets = array('mailmaga_flg', 'deliv_check', 'point_check', 'password',
Index: /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Confirm.php
===================================================================
--- /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Confirm.php (revision 19912)
+++ /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Confirm.php (revision 19928)
@@ -111,7 +111,7 @@
// カート集計を元に最終計算
- // FIXME 使用ポイント, 配送都道府県, 支払い方法, 手数料の扱い
- $arrData = array_merge($tmpData, $objCartSess->calculate($this->cartKey, $objCustomer, $tmpData['use_point'], $tmpData['deliv_pref'], $tmpData['payment_id'], $tmpData['charge'], $tmpData['discount']));
- unset($arrData['deliv_fee']); // FIXME
+ // FIXME 使用ポイント, 手数料の扱い
+ $arrData = array_merge($tmpData, $objCartSess->calculate($this->cartKey, $objCustomer, $tmpData['use_point'], $objPurchase->getShippingPref(), $tmpData['charge'], $tmpData['discount']));
+
// 会員ログインチェック
if($objCustomer->isLoginSuccess(true)) {
Index: /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php
===================================================================
--- /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php (revision 19926)
+++ /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php (revision 19928)
@@ -131,6 +131,6 @@
SC_Utils_Ex::sfDispSiteError(SOLD_OUT, '', true);
}
- // FIXME 使用ポイント, 配送都道府県, 支払い方法, 手数料の扱い
- $this->arrData = $objCartSess->calculate($this->cartKey, $objCustomer);
+ // FIXME 使用ポイント, 手数料の扱い
+ $this->arrData = $objCartSess->calculate($this->cartKey, $objCustomer, 0, $objPurchase->getShippingPref());
// 購入金額の取得
Index: /branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php
===================================================================
--- /branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php (revision 19923)
+++ /branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php (revision 19928)
@@ -390,11 +390,13 @@
// お届け日の取得
- $ts = strtotime($shipping["shipping_date"]);
- $this->objFormParam->setValue('shipping_date_year_' . $shipping['shipping_id'], date("Y", $ts));
- $this->arrForm['shipping_date_year_' . $shipping['shipping_id']] = date("Y", $ts);
- $this->objFormParam->setValue('shipping_date_month_' . $shipping['shipping_id'], date("n", $ts));
- $this->arrForm['shipping_date_month_' . $shipping['shipping_id']] = date("n", $ts);
- $this->objFormParam->setValue('shipping_date_day_' . $shipping['shipping_id'], date("j", $ts));
- $this->arrForm['shipping_date_day_' . $shipping['shipping_id']] = date("j", $ts);
+ if (!SC_Utils_Ex::isBlank($shipping["shipping_date"])) {
+ $ts = strtotime($shipping["shipping_date"]);
+ $this->objFormParam->setValue('shipping_date_year_' . $shipping['shipping_id'], date("Y", $ts));
+ $this->arrForm['shipping_date_year_' . $shipping['shipping_id']] = date("Y", $ts);
+ $this->objFormParam->setValue('shipping_date_month_' . $shipping['shipping_id'], date("n", $ts));
+ $this->arrForm['shipping_date_month_' . $shipping['shipping_id']] = date("n", $ts);
+ $this->objFormParam->setValue('shipping_date_day_' . $shipping['shipping_id'], date("j", $ts));
+ $this->arrForm['shipping_date_day_' . $shipping['shipping_id']] = date("j", $ts);
+ }
// 配送内容の処理
Index: /branches/version-2_5-dev/data/class/SC_CartSession.php
===================================================================
--- /branches/version-2_5-dev/data/class/SC_CartSession.php (revision 19860)
+++ /branches/version-2_5-dev/data/class/SC_CartSession.php (revision 19928)
@@ -490,6 +490,6 @@
* @param SC_Customer $objCustomer ログイン中の SC_Customer インスタンス
* @param integer $use_point 今回使用ポイント
- * @param integer $deliv_pref 配送先都道府県ID
- * @param integer $payment_id 支払い方法ID
+ * @param integer|array $deliv_pref 配送先都道府県ID.
+ 複数に配送する場合は都道府県IDの配列
* @param integer $charge 手数料
* @param integer $discount 値引
@@ -497,5 +497,5 @@
*/
function calculate($productTypeId, &$objCustomer, $use_point = 0,
- $deliv_pref = "", $payment_id = "", $charge = 0, $discount = 0) {
+ $deliv_pref = "", $charge = 0, $discount = 0) {
$objDb = new SC_Helper_DB_Ex();