www.gusucode.com > ShopEx481 & PHPWind 整合版码程序 > plugins/hooks/hook.gift.php

    <?php
class hook_gift {
	function hook_gift() {
		$this->system = &$GLOBALS['system'];
		$this->db = &$this->system->database();
	}

	function toConsign(&$PARA) {
		$orderId = $PARA['order_id'];
		$oGift = $this->system->loadModel('trading/gift');
		$PARA['gift_send'] = &$PARA['delivery']['gift_send'];

		if (is_array($PARA['gift_send'])) {
			$aOrderItems = $oGift->getOrderItemsList($orderId, array_keys($PARA['gift_send']));
			$flowMark = true;
		} else {
			$aOrderItems = $oGift->getOrderItemsList($orderId);
			$flowMark = false;
		}

		$nTotalSendNum = 0;
		$i = 0;
		$sError = '';

		//判断库存是否全
		if ($aOrderItems){
			foreach($aOrderItems as $aItem) {
				$sendNum = ($flowMark ? intval($PARA['gift_send'][$aItem['gift_id']]) : ($aItem['nums'] - $aItem['send_num']));
				if ($sendNum>0) {
					if (!$oGift->checkStock($aItem['gift_id'], -$sendNum)) {
						$sError = ','.$aItem['name'];
					}else{
						$nTotalSendNum += $sendNum;
						$consignItems[$i] = array(
								'order_id'=>$orderId,
								'item_type'=>'gift',
								'product_id'=>$aItem['gift_id'],
								'product_bn'=>'',
								'product_name'=>$aItem['name'],
								'number'=>$sendNum
						);
						$i++;
					}
				}
			}
		}
		
		if ($nTotalSendNum > 0) {
			$objShipping = $this->system->loadModel('trading/delivery');
			$oGift = $this->system->loadModel('trading/gift');
			if ($PARA['delivery']['delivery_id']) {
				$deliveryId = $PARA['delivery']['delivery_id'];
			}else{
				$deliveryId = $objShipping->toCreate($PARA['delivery']);
			}
			
			foreach($consignItems as $aItem) {
				$aItem['delivery_id'] = $deliveryId;   //对应主表ID
				$itemId = $objShipping->toInsertItem($aItem);
				$oGift->toConsign($orderId, $aItem['product_id'], $aItem['number']);
			}
		}
		if (!empty($sError)) {
			array_push($PARA['message'], $sError);
			array_push($PARA['ship_status_o'], 2);//部分发货
		}else{
			if($i > 0) array_push($PARA['ship_status_o'], 1);//全部发货
			else array_push($PARA['ship_status_o'], -1);//没有赠品发货
		}

		return true;
	}

	function toCancel($PARA){
		$oOrder = $this->system->loadModel('trading/order');
		$oMemberPoint = $this->system->loadModel('trading/memberPoint');

		$orderId = $PARA['order_id'];
		$aData = $oOrder->getFieldById($orderId, array('member_id'));
		$memberId = intval($aData['member_id']);

//		if ($PARA['pay_status']==1 || $PARA['pay_status']==2) {
			$oMemberPoint->cancelOrderRefundConsumePoint($aMemberId['member_id'], $orderId);
//		}

		$oGift = $this->system->loadModel('trading/gift');
		$aOrderItems = $oGift->getOrderItemsList($PARA['order_id']);
		if($aOrderItems) {
			foreach($aOrderItemds as $aItem) {
				$oGift->toCancel($orderId, $aItem['gift_id']);				
			}
		}
		return true;
	}

	function toRemove($PARA) {
		$this->toCancel($PARA);
		$orderId = $PARA['order_id'];
		$this->db->exec('delete from sdb_gift_items where orderId='.intval($orderId));
		$orderId = $PARA['order_id'];
	}
/*
	function toPayed($PARA){
		$oOrder = $this->system->loadModel('trading/order');
		$oMemberPoint = $this->system->loadModel('trading/memberPoint');

		$orderId = $PARA['order_id'];
		$aData = $oOrder->getFieldById($orderId, array('member_id');
		$memberId = intval($aData['member_id']);

		$oMemberPoint = $this->system->loadModel('member/account');
		$aPoint = $oMember->getMemberById($memberId);
		//只有当全额付款时才做处理
		if ($memberId) {
			if ($PARA['pay_status']==1 || $PARA['pay_status']==2) {
				$oMemberPoint->payAllConsumePoint($memberId, $orderId);
			}
		}
		return true;
	}
*/
	//赠品没有退款操作
/*
	function toRefund($IN, &$OUT, &$MSG){
		//
		$oOrder = $this->system->loadModel('trading/order');
		$oMemberPoint = $this->system->loadModel('trading/memberPoint');

		$orderId = null;
		$aData = $oOrder->getFieldById($orderId, array('member_id');
		$memberId = intval($aData['member_id']);

		$oMemberPoint = $this->system->loadModel('member/account');
		$aPoint = $oMember->getMemberById($aUserid['userid']);
		//只有当全额付款时才做处理
		if ($memberId) {
			if ($OUT['pay_status']==5) {
				$oMemberPoint->refundAllConsumePoint($memberId, $orderId);
			}
		}
		return true;
	}*/




}
?>