#!/usr/bin/perl #┌──────────────────────── #│ Shopping Cart - order.cgi (2004/04/01) #│ Copyright (c) KentWeb #│ http://www.kent-web.com/ #└──────────────────────── # 外部ファイル取り込み require './init.cgi'; require $jcode; # メイン処理 &decode; #if ($mode eq "cart") { &cart; } &cart; #------------------------------------------------- # 注文処理 #------------------------------------------------- sub cart { # 買い物締めチェック if ($in{'job'} == 2 && @key == 0) { &header; print <

買い物カゴの中身が空です。

注文を行うにはメニューに戻って買い物カゴに商品を入れてください。

EOM exit; # 住所入力チェック } elsif ($in{'job'} == 3) { if ($in{'name'} eq "") { &error("名前の入力がありません"); } if ($in{'pref'} eq "") { &error("都道府県の選択がありません"); } if ($in{'addr'} eq "") { &error("住所の入力がありません"); } if ($in{'tel'} eq "") { &error("電話番号の入力がありません"); } if ($in{'email'} !~ /[\w\.\-]+\@[\w\.\-]+\.[a-zA-Z]{2,6}$/) { &error("E-Mailの入力が不正です"); } # 支払選択の場合 if ($in{'payment'} eq "") { &error('支払方法の選択がありません'); } if ($in{'name2'} && $in{'pref'} eq "") { &error("配送先の都道府県の選択がありません"); } if ($in{'name2'} && $in{'addr2'} eq "") { &error("配送先の住所の入力がありません"); } if ($in{'name2'} && $in{'tel2'} eq "") { &error("配送先の電話番号が入力ありません"); } # 配達月日 if (($in{'mon'} eq "" && $in{'day'} ne "") || ($in{'mon'} ne "" && $in{'day'} eq "")) { &error('配達の月日が不完全です'); } elsif ($in{'mon'} && $in{'day'}) { if ($in{'mon'} > 12 || $in{'mon'} < 1) { &error('あり得ない月です'); } if ($in{'day'} > 31 || $in{'mon'} < 1) { &error('あり得ない日です'); } } # 郵便番号 if ($postno && $in{'yuno'} !~ /^\d{3}\-?\d{4}$/) { &error('郵便番号は7桁の数字が必要です
「3桁 - 4桁」で入力してください'); } # クッキー情報格納 } elsif ($in{'job'} == 4) { $in{'addr'} =~ s/<br>/
/g; $in{'addr2'} =~ s/<br>/
/g; $in{'note'} =~ s/<br>/
/g; &set_cookie($in{'comp'},$in{'name'},$in{'yuno'},$in{'addr'},$in{'tel'},$in{'fax'},$in{'email'},$in{'comp2'},$in{'name2'},$in{'yuno2'},$in{'addr2'},$in{'tel2'},$in{'fax2'},$in{'cook'},$in{'pref'},$in{'pref2'}); } # 取消処理 if ($in{'del'} ne "") { @k=(); @v=(); foreach (0 .. $#key) { if ($_ == $in{'del'}) { next; } push(@k,$key[$_]); push(@v,$val[$_]); } @key=@k; @val=@v; } &header; print <
EOM # 状況表示 &order_view($in{'job'}); # 確定処理 if ($in{'job'} == 4) { # ロック開始 &lock if ($lockkey); # 注文の受理 &sendmail; # ロック解除 &unlock if ($lockkey); # 完了メッセージ print "

ご利用ありがとうございました

