Ver el recuento de productos que no se actualiza


11

Hay 3 tablas diferentes que almacenan el conteo de productos vistos

  • report_viewed_product_aggregated_daily
  • report_viewed_product_aggregated_monthly
  • report_viewed_product_aggregated_yearly

Si deseo obtener el recuento actual de un producto, puedo obtenerlo en cualquiera de estas tablas. Pero el problema es que, cada vez que abro el producto en la interfaz, ninguna de estas tablas muestra ningún resultado relacionado con ese producto.

¿Es un problema de magento incorporado?

Pensé que necesitaba configurar Magento cron para actualizar estas tablas instantáneamente cuando el usuario abre el producto, pero tampoco funcionó para mí.


No obtengo ninguna respuesta :(
Muhammad Wasif

Al principio no sabía que mi reputación se deduciría después de comenzar la recompensa: D
Muhammad Wasif

Respuestas:


10

Estas tablas no se actualizarán en tiempo de ejecución

Debe ejecutar Actualizar estadísticas desde:

Informes -> Estadísticas -> Actualizar estadísticas

Si desea ejecutarlo desde cronjob, siga este enlace: /magento//a/243187/31910


Esto realmente satisfactorio. Gracias por la aclaración :)
Muhammad Wasif

7

Vaya a Admin -> Reports -> Refresh Statistics, luego seleccione los informes que desea actualizar, luego presione el botón Enviar.

Una vez actualizado, regrese al informe, seleccione las fechas requeridas para y desde, luego haga clic en el botón Mostrar informes.

Debería ver el informe según sea necesario.

Si todavía no hay nada, es posible que deba buscar en las report_viewed_product_*tablas y ver si de hecho hay datos allí.


+1 por tu tiempo y esfuerzo.
Muhammad Wasif

2

Después de la respuesta @Shoaib Munir y @Rk Rathod , estos cuadros no se actualice en tiempo de ejecución por lo que necesita para funcionar Actualizar estadísticas de Reports -> Statistics -> Refresh Statisticscada momento. pero si no desea actualizar las estadísticas manualmente cada vez, puede configurar cron para eso y actualizar las estadísticas automáticamente.

Primero, debe pasar el argumento reportTypes a su clase cron utilizando di.xml como se muestra a continuación (he pasado todos los argumentos que puede pasar según su requisito).

<type name="Vendor\Module\Cron\CronFile">
        <arguments>
            <argument name="reportTypes" xsi:type="array">
                <item name="sales" xsi:type="string">Magento\Sales\Model\ResourceModel\Report\Order</item>
                <item name="tax" xsi:type="string">Magento\Tax\Model\ResourceModel\Report\Tax</item>
                <item name="shipping" xsi:type="string">Magento\Sales\Model\ResourceModel\Report\Shipping</item>
                <item name="invoiced" xsi:type="string">Magento\Sales\Model\ResourceModel\Report\Invoiced</item>
                <item name="refunded" xsi:type="string">Magento\Sales\Model\ResourceModel\Report\Refunded</item>
                <item name="coupons" xsi:type="string">Magento\SalesRule\Model\ResourceModel\Report\Rule</item>
                <item name="bestsellers" xsi:type="string">Magento\Sales\Model\ResourceModel\Report\Bestsellers</item>
                <item name="viewed" xsi:type="string">Magento\Reports\Model\ResourceModel\Report\Product\Viewed</item>
            </argument>
        </arguments>
    </type>

Entonces en su archivo cron debería ser así.

<?php
namespace Vendor\Module\Cron;
use Magento\Reports\Model\ResourceModel\Refresh\Collection;

class CronFile extends Collection
{
    protected $logger;
    protected $reportTypes;

    public function __construct(
        \Magento\Framework\Data\Collection\EntityFactory $entityFactory,
        \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
        \Magento\Reports\Model\FlagFactory $reportsFlagFactory,
        \Psr\Log\LoggerInterface $logger,
        array $reportTypes
    ) {
        $this->logger = $logger;
        $this->reportTypes = $reportTypes;
        parent::__construct($entityFactory,$localeDate,$reportsFlagFactory);
    }
    /**
     * @return $this
     */
    public function execute()
    {
        $objectManager = \Magento\Framework\App\ObjectManager::getInstance();

        try {
            $codes = $this->loadData();

            foreach ($codes->_items as $codek=>$codev) {
                $objectManager->create($this->reportTypes[$codek])->aggregate();
            }
        } catch (\Magento\Framework\Exception\LocalizedException $e) {
            $this->logger->critical($e->getMessage());
        } catch (\Exception $e) {
           $this->logger->critical($e->getMessage());
        }
        return $this;
    }
}

¡Espero que ayude!


+1 por tu tiempo y esfuerzo. Tengo marca correcta la primera respuesta de Shoaib Munir
Muhammad Wasif

1
Gracias por tu apreciación :) +1 por ti.
Chirag Patel
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.