Jump to content
trcom

Mise a jour des stocks via SQL : Cumul des quantités des déclinaisons ne remontent pas sur le produit

Recommended Posts

Bonjour
je traite depuis novembre les mises a jour des stocks d'un client sur PS 1.6.1 de manière récurrente à la main chaque soir via SQL en suivant plusieurs requêtes qui attaquent les tables product / stock_available / product_attribute (requêtes présentées plus bas)
On me transmet un CSV avec une feuille pour les produits (2 colonnes ID PRODUIT / QUANTITES) et une feuille pour les déclis (3 colonnes (ID PRODUIT / ID DECLINAISON PRODUIT / QUANTITES) et je constitue mes requêtes dans XLS en concaténant des cellules issues du CSV et les copie/colle dans SQL pour les executer.
il se trouve que cela a super bien fonctionné pendant plusieurs mois,
j'ai une version de dév sur laquelle l'erreur n'est pas reproduite, celle ci date d'un mois.

depuis un mois j'ai un bug,
SUR LE FRONT :
les produits traités (dans leur énorme globalité, mais pas tous !) avec une décli ont bien du stock, mais cependant signalent :
une alerte rouge "EN STOCK" sur la fiche produit  ET Bouton AJOUT PANIER absent
une alerte verte "EN STOCK" sur le listing produit

EN BO : les quantités sont présentes et conformes au traitement dans les déclis, mais le produit n'affiche pas la somme des quantités des déclis en BO dans la liste des produits
Cette quantité est à 0 alors que le cumul des déclinaisons pour ce produit est largement supérieur a 0

dans le csv je ne vois pas de différence entre les produits qui ne fonctionnent pas et ceux qui fonctionnent tout a l'air OK ...
le CSV a l'air impeccable, et identique a avant quand ça fonctionnait

Auriez vous une idée de ou cela peut provenir ?
mes requêtes sont elles bonnes (elle fonctionnaient) ?
cela peut il être dû au fichier CSV transmis aussi minimal soit il en termes de datas ?

 

Mes requêtes sont les suivantes (je n'ai qu'une boutique )  :

Pour les Produits 2 requetes :

UPDATE `mabdd`.`ps_product` SET `quantity` = '82' WHERE `ps_product`.`id_product` = 12;
...
et
UPDATE `mabdd`.`ps_stock_available` SET `quantity` = '82' WHERE `ps_stock_available`.`id_product` = 12;
...

Pour les déclis : 2 requetes

UPDATE `mabdd`.`ps_product_attribute` SET `quantity` = '95' WHERE `ps_product_attribute`.`id_product_attribute` = 247;
...
et
UPDATE `mabdd`.`ps_stock_available` SET `quantity` = '95' WHERE `ps_stock_available`.`id_product` = 1759 AND `ps_stock_available`.`id_product_attribute` =247;
...

Par avance merci pour vos idées et retours d 'expérience
 

 

PS : j'ai remarqué en BDD niveau product_attribute, qu'une META DECLINAISON existait avec ID product_attribute = 0 qui normalement recoit la somme des quantités des déclinaisons pour le produit, et qui doit servir forcément à l'affichage des quantités globales du Pdt en BO, et pour la gestion des stocks en FO ...

Merci encore

Edited by trcom
reflexion : (see edit history)

Share this post


Link to post
Share on other sites

il vous manque un update de la table ps_product_shop dans votre requête et effectivement la mise à jour de l'attribut 0 pour les produits mis à jour (quantité = somme des quantités des attributs)

Share this post


Link to post
Share on other sites

Merci beaucoup pour votre réponse
Mais il me semble que ps_product_shop ne joue pas sur les quantités, du moins pas pour moi, je ne trouve pas cette info dans la table
(pour les prix oui par contre, mais c'est pas le sujet)

Ok pour ajouter la somme des quantités des attributs dans la requête pour l'ID_product_attribute=0 de chaque produit à décli
Mais difficile de gérer ca sous XLS (je suis pas développeur ni expert du tout en XLS / VBscript)
ET pourquoi cela fonctionnait alors que je n'ai jamais fait ça auparavant ...ni n'a été fourni par mon client étant donné que ce "produit de base" n'a ni référence, ni prix, ni poids dans prestashop, et n'existe pas dans leur ERP, ils fonctionnent avec 1 décli = 1 référence.
Donc tout se joue au niveau des déclinaisons pour ce PB

Nouveauté : j'ai vu que dans le module  "produits de la meme catégorie" dans la fiche produit on peut ajouter au panier un article défaillant (pas de bouton AJOUTER sur la FP), il ajoute la décli par defaut au panier.
Si on finalise la commande, prestashop recalcule le stock et du coup attribue une valeur à cette "fausse décli" correspondant au produit de base (prestashop recalcule la somme des quantités des déclis et l'attribue à ID_product_attribute=0 du produit)

idem si en BO on modifie une quantité d'une décli, le produit refonctionne en FO car prestashop a recalculé le bazar et attribué une valeur de stock "au produit de base"

 

Donc a suivre ...

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More