Esempio n. 1
0
 function getBasketInfo($d = array())
 {
     $data['basket'] = $this->getBasket();
     $order = $this->getOrderData();
     foreach ($data['basket'] as &$item) {
         if (isset($order['item_comment'][$item['key']])) {
             $item['item_comment'] = $order['item_comment'][$item['key']];
         }
     }
     if (!empty($d['refid'])) {
         ShopBonus::recountBasket($d['refid'], $data['basket']);
     }
     if (!empty($d['promo'])) {
         ShopBonus::recountBasket(ShopBonus::getPromoRefId($d['promo']), $data['basket']);
     }
     foreach ($data['basket'] as &$item) {
         if (isset($d['item_comment'][$item['key']])) {
             $item['item_comment'] = $d['item_comment'][$item['key']];
         }
     }
     $bsk = new Basket($data['basket']);
     //для всяких расчётов
     foreach ($d as $k => $v) {
         $data[$k] = $v;
     }
     $delivery_zone = 0;
     if (isset($d['delivery_zone'])) {
         $delivery_zone = (int) $d['delivery_zone'];
     }
     //Если есть для города доставка
     //		$data+=$this->getDeliveryCost($bsk->getSum());
     //Если есть зоны доставка
     $data += $this->getDeliveryCostZone($bsk->getSum(), $delivery_zone);
     //		$data['delivery']=0;
     //		$data['price_condition']=0;
     //		if(isset($cityProp['price'])){
     //			$data['delivery']=$cityProp['price'];
     //			if($cityProp['price_condition']){
     //				$data['price_condition']=$cityProp['price_condition'];
     //			}
     //			if($cityProp['price_condition'] && $bsk->getSum()>$cityProp['price_condition']){
     //				$data['delivery']=0;
     //
     //			}
     //		}
     $data['margin'] = 0;
     //		if(isset($cityProp['margin'])){
     //			$data['margin']=$cityProp['margin'];
     //		}
     //но есть прописана цена по стоимости
     if (isset($d['delivery_type'])) {
         $data['price_condition'] = 0;
         $data['delivery'] = $this->getDelivery($d['delivery_type'], $bsk->getSum());
     }
     //подсчитаем скидку
     $data['discount'] = 0;
     if ($discount = $this->getUser('discount')) {
         $bsk->discount = $data['discount'] = (double) $discount;
     }
     //подсчитаем бонусы
     $data['bonus'] = 0;
     //		if(empty($d['not_use_bonus']) && $bonus=$this->getUser('bonus')/10){
     //			if($bonus>$bsk->getSum()){
     //				$bonus=$bsk->getSum();
     //			}
     //
     //			$bsk->bonus=$data['bonus']=(float)$bonus;
     //		}
     if (!empty($d['use_bonus']) && ($bonus = $this->getUser('bonus') / 10)) {
         if ($bonus > $bsk->getSum()) {
             $bonus = $bsk->getSum();
         }
         $bsk->bonus = $data['bonus'] = (double) $bonus;
     }
     $bsk->delivery = $data['delivery'];
     $data['sum'] = $bsk->getSum();
     $data['count'] = $bsk->getCount();
     $data['total_sum'] = $bsk->getTotalSum();
     $data['sort'] = isset($d['sort']) ? $d['sort'] : '';
     $data['ord'] = isset($d['ord']) ? $d['ord'] : '';
     return $data;
 }