/** * @param array $products * @return RocketWeb_GoogleBaseFeedGenerator_Model_Map_Product_Shipping */ public function setItem($product, $parentProduct = null) { $this->_item = Mage::getModel('sales/quote_address_item'); $this->_item->setProduct($product); if (!is_null($parentProduct)) { $parentItem = Mage::getModel('sales/quote_address_item'); $parentItem->setProduct($parentProduct); $this->_item->setParentItem($parentItem); } return $this; }
protected function _beforeSave() { parent::_beforeSave(); if ($this->getAddress()) { $this->setQuoteAddressId($this->getAddress()->getId()); } return $this; }
/** * Reads in applied redemptions and checks if certain applied redemptions are also valid, then puts them in the ready list, if not, removes them from the list. * * @param Mage_Sales_Model_Quote $quote * @param Mage_Sales_Model_Quote_Address $address * @param Mage_Sales_Model_Quote_Address_Item $item * @param int $rule_id */ public function validateRedemptionRule(&$quote, &$address, &$item, $rule_id, &$isValidApplicable = false) { $rule = $this->getRule($rule_id); $store = $item->getQuote()->getStore(); //@nelkaake 17/03/2010 5:01:35 AM //@nelkaake -a 28/11/10: Get all the rule ids that were validated by Magento $valid = Mage::getModel('rewards/salesrule_list_valid')->initQuote($quote); $applied = Mage::getModel('rewards/salesrule_list_applied')->initQuote($quote); $valid_applicable = Mage::getModel('rewards/salesrule_list_valid_applicable')->initQuote($quote); $valid_applied = Mage::getModel('rewards/salesrule_list_valid_applied')->initQuote($quote); //echo "[{$rule_id}] BEFORE: valid={$valid->out()} applied={$applied->out()} valid_applicable={$valid_applicable->out()} valid_applied={$valid_applied->out()} <BR />"; $valid_applicable->remove($rule); $valid_applied->remove($rule); $valid->remove($rule); if ($this->isValidRedemption($rule, $quote, $item)) { $valid->add($rule); if ($rule->isVariablePointsRule()) { $applied->add($rule); } if ($applied->hasRule($rule)) { $valid_applied->add($rule); $valid_applicable->remove($rule); } else { $isValidApplicable = true; $valid_applicable->add($rule); $valid_applied->remove($rule); } } else { $applied->remove($rule); } //echo "[{$rule_id}] AFTER: valid={$valid->out()} applied={$applied->out()} valid_applicable={$valid_applicable->out()} valid_applied={$valid_applied->out()} <BR />"; $valid->saveToQuote($quote); $applied->saveToQuote($quote); $valid_applicable->saveToQuote($quote); $valid_applied->saveToQuote($quote); return $this; }
/** * Checks if item is configurable * * @param Mage_Sales_Model_Quote_Address_Item|Mage_Sales_Model_Quote_Item|Mage_Sales_Model_Order_Creditmemo_Item|Mage_Sales_Model_Order_Invoice_Item $item * @return bool */ protected function _isConfigurable($item) { if ($item instanceof Mage_Sales_Model_Quote_Item) { return $item->getProductType() === Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE; } if ($item instanceof Mage_Sales_Model_Quote_Address_Item) { return $item->getProduct()->getTypeId() === Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE; } if ($item instanceof Mage_Sales_Model_Order_Invoice_Item || $item instanceof Mage_Sales_Model_Order_Creditmemo_Item) { return $item->getOrderItem()->getProductType() === Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE; } return false; }
/** * * @param Mage_Sales_Model_Quote_Address_Item $item */ protected function _skipItemSumCalc($item) { if ($item->getParentItem()) { if ($item->getParentItem()->getProductType() != 'bundle') { return true; } } return false; }
public function _construct() { parent::_construct(); $this->_init('qquoteadv/requestitem'); }
public function addItem(Mage_Sales_Model_Quote_Address_Item $item) { $item->setAddress($this)->setParentId($this->getId()); if (!$item->getId()) { $this->getItemsCollection()->addItem($item); } return $this; }
/** * Retrieve product for item code * * @param Mage_Sales_Model_Quote_Address_Item|Mage_Sales_Model_Quote_Item $item * @return null|Mage_Catalog_Model_Product * @throws OnePica_AvaTax_Exception */ protected function _getProductForItemCode($item) { $product = $this->_getProductByProductId($item->getProductId()); if (!$this->_getCalculationHelper()->isConfigurable($item)) { return $product; } $children = $item->getChildren(); if (isset($children[0]) && $children[0]->getProductId()) { $product = $this->_getProductByProductId($children[0]->getProductId()); } return $product; }
/** * @return $this */ public function collectRates() { $allowed_carriers = $this->getAllowedCarriers(); $this->_rates = array(); $ter = $this->getConfig()->getShippingTerritory($this->getStoreId()); if (empty($ter)) { return $this; } $only_minimum = $this->getConfig()->getConfigVar('only_minimum', $this->getStoreId(), 'shipping'); $only_free_shipping = $this->getConfig()->getConfigVar('only_free_shipping', $this->getStoreId(), 'shipping'); if (!empty($allowed_carriers)) { foreach ($ter as $country_id => $regions) { if (is_array($regions) && count($regions) > 0) { foreach ($regions as $region_id => $region_code) { $result = array(); $quote = clone $this->_getQuoteModel(); $address = clone $this->_getAddressModel(); $address->setQuote($quote); $this->_item->setAddress($address); $this->_item->calcRowTotal(); $request = $this->setRequest($this->_item, $allowed_carriers, $address, $country_id, $region_id); $shipping = clone $this->_getShippingModel(); $shipping->collectRates($request); $result = $shipping->getResult(); if ($only_minimum) { $result->sortRatesByPrice(); } $result = $result->asArray(); if (empty($result)) { continue; } if ($only_minimum && is_array($result)) { reset($result); $result = array(key($result) => current($result)); } if ($only_free_shipping) { $result = $this->filterFreeShipping($result); } $this->_rates[$country_id][$region_code] = $result; } } else { $result = array(); $quote = clone $this->_getQuoteModel(); $address = clone $this->_getAddressModel(); $address->setQuote($quote); $this->_item->setAddress($address); $this->_item->calcRowTotal(); $request = $this->setRequest($this->_item, $allowed_carriers, $address, $country_id, null); $shipping = clone $this->_getShippingModel(); $shipping->collectRates($request); $result = $shipping->getResult(); if ($only_minimum) { $result->sortRatesByPrice(); } $result = $result->asArray(); if (empty($result)) { continue; } if ($only_minimum && is_array($result)) { reset($result); $result = array(key($result) => current($result)); } if ($only_free_shipping) { $result = $this->filterFreeShipping($result); } $this->_rates[$country_id]["*"] = $result; } } } return $this; }
/** * Retrieve simple product id from quote item * * @param Mage_Sales_Model_Quote_Item|Mage_Sales_Model_Quote_Address_Item $item * * @return int */ protected function _retrieveProductIdFromQuoteItem($item) { $productId = $item->getProductId(); if ($item->getOptionByCode('simple_product')) { $productId = $item->getOptionByCode('simple_product')->getProduct()->getId(); } return $productId; }