バージョン選択

フォーラム

メニュー

オンライン状況

31 人のユーザが現在オンラインです。 (22 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 31
もっと...

サイト内検索

質問 > その他 > EC-CUBE2.4.0の送料加算php修正について

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
yuki0
投稿日時: 2016/4/5 14:55
対応状況: −−−
新米
登録日: 2016/4/5
居住地:
投稿: 1
EC-CUBE2.4.0の送料加算php修正について
EC-CUBE2.4.0の送料加算php修正について

初めまして、初心者です。

送料加算について教えていただきたいのですが、
商品1点づつに送料を加算(基本送料+購入個数×送料)したいのですが、可能でしょうか?

商品は5点以上の注文になると送料は5点のままの送料になり、それ以上送料加算されません、困りました。

/data/class/SC_CartSession.phpのソースは以下です。

-----------------------------------------------------

/* カートセッション管理クラス */
class SC_CartSession {
var $key;
var $key_tmp; // ユニークIDを指定する。

/* コンストラクタ */
function SC_CartSession($key = 'cart') {
SC_Utils::sfDomainSessionStart();

if($key == "") $key = "cart";
$this->key = $key;
}

// 商品購入処理中のロック
function saveCurrentCart($key_tmp) {
$this->key_tmp = "savecart_" . $key_tmp;
// すでに情報がなければ現状のカート情報を記録しておく
if(count($_SESSION[$this->key_tmp]) == 0) {
$_SESSION[$this->key_tmp] = $_SESSION[$this->key];
}
// 1世代古いコピー情報は、削除しておく
foreach($_SESSION as $key => $val) {
if($key != $this->key_tmp && ereg("^savecart_", $key)) {
unset($_SESSION[$key]);
}
}
}

// 商品購入中の変更があったかをチェックする。
function getCancelPurchase() {
$ret = isset($_SESSION[$this->key]['cancel_purchase'])
? $_SESSION[$this->key]['cancel_purchase'] : "";
$_SESSION[$this->key]['cancel_purchase'] = false;
return $ret;
}

// 購入処理中に商品に変更がなかったかを判定
function checkChangeCart() {
$change = false;
$max = $this->getMax();
for($i = 1; $i <= $max; $i++) {
if ($_SESSION[$this->key][$i]['quantity'] != $_SESSION[$this->key_tmp][$i]['quantity']) {
$change = true;
break;
}
if ($_SESSION[$this->key][$i]['id'] != $_SESSION[$this->key_tmp][$i]['id']) {
$change = true;
break;
}
}
if ($change) {
// 一時カートのクリア
unset($_SESSION[$this->key_tmp]);
$_SESSION[$this->key]['cancel_purchase'] = true;
} else {
$_SESSION[$this->key]['cancel_purchase'] = false;
}
return $_SESSION[$this->key]['cancel_purchase'];
}

// 次に割り当てるカートのIDを取得する
function getNextCartID() {
foreach($_SESSION[$this->key] as $key => $val){
$arrRet[] = $_SESSION[$this->key][$key]['cart_no'];
}
return (max($arrRet) + 1);
}

// 商品ごとの合計価格
function getProductTotal($arrInfo, $id) {
$max = $this->getMax();
for($i = 0; $i <= $max; $i++) {
if(isset($_SESSION[$this->key][$i]['id'])
&& $_SESSION[$this->key][$i]['id'] == $id) {

// 税込み合計
$price = $_SESSION[$this->key][$i]['price'];
$quantity = $_SESSION[$this->key][$i]['quantity'];
$pre_tax = SC_Utils_Ex::sfPreTax($price, $arrInfo['tax'], $arrInfo['tax_rule']);
$total = $pre_tax * $quantity;
return $total;
}
}
return 0;
}

// 値のセット
function setProductValue($id, $key, $val) {
$max = $this->getMax();
for($i = 0; $i <= $max; $i++) {
if(isset($_SESSION[$this->key][$i]['id'])
&& $_SESSION[$this->key][$i]['id'] == $id) {
$_SESSION[$this->key][$i][$key] = $val;
}
}
}

// カート内商品の最大要素番号を取得する。
function getMax() {
$cnt = 0;
$pos = 0;
$max = 0;
if (count($_SESSION[$this->key]) > 0){
foreach($_SESSION[$this->key] as $key => $val) {
if (is_numeric($key)) {
if($max < $key) {
$max = $key;
}
}
}
}
return ($max);
}

// カート内商品数の合計
function getTotalQuantity() {
$total = 0;
$max = $this->getMax();
for($i = 0; $i <= $max; $i++) {
$total+= $_SESSION[$this->key][$i]['quantity'];
}
return $total;
}


// 全商品の合計価格
function getAllProductsTotal($arrInfo) {
// 税込み合計
$total = 0;
$max = $this->getMax();
for($i = 0; $i <= $max; $i++) {

if (!isset($_SESSION[$this->key][$i]['price'])) {
$_SESSION[$this->key][$i]['price'] = "";
}
$price = $_SESSION[$this->key][$i]['price'];

if (!isset($_SESSION[$this->key][$i]['quantity'])) {
$_SESSION[$this->key][$i]['quantity'] = "";
}
$quantity = $_SESSION[$this->key][$i]['quantity'];

$pre_tax = SC_Utils::sfPreTax($price, $arrInfo['tax'], $arrInfo['tax_rule']);
$total+= ($pre_tax * $quantity);
}
return $total;
}

// 全商品の合計税金
function getAllProductsTax($arrInfo) {
// 税合計
$total = 0;
$max = $this->getMax();
for($i = 0; $i <= $max; $i++) {
$price = $_SESSION[$this->key][$i]['price'];
$quantity = $_SESSION[$this->key][$i]['quantity'];
$tax = SC_Utils_Ex::sfTax($price, $arrInfo['tax'], $arrInfo['tax_rule']);
$total+= ($tax * $quantity);
}
return $total;
}

// 全商品の合計ポイント
function getAllProductsPoint() {
// ポイント合計
$total = 0;
$max = $this->getMax();
for($i = 0; $i <= $max; $i++) {
$price = $_SESSION[$this->key][$i]['price'];
$quantity = $_SESSION[$this->key][$i]['quantity'];

if (!isset($_SESSION[$this->key][$i]['point_rate'])) {
$_SESSION[$this->key][$i]['point_rate'] = "";
}
$point_rate = $_SESSION[$this->key][$i]['point_rate'];

if (!isset($_SESSION[$this->key][$i]['id'][0])) {
$_SESSION[$this->key][$i]['id'][0] = "";
}
$id = $_SESSION[$this->key][$i]['id'][0];
$point = SC_Utils_Ex::sfPrePoint($price, $point_rate, POINT_RULE, $id);
$total+= ($point * $quantity);
}
return $total;
}

// カートへの商品追加
function addProduct($id, $quantity, $campaign_id = "") {
$find = false;
$max = $this->getMax();
for($i = 0; $i <= $max; $i++) {

if($_SESSION[$this->key][$i]['id'] == $id) {
$val = $_SESSION[$this->key][$i]['quantity'] + $quantity;
if(strlen($val) <= INT_LEN) {
$_SESSION[$this->key][$i]['quantity']+= $quantity;
if(!empty($campaign_id)){
$_SESSION[$this->key][$i]['campaign_id'] = $campaign_id;
$_SESSION[$this->key][$i]['is_campaign'] = true;
}
}
$find = true;
}
}
if(!$find) {
$_SESSION[$this->key][$max+1]['id'] = $id;
$_SESSION[$this->key][$max+1]['quantity'] = $quantity;
$_SESSION[$this->key][$max+1]['cart_no'] = $this->getNextCartID();
if(!empty($campaign_id)){
$_SESSION[$this->key][$max+1]['campaign_id'] = $campaign_id;
$_SESSION[$this->key][$max+1]['is_campaign'] = true;
}
}
}

// 前頁のURLを記録しておく
function setPrevURL($url) {
// 前頁として記録しないページを指定する。
$arrExclude = array(
"detail_image.php",
"/shopping/"
);
$exclude = false;
// ページチェックを行う。
foreach($arrExclude as $val) {
if(ereg($val, $url)) {
$exclude = true;
break;
}
}
// 除外ページでない場合は、前頁として記録する。
if(!$exclude) {
$_SESSION[$this->key]['prev_url'] = $url;
}
}

// 前頁のURLを取得する
function getPrevURL() {
return isset($_SESSION[$this->key]['prev_url'])
? $_SESSION[$this->key]['prev_url'] : "";
}

// キーが一致した商品の削除
function delProductKey($keyname, $val) {
$max = count($_SESSION[$this->key]);
for($i = 0; $i < $max; $i++) {
if($_SESSION[$this->key][$i][$keyname] == $val) {
unset($_SESSION[$this->key][$i]);
}
}
}

function setValue($key, $val) {
$_SESSION[$this->key][$key] = $val;
}

function getValue($key) {
return $_SESSION[$this->key][$key];
}

function getCartList() {
$max = $this->getMax();
$arrRet = array();
for($i = 0; $i <= $max; $i++) {
if(isset($_SESSION[$this->key][$i]['cart_no'])
&& $_SESSION[$this->key][$i]['cart_no'] != "") {
$arrRet[] = $_SESSION[$this->key][$i];
}
}
return $arrRet;
}

// カート内にある商品IDを全て取得する
function getAllProductID() {
$max = $this->getMax();
for($i = 0; $i <= $max; $i++) {
if($_SESSION[$this->key][$i]['cart_no'] != "") {
$arrRet[] = $_SESSION[$this->key][$i]['id'][0];
}
}
return $arrRet;
}

function delAllProducts() {
$max = $this->getMax();
for($i = 0; $i <= $max; $i++) {
unset($_SESSION[$this->key][$i]);
}
}

// 商品の削除
function delProduct($cart_no) {
$max = $this->getMax();
for($i = 0; $i <= $max; $i++) {
if($_SESSION[$this->key][$i]['cart_no'] == $cart_no) {
unset($_SESSION[$this->key][$i]);
}
}
}

// 個数の増加
function upQuantity($cart_no) {
$max = $this->getMax();
for($i = 0; $i <= $max; $i++) {
if($_SESSION[$this->key][$i]['cart_no'] == $cart_no) {
if(strlen($_SESSION[$this->key][$i]['quantity'] + 1) <= INT_LEN) {
$_SESSION[$this->key][$i]['quantity']++;
}
}
}
}

// 個数の減少
function downQuantity($cart_no) {
$max = $this->getMax();
for($i = 0; $i <= $max; $i++) {
if($_SESSION[$this->key][$i]['cart_no'] == $cart_no) {
if($_SESSION[$this->key][$i]['quantity'] > 1) {
$_SESSION[$this->key][$i]['quantity']--;
}
}
}
}

// 全商品の合計送料
function getAllProductsDelivFee() {
$total = 0;
foreach($_SESSION[$this->key]['products'] as $key=>$val){
$deliv_fee = $val['deliv_fee'];
$quantity = $val['quantity'];
$total+= ($deliv_fee * $quantity);
}
return $total;
}


// カートの中の売り切れチェック
function chkSoldOut($arrCartList, $is_mobile = false){
foreach($arrCartList as $key => $val){
if($val['quantity'] == 0){
// 売り切れ商品をカートから削除する
$this->delProduct($val['cart_no']);
SC_Utils_Ex::sfDispSiteError(SOLD_OUT, "", true, "", $is_mobile);
}
}
}

/**
* カートの中のキャンペーン商品のチェック
* @param integer $campaign_id キャンペーンID
* @return boolean True:キャンペーン商品有り False:キャンペーン商品無し
*/
function chkCampaign($campaign_id){
$max = $this->getMax();
for($i = 0; $i <= $max; $i++) {
if($_SESSION[$this->key][$i]['is_campaign'] and $_SESSION[$this->key][$i]['campaign_id'] == $campaign_id) return true;
}

return false;
}

}
-------------------------------------------------------



どなたかご教授いただけたらと思います。
よろしくお願いします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は89,149名です
総投稿数は110,046件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1650
8
red
1570
9
mcontact
1299
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.