支払い金額に応じて代引き手数料を無料にする方法  【解決済み】

困った時はこちらで質問してください。回答を担当する人は特に決まっていませんので、分かる方は回答をお願いします。
アバター
困ったさん

支払い金額に応じて代引き手数料を無料にする方法

投稿記事by 困ったさん » 2008/10/06 10:26

はじめまして、横から書き込みを入れてすみません。私も大変困っている事があり、書き込みさせていただきました。

私がしたいことは、10500以上の購入の場合に、代引き手数料を無料にしたいと思っています。
こちらのモジュール
http://zen-cart.jp/modules/archives/575 ... _table.zip)
で実現できると思ったのですが、ダウンロード先にリンクが切れており、ダウンロードできません。

私の環境では、v1.3.0.2-l10n-jp-4を利用していますが、皆さんはこのような場合にどのように設定しているのでしょうか?

私がやりたいと思っている事は、

0?10499円(税込み)・・・・送料630円、代引き手数料315円
10500円? (税込み)・・・・送料無料、代引き手数料無料。

現在、送料無料については、
viewtopic.php?f=2&t=1688&hilit=%E4%BB%A3%E5%BC%95+%E7%84%A1%E6%96%99
のように、classes/_yamato.phpのテーブルを書き換え、「配送モジュールの送料を無料にする購入金額設定」に「10500」を設定して実現しました。

残り、代引き手数料の部分を「0?10499円は315円」「10500円以上は無料」としたいのですが、うまくいきません。

ちなみに、合計モジュールは
ot_cod_fee
ot_gv
ot_coupon
ot_shipping
ot_subtotal
ot_total
が入っています。

どうそればいいか、皆さんのお知恵をいただきたいと思います。

大変困っていますので、ぜひ、お助けください  <m(__)m>
アバター
kimono
記事: 1995
登録日時: 2005/9/27 13:30
お住まい: 大阪府大阪市天王寺区上本町
連絡を取る:

Re: 支払い金額に応じて代引き手数料を無料にする方法

投稿記事by kimono » 2008/10/06 11:29

こんにちわ。kimonoです :)
私は、これを元にカスタマイズして使っていますね。
viewtopic.php?f=2&t=1812
アバター
困ったさん

Re: 支払い金額に応じて代引き手数料を無料にする方法

投稿記事by 困ったさん » 2008/10/06 11:41

回答ありがとうございます。

kimonoさんが利用しているモジュールは以下の物でしょうか?

http://zen-cart.jp/modules/archives/575

このモジュールのダウンロード先ですが、リンクがおかしくてダウンロードできないんです。

どこかに移転されたのでしょうか?

よろしければ、URLを教えてください。

P.S.掲示板を掃除してくださり、ありがとうございました。<m(__)m>
アバター
kimono
記事: 1995
登録日時: 2005/9/27 13:30
お住まい: 大阪府大阪市天王寺区上本町
連絡を取る:

Re: 支払い金額に応じて代引き手数料を無料にする方法

投稿記事by kimono » 2008/10/06 12:47

いえ、モジュールは使ってません。
記事に書いてあるように元からあるものをカスタマイズしているだけです :wink:
アバター
困ったさん

Re: 支払い金額に応じて代引き手数料を無料にする方法

投稿記事by 困ったさん » 2008/10/06 15:12

kimono様

回答頂きありがとうございました。早速ソースを修正したのですが、この修正したot_cod_feeを読み込ますために、インストールされているot_cod_feeをアンインストールし、再度ot_cod_feeをインストールしました。すると画面が変わって、以下のようなメッセージが表示されます。恥ずかしながら英語がさっぱりなので、何を言っているのか分かりません。どのようにすれば解消されるのか、教えていただけないでしょうか?参考までに、私が修正を加えた物とオリジナルのファイルとの差分を最下部に載せます。宜しくお願いします。<m(__)m>

1062 Duplicate entry 'MODULE_ORDER_TOTAL_COD_TAX_CLASS' for key 2
in:
[insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('税種別', 'MODULE_ORDER_TOTAL_COD_TAX_CLASS', '0', '代金引換手数料に適用される税種別', '6', '25', 'zen_get_tax_class_title', 'zen_cfg_pull_down_tax_classes(', now())]
If you were entering information, press the BACK button in your browser and re-check the information you had entered to be sure you left no blank fields.


【修正を加えた部分】

includes/modules/order_total/ot_cod_fee.php

diff ot_cod_fee.php ot_cod_fee.php.org の結果

