Jump to content

Décrémentation du stock non souhaité pour chèques...


Recommended Posts

Bonjour à tous !

Voici mon soucis en 1.5.2.0

On imagine qu'un client sélectionne la totalité de mon stock d'un article (super, il a envie de tout me prendre !) et sélectionne le mode de règlement par chèque ... et n’envoie pas le chèque ! Bah, en attendant mon produit était affiché en "stock 0" et j'ai certainement loupé plein de ventes...

Ma question est donc la suivante :

Peut-on faire en sorte que le stock soit décrémenté au moment de la validation du règlement, et non pas au moment de la prise de commande ? Je pense qu'il doit simplement y avoir un bout de code PHP à commenter, si quelqu'un peut me venir en aide, ça serait génial !

D'avance merci !

Cordialement,

 

Guillaume.

Link to comment
Share on other sites

J'avance tout doucement mais là je susi bloqué...*

 

Apparemment la gestion des stocks au moment d'une commande se passe à la ligne 517 du fichier /classes/PaymentModule.php :

// Hook validate orderHook::exec('actionValidateOrder', array(
'cart' => $this->context->cart,
'order' => $order,
'customer' => $this->context->customer,
'currency' => $this->context->currency,
'orderStatus' => $order_status
));


foreach ($this->context->cart->getProducts() as $product)
if ($order_status->logable)
ProductSale::addProductSale((int)$product['id_product'], (int)$product['cart_quantity']);


if (Configuration::get('PS_STOCK_MANAGEMENT') && $order_detail->getStockState())
{
$history = new OrderHistory();
$history->id_order = (int)$order->id;
$history->changeIdOrderState(Configuration::get('PS_OS_OUTOFSTOCK'), $order, true);

Mais à partir de là je commence à être perdu pour trouver l'endroit où ça décrémente le stock pour les chèques :x:x

 

Un bon samaritain se promènerait-il ici ?! Help ! 

Link to comment
Share on other sites

Je piétine, je piétine...

 

Je pense finalement que ça se passe plutôt au niveau de OrderHistory.php, vers ligne 113 (le "-(int)$product['product_quantity']" ):

if ($new_os->logable && !$old_os->logable)
{
ProductSale::addProductSale($product['product_id'], $product['product_quantity']);
// @since 1.5.0 - Stock Management
if (!Pack::isPack($product['product_id']) &&
($old_os->id == Configuration::get('PS_OS_ERROR') || $old_os->id == Configuration::get('PS_OS_CANCELED')) &&
!StockAvailable::dependsOnStock($product['id_product'], (int)$order->id_shop))
StockAvailable::updateQuantity($product['product_id'], $product['product_attribute_id'], -(int)$product['product_quantity'], $order->id_shop);
}

Je pense que je dois ajouter une condition sur le mode de paiement... Vraiment personne ne pourrait me venir en aide ? :x

Link to comment
Share on other sites

  • 2 months later...

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