Skygraphism Posted December 4, 2014 Share Posted December 4, 2014 (edited) Bonjour tout le monde! Voilà après quelques recherches je n'ai pas trouvé de réponse du coup je m'en réfère à la communauté! Je suis en train de créer une boutique en ligne pour des véhicules , dans les attributs j'ai les couleurs mais aussi le montage (avec comme option Oui ou Non) . Mon interrogation est simple, j'aimerais savoir s'il est possible de rendre indépendant l'attribut montage au niveau des stock (à savoir que je compte utiliser la gestion des stocks avancées) afin d'éviter que les clients ne commande le véhicule sans choisir la couleur au préalable. Idéalement, il faudrait que l'attribut Montage soit seulement une option, car du coup dans mes attributs j'ai Couleur1-Montage:OUI et Couleur1-Montage:NON ce qui fait que je retrouve cela dans mes stocks. Seulement si c'est possible, je ne sais pas comment faire. Si quelqu'un a une idée et peut m'aiguiller dans mon soucis je le/la/les remercie d'avance ! Edited February 18, 2015 by Skygraphism (see edit history) Link to comment Share on other sites More sharing options...
Skygraphism Posted December 5, 2014 Author Share Posted December 5, 2014 Petit up, personne n'a d'idée? Link to comment Share on other sites More sharing options...
Skygraphism Posted February 12, 2015 Author Share Posted February 12, 2015 Je relance un up sur ma question...je suis toujours en train de chercher mais je trouve pas de solution ou même une idée de solution....si quelqu'un peut m'aiguiller je suis preneur!!! Merci d'avance! Link to comment Share on other sites More sharing options...
Oexo France Posted February 12, 2015 Share Posted February 12, 2015 Bonsoir, Mon module devrait répondre à votre problématique, sauf que la vous ne liez plus un attribut au produit mais un autre produit, ce qui répond au final à votre demande de gestion de stock. Lien vers le module (la salade est pour la démonstration de la méthode de fonctionnement uniquement https://www.prestashop.com/forums/topic/394021-module-compose-your-selection/) Cordialement, Link to comment Share on other sites More sharing options...
Skygraphism Posted February 13, 2015 Author Share Posted February 13, 2015 Merci pour votre réponse, néanmoins je cherchais une solution sans devoir passer par un module payant.Je pense que je vais plutôt opter pour une solution plus simple, à savoir de mettre la somme totale des quantités pour chaque couleur dans les montages et décrémenter les quantités pour les deux options de commandes ensembles à chaque commande (comment je suis en train d'y réfléchir) . Et je vais voir à la place pour rendre obligatoire la sélection de chaque type de déclinaison (couleur + montage ou non). Je vais ouvrir un nouveau topic pour ça d'ailleurs pour savoir si quelqu'un à des idées, j'ai beau cherché je vois rien. Et pour rester dans le sujet, quelqu'un s'est déjà aventuré à tenter de décrémenter la quantité de plusieurs déclinaison (même non choisies) lors d'une commande? Link to comment Share on other sites More sharing options...
Skygraphism Posted February 18, 2015 Author Share Posted February 18, 2015 (edited) Bon finalement après pas mal de recherche j'ai trouvé le moyen de décrémenter la quantité de plusieurs déclinaisons au passage d'une commande.Dans le fichier /classes/order/OrderDetail.php dans la fonction checkProductStore (pour moi c'est vers la ligne 439) il faut rajouter une condition qui en fonction de l'id du produit et de l'id de l'attribut du produit va décrémenter un autre attribut de la quantité sélectionnée dans le panier grâce à la fonction : StockAvailable::updateQuantity($product['id_product'], $product['id_product_attribute'], -(int)$product['cart_quantity']); Ce qui me donne pour moi : /** * Check the order status * @param array $product * @param int $id_order_state */ protected function checkProductStock($product, $id_order_state) { if ($id_order_state != Configuration::get('PS_OS_CANCELED') && $id_order_state != Configuration::get('PS_OS_ERROR')) { $update_quantity = true; if (!StockAvailable::dependsOnStock($product['id_product'])) $update_quantity = StockAvailable::updateQuantity($product['id_product'], $product['id_product_attribute'], -(int)$product['cart_quantity']); /* **code rajouté** */ if ($product['id_product']==4) // on regarde si on est dans le bon produit { if ($product['id_product_attribute'] == 81 ) $autre=StockAvailable::updateQuantity($product['id_product'], 75, -(int)$product['cart_quantity']); if ($product['id_product_attribute'] == 75 ) $autre=StockAvailable::updateQuantity($product['id_product'], 81, -(int)$product['cart_quantity']); } /* **** */ if ($update_quantity) $product['stock_quantity'] -= $product['cart_quantity']; if ($product['stock_quantity'] < 0 && Configuration::get('PS_STOCK_MANAGEMENT')) $this->outOfStock = true; Product::updateDefaultAttribute($product['id_product']); } } Bien sûr au préalable il faut récupérer les id des attributs du produit Personnellement j'utilise une méthode un peu "brute" on dira , dans le fichier /themes/VOTRE_THEME/js/modules/blockcart/ajax-cart.js vers la ligne 143 (pour moi du moins) vous avez : //for product page 'add' button... $(document).on('click', '#add_to_cart button', function(e){ e.preventDefault(); ajaxCart.add($('#product_page_product_id').val(), $('#idCombination').val(), true, null, $('#quantity_wanted').val(), null); }); Ajouter alors une alerte affichant $('#idCombination').val() ce qui donne : //for product page 'add' button... $(document).on('click', '#add_to_cart button', function(e){ e.preventDefault(); alert($('#idCombination').val() ); // LIGNE A RAJOUTER ajaxCart.add($('#product_page_product_id').val(), $('#idCombination').val(), true, null, $('#quantity_wanted').val(), null); }); (Pensez à l'enlever après avoir fini ^^) Voilà en espérant que ça pourra en aider certains ! Je passe le topic en résolu! et si il y a des questions hésitez pas! Edited February 18, 2015 by Skygraphism (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now