Skip to main content

Get on Sales Product between dates Magento2

Referene Class is : {magento root}\vendor\magento\module-catalog-widget\Block\Product\ProductsList.php

 

 

/**
 * Get end of day date
 *
 * @return string
 */
public function getEndOfDayDate()
{
    $date = $this->_localeDate->date()->setTime(23, 59, 59)->format('Y-m-d H:i:s');
    return  $date;
}
/**
 * Prepare and return product collection
 *
 * @return Collection
 * @SuppressWarnings(PHPMD.RequestAwareBlockMethod)
 * @throws LocalizedException
 */
public function createCollection()
{
    /** @var $collection Collection */
    $collection = $this->productCollectionFactory->create();

    if ($this->getData('store_id') !== null) {
        $collection->setStoreId($this->getData('store_id'));
    }

    $collection->setVisibility($this->catalogProductVisibility->getVisibleInCatalogIds());

   
    $collection = $this->_addProductAttributesAndPrices($collection)
        ->addStoreFilter()
        ->addAttributeToSort('entity_id', 'desc');
        $collection->addAttributeToFilter(
        'special_from_date',
        ['date' => true, 'to' => $this->getEndOfDayDate()],
        'left'
        )->addAttributeToFilter(
            'special_to_date',
            ['or' => [0 => ['date' => true,
                'from' => $this->getStartOfDayDate()],
                1 => ['is' => new \Zend_Db_Expr(
                    'null'
                )],]],
            'left'
        )->addAttributeToSort(
            'news_from_date',
            'desc'
        );

    $collection->setPageSize($this->getPageSize())
        ->setCurPage($this->getRequest()->getParam($this->getData('page_var_name'), 1));

    $conditions = $this->getConditions();
    $conditions->collectValidatedAttributes($collection);
    $this->sqlBuilder->attachConditionToCollection($collection, $conditions);

    /**
     * Prevent retrieval of duplicate records. This may occur when multiselect product attribute matches
     * several allowed values from condition simultaneously
     */
    $collection->distinct(true);

    return $collection;
} 

 /**
     * Get best selling products
     *
     * @param \Magento\Catalog\Model\ResourceModel\Product\Collection $collection
     *
     * @return \Magento\Catalog\Model\ResourceModel\Product\Collection
     */
    protected function _getBestsellersProducts($collection)
    {
        $collection->setVisibility($this->_catalogProductVisibility->getVisibleInCatalogIds());
        $collection = $this->_addProductAttributesAndPrices($collection);
        $collection->getSelect()
                    ->join(['bestsellers' => $collection->getTable('sales_bestsellers_aggregated_yearly')],
                                'e.entity_id = bestsellers.product_id AND bestsellers.store_id = '.$this->getStoreId(),
                                ['qty_ordered','rating_pos'])
                    ->order('rating_pos');
        $collection->addStoreFilter($this->getStoreId())
                    ->setPageSize($this->getProductsCount())
                    ->setCurPage(1);

        return $collection;
    }

 

 

 

 

Tags