public function importQuoteItem(Mage_Sales_Model_Quote_Item $quoteItem) { $this->setQuoteItemId($quoteItem->getId())->setProductId($quoteItem->getProductId())->setProduct($quoteItem->getProduct())->setSuperProductId($quoteItem->getSuperProductId())->setSuperProduct($quoteItem->getSuperProduct())->setSku($quoteItem->getSku())->setImage($quoteItem->getImage())->setName($quoteItem->getName())->setDescription($quoteItem->getDescription())->setWeight($quoteItem->getWeight())->setPrice($quoteItem->getPrice())->setCost($quoteItem->getCost()); if (!$this->hasQty()) { $this->setQty($quoteItem->getQty()); } $this->setQuoteItemImported(true); return $this; }
/** * Gets the item information for standard items or child items of configurable products * * @param Mage_Sales_Model_Quote_Item $item * @param bool $cartFreeShipping * @return Webshopapps_Wsacommon_Model_Totals */ protected function _getStdWeightQtyTotals($item, $cartFreeShipping) { $finalTotals = new Webshopapps_Wsacommon_Model_Totals(); $addressWeight = 0; $addressQty = 0; $freeMethodWeight = 0; if ($item->getHasChildren() && ($item->isShipSeparately() || $item->getProduct()->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE)) { foreach ($item->getChildren() as $child) { if ($child->getProduct()->isVirtual()) { continue; } $addressQty += $item->getQty() * $child->getQty(); $itemWeight = $child->getWeight(); $itemQty = $child->getTotalQty(); $rowWeight = $itemWeight * $itemQty; if ($cartFreeShipping || $child->getFreeShipping() === true) { $rowWeight = 0; } elseif (is_numeric($child->getFreeShipping())) { $freeQty = $child->getFreeShipping(); if ($itemQty > $freeQty) { $rowWeight = $itemWeight * ($itemQty - $freeQty); } else { $rowWeight = 0; } } $freeMethodWeight += $rowWeight; $addressWeight += $rowWeight; } } else { $addressQty += $item->getQty(); $itemWeight = $item->getWeight(); $rowWeight = $itemWeight * $item->getQty(); $addressWeight += $rowWeight; if ($cartFreeShipping || $item->getFreeShipping() === true) { $rowWeight = 0; } elseif (is_numeric($item->getFreeShipping())) { $freeQty = $item->getFreeShipping(); if ($item->getQty() > $freeQty) { $rowWeight = $itemWeight * ($item->getQty() - $freeQty); } else { $rowWeight = 0; } } $freeMethodWeight += $rowWeight; } $finalTotals->setWeight($addressWeight); $finalTotals->setFreeMethodWeight($freeMethodWeight); // TODO This wasnt in original, needs checking $finalTotals->setQty($addressQty); return $finalTotals; }