バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 送料商品別設定を有効にして複数購入した場合の送料計上について

フロント機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tsuji
投稿日時: 2015/10/26 10:40
対応状況: −−−
仙人
登録日: 2013/11/19
居住地:
投稿: 958
Re: 送料商品別設定を有効にして複数購入した場合の送料計上について
nobsan 様

この方法ですと例えば下記の状況で不具合が発生します。
商品A、商品Bともに送料を500円と設定してあります。

商品Aを2つ、商品Bを1つ購入したとして、下記のような配送をすることにします

配送先1:商品A(送料:500円)
配送先2:商品Aと商品B(送料:500円+500円)

上記の場合、1500円が送料となるべきですが、下記の計算方法ですと

引用:

$results['deliv_fee'] = $arrItem['productsClass']['deliv_fee'] * $deliv_pref_num;


送料は1000円となります。


たとえ、これが下記だったとしても
引用:

$results['deliv_fee'] += $arrItem['productsClass']['deliv_fee'] * $deliv_pref_num;


送料は2000円となりますので、導き出したい送料1500円にはならないと思います。


配送先ごとの商品で送料計算を行う必要がありそうです。


----------------
****************************************
株式会社システムフレンド
辻 拓也(takuya tsuji)
改造専門店・EC-CUBE工房
****************************************

nobsan
投稿日時: 2015/10/16 17:36
対応状況: 解決済
常連
登録日: 2014/11/26
居住地:
投稿: 32
Re: 送料商品別設定を有効にして複数購入した場合の送料計上について
yuh様

今、思いつくまま下記のスクリプトで試しましたら、どうやらこちらの意図通りの動きになったようです。

// 商品ごとの送料を加算
if (OPTION_PRODUCT_DELIV_FEE == 1) {
$cartItems = $this->getCartList($productTypeId);
$deliv_pref_num = count($deliv_pref);
foreach ($cartItems as $arrItem) {
$results['deliv_fee'] = $arrItem['productsClass']['deliv_fee'] * $deliv_pref_num;
}
}

とりあえず、複数商品をカートに入れ、お届け先を単一にすれば一つ分の送料が計上され、
お届け先を複数にすればお届け先分の送料が計上されました。

当分はこれで運用しながら不具合が出ないかウォッチしようと思います。

色々お手数掛けました。

ありがとうございました。
nobsan
投稿日時: 2015/10/16 16:52
対応状況: −−−
常連
登録日: 2014/11/26
居住地:
投稿: 32
Re: 送料商品別設定を有効にして複数購入した場合の送料計上について
yuh様

ご教示頂いたソースで試しましたが、残念ながらうまく行きませんでした。

セッション配列にどういった値で格納されているか分からないため、その他のスクリプトが思いつきませんでした。

ただ、理論上なのですが、全国一律が前提ならば、関数の先頭でお届け先がいくつあるかを取得できれば、

foreach ($cartItems as $arrItem) {
$results['deliv_fee'] += $arrItem['productsClass']['deliv_fee'] * $お届け先数;
}

というスクリプトが成り立つかな?と思いました。

そこでご教示頂きたいのですが、お届け先がいくつあるのかを任意の変数に整数で取得するにはどんなスクリプトを書けば良いでしょうか?

色々面倒なことをお伺いして恐縮ですがよろしくお願いします。
yuh
投稿日時: 2015/10/16 11:39
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 送料商品別設定を有効にして複数購入した場合の送料計上について
全国一律でも矛盾は出ると思います。

対応するとすれば

        // 商品ごとの送料を加算
        if (OPTION_PRODUCT_DELIV_FEE == 1) {
            foreach($_SESSION['shipping'] as $delivkey => $devlv){
                foreach($deliv['shipment_item'] as $itemkey => $item){
                    $results['deliv_fee'] += $item['productsClass']['deliv_fee'];
                }
            }
        }