\n"; print "
\n"; print "
\n"; exit; } # 注文表 print < EOM if ($in{'job'} eq "") { print "\n"; $colspan = 6; } else { print "\n"; $colspan = 5; } # データ認識 %pick=(); open(IN,"$logfile") || &error("Open Error: $logfile"); while () { ($no) = split(/<>/); $pick{$no} = $_; } close(IN); # 在庫認識 if ($stock) { &stock; } # 購入処理 foreach (0 .. $#key) { ($pnum,$psize,$pcol) = split(/:/, $val[$_]); ($no,$item,$price,$size,$color,$img,$memo,$w,$h,$intax,$nmb,$id,$cate,$link) = split(/<>/, $pick{$key[$_]}); # 在庫数チェック if ($stock) { if ($stock{$key[$_]} < $pnum) { &error("商品購入個数が在庫数をオーバーしています"); } $stock{$key[$_]} -= $pnum; } # 合価 $price2 = $price * $pnum; # 税 if ($intax == 1) { $in_tax += $price2; $zei = "込み"; } else { $no_tax += $price2; $zei = "別"; } $ten += $pnum; # 桁区切り $price = &filler($price); $price2 = &filler($price2); if ($psize eq "") { $psize="
"; } if ($pcol eq "") { $pcol="
"; } if ($memo eq "") { $memo="
"; } if ($id eq "") { $id = $no; } print "
"; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; if ($in{'job'} eq "") { print "\n"; } print "\n"; } $all_pr2 = $in_tax + $no_tax; $tax = int($no_tax * $pertax); $all_pr3 = $all_pr2 + $tax; # 桁区切り if ($all_pr2 eq "") { $all_pr2 = 0; } if ($all_tax eq "") { $all_tax = 0; } $all_pr2 = &filler($all_pr2); $all_pr3 = &filler($all_pr3); $tax = &filler($tax); # 確認画面以外 if ($in{'job'} != 3) { if ($no_tax > 0) { $msg = "
商品No 商品名 数量 単価 合価 消費税 $attr1 $attr2 備考取消
$id$item$pnum$price$price2$zei$psize$pcol$memo\n"; print "
\n"; print "\n"; print "\n"; foreach (0 .. $#key) { print "\n"; } print "
送料等が別途発生する場合には
確認画面で表\示されます.
"; } else { $msg = "
"; } print "小計\n"; if ($tax) { print "\\$all_pr2\n"; print "\\$tax"; } else { print "\\$all_pr2\n"; } print < $msg 合計 \\$all_pr3 EOM # 確認画面 } else { # 支払手数料 local($pay,$cost) = split(/,/, $payment[$in{'payment'}]); if ($cost > 0) { $no_tax += $cost; $cost = &filler($cost); print "手数料\n"; print "\\$cost\n"; print "($pay)\n"; } # 送料 if ($in{'name2'}) { $tmp = $in{'pref2'}; } else { $tmp = $in{'pref'}; } local($pref,$deli) = split(/,/, $pref[$tmp]); # 送料サービス local($memo)=''; if ($cari_serv && $deli && $in_tax + $no_tax >= $cari_serv) { $memo = '(送料サービス)'; $deli=0; } if ($cari_tax == 0) { $no_tax += $deli; } else { $in_tax += $deli; } $deli = &filler($deli); print "送料\n"; print "\\$deli\n"; print "$memo
\n"; # 消費税 $tax = int($no_tax * $pertax) if ($no_tax > 0); $all = $in_tax + $no_tax + $tax; # コンマ付加 $tax = &filler($tax) if ($no_tax > 0); $all = &filler($all); if ($tax > 0) { print "消費税\n"; print "\\$tax\n"; print "
\n"; } print "合計\n"; print "\\$all\n"; print "
\n"; } print "

\n"; # カゴ中身 if (!$in{'job'}) { print "\n"; print "\n"; print "
\n"; print "
\n"; foreach (0 .. $#key) { print "\n"; } print "
\n"; print "\n"; print "\n"; foreach (0 .. $#key) { print "\n"; } print "
\n"; print "\n"; exit; } print < EOM $submit = '住所入力画面へ >>'; if ($in{'job'}) { $job = $in{'job'}+1; } else { $job=2; } print "\n"; foreach (0 .. $#key) { print "\n"; } ## 住所入力画面 if ($in{'job'} == 2) { local($pref_opt_1,$pref_opt_2); # クッキー取得 local($ccom,$cnam,$cyu,$cadr,$ctel,$cfax,$ceml,$ccom2,$cnam2,$cyu2,$cadr2,$ctel2,$cfax2,$cck,$cprf,$cprf2) = &get_cookie; $cadr =~ s/
/\r/g; $cadr2 =~ s/
/\r/g; # 都道府県 foreach (0 .. $#pref) { ($pref) = split(/,/, $pref[$_]); if ($cprf eq $_) { $pref_opt_1 .= "