www.gusucode.com > 08CMS空白站群系统 3.3 繁体 UTF-8 > upload/adminm/cart.inc.php

    <?
!defined('M_COM') && exit('No Permission');
include_once M_ROOT."./include/arcedit.cls.php";
include_once M_ROOT."./include/archive.fun.php";
include_once M_ROOT."./include/upload.cls.php";
include_once M_ROOT."./include/fields.fun.php";
include_once M_ROOT."./include/fields.cls.php";
load_cache('channels,currencys,commus,cotypes,shipings,pfields,permissions');
$aid = empty($aid) ? 0 : max(0,intval($aid));
$forward = empty($forward) ? M_REFERER : $forward;
if(empty($pmode)){
	if(!submitcheck('bcartedit') && !submitcheck('bsettlement') && !submitcheck('bcartpay') && !submitcheck('bconfirm')){
		m_guide(23);
		$itemstr = '';
		$oldsum = $ordersum = $weights = 0;
		$sqlfield = 'a.*';
		$sqlfield .= '';
		$query = $db->query("SELECT a.*,p.cid,p.nums,p.createdate,s.weight,s.storage FROM {$tblprefix}purchases p LEFT JOIN {$tblprefix}archives a ON (a.aid=p.aid) LEFT JOIN {$tblprefix}archives_sub s ON (s.aid=p.aid)
			WHERE p.mid=$memberid AND p.oid=0 ORDER BY p.cid DESC");
		while($item = $db->fetch_array($query)){
			$cid = $item['cid'];
			$item['createdate'] = date("$dateformat", $item['createdate']);
			$discount = 0;
			$commu = read_cache('commu',$channels[$item['chid']]['cuid']);
			if(!empty($commu['setting']['allmode'])){
				$gt_discount = !empty($commu['setting']['gtmode']) ? $curuser->gt_discount($commu['setting']['gtmode']) : 0;
				$cn_discount = !empty($commu['setting']['cnmode']) ? cn_discount($item,$commu['setting']['cnmode']) : 0;
				$discount = caldiscount(array($gt_discount,$cn_discount,!empty($commu['setting']['discount']) ? $commu['setting']['discount'] : 0),$commu['setting']['allmode']);
			}
			$item['arcurl'] = view_arcurl($item);
			$item['dcprice'] = round($item['price'] * (1 - $discount / 100),2);
			$oldsum += $item['price'] * $item['nums'];
			$ordersum += $item['dcprice'] * $item['nums'];
			$enableship && $weights += $item['weight'] * $item['nums'];
			$itemstr .= "<tr><td align=\"center\" class=\"item1\" width=\"30\"><input class=\"checkbox\" type=\"checkbox\" name=\"delete[$cid]\" value=\"$cid\"></td>\n".
				"<td class=\"item2\"><a href=\"$item[arcurl]\" target=\"_blank\">".mhtmlspecialchars($item['subject'])."</a></td>\n".
				"<td align=\"center\" class=\"item1\" width=\"60\">$item[price]</td>\n".
				"<td align=\"center\" class=\"item2\" width=\"60\">$item[dcprice]</td>\n".
				"<td align=\"center\" class=\"item1\" width=\"60\"><input type=\"text\" name=\"itemsnew[$cid][nums]\" value=\"$item[nums]\" size=\"4\"></td>\n".
				(!$enableship ? '' :  "<td align=\"center\" class=\"item2\" width=\"60\">$item[weight]</td>\n").
				(!$enablestock ? '' : "<td align=\"center\" class=\"item1\" width=\"40\">$item[storage]</td>\n").
				"<td align=\"center\" class=\"item2\" width=\"70\">$item[createdate]</td></tr>\n";
		}
		tabheader(lang('my cart &nbsp;&nbsp; purchase step &nbsp; 1&nbsp; / &nbsp;3'),'cart','adminm.php?action=cart&forward='.urlencode($forward),8);
		$catesarr = array(lang('delete'),lang('goods cname'),lang('price ( yuan )'),lang('dcprice ( yuan )'),lang('purchase amount'),);
		$enableship && $catesarr[] = lang('weight (kg)');
		$enablestock && $catesarr[] = lang('stock');
		$catesarr[] = lang('add time');
		trcategory($catesarr);
		if($itemstr){//有商品记录
			echo $itemstr;
			echo "<tr><td class=\"item1\"colspan=\"8\">".
				lang('oldprice sum')."&nbsp;:&nbsp;$oldsum&nbsp;".lang('yuan')."<input type=\"hidden\" name=\"cartnew[oldsum]\" value=\"$oldsum\">&nbsp;&nbsp;,&nbsp;&nbsp;&nbsp;".
				lang('dcprice sum')."&nbsp;:&nbsp;$ordersum&nbsp;".lang('yuan')."<input type=\"hidden\" name=\"cartnew[ordersum]\" value=\"$ordersum\">&nbsp;&nbsp;,&nbsp;&nbsp;&nbsp;".
				($enableship ? lang('weight sum')."&nbsp;:&nbsp;$weights&nbsp;kg<input type=\"hidden\" name=\"cartnew[weights]\" value=\"$weights\">" : '').
				"</td></tr>";
		}else{//无商品记录
			echo "<tr><td align=\"center\" class=\"item1\" width=\"30\">-</td>\n".
				"<td align=\"center\" class=\"item2\">".lang('notyet add goods')."</td>\n".
				"<td align=\"center\" class=\"item1\" width=\"60\">0</td>\n".
				"<td align=\"center\" class=\"item2\" width=\"60\">0</td>\n".
				"<td align=\"center\" class=\"item1\" width=\"60\">0</td>\n".
				(!$enableship ? '' :  "<td align=\"center\" class=\"item2\" width=\"60\">0</td>\n").
				(!$enablestock ? '' : "<td align=\"center\" class=\"item1\" width=\"40\">0</td>\n").
				"<td align=\"center\" class=\"item2\" width=\"60\">-</td></tr>\n";
		}
		tabfooter();
		if($itemstr){
			echo "<input class=\"button\" type=\"submit\" name=\"bcartedit\" value=\"".lang('modify')."\">&nbsp;&nbsp;";
			echo "<input class=\"button\" type=\"submit\" name=\"bsettlement\" value=\"".lang('settlement center1')."\"></form>";
		}
	}elseif(submitcheck('bcartedit')){
		if(!empty($delete)){
			foreach($delete as $cid) unset($itemsnew[$cid]);
			$db->query("DELETE FROM {$tblprefix}purchases WHERE cid IN (".mimplode($delete).")",'SILENT');
		}
		if(!empty($itemsnew)){
			foreach($itemsnew as $cid => $itemnew){
				$itemnew['nums'] = empty($itemnew['nums']) ? 0 : max(0,intval($itemnew['nums']));
				$db->query("UPDATE {$tblprefix}purchases SET nums='$itemnew[nums]' WHERE cid='$cid'");
			}
		}
		mcmessage(lang('cart modify finish'),M_REFERER);
	}elseif(submitcheck('bsettlement')){
		if($enableship){
			$shidsarr = array('0' => lang('nosetting'));
			foreach($shipings as $k =>$v) $shidsarr[$k] = $v['cname'];
		}
		if(!$oldmsg = $db->fetch_one("SELECT shid FROM {$tblprefix}orders WHERE mid='$memberid' ORDER BY oid DESC LIMIT 0,1")) $oldmsg = array();
		tabheader(lang('settlement center1 &nbsp;&nbsp; purchase step &nbsp; 2&nbsp; / &nbsp;3'),'cart','adminm.php?action=cart&forward='.urlencode($forward));
		trbasic(lang('goods oldprice sum'),'',$cartnew['oldsum'].'&nbsp;'.lang('yuan'),'');
		trbasic(lang('goods dcprice sum'),'',$cartnew['ordersum'].'&nbsp;'.lang('yuan'),'');
		if(!empty($enableship)){
			trbasic(lang('goods weight sum'),'',$cartnew['weights'].'&nbsp;kg','');
			trbasic(lang('shiping'),'cartnew[shid]',makeoption($shidsarr,empty($oldmsg['shid']) ? 0 : $oldmsg['shid']),'select');
		}
		echo "<input type=\"hidden\" name=\"cartnew[orderfee]\" value=\"$cartnew[ordersum]\">";
		if(!empty($enableship)) echo "<input type=\"hidden\" name=\"cartnew[weights]\" value=\"$cartnew[weights]\">";
		tabfooter();
		echo "<input class=\"button\" type=\"submit\" name=\"bcartpay\" value=\"".lang('continue')."\">&nbsp;&nbsp;";
		echo "<input class=\"button\" type=\"submit\" onclick=\"javasrcipt:history.go(-1);\" value=\"".lang('goback')."\"></form>";
	}elseif(submitcheck('bcartpay')){
		$cartnew['ordersn'] = date('Ymd').'-'.$memberid.'-'.date('His').'-'.random(6,1);
		$cartnew['shipingfee'] = 0;
		if($enableship && !empty($cartnew['shid']) && !empty($shipings[$cartnew['shid']])){
			$cartnew['shipingfee'] = calshipingfee($cartnew['orderfee'],$cartnew['shid'],$cartnew['weights']);
		}
		$cartnew['totalfee'] = $cartnew['orderfee'] + $cartnew['shipingfee'];
		tabheader(lang('orders confirm &nbsp;&nbsp; purchase step &nbsp; 3&nbsp; / &nbsp;3'),'cart','adminm.php?action=cart&forward='.urlencode($forward),2,1,1);
		trbasic(lang('orders sncode'),'',$cartnew['ordersn'],'');
		trbasic(lang('orders goods fee'),'',$cartnew['orderfee'].'&nbsp;'.lang('yuan'),'');
		if(!empty($enableship)){
			trbasic(lang('shiping'),'',empty($cartnew['shid']) ? '-' : $shipings[$cartnew['shid']]['cname'],'');
			trbasic(lang('orders goods weight'),'',$cartnew['weights'].'&nbsp;kg','');
			trbasic(lang('orders ship fee'),'',$cartnew['shipingfee'].'&nbsp;'.lang('yuan'),'');
		}
		trbasic(lang('orders fee allamount'),'',$cartnew['totalfee'].'&nbsp;'.lang('yuan'),'');
		trbasic(lang('my cash account0'),'',$curuser->infos['currency0'].'&nbsp;'.lang('yuan')."&nbsp;&nbsp;&nbsp;<a href=\"adminm.php?action=payonline\">>>".lang('online saving')."</a>",'');
		trbasic(lang('from my account0 pay ( yuan )'),'cartnew[truepay]',min($cartnew['totalfee'],$curuser->infos['currency0']));
		tabfooter();
	
		tabheader(lang('orders other message'));
		$a_field = new cls_field;
		$submitstr = '';
		if(!$oldmsg = $db->fetch_one("SELECT * FROM {$tblprefix}orders WHERE mid='$memberid' ORDER BY oid DESC LIMIT 0,1")) $oldmsg = array();
		foreach($pfields as $k => $field){
			if(!$field['isadmin']){
				$a_field->init();
				$a_field->field = $field;
				$a_field->oldvalue = !isset($oldmsg[$k]) ? '' : $oldmsg[$k];
				$a_field->trfield('cartnew');
				$submitstr .= $a_field->submitstr;
			}
		}
		$vararr = array('ordersn','orderfee','totalfee');
		$enableship && $vararr = array_merge($vararr,array('shid','weights','shipingfee'));
		foreach($vararr as $v){
			echo "<input type=\"hidden\" name=\"cartnew[$v]\" value=\"$cartnew[$v]\">";
		}
		tabfooter();
		echo "<input class=\"button\" type=\"submit\" name=\"bconfirm\" value=\"".lang('purchase')."\">&nbsp;&nbsp;";
		echo "<input class=\"button\" type=\"submit\" onclick=\"javasrcipt:history.go(-1);\" value=\"".lang('goback')."\"></form>";
		check_submit_func($submitstr);
	}elseif(submitcheck('bconfirm')){
		$sqlstr = "";
		$pfields = fields_order($pfields);
		$c_upload = new cls_upload;	
		$a_field = new cls_field;
		foreach($pfields as $k => $field){
			if(!$field['isadmin']){
				$a_field->init();
				$a_field->field = $field;
				$a_field->deal('cartnew');
				if(!empty($a_field->error)){
					$c_upload->rollback();
					mcmessage($a_field->error,M_REFERER);
				}
				$sqlstr .= ','.$k."='".$a_field->newvalue."'";
			}
		}
		$c_upload->saveuptotal(1);
		unset($a_field,$c_upload);
		$db->query("INSERT INTO {$tblprefix}orders SET
					ordersn='$cartnew[ordersn]',
					orderfee='$cartnew[orderfee]',".
					(!empty($enableship) ? "shid='$cartnew[shid]',weight='$cartnew[weights]',shipingfee='$cartnew[shipingfee]'," : '').
					"totalfee='$cartnew[totalfee]',
					mid='$memberid', 
					mname='".$curuser->infos['mname']."', 
					createdate='$timestamp'
					$sqlstr
					");
		if($oid = $db->insert_id()){//送货后才统计库存量与商品统计及会员统计
			$aedit = new cls_arcedit;
			$query = $db->query("SELECT * FROM {$tblprefix}purchases WHERE mid='$memberid' AND oid='0'");
			while($row = $db->fetch_array($query)){
				$aedit->set_aid($row['aid']);
				$aedit->basic_data();
				$sqlstr = "oid=$oid,price='".$aedit->archive['price']."'";
				!empty($enableship) && $sqlstr .= ",weight='".$aedit->archive['weight']."'";
				$db->query("UPDATE {$tblprefix}purchases SET $sqlstr WHERE cid=$row[cid]");
				$aedit->init();
			}
			unset($aedit);
			if($payed = max(0,min($curuser->infos['currency0'],round($cartnew['truepay'],2)))){//可以扣除不足量现金,也可以超出总费用付费
				$curuser->updatecrids(array(0 => -$payed),1,lang('purchase goods'));
				$db->query("UPDATE {$tblprefix}orders SET payed='$payed' WHERE oid='$oid'");
			}
			mcmessage(lang('purchase goods succeed'),$forward);
		}else mcmessage(lang('purchase goods failed'),$forward);
	}
}else{
	$aedit = new cls_arcedit;
	$aedit->set_aid($aid);
	$aedit->basic_data();
	!($aid = $aedit->aid) && mcmessage(lang('confirmchoose archive'));
	!($commu = read_cache('commu',$channels[$aedit->archive['chid']]['cuid'])) && mcmessage(lang('noavailable item operate'));
	(!$commu['available'] || $commu['cclass'] != 'purchase') && mcmessage(lang('noavailable item operate'));
	!$curuser->pmsbyugids(explode(',',$commu['setting']['ugids'])) && message(lang('you nohave this item permission'));
	if(!submitcheck('bcartedit') && !submitcheck('bcartpay')){//第一步,添写购物数量,显示该商品的基本信息
		if($enableship){
			$shidsarr = array('0' => lang('nosetting'));
			foreach($shipings as $k =>$v) $shidsarr[$k] = $v['cname'];
		}
		$discount = 0;
		if(!empty($commu['setting']['allmode'])){
			$gt_discount = !empty($commu['setting']['gtmode']) ? $curuser->gt_discount($commu['setting']['gtmode']) : 0;
			$cn_discount = !empty($commu['setting']['cnmode']) ? cn_discount($aedit->archive,$commu['setting']['cnmode']) : 0;
			$discount = caldiscount(array($gt_discount,$cn_discount,!empty($commu['setting']['discount']) ? $commu['setting']['discount'] : 0),$commu['setting']['allmode']);
		}
		tabheader(lang('goods purchase step &nbsp; 1&nbsp; / &nbsp;2'),'cart',"adminm.php?action=cart&pmode=1&aid=$aid&forward=".urlencode($forward),2,1,1);
		$submitstr = '';
		$arcurl = view_arcurl($aedit->archive);
		trbasic(lang('goods cname'),'',mhtmlspecialchars($aedit->archive['subject'])."&nbsp; &nbsp;<a href=\"$arcurl\" target=\"_blank\">>>".lang('detail')."</a>",'');
		trbasic(lang('goods oldprice'),'',$aedit->archive['price'].'&nbsp;'.lang('yuan'),'');
		trbasic(lang('goods dcprice'),'',round($aedit->archive['price'] * (1 - $discount / 100)).'&nbsp;'.lang('yuan'),'');
		echo "<input type=\"hidden\" name=\"cartnew[discount]\" value=\"$discount\">";
		if($enablestock){
			$aedit->basic_data();
			trbasic(lang('goods stock'),'',$aedit->archive['storage'],'');
		}
		if($enableship){
			$aedit->basic_data();
			trbasic(lang('goods weight'),'',$aedit->archive['weight'].'&nbsp;kg','');
			trbasic(lang('shiping'),'cartnew[shid]',makeoption($shidsarr,empty($oldmsg['shid']) ? 0 : $oldmsg['shid']),'select');
		}
		trbasic(lang('purchase amount').'&nbsp; *','cartnew[nums]','1','text');
		tabfooter();
		echo "<input class=\"button\" type=\"submit\" name=\"bcartedit\" value=\"".lang('continue')."\"></form>";
		$submitstr .= makesubmitstr('cartnew[nums]',1,'int',0,10);
		check_submit_func($submitstr);
	}elseif(submitcheck('bcartedit')){//汇总各种费用,添加购物者相关信息
		$fnamearr = empty($commu['setting']['fields']) ? array() : explode(',',$commu['setting']['fields']);
		$cartnew['ordersn'] = date('Ymd').'-'.$memberid.'-'.date('His').'-'.random(6,1);
		$cartnew['oldfee'] = $cartnew['nums'] * $aedit->archive['price'];
		$cartnew['orderfee'] = round($cartnew['nums'] * $aedit->archive['price'] * (1 - $cartnew['discount'] / 100));
		$cartnew['weights'] = $cartnew['nums'] * $aedit->archive['weight'];
		$cartnew['shipingfee'] = 0;
		if($enableship && !empty($cartnew['shid']) && !empty($shipings[$cartnew['shid']])){
			$cartnew['shipingfee'] = calshipingfee($cartnew['orderfee'],$cartnew['shid'],$cartnew['weights']);
		}
		$cartnew['totalfee'] = $cartnew['orderfee'] + $cartnew['shipingfee'];
		tabheader(lang('goods purchase step &nbsp; 2&nbsp; / &nbsp;2'),'cart',"adminm.php?action=cart&pmode=1&aid=$aid&forward=".urlencode($forward),2,1,1);
		$submitstr = '';
		$arcurl = view_arcurl($aedit->archive);
		trbasic(lang('orders sncode'),'',$cartnew['ordersn'],'');
		trbasic(lang('goods cname'),'',mhtmlspecialchars($aedit->archive['subject'])."&nbsp; &nbsp;<a href=\"$arcurl\" target=\"_blank\">>>".lang('detail')."</a>",'');
		trbasic(lang('purchase amount'),'',$cartnew['nums'],'');
		trbasic(lang('goods oldprice sum'),'',$cartnew['oldfee'].'&nbsp;'.lang('yuan'),'');
		trbasic(lang('goods dcprice sum'),'',$cartnew['orderfee'].'&nbsp;'.lang('yuan'),'');
		if($enableship){
			$aedit->basic_data();
			trbasic(lang('goods weight sum'),'',$cartnew['weights'].'&nbsp;kg','');
			trbasic(lang('shiping'),'',empty($cartnew['shid']) ? '-' : $shipings[$cartnew['shid']]['cname'],'');
			trbasic(lang('orders ship fee'),'',$cartnew['shipingfee'].'&nbsp;'.lang('yuan'),'');
		}
		trbasic(lang('orders fee allamount'),'',$cartnew['totalfee'].'&nbsp;'.lang('yuan'),'');
		trbasic(lang('my cash account0'),'',$curuser->infos['currency0'].'&nbsp;'.lang('yuan')."&nbsp;&nbsp;&nbsp;<a href=\"adminm.php?action=payonline\">>>".lang('online saving')."</a>",'');
		trbasic(lang('from my account0 pay ( yuan )'),'cartnew[truepay]',min($cartnew['totalfee'],$curuser->infos['currency0']));
		tabfooter();

		tabheader(lang('orders other message'));
		if(!$oldmsg = $db->fetch_one("SELECT * FROM {$tblprefix}orders WHERE mid='$memberid' ORDER BY oid DESC LIMIT 0,1")) $oldmsg = array();
		$fnamearr = empty($commu['setting']['fields']) ? array() : explode(',',$commu['setting']['fields']);
		if($fnamearr){
			$a_field = new cls_field;
			foreach($pfields as $k => $field){
				if(!$field['isadmin'] && in_array($k,$fnamearr)){
					$a_field->init();
					$a_field->field = $field;
					$a_field->oldvalue = !isset($oldmsg[$k]) ? '' : $oldmsg[$k];
					$a_field->trfield('cartnew');
					$submitstr .= $a_field->submitstr;
				}
			}
		}
		$vararr = array('ordersn','orderfee','totalfee','nums');
		$enableship && $vararr = array_merge($vararr,array('shid','weights','shipingfee'));
		foreach($vararr as $v){
			echo "<input type=\"hidden\" name=\"cartnew[$v]\" value=\"$cartnew[$v]\">";
		}
		tabfooter();
		echo "<input class=\"button\" type=\"submit\" name=\"bcartpay\" value=\"".lang('purchase')."\">&nbsp; &nbsp; ";
		echo "<input class=\"button\" type=\"submit\" onclick=\"javasrcipt:history.go(-1);\" value=\"".lang('goback')."\"></form>";
		check_submit_func($submitstr);
	}elseif(submitcheck('bcartpay')){//购物数据处理,如果为积分购物,允许自动结帐的话,直接从帐户中支付
		$fnamearr = empty($commu['setting']['fields']) ? array() : explode(',',$commu['setting']['fields']);
		if($fnamearr){
			$c_upload = new cls_upload;	
			$pfields = fields_order($pfields);
			$a_field = new cls_field;
			$sqlstr = "";
			foreach($pfields as $k => $field){
				if(!$field['isadmin'] && in_array($k,$fnamearr)){
					$a_field->init();
					$a_field->field = $field;
					$a_field->deal('cartnew');
					if(!empty($a_field->error)){
						$c_upload->rollback();
						mcmessage($a_field->error,M_REFERER);
					}
					$sqlstr .= ','.$k."='".$a_field->newvalue."'";
				}
			}
			$c_upload->saveuptotal(1);
			unset($a_field,$c_upload);
		}
		$db->query("INSERT INTO {$tblprefix}orders SET
					ordersn='$cartnew[ordersn]',
					cuid='$commu[cuid]', 
					orderfee='$cartnew[orderfee]',".
					($enableship ? "shid='$cartnew[shid]',weight='$cartnew[weights]',shipingfee='$cartnew[shipingfee]'," : '').
					"totalfee='$cartnew[totalfee]'
					$sqlstr,
					mid='$memberid', 
					mname='".$curuser->infos['mname']."', 
					createdate='$timestamp'
					");
		if($oid = $db->insert_id()){
			$db->query("INSERT INTO {$tblprefix}purchases SET
						 aid='$aid', 
						 price='".$aedit->archive['price']."', 
						 weight='".($enableship ? $aedit->archive['weight'] : 0)."', 
						 oid='$oid',
						 mid='$memberid', 
						 mname='".$curuser->infos['mname']."', 
						 nums='$cartnew[nums]',
						 createdate='$timestamp'
						 ");
			if($payed = max(0,min($curuser->infos['currency0'],round($cartnew['truepay'],2)))){//可以扣除不足量现金,也可以超出总费用付费
				$curuser->updatecrids(array(0 => -$payed),1,lang('purchase goods'));
				$db->query("UPDATE {$tblprefix}orders SET payed='$payed' WHERE oid='$oid'");
			}
			mcmessage(lang('purchase goods succeed'),$forward);
		}else mcmessage(lang('purchase goods failed'),$forward);
	}
}
?>