示例#1
0
 /**
  * Address item initialization
  *
  * @param Address $address
  * @param AddressItem|Item $item
  * @return bool
  */
 protected function _initItem($address, $item)
 {
     if ($item instanceof AddressItem) {
         $quoteItem = $item->getAddress()->getQuote()->getItemById($item->getQuoteItemId());
     } else {
         $quoteItem = $item;
     }
     $product = $quoteItem->getProduct();
     $product->setCustomerGroupId($quoteItem->getQuote()->getCustomerGroupId());
     /**
      * Quote super mode flag mean what we work with quote without restriction
      */
     if ($item->getQuote()->getIsSuperMode()) {
         if (!$product) {
             return false;
         }
     } else {
         if (!$product || !$product->isVisibleInCatalog()) {
             return false;
         }
     }
     $originalPrice = $product->getPrice();
     if ($quoteItem->getParentItem() && $quoteItem->isChildrenCalculated()) {
         $finalPrice = $quoteItem->getParentItem()->getProduct()->getPriceModel()->getChildFinalPrice($quoteItem->getParentItem()->getProduct(), $quoteItem->getParentItem()->getQty(), $product, $quoteItem->getQty());
         $this->_calculateRowTotal($item, $finalPrice, $originalPrice);
     } elseif (!$quoteItem->getParentItem()) {
         $finalPrice = $product->getFinalPrice($quoteItem->getQty());
         $this->_calculateRowTotal($item, $finalPrice, $originalPrice);
         $this->_addAmount($item->getRowTotal());
         $this->_addBaseAmount($item->getBaseRowTotal());
         $address->setTotalQty($address->getTotalQty() + $item->getQty());
     }
     return true;
 }