KENT-WEB サポートコーナー 過去ログ [ 0073 ]


記事No: 1991
投稿日: 2007/10/24(Wed) 17:44:51
タイトル注文メールに反映するには?
ID情報: yk4439
投稿者: おから
URLhttp://niconi.jp/cart/admin.cgi

ノンクッキー式cartを使わせていただいています。
注文メールですが↓

──────────────────────
▼支払・配達情報
──────────────────────
支払方法 = 銀行振込(前払い)
★配達方法 =
配達日時 = 月日指定なし 18-20時

このように★配達方法の項目を作りました。注文画面まではOKなのですが、注文メールに配達方法が反映されません。
どのcgiのどこを変更したらいいでしょうか?
教えて下さい。よろしくお願いします。


記事No: 1993
投稿日: 2007/10/24(Wed) 20:04:22
タイトルRe: 注文メールに反映するには?
ID情報: taporus
投稿者: リッキー

テストさせていただきました。

確認場面は、行きますね。

$in{"***"}を間違えていませんか?
CGIをテキストファイルなどにしてくれると助かります。
頑張ってくださいね。


記事No: 1996
投稿日: 2007/10/24(Wed) 21:47:35
タイトルRe^2: 注文メールに反映するには?
ID情報: yk4439
投稿者: おから
URLhttp://niconi.jp/cart/admin.cgi

> テストさせていただきました。
>
> 確認場面は、行きますね。
>
> $in{"***"}を間違えていませんか?
> CGIをテキストファイルなどにしてくれると助かります。
> 頑張ってくださいね。

ありがとうございます!
order.cgiの中間からコピーしました。
ちょっと見てください。ちなみに配達方法はderibary,
略でdelivとしています。

