storesConfig = $storesConfig; $this->quoteCollectionFactory = $collectionFactory; } /** * Clean expired quotes (cron process) * * @return void */ public function execute() { $lifetimes = $this->storesConfig->getStoresConfigByPath('checkout/cart/delete_quote_after'); foreach ($lifetimes as $storeId => $lifetime) { $lifetime *= self::LIFETIME; /** @var $quotes \Magento\Quote\Model\ResourceModel\Quote\Collection */ $quotes = $this->quoteCollectionFactory->create(); $quotes->addFieldToFilter('store_id', $storeId); $quotes->addFieldToFilter('updated_at', ['to' => date("Y-m-d", time() - $lifetime)]); $quotes->addFieldToFilter('is_active', 0); foreach ($this->getExpireQuotesAdditionalFilterFields() as $field => $condition) { $quotes->addFieldToFilter($field, $condition); } $quotes->walk('delete'); } } /** * Retrieve expire quotes additional fields to filter * * @return array */ protected function getExpireQuotesAdditionalFilterFields() { return $this->expireQuotesFilterFields; } /** * Set expire quotes additional fields to filter * * @param array $fields * @return void */ public function setExpireQuotesAdditionalFilterFields(array $fields) { $this->expireQuotesFilterFields = $fields; } }