Dans ce cas, il va falloir "s'amuser" à faire une petite requête SQL sur les stock de sorte à appliquer quelque chose de cohérent avec le stock réel.
Le stock se trouve dans la table stock_available, si cela peut t'aider voici les différentes requêtes effectuées par un outil d'inventaire que j'ai développé :
$sql_updstockav = "UPDATE `ps_stock_available` set quantity = quantity+$q where id_product = '$id_prod_stock' and id_product_attribute = '$id_prod_attribute_stock'"; $sql_updstockavpq = "UPDATE `ps_stock_available` set physical_quantity = quantity+reserved_quantity where id_product = '$id_prod_stock' and id_product_attribute = '$id_prod_attribute_stock'"; //mise à jour necessaire pour les produits avec attribut : $sql_selecttotalstock = "SELECT sum(quantity) as total from ps_stock_available where id_product = '$id_prod_stock' and id_product_attribute != '0'"; $sql_updstockav1 = "UPDATE `ps_stock_available` set quantity = $totalattr where id_product = '$id_prod_stock' and id_product_attribute = '0'";
Attention que lorsqu'on modifie cette table, le prestashop fait ensuite une routine d'actualisation lorsque l'on passe une commande en expédiée ou qu'un client passe une commande.
EDIT:
Dans ton cas n'oublie pas en amont de réinitialiser tous les stocks réservés en s'assurant que les commandes légitimes soient toutes expédiées.
Egalement, si une commande passe en annulé les stock risquent d'être remis.