#!/usr/bin/perl

#	買い物かごの商品を表示する
#	IN	I=ID(0=クッキー)
#	カートファイル
#		h_xxxxx.txt		
#		日付、時間、点数、金額、本体(未)、消費税(未)、送料１(明細計)、送料２
#		b_xxxxx.txt
#		$date,$time,$g_tensu,$g_kingaku,$g_hontai,$g_zei,$g_soryo1,$g_soryo2,CR
#		数量、税込単価、税込金額、税抜単価(未)、消費税(未)、届け先、のし紙、＜商品マスター＞
#		$su,$komitanka,$komikingaku,$nukitanka,$zei,$todokesaki,$noshi,
#		$floor,$corner,$scode,$name,$imgs,$imgl,$maker,$cmnts,$cmntm,$cmntl,
#		$yoryo,$sanchi,$genryo,$hyojun,$tujo,$baika,$soryo,
#		$sonta1,$sonta2,$sonta3,$sonta4,$sonta5,$sonta6,$sonta7,$sonta8,$sonta9,$sonta10,CR

use DBI;

require 'jcode.pl';
require 'subfunc.cgi';
require './settings.cgi';

#==================================================================
#	設定
#==================================================================

#==================================================================
#	引数を解析する
#==================================================================
if ($ENV{'REQUEST_METHOD'} eq "POST") {
	read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else {
	$buffer = $ENV{'QUERY_STRING'};
}

@pairs = split (/&/,$buffer);
foreach $pair(@pairs)
{
    ($name, $value) = split(/=/, $pair);

    #Un-Webify plus signs and %-encoding
    $value=~tr/+/ /;
    $value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;

    $FORM{$name} = $value;
}

#==================================================================
#	ＩＤの取得
#==================================================================

	if ( $FORM{'ID'} eq "" ) {
		# cookieの取得
		$cookies = $ENV{'HTTP_COOKIE'};
		@pairs = split(/ /, $cookies);
		foreach $pair (@pairs) {
			($name, $value) = split(/=/, $pair);
			$value =~ s/\;//g;
			$cc{$name} = $value;
		}
		$id = $cc{'CartID'};
		if( $id == "" ) { $id = "guest"; }
	} else {
		$id = $FORM{'ID'};
	}

#==================================================================
#	カート読込
#==================================================================

	open (HDR,"../cart/h_$id.txt");
	flock (HDR, 2);
	@hdr = <HDR>;
	flock (HDR, 8);
	close(HDR);

	open (DATA,"../cart/b_$id.txt");
	flock (DATA, 2);
	@data = <DATA>;
	flock (DATA, 8);
	close(DATA);

#==================================================================
#	ＨＴＭＬ読込
#==================================================================
	
	open (HTMLD,"lookcart.htm") || die $!;
	flock (HTMLD, 2);
	@htmldata = <HTMLD>;
	flock (HTMLD, 8);
	close(HTMLD);

	open(HTML2,"../head.html") || die "error!\n";
	flock (HTML2, 2);
	@HEAD_HTML = <HTML2>;
	flock (HTML2, 8);
	close(HTML2);

#==================================================================
#	画面表示
#==================================================================

	print "Content-type: text/html\n\n";
	
	($date,$time,$g_tensu) = split(/,/,$hdr[0]);
	if( @data == 0 ) {
		&no_item( "t_in_cart.gif" );
		return;
	}
	
	$dbh = DBI->connect($data_source,$user_name,$user_pass) || die "CONNECT ERROR $DBI::ERRSTR";

	@cool = ();
	if( $FORM{url} eq '' ) { $FORM{url} = "../"; }

	foreach $html_line (@htmldata) {
		if( index( $html_line, '#INCLUDE_HEAD#' ) >= 0 ) {
			foreach $line2 (@HEAD_HTML) {
				print $line2;
			}
			$html_line = "<!-- INCLUDE OK -->\n";
		}
		$html_line =~ s/#BACK_URL#/$FORM{url}/;
		if ( $html_line eq "<!--EXPORT MEISAI-->\n" ) {
			# <<<<< 明細表示 >>>>>
			$mno = 1;
			foreach $data_line (@data) {
				($su,$komitanka,$komikingaku,$nukitanka,$zei,$todokesaki,$noshi,
					$floor,$corner,$scode,$name,$imgs,$imgl,$maker,$cmnts,$cmntm,$cmntl,
					$yoryo,$sanchi,$genryo,$hyojun,$tujo,$baika,$soryo,
					$sonta1,$sonta2,$sonta3,$sonta4,$sonta5,$sonta6,$sonta7,$sonta8,$sonta9,$sonta10,$CR)
					= split(/,/,$data_line);
#				if ( $mno % 2 == 1 ) {
#					print "<TR bgcolor=#ffffcc>";
#				} else {
					print "<TR bgcolor=\"#FFF0FF\">";
#				}
				print "$nokm";

				$komitanka = &put_comma( $komitanka );
				$komikingaku = &put_comma( $komikingaku );
				if( $soryo < 100 ) { $soryo = 0; }
				if( $soryo == $cool_daikin ) {
					if( $cool[$todokesaki] != 1 ) {
						$soryo = &put_comma( $soryo );
					} else {
						$soryo = "0";
					}
					$cool[$todokesaki] = 1;
				} else {
					$soryo = &put_comma( $soryo * $su );
				}
				if( $su == 0 ) { $su = "---"; }

				$meisai = sprintf( "<TD align=right>%s</TD><TD><a href=\"/cgi/viewitem.cgi?corner=%s&code=%s\">%s</a></TD><TD>%s</TD><TD align=right>　\\%s</TD><TD align=right>　%s</TD><TD align=right>　\\%s</TD><TD align=right>　(\\%s)</TD>",
					$mno, $corner, $scode, $scode, $name, $komitanka, $su, $komikingaku, $soryo );
				print "$meisai";
				print "<TH>";
				$btn1 = sprintf( "<A href=./incart.cgi?K=%s&C=%s&S=1&D=%s&M=0&M2=1><img src='../image/button/b_tasu.gif' border=0></A>", $corner, $scode, $todokesaki );
				print "$btn1　";
				$btn2 = sprintf( "<A href=./incart.cgi?K=%s&C=%s&S=1&D=%s&M=2&M2=1><img src='../image/button/b_hiku.gif' border=0></A>", $corner, $scode, $todokesaki );
				print "$btn2　";
				$btn3 = sprintf( "<A href=./incart.cgi?K=%s&C=%s&S=0&D=%s&M=1&M2=1><img src='../image/button/b_del.gif' border=0></A>", $corner, $scode, $todokesaki );
				print "$btn3";
				print "</TH>";
				print "</TR>\n";
				if( $cc{LoginID} ne "" ) {
					print "<tr bgcolor=#ffffff><td></td><td bgcolor=#4987F2><font color=white>お届先</font></td>";
					# お届先の取得
					if( $todokesaki != 0 ) {
						$sql = "SELECT * FROM receiver WHERE SeqNo=?;";
						$sth = $dbh->prepare($sql);
						$sth->execute( $todokesaki ) || die print $sth->errstr;
						@value = $sth->fetchrow_array;
						print "<td bgcolor=#ffffee>$value[6] 様</td>";
					} else {
						print "<td bgcolor=#ffffee>ご本人様</td>";
					}
					print "<td colspan=2 bgcolor=#ffffee>$noshi</td>\n";
					print "<form method=POST action='incart.cgi'>\n";
					print "<input type=hidden name=M value=0>\n";
					print "<input type=hidden name=M2 value=1>\n";
					print "<input type=hidden name=K value=$corner>\n";
					print "<input type=hidden name=C value=$scode>\n";
					print "<input type=hidden name=S value=0>\n";
					print "<input type=hidden name=D value=0>\n";
					print "<input type=hidden name=N value=なし>\n";
					print "<th colspan=3><input type=button value='お届先の変更' onClick=\"WinOpen($corner,$scode,0);\">";
					print "<input type=submit value='お届先クリア'></th></form></tr>";
				}
				$mno += 1;
				if( $todokesaki != 0 ) {
					$sth->finish;
				}
			}
			# <<<<< 合計表示 >>>>>
			foreach $hdr_line (@hdr) {
				($date,$time,$g_tensu,$g_kingaku,$g_hontai,$g_zei,$g_soryo1,$g_soryo2,$CR)
					= split(/,/,$hdr_line);

				$g_total = &put_comma( $g_kingaku + $g_soryo1 + $g_soryo2 );
				$g_kingaku = &put_comma( $g_kingaku );
				$g_soryo1 = &put_comma( $g_soryo1 );
				$g_soryo2 = &put_comma( $g_soryo2 );

				$gl_shokei = sprintf( "<TR><TD>　</TD><TD>　</TD><TD>　</TD><TH bgcolor=\"#FFDDFF\">小　計</TH><TD align=right bgcolor=\"#FFEEFF\">　%s</TD><TD align=right bgcolor=\"#FFEEFF\">　\\%s</TD><TD align=right bgcolor=\"#FFEEFF\">　(\\%s)</TD><TD>　</TD></TR>\n",
					$g_tensu,$g_kingaku,$g_soryo1 );
				print "$gl_shokei";
#				$gl_soryo1 = sprintf( "<TR bgcolor=#ffffff><TD>　</TD><TD>　</TD><TD>　</TD><TD>　</TD><TD>送料１</TD><TD>　</TD><TD align=right>　\\%s</TD><TD>*1</TD><TD>　</TD></TR>\n",
#					$g_soryo1 );
#				print "$gl_soryo1";
#				$gl_soryo2 = sprintf( "<TR bgcolor=#ffffff><TD>　</TD><TD>　</TD><TD>　</TD><TD>　</TD><TD>送料２</TD><TD>　</TD><TD align=right>　\\%s</TD><TD>*2</TD><TD>　</TD></TR>\n",
#					$g_soryo2 );
#				print "$gl_soryo2";
#				$gl_gokei = sprintf( "<TR bgcolor=#ccccff><TD>　</TD><TD>　</TD><TD>　</TD><TD>　</TD><TD>合　計</TD><TD>　</TD><TD align=right>　\\%s</TD><TD>(税込)</TD><TD>　</TD></TR>\n",
#					$g_total );
#				print "$gl_gokei";
			}
		} else {
			if ( $html_line eq "<!--EXPORT COMMENT-->\n" ) {
				if( $cc{LoginID} eq "" ) {
					$html_line = "<table><TR><TD align=\"left\" height=\"18\"><font color=\"#0000aa\" size=\"-1\">会員でない方：お届け先の指定は決済（［レジに進む］）の画面にて承ります。</font></TD></TR>
						<TR><TD align=\"left\" height=\"18\"><font color=\"#0000aa\" size=\"-1\">会員の方：IDとパスワードを入力してログインし、「カートを見る」ボタンをクリックして下さい。</font></TD></TR>
						<TR><TD align=\"left\" height=\"18\"><font color=\"#0000aa\" size=\"-1\">ログインしますと、１品ずつお届け先を指定したい場合などに、登録されているお届け先から選択できて便利です。</font></TD></TR></table><br>"; 
				}else {
					$html_line = "<table><TR><TD align=\"left\" height=\"18\"><font color=\"#0000aa\" size=\"-1\">ご本人様（ご自宅）以外の住所に配送希望の場合は、商品明細毎に</font></TD></TR>
						<TR><TD align=\"left\" height=\"18\"><font color=\"red\" size=\"-1\"><b>「お届け先の変更」ボタン</font></b><font color=\"#0000aa\" size=\"-1\">をクリックしてお届け先を選択してください。</font></TD></TR>
						<TR><TD align=\"left\" height=\"18\"><font color=\"#0000aa\" size=\"-1\">事前にお届け先登録されたリスト一覧から選択できます。</font></TD></TR></table><br>";
				}
			}
			if( index( $html_line, "google.html" ) >= 0 ) { &google_analytics; next; }
			print "$html_line";
		}
	}

	if ( $mno eq 1 ) {
		print "明細はありません\n";
	}
	
	$dbh->disconnect;
	exit;

#==================================================================
#	数字のカンマ編集
#==================================================================
sub put_comma {
	my $num = $_[0];
	$num = reverse $num;
	$num =~ s/(\d{3})(?=\d)(?!\d*\.)/$1,/g;
	$num = reverse $num;
	return $num
}
