バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 送料計算のカスタマイズ

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
aiue
投稿日時: 2011/12/20 19:29
対応状況: −−−
新米
登録日: 2011/12/20
居住地:
投稿: 6
送料計算のカスタマイズ
EC-CUBE 2.11.3
DBサーバー MySQL 5.5.8
PHP 5.3.5

送料計算のカスタマイズについてお尋ねします。
送料無料商品を設定しており、それ以外の商品はお買い上げ合計金額により送料を設定しています。
送料無料商品のみの時は送料無料、合計金額10000円未満で、通常商品と送料無料商品が両方ある場合は、通常商品の合計金額のみによって送料を設定、両方合わせて合計10000円以上の時は送料無料にしています。

個別商品送料を有効にし、
送料無料商品の送料を1円に設定。(0円だと全て送料0円になってしまう=空白も0と認識している?)し、
SC_CartSession.phpの
function calculateに以下のコードを加えましたが、うまくいきません。

$results['subtotal_muryou']を設定し、送料無料商品の価格を取得して、それを全体の合計金額から引いて送料を出そうとしています。
いろいろ試したところ、
if ($item['productsClass']['deliv_fee'] == 1){のところがよくないのか、と思いましたが、
PHP初心者のためどう直せばよいのか、わかりません。
申し訳ありませんが、
どこを直せばよいかご教示いただける方がいらっしゃいましたら
お願いいたします。

$results['subtotal_muryou'] = 0;
// 商品ごとの送料を加算

// 商品ごとの送料を加算
if (OPTION_PRODUCT_DELIV_FEE == 1) {
$cartItems = $this->getCartList($productTypeId);
foreach ($cartItems as $item) {
if ($item['productsClass']['deliv_fee'] == 1) {
$results['subtotal_muryou'] += $item['productsClass']['price02'] * $item['quantity'];

}
}
}

if ($results['subtotal']-$results['subtotal_muryou'] == 0) {
$results['deliv_fee'] = 0;
} elseif ($results['subtotal'] >=10000) {
$results['deliv_fee'] = 0;
} elseif ($results['subtotal']-$results['subtotal_muryou']<10000 && $results['subtotal']-$results['subtotal_muryou']>5000) {

$results['deliv_fee'] = *00;

} else {
$results['deliv_fee'] = *00;
}
pingpong
投稿日時: 2011/12/21 9:17
対応状況: −−−
長老
登録日: 2011/12/15
居住地:
投稿: 156
Re: 送料計算のカスタマイズ
具体的にどの条件の場合にどのように動作しないか教えていただけますか。

subtotalは税込み金額が入ったと思いますので、
$results['subtotal']-$results['subtotal_muryou']
が一致することはないはずです。

あと商品ごとの送料設定を有効にしていますか?
aiue
投稿日時: 2011/12/21 10:25
対応状況: −−−
新米
登録日: 2011/12/20
居住地:
投稿: 6
Re: 送料計算のカスタマイズ
ご返信ありがとうございます!
税額を0%にして、価格に税込金額をそのまま入力しているので、$results['subtotal']-$results['subtotal_muryou']は一致します。

商品ごとの送料設定は有効にしています。

送料無料にしたい商品の送料を0円にすると、全ての商品が送料0円になってしまいました。空白も0と認識しているのかな?と思い、
無料にしたい商品の送料を1円にすると、
foreachのif ($item['productsClass']['deliv_fee'] == 1)
のところが無視され、送料0円にならず、合計金額ごとの送料が表示されてしまいます。

ここでゆき詰まってしまっております。。





pingpong
投稿日時: 2011/12/21 10:50
対応状況: −−−
長老
登録日: 2011/12/15
居住地:
投稿: 156
Re: 送料計算のカスタマイズ
私の環境では正常に動作していますね。
(バージョン2.11.4です)。

比較しようとしている値が文字列と数字の比較だからかもしれないですね。phpだと気にしなくても大丈夫だと思うのですが。

一度比較しようとしている配列の値を数字に変換したらどうでしょうか?

何円の商品(そのうち無料商品があれば)を購入すると、判定文のどの処理が実行されますか?
aiue
投稿日時: 2011/12/21 12:37
対応状況: −−−
新米
登録日: 2011/12/20
居住地:
投稿: 6
Re: 送料計算のカスタマイズ
試していただき、ありがとうございます!
そうですか。。なぜだめなのか。。
if ($item['productsClass']['deliv_fee'] == 1
ですと、
送料1円に設定した商品4000円の送料は、elseの値が表示されます。
if ((int)$item['productsClass']['deliv_fee'] == 1
にしても同じです。

if ($item['productsClass']['deliv_fee'] == 0
ですと、
全ての商品が0円になります。。

aiue
投稿日時: 2011/12/22 10:21
対応状況: 解決済
新米
登録日: 2011/12/20
居住地:
投稿: 6
Re: 送料計算のカスタマイズ
無事解決しました。
規格を2つ設定し、送料をあとから1円に設定したためか、データベースの方を確認したところ、NULLになっている欄がありました。このため、動作しなかったのだと思います。データベースに直接直したところ、無事動作するようになりました。

コードは間違っていないことがわかり、本当に助かりました。
pingpongさん、ありがとうございました!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,858名です
総投稿数は109,996件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1294
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.