Skip to main content

Options de produits cartClass->addProduct

More
1 year 8 months ago #365323 by Minie
Bonjour,

ca faisait longtemps :) Meilleurs vœux !

J'aimerais savoir si le peux utiliser le paramètre options de la fonction addProduct pour faire en sorte qu'un produit soit gratuit

J'ai actuellement un formulaire qui permet à un vendeur de passer commande au nom de son client, puis le panier est créé dans ma fonction suivante (tout fonctionne très bien) :
Code:
public function setCart($post) { // load db $db = Factory::getDbo(); // load hikashop if (!@include_once(rtrim(JPATH_ADMINISTRATOR, DS) . DS . 'components' . DS . 'com_hikashop' . DS . 'helpers' . DS . 'helper.php')) { return false; } $cartClass = hikashop_get('class.cart'); // edit data unique if (!empty($post['action']) and $post['action'] == 'set_data') { $query = $db->getQuery(true); $fields = array( $db->quoteName($post['name']) . ' = ' . $db->quote($post['value']) ); $conditions = array( $db->quoteName('cart_id') . ' = ' . $db->quote($post['id']) ); $query->update($db->quoteName('#__hikashop_cart'))->set($fields)->where($conditions); $db->setQuery($query); $db->execute(); } // création elseif (empty($post['cart_id'])) { // save cart $cart = new stdClass(); $cart->cart_billing_address_id = $post['order_billing_address_id']; $cart->cart_shipping_address_ids = $post['order_shipping_address_id']; $cartClass->save($cart); // changement manuel de user_id (automatiquement user connecté) self::setCart(array('action' => 'set_data', 'name' => 'user_id', 'value' => $post['order_user_id'], 'id' => $cart->cart_id)); // add products foreach ($post['order_product'] as $product_id => $qty) { $products = array(array('id' => $product_id, 'qty' => $qty)); $cartClass->addProduct($cart->cart_id, $products); } // add free products foreach ($post['free_order_product'] as $product_id => $qty) { $products = array(array('id' => $product_id, 'qty' => $qty)); $cartClass->addProduct($cart->cart_id, $products); } // méthodes de livraison $cartClass->updateShipping($cart->cart_id, self::setCartShippingMethod($cart->cart_id)); // méthode de paiement $cartClass->updatePayment($cart->cart_id, array(1)); return $cart->cart_id; } // modification else { foreach ($post['order_product'] as $product_id => $qty) { $cartClass->update($product_id, $qty); } return $post['cart_id']; } }

J'ai ajouté dans mon formulaire la possibilité d'ajouter des produits gratuits, exemple, pour 5 acheté, 1 gratuit, j'ai différencié ces produits par le name de l'input et ajouté une boucle à ma fonction, identique à la première, celle à laquelle j'aimerais ajouter l'option (produit gratuit) :
Code:
// add free products foreach ($post['free_order_product'] as $product_id => $qty) { $products = array(array('id' => $product_id, 'qty' => $qty)); $cartClass->addProduct($cart->cart_id, $products, $options); }
Que puis-je mettre dans ma variable $options pour avoir mon résultat svp ? si c'est possible

merci :)

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

More
1 year 8 months ago #365325 by nicolas
Bonjour,

Et meilleurs voeux également !

Il n'y a rien que vous puissiez mettre dans $options qui permettrait de rendre le produit gratuit sans rien d'autre.
Ce que je vous recommande de faire, c'est faire une requête MySQL après l'appel à addProduct pour rajouter l'information dans une colonne de la table hikashop_cart_product que vous aurez rajoutée via PHPMyAdmin au préalable.
Ensuite, implémentez onAfterLoadProductPrice pour modifier le prix du produit dynamiquement en fonction de la valeur dans cette colonne lors du chargement du panier:
www.hikashop.com/support/documentation/6...fterLoadProductPrice

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

More
1 year 8 months ago #365333 by Minie
Bonjour,

merci beaucoup, je vais donc suivre cette piste :)

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

Time to create page: 0.190 seconds
Powered by Kunena Forum