public function load($printQuery = false, $logQuery = false) { try { parent::load($printQuery, $logQuery); // echo $this->getSelect().'<br/><br/>'; return $this; } catch (Exception $e) { //echo $e->getMessage(); die($this->getSelect()); } }
/** * Redeclare parent method for applying filters after parent method * but before adding unions and calculating totals * * @return Mage_Sales_Model_Resource_Report_Bestsellers_Collection */ protected function _beforeLoad() { parent::_beforeLoad(); $this->_applyStoresFilter(); $this->_applyDateRangeFilter(); if ($this->_period) { // $selectUnions = array(); // apply date boundaries (before calling $this->_applyDateRangeFilter()) $dtFormat = Varien_Date::DATE_INTERNAL_FORMAT; $periodFrom = !is_null($this->_from) ? new Zend_Date($this->_from, $dtFormat) : null; $periodTo = !is_null($this->_to) ? new Zend_Date($this->_to, $dtFormat) : null; if ('year' == $this->_period) { if ($periodFrom) { // not the first day of the year if ($periodFrom->toValue(Zend_Date::MONTH) != 1 || $periodFrom->toValue(Zend_Date::DAY) != 1) { $dtFrom = $periodFrom->getDate(); // last day of the year $dtTo = $periodFrom->getDate()->setMonth(12)->setDay(31); if (!$periodTo || $dtTo->isEarlier($periodTo)) { $selectUnions[] = $this->_makeBoundarySelect($dtFrom->toString($dtFormat), $dtTo->toString($dtFormat)); // first day of the next year $this->_from = $periodFrom->getDate()->addYear(1)->setMonth(1)->setDay(1)->toString($dtFormat); } } } if ($periodTo) { // not the last day of the year if ($periodTo->toValue(Zend_Date::MONTH) != 12 || $periodTo->toValue(Zend_Date::DAY) != 31) { $dtFrom = $periodTo->getDate()->setMonth(1)->setDay(1); // first day of the year $dtTo = $periodTo->getDate(); if (!$periodFrom || $dtFrom->isLater($periodFrom)) { $selectUnions[] = $this->_makeBoundarySelect($dtFrom->toString($dtFormat), $dtTo->toString($dtFormat)); // last day of the previous year $this->_to = $periodTo->getDate()->subYear(1)->setMonth(12)->setDay(31)->toString($dtFormat); } } } if ($periodFrom && $periodTo) { // the same year if ($periodFrom->toValue(Zend_Date::YEAR) == $periodTo->toValue(Zend_Date::YEAR)) { $dtFrom = $periodFrom->getDate(); $dtTo = $periodTo->getDate(); $selectUnions[] = $this->_makeBoundarySelect($dtFrom->toString($dtFormat), $dtTo->toString($dtFormat)); $this->getSelect()->where('1<>1'); } } } else { if ('month' == $this->_period) { if ($periodFrom) { // not the first day of the month if ($periodFrom->toValue(Zend_Date::DAY) != 1) { $dtFrom = $periodFrom->getDate(); // last day of the month $dtTo = $periodFrom->getDate()->addMonth(1)->setDay(1)->subDay(1); if (!$periodTo || $dtTo->isEarlier($periodTo)) { $selectUnions[] = $this->_makeBoundarySelect($dtFrom->toString($dtFormat), $dtTo->toString($dtFormat)); // first day of the next month $this->_from = $periodFrom->getDate()->addMonth(1)->setDay(1)->toString($dtFormat); } } } if ($periodTo) { // not the last day of the month if ($periodTo->toValue(Zend_Date::DAY) != $periodTo->toValue(Zend_Date::MONTH_DAYS)) { $dtFrom = $periodTo->getDate()->setDay(1); // first day of the month $dtTo = $periodTo->getDate(); if (!$periodFrom || $dtFrom->isLater($periodFrom)) { $selectUnions[] = $this->_makeBoundarySelect($dtFrom->toString($dtFormat), $dtTo->toString($dtFormat)); // last day of the previous month $this->_to = $periodTo->getDate()->setDay(1)->subDay(1)->toString($dtFormat); } } } if ($periodFrom && $periodTo) { // the same month if ($periodFrom->toValue(Zend_Date::YEAR) == $periodTo->toValue(Zend_Date::YEAR) && $periodFrom->toValue(Zend_Date::MONTH) == $periodTo->toValue(Zend_Date::MONTH)) { $dtFrom = $periodFrom->getDate(); $dtTo = $periodTo->getDate(); $selectUnions[] = $this->_makeBoundarySelect($dtFrom->toString($dtFormat), $dtTo->toString($dtFormat)); $this->getSelect()->where('1<>1'); } } } } // add unions to select if ($selectUnions) { $unionParts = array(); $cloneSelect = clone $this->getSelect(); $helper = Mage::getResourceHelper('core'); $unionParts[] = '(' . $cloneSelect . ')'; foreach ($selectUnions as $union) { $query = $helper->getQueryUsingAnalyticFunction($union); $unionParts[] = '(' . $query . ')'; } $this->getSelect()->reset()->union($unionParts, Zend_Db_Select::SQL_UNION_ALL); } if ($this->isTotals()) { // calculate total $cloneSelect = clone $this->getSelect(); $this->getSelect()->reset()->from($cloneSelect, $this->getAggregatedColumns()); } else { // add sorting $this->getSelect()->order(array('period ASC', 'qty_ordered DESC')); } } $adapter = Mage::getSingleton('core/resource')->getConnection('core_write'); $product = Mage::getResourceSingleton('catalog/product'); $attr = $product->getAttribute('sm_product_vendor_id'); $joinExprProductVendorId = array('product_vendor_id.entity_id = sales_bestsellers_aggregated_yearly.product_id', 'product_vendor_id.store_id = sales_bestsellers_aggregated_yearly.store_id', $adapter->quoteInto('product_vendor_id.entity_type_id = ?', $product->getTypeId()), $adapter->quoteInto('product_vendor_id.attribute_id = ?', $attr->getAttributeId())); $joinExprProductVendorId = implode(' AND ', $joinExprProductVendorId); $joinExprProductDefaultVendorId = array('product_default_vendor_id.entity_id = sales_bestsellers_aggregated_yearly.product_id', 'product_default_vendor_id.store_id = 0', $adapter->quoteInto('product_default_vendor_id.entity_type_id = ?', $product->getTypeId()), $adapter->quoteInto('product_default_vendor_id.attribute_id = ?', $attr->getAttributeId())); $joinExprProductDefaultVendorId = implode(' AND ', $joinExprProductDefaultVendorId); $this->getSelect()->joinLeft(array('product_vendor_id' => $attr->getBackend()->getTable()), $joinExprProductVendorId, array())->joinLeft(array('product_default_vendor_id' => $attr->getBackend()->getTable()), $joinExprProductDefaultVendorId, array()); if ($vendor = Mage::helper('smvendors')->getVendorLogin()) { $this->getSelect()->where('product_vendor_id.value = ?', $vendor->getId()); } //die($this->getSelect()); return $this; }