61,62c61
< //if ($cod_zones[$i] == $order->delivery['country']['iso_code_2']) {
< if ($cod_zones[$i] >= $order->info['total']) { //注文合計から算出
---
> if ($cod_zones[$i] == $order->delivery['country']['iso_code_2']) {
156,162c155,157
< // $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('佐川急便の代金引換(e-コレクト)用の代引き手数料', 'MODULE_ORDER_TOTAL_COD_FEE_SAGAWA', '00:500', 'e-コレクトの手数料を「国コード:手数料,国コード:手数料,...」という書式で入力してください。国コードがわかならい場合、またはすべて統一する場合は00:手数料で記してください', '6', '13', now())");
< // $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('ヤマト運輸の代金引換(ヤマトコレクト)用の代引き手数料', 'MODULE_ORDER_TOTAL_COD_FEE_YAMATO', '00:400', 'ヤマトコレクトの手数料を「国コード:手数料,国コード:手数料,...」という書式で入力してください。国コードがわかならい場合、またはすべて統一する場合は00:手数料で記してください', '6', '14', now())");
< // $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('日本通運の代金引換(ペリカン集金サービス)用の代引き手数料', 'MODULE_ORDER_TOTAL_COD_FEE_NITTSU', '00:400', 'ペリカン集金サービスの手数料を「国コード:手数料,国コード:手数料,...」という書式で入力してください。国コードがわかならい場合、またはすべて統一する場合は00:手数料で記してください', '6', '15', now())");
< $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('佐川急便の代金引換(e-コレクト)用の代引き手数料', 'MODULE_ORDER_TOTAL_COD_FEE_SAGAWA', '00:400', '手数料を「代金引換額:手数料,代金引換額:手数料,...」という書式で入力してください。代金引換額による手数料を無効にする場合は00:手数料で記してください', '6', '13', now())");
< $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('ヤマト運輸の代金引換(ヤマトコレクト)用の代引き手数料', 'MODULE_ORDER_TOTAL_COD_FEE_YAMATO', '10000:315,30000:420,100000:630,300000:1050', '手数料を「代金引換額:手数料,代金引換額:手数料,...」という書式で入力してください。代金引換額による手数料を無効にする場合は00:手数料で記してください', '6', '14', now())");
< $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('日本通運の代金引換(ペリカン集金サービス)用の代引き手数料', 'MODULE_ORDER_TOTAL_COD_FEE_NITTSU', '00:400', '手数料を「代金引換額:手数料,代金引換額:手数料,...」という書式で入力してください。代金引換額による手数料を無効にする場合は00:手数料で記してください', '6', '15', now())");
< $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Tax Class', 'MODULE_ORDER_TOTAL_COD_TAX_CLASS', '0', 'Use the following tax class on the COD fee.', '6', '25', 'zen_get_tax_class_title', 'zen_cfg_pull_down_tax_classes(', now())");
---
> $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('佐川急便の代金引換(e-コレクト)用の代引き手数料', 'MODULE_ORDER_TOTAL_COD_FEE_SAGAWA', '00:500', 'e-コレクトの手数料を「国コード:手数料,国コード:手数料,...」という書式で入力してください。国コードがわかならい場合、またはすべて統一する場合は00:手数料で記してください', '6', '13', now())");
> $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('ヤマト運輸の代金引換(ヤマトコレクト)用の代引き手数料', 'MODULE_ORDER_TOTAL_COD_FEE_YAMATO', '00:400', 'ヤマトコレクトの手数料を「国コード:手数料,国コード:手数料,...」という書式で入力してください。国コードがわかならい場合、またはすべて統一する場合は00:手数料で記してください', '6', '14', now())");
> $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('日本通運の代金引換(ペリカン集金サービス)用の代引き手数料', 'MODULE_ORDER_TOTAL_COD_FEE_NITTSU', '00:400', 'ペリカン集金サービスの手数料を「国コード:手数料,国コード:手数料,...」という書式で入力してください。国コードがわかならい場合、またはすべて統一する場合は00:手数料で記してください', '6', '15', now())");
アバター
kimono
記事: 1995
登録日時: 2005/9/27 13:30
お住まい: 大阪府大阪市天王寺区上本町
連絡を取る:

Re: 支払い金額に応じて代引き手数料を無料にする方法

投稿記事by kimono » 2008/10/06 17:39

これって、アンインストールしないで削除したりすると起こるような現象のような気がします。
管理画面から一度モジュールをアンインストールしてから削除されましたでしょうか?
その順番を間違うと結構面倒です^^;
とりあえず、アンインストールして、それから削除です。
どうしても出来ない場合はphpmyadminなどで弄るしかないかもです^^;
アバター
困ったさん

Re: 支払い金額に応じて代引き手数料を無料にする方法

投稿記事by 困ったさん » 2008/10/06 20:27

kimono様

げげ、やはりそうでしたか。

実は、お察しの通り、モジュールを削除しないままPHPのファイルを差し替えてしまいました。

その後、何度モジュールのインストール・アンインストールを繰り返しても同じ状況が起こります。

そのため、オリジナルのPHPファイルに戻すと、問題なくオリジナルのPHPファイルがインストールされます。

しかし、次に今回修正したPHPファイルをインストールすると、やはり同じメッセージが出てきます。

kimono様、どうすればいいでしょうか?

現在のサーバにはphpmyadminもインストールしていますので、どういう手順でやればいいか、ご教授願えないでしょうか?

宜しくお願いします。 <m(__)m>
アバター
kimono
記事: 1995
登録日時: 2005/9/27 13:30
お住まい: 大阪府大阪市天王寺区上本町
連絡を取る:

Re: 支払い金額に応じて代引き手数料を無料にする方法

投稿記事by kimono » 2008/10/06 20:36

ん?
入れ替えで問題なくなるのでしょうかね?
それなら簡単です。
問題なくなった状態でアンインストール。その後、新しく作ったやつをアップロード。そしてインストールです。
それで、問題あるときは、入れ替えるファイルのどこか間違ってると思いますw

ちなみに、そのまま記載とかはしてないですよね?
ちゃんとその箇所をそのように書き換えてますよね?^^;
アバター
mmochi
記事: 328
登録日時: 2006/9/04 12:53
お住まい: 静岡県静岡市
連絡を取る:

Re: 支払い金額に応じて代引き手数料を無料にする方法

投稿記事by mmochi » 2008/10/07 00:38

mmochiです。

1062 Duplicate entry 'MODULE_ORDER_TOTAL_COD_TAX_CLASS' for key 2

MODULE_ORDER_TOTAL_COD_TAX_CLASSが重複しているよと言われてます。

手を加える前のファイルに戻して、「アンインストール」。
その後に手を加えたファイルをアップロードし「インストール」。
これでうまくいかないのですか?

これでだめな場合はkimonoさんの指摘にもありますが
1.アップしたのが手を加える前のファイルだと思っているが実は違ってた。
2.手を加えたファイルでMODULE_ORDER_TOTAL_COD_TAX_CLASSが複数回インサートされるように書いてた。
3.手を加えたファイル以外でMODULE_ORDER_TOTAL_COD_TAX_CLASSが定義されている。
のどれかということになると思います。

エラーメッセージでは日本語で表示されてますが、diffを見ると該当部分は英語表記ですね。日本語と英語2つ重複して定義してそうですがどうでしょうか。

エラー表示
1062 Duplicate entry 'MODULE_ORDER_TOTAL_COD_TAX_CLASS' for key 2
in:
[insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('税種別', 'MODULE_ORDER_TOTAL_COD_TAX_CLASS', '0', '代金引換手数料に適用される税種別', '6', '25', 'zen_get_tax_class_title', 'zen_cfg_pull_down_tax_classes(', now())]
If you were entering information, press the BACK button in your browser and re-check the information you had entered to be sure you left no blank fields.

diff
< $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Tax Class', 'MODULE_ORDER_TOTAL_COD_TAX_CLASS', '0', 'Use the following tax class on the COD fee.', '6', '25', 'zen_get_tax_class_title', 'zen_cfg_pull_down_tax_classes(', now())");
---
mmochi
ブログ http://blog.andplus.net/
株式会社あんどぷらす http://www.andplus.net/
アバター
ゲスト

Re: 支払い金額に応じて代引き手数料を無料にする方法

投稿記事by ゲスト » 2008/10/07 01:05

configurationテーブルのconfiguration_keyカラムはユニークインデックスが
張られているので、このカラムの値が重複するレコードをinsertするような
クエリはエラーになります。

アンインストールはできるようなので、
configuration_keyカラムにMODULE_ORDER_TOTAL_COD_TAX_CLASSを
複数回insertするようなクエリがot_cod_feeのinstallメソッド内に
書かれているのだと思います。
アバター
困ったさん
記事: 54
登録日時: 2008/10/07 21:30

Re: 支払い金額に応じて代引き手数料を無料にする方法

投稿記事by 困ったさん » 2008/10/07 22:50

kimono様、mmochi様、ゲスト様

返信が遅れてすみませんでした。

ズバリmmochi様のご指摘どおり、二重に定義していました。お騒がせしました。<m(__)m>

大元のDIFFファイルから取り込むときに、「!」が表示された相違部分以外も取り込んでいました。そのため、問題のMODULE_ORDER_TOTAL_COD_TAX_CLASSが二重に定義していたようです。以下の部分が問題の部分ですが、この行はオリジナルのot_cod_fee.phpの中に無かったため、勘違いして取り込んでいました。

$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Tax Class', 'MODULE_ORDER_TOTAL_COD_TAX_CLASS', '0', 'Use the following tax class on the COD fee.', '6', '25', 'zen_get_tax_class_title', 'zen_cfg_pull_down_tax_classes(', now())");

皆様、お騒がせ致しました。無事解決いたしました。この場をお借りしお礼申し上げます。これからテストに入り、また問題点があればこの掲示板を利用させていただきます。その際には、またご指導の程宜しくお願い致します。 <m(__)m>

最後に、このモジュールを修正して「代引き無料の設定」をされる方は、くれぐれも差分ファイルの取り込みにご注意ください。
アバター
koto-tool
記事: 190
登録日時: 2008/5/11 16:03
お住まい: 滋賀県草津市
連絡を取る:

Re: 支払い金額に応じて代引き手数料を無料にする方法

投稿記事by koto-tool » 2008/10/08 14:12

僕は手数料を無料にしないので試していませんが、代引き手数料設定の所で単純に

10500:315,99999999:0で設定してみたらどうなるでしょう?

それか『少額決済手数料』を名前を変えるだけで対応できるかも。
//////////////////////////////////////
工具の激安通販店 koto-tool.com
http://www.koto-tool.com
100円の商品でも送料無料
http://www.esco.koto-tool.com

//////////////////////////////////////
アバター
koto-tool
記事: 190
登録日時: 2008/5/11 16:03
お住まい: 滋賀県草津市
連絡を取る:

Re: 支払い金額に応じて代引き手数料を無料にする方法

投稿記事by koto-tool » 2008/10/08 14:14

追記です。

送料は元々管理画面の配送モジュールから無料にする設定ありますよね。
//////////////////////////////////////
工具の激安通販店 koto-tool.com
http://www.koto-tool.com
100円の商品でも送料無料
http://www.esco.koto-tool.com

//////////////////////////////////////
アバター
困ったさん
記事: 54
登録日時: 2008/10/07 21:30

Re: 支払い金額に応じて代引き手数料を無料にする方法  【解決済み】

投稿記事by 困ったさん » 2008/10/17 01:14

皆様、上記修正ではお世話になりました。色々とテストをしてみたのですが、どうも計算が合いません。

私の所では、購入金額10499円以下は代引き手数料315円、購入金額10500円以上は代引き手数料0円、としているのですが、上記の修正をしてモジュール設定で以下のような設定をしました。

ヤマト運輸の代金引換(ヤマトコレクト)用の代引き手数料
10500:315,9999999:0

その結果が以下のものです。

小計: 10,479円
ヤマト運輸(宅急便) (1 x 3kg) (宅急便): 630円
代金引換手数料: 0円
合計: 11,109円

原因は、代引き手数料の判定の際に送料も加算した「合計」で判定しているためのようです。こちらでは、送料を除いた小計で代引き手数料を判定していますので、ot_cod_fee.phpを以下のように修正しました。

61c61
['iso_code_2']) {
< if ($cod_zones[$i] >= $order->info['subtotal']) { //小計から算出
---
> if ($cod_zones[$i] >= $order->info['total']) { //注文合

また、モジュールの編集で以下のように設定しました。

ヤマト運輸の代金引換(ヤマトコレクト)用の代引き手数料
10499:315,9999999:0

この修正で、こちらでテストする限りでは、問題なく動作しています。

この修正でよろしいのでしょうか?もしも駄目ならアドバイスをお願いします。<m(__)m>

P.S.
koto-tool様 アドバイスありがとうございます。テストで掲示板を見ていなかったため返信が遅れてすみません。こちらの作業が終わりましたら、アドバイスの件をためさせていただきます。
アバター
koto-tool
記事: 190
登録日時: 2008/5/11 16:03
お住まい: 滋賀県草津市
連絡を取る:

Re: 支払い金額に応じて代引き手数料を無料にする方法

投稿記事by koto-tool » 2008/10/17 06:36

もしかしたらモジュールの表示順を替えるだけでいけるかもしれませんよ。

小計
代引き手数料
送料
合計
//////////////////////////////////////
工具の激安通販店 koto-tool.com
http://www.koto-tool.com
100円の商品でも送料無料
http://www.esco.koto-tool.com

//////////////////////////////////////
アバター
困ったさん
記事: 54
登録日時: 2008/10/07 21:30

Re: 支払い金額に応じて代引き手数料を無料にする方法

投稿記事by 困ったさん » 2008/10/19 19:12

連日の徹夜で風邪を引いてしまい、返信が遅れてすみません。
一度試して、報告します。
アバター
ゲスト

Re: 支払い金額に応じて代引き手数料を無料にする方法

投稿記事by ゲスト » 2008/12/06 00:02

もう遅いかもしれませんが

http://zen-cart.jp/modules/archives/575

このモジュールですが、このページの「旧モジュールサイト」ってリンクをクリックしたら
http://zen-cart.jp/pukiwiki/475.html
へ行き、
代金連動手数料計算代引モジュール
にありましたよ

“Zen Cart 質問コーナー” へ戻る