Modification de commande

  • Posts: 499
  • Thank you received: 35
  • Hikaserial Subscription Hikashop Business
8 hours 29 minutes ago #368548

-- HikaShop version -- : 6.0.0
-- Joomla version -- : 5.3.1
-- PHP version -- : 8.3.16

Bonjour,

je bute depuis un moment sur un besoin de modification de commande avec recalcul, quel serait le meilleur moyen d'effectuer cette manip svp ?

quelque chose dans ce style ?

            $order = $orderClass->loadFullOrder($post['order_id'], true, false);

            foreach ($order->products as $k => $order_product) {
                $order->products[$k]->order_product_quantity =  $new_quantity;
            }

            $orderClass->save($order);

je n'ai pas trouvé de fonction pour ajouter ou modifier des produits aussi simplement qu'avec le cart comme $cartClass->addProduct($cart->cart_id, $products);

J'ai essayé de vider les produits et les remplacer mais le recalcul n'est pas fait, j'avais fait un "annule et remplace de commande" mais ca implique trop d'inconvénients, y compris le manque d'historique, j'avoue que je tourne en rond depuis un moment :)

Merci d'avance si vous avez une solution

Last edit: 8 hours 28 minutes ago by Minie.

Please Log in or Create an account to join the conversation.

  • Posts: 84305
  • Thank you received: 13700
  • MODERATOR
3 hours 13 minutes ago #368549

Bonjour,

Les commandes ne sont pas trop sensées être modifiées une fois créées, et encore moins une fois payées. Donc nous n'avons pas fait de fonction spécifique pour le changement de quantité / ajout / retrait d'un produit.

Je vous recommande de faire l'opération en deux étapes:
1. Mettez à jour la quantité du produit en base de données avec la fonction update the class.order_product en fournissant un objet avec les attributs order_product_id et order_product_quantity.
Si vous souhaitez que la fonction mettes également à jour le stock du produit cible, vous pouvez également ajouter un attribut "change" avec soit la valeur "plus" (pour restocker) soit la valeur "minus" (pour enlever du stock).
Quelque chose du genre:

$product = new stdClass();
$product->order_product_id = $order_product_id;
$product->order_product_quantity = $order_product_quantity;
$orderProductClass = hikashop_get('class.order_product');
$orderProductClass->update($product);
2. Utilisez le code suivant pour recharger la commande en mémoire depuis la base de données, recalculer le total et sauvegarder le nouveau total dans la base de données:
$orderClass = hikashop_get('class.order');
$order = $orderClass->get($order_id);
$orderClass->recalculateFullPrice($order);
$orderClass->save($order);

Please Log in or Create an account to join the conversation.

Time to create page: 0.035 seconds
Powered by Kunena Forum