![]() |
| カレッヂ |
質問者 片山
投稿日 7/17(木) 16:00:58
以前(2月3日)呑兵衛さんにご丁寧にお答えしていただいた同様の質問ですが、
その後、順調に行っていたのですが、最近になって狙い通りに作動していないケー
スがございましたので、あらためて質問する次第です。
狙い:特定商品が合計4000円以上なら送料無料に
解決策:特定商品"_gname"に判別文字「_S」をつけ、
sub mado で
$SHOKEI += $fee; # 累計
$name =~ s/_S//g;
#表示だけなので
sub cfmで
$SHOKEI += $fee; # 累計
if ($name =~ /_S/) { $name =~ s/_S//g; $FEE_SPECIAL .= $fee; }
#_S のついたものに限定するため ラベル=if が必要
if ($in{'_area'} =~ /(.*):(\d+)$/) { $area = $1; $soryo = $2; }
if ($FEE_SPECIAL >= 4000) { $soryo = 0; }
問題症状:
1)1000円の商品をまとめて3つ注文すると、送料有料のままだが、
2回か3回に分けて注文すると、3000円なのに送料無料になってしまう
2)同様に、2000円未満の商品をそれぞれ注文すると、やはり4000円未満なのに
送料無料になってしまう
どうやら複数回注文すれば、合計金額にかかわらず、送料無料になってしまうよ
うなんですが、どこかで二重に加算しているのでしょうか?
たまたまウチの商品が2000円前後のものが多く、大体4000円超えていて上記のような
症状があまり出ていなかったので、最近気付いた次第です。
ご多忙のおり、恐縮ですが、なにかヒントがいただけないかと思う次第です。
宜しくお願いします。
プロバイダ参照: |
回答者 呑兵衛@大阪
[削除]
投稿日 7/20(日) 17:45:11
よくこんな大嘘を教えたもんです。大謝!
◆商品.html で
<input type=hidden name="_gname" value="商品名_S">
を
<input type=hidden name="_gname" value="S_商品名">
に変更
◆sub mado で
$name =~ s/_S//g;
を
$name =~ s/^S_//g;
に変更
◆sub cfm の
if ($name =~ /_S/) { $name =~ s/_S//g; $FEE_SPECIAL .= $fee; }
を
if ($name =~ /^S_/) { $name =~ s/^S_//g; $FEE_SPECIAL += $fee; }
に変更
原因は $FEE_SPECIAL .= $fee; にあり、加算ではなく単に文字列連結していたことによる
ものでした。 |
質問者 かたやま
[削除]
投稿日 7/22(火) 14:05:07
無事動いております。 こちらこそ、.= と += 基本的な所を見落としてしまいすみません。 ご教示のとおり、判別文字を文字頭につけてますが、文字末尾だとなにか トラブルのでしょうか? いろいろと有り難うございます。 |
返信(回答)する
| Web裏技 |