EC-CUBE配送業者設定・配送料金の送料合計バグ
02.10.11 20:30 | コメント(0)
商品購入後の配送業者設定・配送料金の送料合計バグの編集
通常この状態で配送業者の送料を設定していても、購入後の料金合計にバグが発生します。
上記の内容を対応するためには、配送業者の設定、送料計算を行っているファイルを修正しなくてはなりません。
1. 修正ファイル一覧
2. バグ修正①
3. バグ修正②
4. バグ修正③
5. バグ修正④
修正ファイル一覧
【/data/class/SC_CartSession.php】
【/data/class/helper/SC_Helper_DB.php】
【/data/class/pages/shopping/LC_Page_Shopping_Confirm.php】
【/data/class/pages/shopping/LC_Page_Shopping_Payment.php】
バグ修正①
508行~536行あたりに、
* @param integer $charge 手数料 * @param integer $discount 値引 * @return array カートの計算結果の配列 */ function calculate($productTypeId, &$objCustomer, $use_point = 0, $deliv_pref = "", $charge = 0, $discount = 0) { $objDb = new SC_Helper_DB_Ex(); $total_point = $this->getAllProductsPoint($productTypeId); $results['tax'] = $this->getAllProductsTax($productTypeId); $results['subtotal'] = $this->getAllProductsTotal($productTypeId); $results['deliv_fee'] = 0; // 商品ごとの送料を加算 if (OPTION_PRODUCT_DELIV_FEE == 1) { $cartItems = $this->getCartList($productTypeId); foreach ($cartItems as $item) { $results['deliv_fee'] += $item['deliv_fee'] * $item['quantity']; } } // 配送業者の送料を加算 if (OPTION_DELIV_FEE == 1) { $results['deliv_fee'] += $objDb->sfGetDelivFee($deliv_pref, $productTypeId); }
上記のコードを探しましたら下記の内容に修正してください。
* @param integer $charge 手数料 * @param integer $discount 値引 * @param integer $deliv_id 配送業者ID * @return array カートの計算結果の配列 */ function calculate($productTypeId, &$objCustomer, $use_point = 0, $deliv_pref = "", $charge = 0, $discount = 0, $deliv_id = 0) { $objDb = new SC_Helper_DB_Ex(); $total_point = $this->getAllProductsPoint($productTypeId); $results['tax'] = $this->getAllProductsTax($productTypeId); $results['subtotal'] = $this->getAllProductsTotal($productTypeId); $results['deliv_fee'] = 0; // 商品ごとの送料を加算 if (OPTION_PRODUCT_DELIV_FEE == 1) { $cartItems = $this->getCartList($productTypeId); foreach ($cartItems as $item) { $results['deliv_fee'] += $item['deliv_fee'] * $item['quantity']; } } // 配送業者の送料を加算 if (OPTION_DELIV_FEE == 1 && !SC_Utils_Ex::isBlank($deliv_pref) && !SC_Utils_Ex::isBlank($deliv_id)) { $results['deliv_fee'] += $objDb->sfGetDelivFee($deliv_pref, $deliv_id); }
バグ修正②
1172行~1195行あたりに、
* @param integer|array $pref_id 都道府県ID 又は都道府県IDの配列 * @return string 指定の都道府県, 商品種別の配送料金 */ function sfGetDelivFee($pref_id, $product_type_id) { $objQuery =& SC_Query_Ex::getSingletonInstance(); /* * 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; }上記のコードを探しましたら下記の内容に修正してください。
* @param integer|array $pref_id 都道府県ID 又は都道府県IDの配列 * @param integer $deliv_id 配送業者ID * @return string 指定の都道府県, 配送業者の配送料金 */ function sfGetDelivFee($pref_id, $deliv_id = 0) { $objQuery =& SC_Query_Ex::getSingletonInstance(); if (!is_array($pref_id)) { $pref_id = array($pref_id); } $sql = <<< __EOS__ SELECT T1.fee AS fee FROM dtb_delivfee T1 JOIN dtb_deliv T2 ON T1.deliv_id = T2.deliv_id WHERE T1.pref = ? AND T1.deliv_id = ? AND T2.del_flg = 0 __EOS__; $result = 0; foreach ($pref_id as $pref) { $result += $objQuery->getOne($sql, array($pref, $deliv_id)); } return $result; }
バグ修正③
113行~121行あたりに、
// カート集計を元に最終計算 $arrCalcResults = $objCartSess->calculate($this->cartKey, $objCustomer, $arrOrderTemp['use_point'], $objPurchase->getShippingPref(), $arrOrderTemp['charge'], $arrOrderTemp['discount']); $this->arrForm = array_merge($arrOrderTemp, $arrCalcResults);
上記のコードを探しましたら下記の内容に修正してください。
// カート集計を元に最終計算 $arrCalcResults = $objCartSess->calculate($this->cartKey, $objCustomer, $arrOrderTemp['use_point'], $objPurchase->getShippingPref(), $arrOrderTemp['charge'], $arrOrderTemp['discount'], $arrOrderTemp['deliv_id']); $this->arrForm = array_merge($arrOrderTemp, $arrCalcResults);
バグ修正④
121行~124行あたりに、
// 購入金額の取得 $this->arrPrices = $objCartSess->calculate($cart_key, $objCustomer, 0, $objPurchase->getShippingPref());上記のコードを探しましたら下記の内容に修正してください。
* 購入金額の取得 * ここでは送料を加算しない */ $this->arrPrices = $objCartSess->calculate($cart_key, $objCustomer);
コメントする
おすすめの記事
自作パソコンの組み立て方法②(パソコンを組み立てる方法)
自作パソコンの組み立てについて 自作でパソコンを組み立てる方もいますが、まだ組み...
自作パソコンの組み立てについて 自作でパソコンを組み立てる方もいますが、まだ組み...
WordPress(ワードプレス)でユーザー情報を取得する関数コードを利用して情報を表示させる方法
ユーザー情報の内容をWebサイトへ表示させる方法 WordPress(ワードプレ...
ユーザー情報の内容をWebサイトへ表示させる方法 WordPress(ワードプレ...
WordPress(ワードプレス)でユーザー情報を取得する関数コードを利用して管理画面プロフィールを編集する方法
管理画面プロフィールを編集する方法 WordPress(ワードプレス)管理画面で...
管理画面プロフィールを編集する方法 WordPress(ワードプレス)管理画面で...
WordPress(ワードプレス)で投稿記事内の最初の画像を表示させる方法
投稿記事内の最初の画像を表示させる方法 WordPress(ワードプレス)を利用...
投稿記事内の最初の画像を表示させる方法 WordPress(ワードプレス)を利用...
WordPress(ワードプレス)権限グループ別(管理者、編集者、投稿者、寄稿者、購読者)のLevelと所有権限
管理者、編集者、投稿者、寄稿者、購読者のLevelと所有権限 WordPress...
管理者、編集者、投稿者、寄稿者、購読者のLevelと所有権限 WordPress...
WordPress(ワードプレス)管理画面記事投稿画面の内容を固定で「表示・非表示」する設定方法
管理画面記事投稿画面の内容を「表示・非表示」する設定方法 WordPress(ワ...
管理画面記事投稿画面の内容を「表示・非表示」する設定方法 WordPress(ワ...
ブログツール【CMS】情報と技術 の最新一覧
- WordPress(ワードプレス)で記事のアップと同時にFacebookやTwitterに共有させることが出来る「Jetpack」プラグインの設定方法
- WordPress(ワードプレス)で親カテゴリーを指定して子カテゴリ一覧(カテゴリーリスト)を表示させる方法
- WordPress(ワードプレス)でカテゴリー編集画面に新しい項目と画像アップロード機能を追加する設定方法
- WordPress(ワードプレス)でカテゴリー編集画面に新しい項目を追加する設定方法
- WordPress(ワードプレス)で記事編集画面でカテゴリーを維持する方法
- WordPress(ワードプレス)でカスタム投稿タイプ(タクソノミー)を利用して投稿記事に設定しているカテゴリーを表示させる時に、子カテゴリーのみを取得して表示する方法
Facebookでコメントする