Jump to content

[Résolu] Mise à jour des stocks automatique en csv


Recommended Posts

Bonjour,

Je souhaite gérer automatiquement les stocks du magasin avec celui du site web. Je pense donc utiliser la partie import csv que je vais modifier pour faire cela automatiquement avec CRON.
Mais avant de faire cela j'ai fait des tests en manuel et je me retrouve avec le soucis suivant :

Exemple :

- J'ai un Produit A avec une quantité 12.

- On commande 2 produits A.

- Le stock de produit A passe à 10.

- Je récupère le stock du magasin en csv (avant d'avoir géré la commande) j'ai donc toujours une quantité de 12.

- Je met à jour la BD Prestashop et mon stock de produit A passe à 12.


Je me retrouve donc avec un stock de 12 produit alors que j'en ai 2 qui doivent être réservé pour une commande.
Y a t-il un meilleur moyen de mettre à jour le stock en prenant en compte les commandes en cours ?

Merci d'avance

Link to comment
Share on other sites

Bonjour Yank,

Il n'y as hélas pas de miracle, mais plusieurs solutions :
- dans tout les cas la gestion des stock doit être centralisé,
- que la sync s'effectue d'un coté ou de l'autre il faut faire une sync,
- etc ...

Tu doit utiliser une seul interface maître pour tes stocks, et tu ajoute ou supprime tes produits.

Pour ton import magasin, utilise des tables à part, et crée un script qui sync tes stock en fonctions de plusieurs critères et non un simple update de ta table produit de PS

As-tu un autre outils de gestion pour ton magasin ?

Mike

Link to comment
Share on other sites

Cela peut être possible, lors de l'import, il faut faire une fonction qui va chercher dans la base les commandes passées sur le produit concerné.
Si il y a des commandes, alors on baisse le stock du nombre de commandes avant de l'importer.

Soit tu as de solides connaissances en PHP et tu peux t'y mettre, le script n'est pas très sorcier, soit en faisant appel à un prestataire.

Link to comment
Share on other sites

Merci à tous les deux c'est bien ce que je pensais.
Je voulais savoir avant de me lancer dans la création d'un script de vérification s'il n'y avait pas quelque chose d'existant.
Je vais voir pour modifier le script d'import existant pour en créer un nouveau avec plus d'options.

Link to comment
Share on other sites

Je pense que je vais utiliser les tables stock_mvt et order_history.
Ce que je me demande c'est : Comment gère t-on un inventaire lorsqu'il y a des commandes non traitées en cours ? Car c'est un peu le même problème.

Link to comment
Share on other sites

  • 3 weeks later...

J'ai fini par automatiser l'importation dans prestashop.
Voici le lien pour les détails du script : Mise à jour automatique des stocks prestashop

Pour déduire les commandes non traités de la mise à jour des stocks j'ai dupliquer l'onglet import et j'ai modifié la partie qui test si la quantité est nul par celle ci :

if ($product->quantity == NULL)
               {
                   $product->quantity = 0; 
               }
               else
             {
         $RSQL = 'SELECT SUM(`quantity`) AS somme';
         $RSQL .= ' FROM `'._DB_PREFIX_.'stock_mvt` sm';
         $RSQL .= ' WHERE `id_product`='.(int)($product->id);
         $RSQL .= ' AND `quantity`<0';
         $RSQL .= ' AND NOT EXISTS (';
         $RSQL .= '   SELECT `id_product`';
         $RSQL .= '   FROM `'._DB_PREFIX_.'order_history` oh';
         $RSQL .= '   WHERE `id_order_state`=3';
         $RSQL .= '   AND sm.`id_order`=oh.`id_order`';
         $RSQL .= ' );';
               $qt = Db::getInstance()->ExecuteS($RSQL);
               $product->quantity = (int)($product->quantity)+(int)($qt[0]['somme']); 
             }


En espérant que ça aidera du monde.

Link to comment
Share on other sites

  • 11 months later...

Bonjour Yank

merci pour cette idée, c'est exactement ce que je cherche car je vais automatiser la mis à jour de mon stock prestashop à partir de mon stock magasin.

j'ai du mal a comprendre les trucs que vous dites et à suivre tes instruction la dessus. Est ce que cette manipulation est valide pour les version 1.2.5?

et si non, pouvez vous m'expliquer les marches à suivre pour utiliser votre truc.

merci

Link to comment
Share on other sites

  • 10 months later...

Merci pour se script

 

je n'arrive pas a le faire fonctionner j'ai un email avec le

TOKEN : 089c757a5ebb706a189ea396a*******

Mais l'import ne se passe pas. je rappelle le script

 

Le tuto de YANNICK KERMAREC

 

http://www.kermarec.com/prestashop-mise-a-jour-automatique-des-stocks/

 

 

#!/bin/sh

 

#####################################################################

 

# #

 

# SRIPT DE YANNICK KERMAREC #

 

# HTTP://WWW.KERMAREC.COM #

 

# #

 

#####################################################################

 

####################### PARAMÈTRES PRESTASHOP #######################

 

[email protected]

 

passwd=motdepass

 

tab=Import # Onglet auquel vous voulez accéder

 

admintab='Admin'$tab # Les script de prestashop vont chercher les onglets avec Admin devant

 

urladminsite=http://www.prestashop.com/adminxxx/ # L'url de la partie administration de prestashop

 

csvfile='monfichiert.csv' # Le nom de votre fichier csv se trouvant dans le répertoire 'import' de la partie adminxxx

 

# Les type de valeur pour chaque colonne de votre CSV :

 

# /!\ ATTENTION /!\ N'oubliez pas de bien renseigner cette partie car c'est ce qui va être utilisé pour mettre à jour la BD

 

typevalue='&type_value[0]=id&type_value[1]=name&type_value[2]=no&type_value[3]=quantity'

 

####################### IDENTIFICATION #######################

# Identification et récupération du cookie

wget --save-cookies=cookie.txt --post-data='email='$email'&passwd='$passwd'&Submit=submit' --keep-session-cookies -q -O login.php $urladminsite'login.php'

if [ -n "$(grep 'error' login.php)" ]

then

error=$(grep '<li>.*</li>' login.php | sed 's/.*<li>\(.*\)<\/li>/\1/g')

echo 'ERREUR : '$error

else

# Si pas d'erreur premier accès à la partie administration

wget --load-cookies=cookie.txt --keep-session-cookies -q -O index.php $urladminsite'index.php' # Accès à la partie administration

token=$(grep 'index.php?tab='$admintab'\&token=' index.php | sed 's/.*token=\(.*\)\">'$tab'.*/\1/g') # Extraction du token de la page index.php pour l'onglet qui nous intéresse

fi

 

####################### IMPORTATION CSV #######################

if [ -n "$(echo $token | grep ^[a-z0-9]*)" ]

then

echo 'TOKEN : '$token # Affichage du token récupéré

wget --load-cookies=cookie.txt --keep-session-cookies --post-data='tab='$admintab'&token='$token'&skip=0&csv='$csvfile'&entity=1&iso_lang=fr&separator=;&multiple_value_separator=,'$typevalue'&import=Import CSV data' -q -O maj.php $urladminsite'index.php'

else

echo 'ERREUR : Pas de token'

fi

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...