Esempio n. 1
0
 /**
  * @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;
 }
Esempio n. 2
0
 protected function _beforeSave()
 {
     parent::_beforeSave();
     if ($this->getAddress()) {
         $this->setQuoteAddressId($this->getAddress()->getId());
     }
     return $this;
 }
Esempio n. 3
0
 /**
  * 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;
 }
Esempio n. 4
0
 /**
  * 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;
 }
Esempio n. 5
0
 /**
  * 
  * @param Mage_Sales_Model_Quote_Address_Item $item
  */
 protected function _skipItemSumCalc($item)
 {
     if ($item->getParentItem()) {
         if ($item->getParentItem()->getProductType() != 'bundle') {
             return true;
         }
     }
     return false;
 }
Esempio n. 6
0
 public function _construct()
 {
     parent::_construct();
     $this->_init('qquoteadv/requestitem');
 }
Esempio n. 7
0
 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;
 }
Esempio n. 8
0
 /**
  * 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;
 }
Esempio n. 9
0
 /**
  * @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;
 }
Esempio n. 10
0
 /**
  * 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;
 }