Jump to content

TABLE stock_available mis à jour à chaque appel de BO > Catalogue > Stock (version 1.7.6.0, 1.7.6.1)


Stigz

Recommended Posts

Bonjour,

J'ai remarqué que le stock_available est updaté à chaque appel de BO > Catalogue > stock et c'est une slow query. Le résultat c'est que çà se met à charger avec l'effet vue.js sans rien afficher (internal server error) sauf si on a un max_execution_time de 180 minimum là la première page de "stock" s'affiche mais c'est du coup ingérable.

# Time: 2019-08-28T07:08:02.992778Z
# User@Host: root[root] @ localhost [127.0.0.1]  Id:  4082
# Query_time: 149.469123  Lock_time: 0.000153 Rows_sent: 0  Rows_examined: 1129142
SET timestamp=1566975933;
UPDATE ps1_stock_available sa
            SET sa.reserved_quantity = (
                SELECT SUM(od.product_quantity - od.product_quantity_refunded)
                FROM ps1_orders o
                INNER JOIN ps1_order_detail od ON od.id_order = o.id_order
                INNER JOIN ps1_order_state os ON os.id_order_state = o.current_state
                WHERE o.id_shop = 1 AND
                os.shipped != 1 AND (
                    o.valid = 1 OR (
                        os.id_order_state != 8 AND
                        os.id_order_state != 6
                    )
                ) AND sa.id_product = od.product_id AND
                sa.id_product_attribute = od.product_attribute_id
                GROUP BY od.product_id, od.product_attribute_id
            )
            WHERE sa.id_shop = 1;

Du coup, je ne sais pas où çà se trouve mais si quelqu'un a une piste j'y regarderais bien ou si quelqu'un a une solution...

J'ai mis à jour de prestashop 1.7.6.0 vers 1.7.6.1 mais çà ne règle pas le problème

Le problème vient d'une requête ajax inutile de \admin\themes\new-theme\public\stock.bundle.js ou de la requête SQL elle-même ?

La ligne qui pose problème

$this->updateReservedProductQuantity($shopId, $errorState, $cancellationState, $idProduct, $idOrder);

 

Edited by Stigz (see edit history)
Link to comment
Share on other sites

ma configuration

Informations sur votre serveur

Informations sur votre serveur Windows NT build 18362 (Windows 10) i586

Version du logiciel serveur : Apache/2.4.37 (Win32) OpenSSL/1.1.1a PHP/7.1.31

Version de PHP : 7.1.31

Limite de mémoire : 256M

Temps maximal d'exécution : 600

Taille max. pour envoi de fichiers : 32M

info_outline Informations sur la base de données

Version de MySQL : 8.0.14

Serveur MySQL : 127.0.0.1

Nom MySQL : newvajra-shop

Utilisateur MySQL : root

Préfixe des tables : ps1_

Moteur MySQL : InnoDB

Connecteur MySQL : DbPDO

Link to comment
Share on other sites

  • 3 months later...

En effet le nouveau système de Prestashop met à jour les quantités réservées du stock lors de l'appel du GET à l'API.

Le stock est mis à jour à chaque commande sur le shop, donc peut-être que cela n'est pas nécessaire de le faire une nouvelle fois ici.

Le fichier en question ne peut pas être override car il est dans le nouveau coeur de Prestashop et aucun hook n'est disponible pour le moment.

Voici ce que j'ai fait pour ce problème en attendant une mise à jour :

Le fichier se trouve ici : /src/PrestaShopBundle/Entity/Repository/StockRepository.php

public function getData(QueryParamsCollection $queryParams)
{
  /*
  $this->stockManager->updatePhysicalProductQuantity(
  $this->shopId,
  $this->orderStates['error'],
  $this->orderStates['cancellation']
  );
  */

  return parent::getData($queryParams);
}

Attention, à la prochaine mise à jour ce code sera supprimé.

En attendant de trouver mieux, j'espère que cela vous aidera.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...