/**
  * Filter collection by specified website, customer group, coupon code, date.
  * Filter collection to use only active rules.
  * Involved sorting by sort_order column.
  *
  * @param int $websiteId
  * @param int $customerGroupId
  * @param string $couponCode
  * @param string|null $now
  * @use $this->addWebsiteGroupDateFilter()
  *
  * @return Mage_SalesRule_Model_Resource_Rule_Collection
  */
 public function setValidationFilter($websiteId, $customerGroupId, $couponCode = '', $now = null)
 {
     if (!$this->getFlag('validation_filter')) {
         if (is_null($now)) {
             $now = Mage::getModel('core/date')->date('Y-m-d');
         }
         /* We need to overwrite joinLeft if coupon is applied */
         $this->getSelect()->reset();
         Mage_Rule_Model_Resource_Rule_Collection_Abstract::_initSelect();
         $this->addWebsiteGroupDateFilter($websiteId, $customerGroupId, $now);
         $select = $this->getSelect();
         $connection = $this->getConnection();
         if (strlen($couponCode)) {
             $select->joinLeft(array('rule_coupons' => $this->getTable('salesrule/coupon')), $connection->quoteInto('main_table.rule_id = rule_coupons.rule_id AND main_table.coupon_type != ?', Mage_SalesRule_Model_Rule::COUPON_TYPE_NO_COUPON), array('code'));
             $noCouponCondition = $connection->quoteInto('main_table.coupon_type = ? ', Mage_SalesRule_Model_Rule::COUPON_TYPE_NO_COUPON);
             $orWhereConditions = array($connection->quoteInto('(main_table.coupon_type = ? AND rule_coupons.type = 0)', Mage_SalesRule_Model_Rule::COUPON_TYPE_AUTO), $connection->quoteInto('(main_table.coupon_type = ? AND main_table.use_auto_generation = 1 AND rule_coupons.type = 1)', Mage_SalesRule_Model_Rule::COUPON_TYPE_SPECIFIC), $connection->quoteInto('(main_table.coupon_type = ? AND main_table.use_auto_generation = 0 AND rule_coupons.type = 0)', Mage_SalesRule_Model_Rule::COUPON_TYPE_SPECIFIC));
             $orWhereCondition = implode(' OR ', $orWhereConditions);
             $select->where($noCouponCondition . ' OR ((' . $orWhereCondition . ') AND rule_coupons.code = ?)', $couponCode);
             $select->where('(rule_coupons.expiration_date IS NULL) AND
                      (to_date is null or to_date >= ?)
                     OR
                      (rule_coupons.expiration_date IS NOT NULL) AND
                      (rule_coupons.expiration_date >= ?) ', $now);
         } else {
             $this->addFieldToFilter('main_table.coupon_type', Mage_SalesRule_Model_Rule::COUPON_TYPE_NO_COUPON);
         }
         $select->where('
                      (main_table.to_date IS NULL) OR
                      (main_table.to_date >= ?)
                    ', $now);
         $this->setOrder('sort_order', self::SORT_ORDER_ASC);
         $this->setFlag('validation_filter', true);
     }
     return $this;
 }
示例#2
0
 /**
  * Run "afterLoad" callback on items if it is applicable
  *
  * @return Enterprise_TargetRule_Model_Resource_Rule_Collection
  */
 protected function _afterLoad()
 {
     foreach ($this->_items as $rule) {
         /* @var $rule Enterprise_TargetRule_Model_Rule */
         if (!$this->getFlag('do_not_run_after_load')) {
             $rule->afterLoad();
         }
     }
     parent::_afterLoad();
     return $this;
 }
示例#3
0
 /**
  * Filter collection by specified website, customer group, coupon code, date.
  * Filter collection to use only active rules.
  * Involved sorting by sort_order column.
  *
  * @param int $websiteId
  * @param int $customerGroupId
  * @param string $couponCode
  * @param string|null $now
  * @use $this->addWebsiteGroupDateFilter()
  *
  * @return Mage_SalesRule_Model_Resource_Rule_Collection
  */
 public function setValidationFilter($websiteId, $customerGroupId, $couponCode = '', $now = null)
 {
     if (!$this->getFlag('validation_filter')) {
         /* We need to overwrite joinLeft if coupon is applied */
         $this->getSelect()->reset();
         parent::_initSelect();
         $this->addWebsiteGroupDateFilter($websiteId, $customerGroupId, $now);
         $select = $this->getSelect();
         if (strlen($couponCode)) {
             $select->joinLeft(array('rule_coupons' => $this->getTable('salesrule/coupon')), 'main_table.rule_id = rule_coupons.rule_id ', array('code'));
             $select->where('(main_table.coupon_type = ? ', Mage_SalesRule_Model_Rule::COUPON_TYPE_NO_COUPON)->orWhere('(main_table.coupon_type = ? AND rule_coupons.type = 0', Mage_SalesRule_Model_Rule::COUPON_TYPE_AUTO)->orWhere('main_table.coupon_type = ? AND main_table.use_auto_generation = 1 ' . 'AND rule_coupons.type = 1', Mage_SalesRule_Model_Rule::COUPON_TYPE_SPECIFIC)->orWhere('main_table.coupon_type = ? AND main_table.use_auto_generation = 0 ' . 'AND rule_coupons.type = 0)', Mage_SalesRule_Model_Rule::COUPON_TYPE_SPECIFIC)->where('rule_coupons.code = ?)', $couponCode);
         } else {
             $this->addFieldToFilter('main_table.coupon_type', Mage_SalesRule_Model_Rule::COUPON_TYPE_NO_COUPON);
         }
         $this->setOrder('sort_order', self::SORT_ORDER_ASC);
         $this->setFlag('validation_filter', true);
     }
     return $this;
 }
示例#4
0
 /**
  * Get SQL for get record count.
  * Reset left join, group and having parts
  *
  * @return Varien_Db_Select
  */
 public function getSelectCountSql()
 {
     $countSelect = parent::getSelectCountSql();
     if ($this->getFlag('is_customer_count_added')) {
         $countSelect->reset(Zend_Db_Select::GROUP);
         $countSelect->reset(Zend_Db_Select::HAVING);
         $countSelect->resetJoinLeft();
     }
     return $countSelect;
 }
示例#5
0
 /**
  * Add primary coupon to collection
  *
  * @return Mage_SalesRule_Model_Resource_Rule_Collection
  */
 public function _initSelect()
 {
     parent::_initSelect();
     $this->getSelect()->joinLeft(array('rule_coupons' => $this->getTable('salesrule/coupon')), 'main_table.rule_id = rule_coupons.rule_id AND rule_coupons.is_primary = 1', array('code'));
     return $this;
 }
示例#6
0
 /**
  * @return Mage_SalesRule_Model_Resource_Rule_Collection
  */
 public function _initSelect()
 {
     parent::_initSelect();
     return $this;
 }
示例#7
0
 /**
  * Add primary coupon to collection
  *
  * @return Mage_SalesRule_Model_Resource_Rule_Collection
  */
 public function _initSelect()
 {
     parent::_initSelect();
     $this->getSelect()->joinLeft(array('rule_coupons' => $this->getTable('salesrule/coupon')), 'main_table.rule_id = rule_coupons.rule_id', array('code', 'usage_limit', 'expiration_date', 'is_primary', 'created_at'));
     return $this;
 }
 /**
  * Convert collection items to select options array
  *
  * @return array
  */
 public function toOptionArray()
 {
     return parent::_toOptionArray('easyshippingrules_rule_id', 'name');
 }
 /**
  * Redeclare before load method for adding event
  *
  * @return MatheusGontijo_EasyShippingRules_Model_Resource_Custommethod_Collection
  */
 protected function _beforeLoad()
 {
     parent::_beforeLoad();
     $this->getSelect()->joinLeft(array('c' => $this->getResource()->getTable('easyshippingrules/carrier')), 'main_table.easyshippingrules_carrier_id = c.easyshippingrules_carrier_id', array('name AS carrier_name'));
     return $this;
 }
 /**
  * Retrieve option hash
  *
  * @return array
  */
 public function toOptionHash()
 {
     return parent::_toOptionHash('easyshippingrules_carrier_id', 'name');
 }