こんな感じですかね?
テストはあまりしてないので、不具合があるかもしれないので参考程度に。
nobsan
投稿日時: 2015/10/16 11:22
対応状況: −−−
常連
登録日: 2014/11/26
居住地:
投稿: 32
Re: 送料商品別設定を有効にして複数購入した場合の送料計上について
tsuji様 yuh様

ご丁寧かつ親身にご教示頂きましてありがとうございます。

実運用中なこともあり、早速お客様からこの件のお問い合わせが入ってしまい、ゆっくり修正する余裕がございません(汗)

yuh様ご指摘の問題点はございますが、現時点での矛盾をとりあえず解消するため、tsuji様の案が有効であればやってみようと思いますが、全国一律であればtsuji様の案でも矛盾は出ないということで理解して良いでしょうか?

tsuji
投稿日時: 2015/10/16 9:19
対応状況: −−−
仙人
登録日: 2013/11/19
居住地:
投稿: 958
Re: 送料商品別設定を有効にして複数購入した場合の送料計上について
yuh様

確かに計算が合わないですね。
失礼いたしました。

各配送先にどの商品が紐づいているかわからないので、
配送先数×商品にすると、本来配送先に紐づいていない
商品の送料が発生することになりますね。


nobsan 様

私の案は、yuh様のご指摘通り不具合を発生するものでした。
失礼いたしました。


----------------
****************************************
株式会社システムフレンド
辻 拓也(takuya tsuji)
改造専門店・EC-CUBE工房
****************************************

nobsan
投稿日時: 2015/10/16 8:57
対応状況: −−−
常連
登録日: 2014/11/26
居住地:
投稿: 32
Re: 送料商品別設定を有効にして複数購入した場合の送料計上について
yuh様

ご教示ありがとうございます。

今のところ、当方の送料設定は全国一律ですので、
ご指摘の問題は起こらないものと考えられます。

ですが、ご指摘の点は地域別送料設定した場合には無視できませんね。

今後のために参考にさせていただきます。

ありがとうございます。
yuh
投稿日時: 2015/10/15 20:23
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 送料商品別設定を有効にして複数購入した場合の送料計上について
計算合わなくなりませんか?

商品A 送料200円 3個
商品B 送料300円 2個

配送先1に商品Aを2個、商品Bを2個
配送先2に商品Aを1個

の場合、おそらく送料は
配送先1の分で500円
配送先2の分で200円
で合計700円
となるようにと思うんですが、その計算だと
送料 200×2 + 300×2で1000円になってしまうと思います。

単純にcalculateに$_SESSION['shipping']から計算すればいいだけだとは思います。


nobsan
投稿日時: 2015/10/15 19:23
対応状況: −−−
常連
登録日: 2014/11/26
居住地:
投稿: 32
Re: 送料商品別設定を有効にして複数購入した場合の送料計上について
tsuji様

>上記ですが、違う受取人で同県の場合も同じ都道府県IDが複数入りますので
>この部分の数は配送先分の数になると思っております。


calculate関数が受け取る引数「$deliv_pref」は都道府県IDの合計数、つまり同じ都道府県IDでもカウントされて整数で渡されるということですね?

単純に、注文者=お届け先なら「1」、そうでない場合はお届け先の数、と。

であれば、商品数にあたる$arrItem['quantity']の部分を

$results['deliv_fee'] += $arrItem['productsClass']['deliv_fee'] * $deliv_pref;

とするだけで良いということになりますか?
tsuji
投稿日時: 2015/10/15 13:59
対応状況: −−−
仙人
登録日: 2013/11/19
居住地:
投稿: 958
Re: 送料商品別設定を有効にして複数購入した場合の送料計上について
nobsan様

> ただ、その場合、違う受取人でも同県だと差異が出ることになります。

上記ですが、違う受取人で同県の場合も同じ都道府県IDが複数入りますので
この部分の数は配送先分の数になると思っております。

ご確認ください。


----------------
****************************************
株式会社システムフレンド
辻 拓也(takuya tsuji)
改造専門店・EC-CUBE工房
****************************************

(1) 2 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,904名です
総投稿数は110,006件です

投稿数ランキング

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
1296
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.