## 確認画面
} elsif ($in{'job'} == 3) {

local($pay) = split(/,/, $payment[$in{'payment'}]);
local($deliv) = split(/,/, $delivery[$in{'delivery'}]);

# 送信ボタン
$submit = '上記内容で確定 >>';

print "<p><table border=1 cellspacing=0 cellpadding=4 width=550>\n";
print "<tr><td class=l colspan=2>\n";
print "▼<b>支払・配達方法</b></td></tr>\n";
print "<tr><td class=r width=110 align=right>支払方法&nbsp;</td>";
print "<td class=r width=440>$pay</td></tr>\n";
print "<tr><td class=r width=110 align=right>配達方法&nbsp;</td>";
print "<td class=r width=440>$deliv</td></tr>\n";
print "<tr><td class=r width=110 align=right>配達指定&nbsp;</td>";
print "<td class=r width=440>";

if ($in{'mon'} ne "" && $in{'day'} ne "") {
print "$in{'mon'}月 $in{'day'}日<br>";
} else {
print "月日指定なし<br>";
}
if ($in{'hour'} ne "") {
print "$deli[$in{'hour'}]";
} else {
print "時間帯指定なし";
}

print "</td></tr></table>\n";

# 改行処理
$in{'addr'} =~ s/\r\n/<br>/g;
$in{'addr'} =~ s/\r/<br>/g;
$in{'addr'} =~ s/\n/<br>/g;
$in{'addr2'} =~ s/\r\n/<br>/g;
$in{'addr2'} =~ s/\r/<br>/g;
$in{'addr2'} =~ s/\n/<br>/g;
$in{'note'} =~ s/\r\n/<br>/g;
$in{'note'} =~ s/\r/<br>/g;
$in{'note'} =~ s/\n/<br>/g;

local($pref) = split(/,/, $pref[$in{'pref'}]);
local($pref2) = split(/,/, $pref[$in{'pref2'}]);

foreach ('payment','delivery','comp','name','yuno','pref','addr','tel','fax','email','comp2','name2','yuno2','pref2','addr2','tel2','fax2','cook','mon','day','hour','note') {

print "<input type=hidden name=\"$_\" value=\"$in{$_}\">\n";
}

if ($in{'cook'} eq "on") { $ck = '保存する'; } else { $ck = '保存しない'; }

print "<p><table border=1 cellspacing=0 cellpadding=4 width=550>\n";
print "<tr><td class=l colspan=2>▼<b>注文者情報</b></td></tr>\n";
print "<tr><td class=r width=110 align=right>会社名&nbsp;</td><td class=r width=440>$in{'comp'}</td></tr>\n" if ($in{'comp'});
print "<tr><td class=r width=110 align=right>名前&nbsp;</td><td class=r width=440>$in{'name'}</td></tr>\n";
print "<tr><td class=r width=110 align=right>郵便番号&nbsp;</td><td class=r width=440>$in{'yuno'}</td></tr>\n" if ($in{'yuno'});
print "<tr><td class=r width=110 align=right>住所&nbsp;</td><td class=r width=440>$pref<br>$in{'addr'}</td></tr>\n";
print "<tr><td class=r width=110 align=right>電話番号&nbsp;</td><td class=r width=440>$in{'tel'}</td></tr>\n";
print "<tr><td class=r width=110 align=right>FAX番号&nbsp;</td><td class=r width=440>$in{'fax'}</td></tr>\n" if ($in{'fax'});
print "<tr><td class=r width=110 align=right>E-Mail&nbsp;</td><td class=r width=440>$in{'email'}</td></tr>\n";
print "<tr><td class=r width=110 align=right>クッキー保存&nbsp;</td><td class=r width=440>$ck</td></tr>\n";
print "</table>\n";

if ($in{'name2'}) {
print "<p><table border=1 cellspacing=0 cellpadding=4 width=550>\n";
print "<tr><td class=l colspan=2>▼<b>送付先情報</b></td></tr>\n";
print "<tr><td class=r width=110 align=right>会社名</td><td class=r width=440>$in{'comp2'}</td></tr>\n" if ($in{'comp2'});
print "<tr><td class=r width=110 align=right>名前&nbsp;</td><td class=r width=440>$in{'name2'}</td></tr>\n" if ($in{'name2'});
print "<tr><td class=r width=110 align=right>郵便番号&nbsp;</td><td class=r width=440>$in{'yuno2'}</td></tr>\n" if ($in{'yuno2'});
print "<tr><td class=r width=110 align=right>住所&nbsp;</td><td class=r width=440>$pref2<dd>$in{'addr2'}</td></tr>\n" if ($in{'addr2'});
print "<tr><td class=r width=110 align=right>電話番号&nbsp;</td><td class=r width=440>$in{'tel2'}</td></tr>\n" if ($in{'tel2'});
print "<tr><td class=r width=110 align=right>FAX番号&nbsp;</td><td class=r width=440>$in{'fax2'}</td></tr>\n" if ($in{'fax2'});
print "</table>\n";
}

if ($in{'note'}) {
print "<p><table border=1 cellspacing=0 cellpadding=4 width=550>\n";
print "<tr><td class=l colspan=2>▼<b>連絡事項</b></td></tr>\n";
print "<tr><td class=r width=110 align=right>連絡事項&nbsp;</td><td class=r width=440>$in{'note'}</td></tr>\n";
print "</table>\n";
}
}

print <<EOM;
<p>
<input type=button value="&lt; 前画面に戻る" onClick="history.back()">
&nbsp;&nbsp;&nbsp;
<input type=submit value="確定注文する &gt;">
</form>
</div>
</body>
</html>
EOM
exit;
}

