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) :
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) :
// 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