![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/vendor/magento/module-sales/Model/CronJob/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Sales\Model\CronJob; use Magento\Framework\App\ObjectManager; use Magento\Sales\Api\OrderManagementInterface; use Magento\Sales\Model\ResourceModel\Order\CollectionFactory; use Magento\Store\Model\StoresConfig; use Magento\Sales\Model\Order; /** * Class that provides functionality of cleaning expired quotes by cron */ class CleanExpiredOrders { /** * @var StoresConfig */ protected $storesConfig; /** * @var CollectionFactory */ protected $orderCollectionFactory; /** * @var OrderManagementInterface */ private $orderManagement; /** * @param StoresConfig $storesConfig * @param CollectionFactory $collectionFactory * @param OrderManagementInterface|null $orderManagement */ public function __construct( StoresConfig $storesConfig, CollectionFactory $collectionFactory, OrderManagementInterface $orderManagement = null ) { $this->storesConfig = $storesConfig; $this->orderCollectionFactory = $collectionFactory; $this->orderManagement = $orderManagement ?: ObjectManager::getInstance()->get(OrderManagementInterface::class); } /** * Clean expired quotes (cron process) * * @return void */ public function execute() { $lifetimes = $this->storesConfig->getStoresConfigByPath('sales/orders/delete_pending_after'); foreach ($lifetimes as $storeId => $lifetime) { /** @var $orders \Magento\Sales\Model\ResourceModel\Order\Collection */ $orders = $this->orderCollectionFactory->create(); $orders->addFieldToFilter('store_id', $storeId); $orders->addFieldToFilter('status', Order::STATE_PENDING_PAYMENT); $orders->getSelect()->where( new \Zend_Db_Expr('TIME_TO_SEC(TIMEDIFF(CURRENT_TIMESTAMP, `updated_at`)) >= ' . $lifetime * 60) ); foreach ($orders->getAllIds() as $entityId) { $this->orderManagement->cancel((int) $entityId); } } } }