/** * 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; }