NSproduceページ先頭です。

お手軽ECサイト構築、ゼンカートでショッピングサイト

配送料の地域別設定と料金別代引き設定

今回はZencartの機能拡張として、配送料の地域別設定と料金別代引き設定について触れたいと思います。
上記2つは特に需要があるように思いますので、覚えておくと便利だと思います。
まず、配送料金の詳細設定ですが、まずデフォルトで既に入っている配送料定額モジュールを見てみます。

flat.phpが配送料定額モジュールのファイルです。includes/modules/shipping/flat.phpです。
デフォルトでは定額なので、どの地域でも同じ配送料になってしまいます。そのため、地域ごとに料金の設定をする仕組みが必要になります。
そこで、このflat.phpファイルを利用します。例えば北海道、東北・関東・甲信越、東海・中部・関西、中国・四国、九州、沖縄と6地域で料金を別にしたいとすれば、flat.phpファイルを6つ用意します。(複製&バックアップ)

そして何でもよいのですが、ファイル名を変更します。flat○○.phpにしておくとわかりやすいでしょう。もちろん同じフォルダに保存してください。(場所はincludes/modules/shipping/)

次に、各flat○○.phpファイルを開き次の文字列を変更します。
flat → flat○○(小文字・大文字全て&変更しているファイル名)
これでOKです。

これを各ファイルにも適用したら、サーバにアップします。
すると配送モジュールの中に先ほど上げたflat_○○の項目が増えているはずです。変化がない場合は一度画面を更新してください。それでもダメな場合は違うところに上げている可能性が高いので確認してください。エラーが出る場合は、ファイルの記述に間違いがないか確かめてください。

次に地域税の設定が必要になります。(税といってもこの場合は配送地域を明確にする設定です)

地域税の設定を選ぶと、デフォルトではfloridaと入っているはずです。まずこれを削除します。(しなくてもよいです)
削除するためには税率を先に消さなければならないので注意してください。

スッキリしたところで、各地域の設定をします。例として東北地域を作るとします。まず、挿入で地域フォルダを作ります。名前は東北でいいでしょう。
次に詳細を選びます。ここで東北6県を挿入していきます。挿入から、国をjapanに、地域を6県1つずつ選択し作成していきます。
6県全て入れ終わったら、地域フォルダに戻ります。すると東北の項目の地域数が6となっているはずです。同じように他の地域も設定していきましょう。

地域税の設定が終わったら、先ほどの配送モジュールに戻ります。先に作っておいたflat○○.phpを編集していきます。

配送料金はその地域の該当する料金を入れます。次の税種別は消費税を含ませる場合は消費税を選んでください。そして、配送地域ですがここで先ほど作った地域税の設定が活かされていれば選択できるようになっているはずなので、該当地域を選択。よければ、更新を押すと設定完了です。これを他の料金設定にも適用します。

これで地域別の配送料金システムが完成です!

続いて、料金別代引き設定に移ります。
モジュールから支払いモジュールを見てみましょう。

デフォルトで既に代金引換モジュールが入っています。ただこのままでは定額なため例えば10000円未満は315円、30000円未満は420円…といった設定はできません。
とりあえずこのままにして、次に注文合計モジュールを見てみます。

ここにもデフォルトで代金引換手数料のモジュールが入っています。実際にはここで料金を設定していくわけですが、デフォルトでは国コード別…すなわち日本国内では全く無意味な設定しかできません。よって定額のままです。
そこで、この国コード別の設定ではなく地域&料金別に仕組みを変えれば言い訳です。

代金引換手数料モジュールファイル、ot_cod_fee.phpファイルを開き改変します。(必ずバックアップ)ファイルはincludes/modules/order_total/ot_cod_fee.phpにあります。
ファイルを開いたら、まず配送モジュールを複製したflatという文字列に注目します。該当する文字列を複製したファイル分作成します。(もちろん名前も変更します)

if (substr_count($_SESSION['shipping']['id'], 'flat') !=0) $cod_zones = split("[:,]", MODULE_ORDER_TOTAL_COD_FEE_FLAT); 'MODULE_ORDER_TOTAL_COD_FEE_FLAT', $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('COD Fee for FLAT', 'MODULE_ORDER_TOTAL_COD_FEE_FLAT', 'AT:3.00,DE:3.58,00:9.99', 'FLAT: :, .... 00 as country code applies for all countries. If country code is 00, it must be the last statement. If no 00:9.99 appears, COD shipping in foreign countries is not calculated (not possible)', '6', '3', now())");

この3つの文字列が該当します。

それぞれ複製し終わり名前だけを全て変更したら次に国コードを合計料金に加算するための変更を行います。

for ($i = 0; $i < count($cod_zones); $i++) { if ($cod_zones[$i] == $order->delivery['country']['iso_code_2'])

for ($i = 0; $i < count($cod_zones); $i++) { //if ($cod_zones[$i] == $order->delivery['country']['iso_code_2']) { if ($cod_zones[$i] >= $order->info['total'])

に変更します。

これだけです。

変更し終わったらサーバにアップして確認します。
代金引換手数料のモジュールを一度アンインストールしインストールし直すと、複製した地域分の代引料金の設定ができるようになっているはずです。(COD Fee for FLAT○○という項目です)
設定方法は例えば10000円未満の場合は315円、30000円未満を420円としたい場合は
10000:315,30000:420…
と入力します。

他の地域に関しても同様に入力してください。(地域によって料金を変えることができます)
もし配送料無料オプションを付けている場合は、COD Fee for Free-Options Shipping Moduleの項目にも同様の方法で設定してください。(他各モジュールで同様の設定が可能です)
最後に支払いモジュールから代金引換モジュールをインストール(し直して)して完成です。

これで料金別代引手数料設定も完了です。この方法だと、合計金額にも反映されますので非常に便利です。
ちなみに地域設定が不必要な場合は国コードから合計金額を反映させる仕組みに変える方法だけでOKです。
長々となってしまいましたが、ぜひお役立てください。

前を表示 次を表示

お問い合わせはこちら

業務について

NSproduceでは、主に以下の業務を行っております。

その他

WEB SITE COLLECTION

HOME | 業務内容 | 各種カスタマイズ | プロフィール | ブログ | お問い合わせ | ページ先頭へ