#-------------------------------------------------
# 状況表示
#-------------------------------------------------
sub order_view {
local($job) = @_;
local($col1,$col2,$col3,$col4,$col5,$col6,$col7,$col8,$msg);

if ($job == 2) {
$col1 = $col3 = $col4 = $col5 = $col7 = $col8 = "#808080";
$col2 = "white";
$col6 = "yellow";
$msg = "<b>必要事項を入力してください。</b><br>\n";
$msg .= "<font color=red>※</font>の付いたフィールドは入力必須です。\n";
} elsif ($job == 3) {
$col1 = $col2 = $col4 = $col5 = $col6 = $col8 = "#808080";
$col3 = "white";
$col7 = "yellow";
$msg = "これでよろしければ送信ボタンを押してください。\n";
} elsif ($job == 4) {
$col1 = $col2 = $col3 = $col5 = $col6 = $col7 = "#808080";
$col4 = "white";
$col8 = "yellow";
$msg = "ありがとうございます。注文を受け付けました。\n";
} else {
$col1 = "white";
$col2 = $col3 = $col4 = $col6 = $col7 = $col8 = "#808080";
$col5 = "yellow";
$msg = "ご注文ありがとうございます。内容をご確認ください。\n";
}

print <<"EOM";
<table bgcolor="black"><tr>
<td align=center nowrap><font color="$col1">内容確認</font></td><td></td>
<td align=center nowrap><font color="$col2">住所入力</font></td><td></td>
<td align=center nowrap><font color="$col3">注文確認</font></td><td></td>
<td align=center nowrap><font color="$col4">確定</font></td>
</tr><tr>
<th width="70"><font color="$col5">●</font></th>
<th><font color="#EEEEEE">→</font></th>
<th width="70"><font color="$col6">●</font></th>
<th><font color="#EEEEEE">→</font>
<th width="70"><font color="$col7">●</font></th>
<th><font color="#EEEEEE">→</font>
<th width="70"><font color="$col8">●</font></th>
</tr></table>
<P>$msg
EOM
}

#-------------------------------------------------
# メール送信
#-------------------------------------------------
sub sendmail {
local($msub,$mbody,$ordlog,$in_tax,$mypref,$mypref2);

# データ認識
%pick = ();
open(IN,"$logfile") || &error("Open Error: $logfile");
while (<IN>) {
local($no) = split(/<>/);

$pick{$no} = $_;
}
close(IN);

# 在庫認識
if ($stock) { &stock; }

# ホスト名・日付
local($date,$datm,$datl) = &get_time;
local($host) = &get_host;

# メール本文
$mbody = <<EOM;
このメールは自動返信メールです。
商品のお届け等については別途ご連絡致します。

──────────────────────────────
▼注文内容
──────────────────────────────
EOM

$i = 0;
foreach (0 .. $#key) {
($pnum,$psize,$pcol) = split(/:/, $val[$_]);
($no,$item,$price,$size,$color,$img,$memo,$w,$h,$intax,$nmb,$id,$cate) = split(/<>/, $pick{$key[$_]});

# 在庫数チェック
if ($stock) {
if ($stock{$key[$_]} < $pnum) {
&error("商品購入個数が在庫数をオーバーしています");
}
$stock{$key[$_]} -= $pnum;
}

$price2 = $price * $pnum;
$in_tax += $price2;
$zei = "税込み";
$ten += $pnum;

# 桁区切り
$pricec = &filler($price);
$price2c = &filler($price2);

$i++;
if ($id eq "") { $id = $no; }
$mbody .= "[商品$i] $id\n$item\n";

# CSV用
$csv .= "$id<>$item";

if ($psize ne "") {
$mbody .= "$attr1($psize)\n";
$csv .= " $attr1($psize)";
}
if ($pcol ne "") {
$mbody .= "$attr2($pcol)\n";
$csv .= " $attr2($pcol)";
}
$mbody .= "\\$price x $pnum = \\$price2 [$zei]\n\n";
$csv .= "<>$price<>$pnum<>$price2<>";
}

# 小計
$all_pr2 = $in_tax;
$all_pr2c = &filler($all_pr2);
$mbody .= "小 計 : \\$all_pr2c\n";

# 支払手数料
local($pay,$cost) = split(/,/, $payment[$in{'payment'}]);
if ($cost > 0) {
$in_tax += $cost;
$cost = &filler($cost);
$mbody .= "手数料 : \\$cost ($pay)\n";
}

# 送料
if ($in{'name2'}) { $tmp = $in{'pref2'}; }
else { $tmp = $in{'pref'}; }
local($pref,$deli) = split(/,/, $pref[$tmp]);

# 都道府県
($mypref) = split(/,/, $pref[$in{'pref'}]);

# 送料サービス
local($memo)='';
if ($cari_serv && $deli && $in_tax >= $cari_serv) {
$memo = '(送料サービス)';
$deli=0;
}

$in_tax += $deli;

$delic = &filler($deli);
$mbody .= "送 料 : \\$delic $memo\n";

# 消費税
#$tax = int($no_tax * $pertax) if ($no_tax > 0);
$all_pr3 = $in_tax;

# コンマ付加
#$taxc = &filler($tax) if ($tax > 0);
$all_pr3c = &filler($all_pr3);

#$mbody .= "消費税 : \\$taxc\n" if ($tax > 0);
$mbody .= "合 計 : \\$all_pr3c\n\n";

# 改行等復元
$addr = $in{'addr'};
$addr2 = $in{'addr2'};
$note = $in{'note'};
$addr =~ s/<br>/\n /g;
$addr2 =~ s/<br>/\n /g;
$note =~ s/<br>/\n/g;

$mbody .= "──────────────────────────────\n";
$mbody .= "▼支払・配達情報\n";
$mbody .= "──────────────────────────────\n";
$mbody .= "支払方法 = $pay\n";
$mbody .= "配達方法 = $deliv\n";
if ($in{'mon'} ne "" && $in{'day'} ne "") {
$mbody .= "配達日時 = $in{'mon'}月 $in{'day'}日 ";
} else {
$mbody .= "配達日時 = 月日指定なし ";
}
if ($in{'hour'} ne "") { $mbody .= "$deli[$in{'hour'}]\n"; }
else { $mbody .= "時間帯指定なし\n"; }

# ログ読み出し
open(IN,"$ordfile") || &error("Open Error: $ordfile");
@data = <IN>;
close(IN);

# 分解
if ($data[0] =~ /^[^\t]+\t\d+\-(\d+)<>/) { $num = sprintf("%06d", $1+1); }
else { $num = '000001'; }

$mbody .= "\n──────────────────────────────\n";
$mbody .= "▼注文情報\n";
$mbody .= "──────────────────────────────\n";
$mbody .= "確認No = $datl-$num\n";
$mbody .= "E-Mail = $in{'email'}\n";
$mbody .= "会社名 = $in{'comp'}\n" if ($in{'comp'});
$mbody .= "名 前 = $in{'name'}\n";
$mbody .= "郵便番号 = $in{'yuno'}\n" if ($in{'yuno'});
$mbody .= "都道府県 = $mypref\n";
$mbody .= "住 所 = $addr\n";
$mbody .= "電 話 = $in{'tel'}\n";
$mbody .= "FAX = $in{'fax'}\n" if ($in{'fax'});

if ($in{'name2'}) {

($mypref2) = split(/,/, $pref[$in{'pref2'}]);

$mbody .= "\n──────────────────────────────\n";
$mbody .= "▼配送先\n";
$mbody .= "──────────────────────────────\n";
$mbody .= "会社名 = $in{'comp2'}\n" if ($in{'comp2'});
$mbody .= "名 前 = $in{'name2'}\n" if ($in{'name2'});
$mbody .= "郵便番号 = $in{'yuno2'}\n" if ($in{'yuno2'});
$mbody .= "都道府県 = $mypref2\n" if ($in{'pref2'});
$mbody .= "住 所 = $addr2\n" if ($addr2);
$mbody .= "電 話 = $in{'tel2'}\n" if ($in{'tel2'});
$mbody .= "FAX = $in{'fax2'}\n" if ($in{'fax2'});
}


記事No: 2014
投稿日: 2007/10/27(Sat) 12:06:06
タイトルRe^3: 注文メールに反映するには?
ID情報: taporus
投稿者: リッキー

local($deliv) = split(/,/, $delivery[$in{'delivery'}]);
サブルーチンについてはご存知ですか?

注文画面
確認画面
完了画面

に分かれています。

>local($deliv) = split(/,/, $delivery[$in{'delivery'}]);
は、確認画面にしかないため、完了画面では、$delivは何もない状態です。

>$mbody .= "配達方法 = $deliv\n";の上に
>local($deliv) = split(/,/, $delivery[$in{'delivery'}]);
を入れてみてください。

又はそのまま配達方法 = $deliv\nを配達方法 = $in{'delivery'}\n
に変えても大丈夫です


記事No: 2476
投稿日: 2007/12/27(Thu) 19:29:42
タイトルRe^4: 注文メールに反映するには?
ID情報: yk4439
投稿者: おから

お世話様です。リッキーさん、

遅くなりましたが、悩んでいた箇所が
これでうまくいきました!
ホントありがとうございました!
また何かありましたらよろしくお願いします。


[検索ページ]