Jump to content

Affecter un transporteur different en fonction des déclinaisons de produit


Recommended Posts

Bonjour à tous!

 

Sur ma boutique www.exolar.fr/boutique/ j'ai mis du bois, qui peux être de différente longueur.

Par exemple, des lame de cumaru de 21mm d'épaisseur et 145mm de large, déclinée avec un attribut longueur de 2.5m, 3m, 4m, 4.5m...

Le problème que je rencontre, c'est que le transporteur me propose un tarif pour les lames jusqu'à 4m et jusqu'à 6m.

Est il possible selon vous d'affecter des transporteur différents en fonction des déclinaisons choisie?

 

Bon week end a tous! merci!

Link to comment
Share on other sites

Bonjour,

 

je cherche la même chose en faite, vous souhaitez configurer des transporteurs différent selon la déclinaison d'un même produit par rapport à sa taille.

 

Malheureusement ce réglage n'existe pas, en toute logique il devrait se situer dans le BO/fiche produit/déclinaison/sélectionner la déclinaison qui vous intéresse/modifier/dans le bloc à partir de prix d'achat.

 

Il y a impact sur le poids, il faudrait aussi ajouter impact sur la taille hauteur, largeur, longueur ou au minimum une hauteur par rapport au produit configuré par défaut.

 

Je vais créer un topic de suggestion prochainement pour cette limite.

 

A ma connaissance il n'y a pas de moyen détourné à part créer un produit sans déclinaison.

 

cordialement.

Link to comment
Share on other sites

  • 3 months later...
  • 11 months later...
  • 5 months later...
  • 1 year later...
  • 2 weeks later...

(ps 1.6.1.4)

Bonjour, plus des pistes qu'une vraie solution (je viens d'hardcoder ça pour mon site et ça marche très bien… mais ma bidouille n'est absolument pas portable, elle ne répond qu'à mes besoin exacts :()

 

Mon souci était de forcer le transporteur (et virer les autres) quand mes produits dépassaient 1,30m

 

Prestashop permet de mettre une limite de taille admise par transporteur (Back office > transporteur), on va jouer avec ça ;)

 

1 - veillez à ce que le transporteur "x" soit le seul habilité à livrer des produits de + de 1,30m (=pas de limite de taille) 

 

2 - créer une nouvelle table 'ps_product_attribute_shipping' dans la base de données et la remplir en référençant les:

(field1)id_product_attribute

(field2)width

…À FAIRE MANUELLEMENT!!!

 

3 - dans "/classes/Carrier.php" > 'getAvailableCarrierList()', parser si le produit dans le panier est une déclinaison,

après ça: 

 foreach ($cart->getProducts(false, false) as $cart_product) {
            if ($cart_product['id_product'] == $product->id) {
                $cart_quantity += $cart_product['cart_quantity']; 

…ajouter: 

// rv - start : parse attribute to enable FRANCE EXPRESS only (=remove all others carriers with width limitation ;-))…
if ($cart_product['id_product_attribute']) {
    $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
        SELECT * FROM `'._DB_PREFIX_.'product_attribute_shipping`
        WHERE `id_product_attribute` = '.(int)$cart_product['id_product_attribute']);
    if (isset($result) && isset($result['width']) && (int)$result['width']!=0) {
        $product->width = (int)$result['width']; // …UP (to skip not compliant c arriers ;-))
     }
}
// rv - end 

(Traduction du code) Si le produit est une déclinaison, interroger la base de donnée pour savoir si cette déclinaison est référencée comme ayant une "taille hors norme"

Si non, continuer (et laisser tout en l'état)

Si oui, mettre à jour la valeur de taille (=remplacer la taille du produit par la taille de la déclinaison stockée dans la base de données)

 

PS: l'intérêt du remplacement de la taille dans la fonction est que notre nouvelle taille sera utilisée par la suite (dans carrier.php) pour trier les transporteurs suivant la taille qu'ils admettent. 

En pratique, le code suivant de presta (à ne surtout pas modifier) va expurger tous les transporteurs qui n'acceptent pas des tailles supérieures à 1,30m ;)

 if ($product->width > 0 || $product->height > 0 || $product->depth > 0 || $product->weight > 0 || $cart_weight > 0) 

PPS: la fonction 'getAvailableCarrierList()' fonctionne par recoupement: elles prend les transporteurs, regarde quels sont ceux dispo pour la zone, etc,  en final elle ne garde que les transporteurs aux caractéristiques communes et compatibles avec chaque produit.

 

Voilà ce code vous permet de mettre à jour les transporteurs disponibles en fonction de la taille des attributs QUE VOUS avez manuellement rentrés dans la base de données.

 

PS: Si vous désirez affiner (ex dans mon cas: virer le transporteur grande taille si d'autres transporteurs étaient disponibles), alors c'est dans les /theme/[…]/order[…].tpl que ça se passera. C'est l'endroit où vous aurez accès à "quels sont les transporteurs communs et compatibles avec mon panier" (et à vous de voir si vous voulez tous les conserver ou en virer certains ;))

 

 

J'espère que ce post vous aidera, j'avais essayé un module qui faisait ça, manque de chance il n'était pas compatible avec ma version de presta (bref il ne fonctionnait pas).

à+ et bonne farfouille dans les codes de presta :D

 

Hervé

Edited by McHerve (see edit history)
Link to comment
Share on other sites

par contre aurais-tu s'il te plait le nom ou l'URL du module dont tu parles mais qui ne fonctionnait pas ?

désolé, je viens de fouiller mon dossier "téléchargements" et je ne le trouve pas (j'ai du tout jeter)

 

PS: je te déconseilles de l'installer, ses overrite sont pas terribles (ça m'a mis le souck dans ma version de presta) et ses ajouts BackOffice(admin) avaient l'air bien mais n'arrivaient pas à remplir la base de donnée (juste à la créer).

J'ai uniquement gardé le principe du module: stocker dans un table les "déclinaisons hors normes" pour pouvoir les prser dans le panier. Concernant le reste, je n'ai même pas regardé leur code…

 

à+

Link to comment
Share on other sites

  • 2 months later...

Bonjour,

 

Je relance ce sujet, car j'ai un peu le même problème....

 

Je produit des plantes et j'ai deux niveau de prix (déclinaisons) :

- envoi postal

- retrait à un point de vente (moins cher qu'un envoi postal)

 

Étant donné qu'il y a des malins, qui choisissent les plantes à retirer - car moins chers - et puis choisissent le transporteur "La Poste" pour les avoir envoyé chez eux....

 

Donc, pourrais je bloquer ce transporteur, s'il choisissent des plantes à retirer ?

 

Merci :)

Link to comment
Share on other sites

  • 5 years later...

Bonjour,
j'ai également le même problème, si quelqu'un a une solution, module qui le permet je suis preneur, sinon je vais développer un module pour le faire :)
J'ai déjà développé un module pour gérer le stock unique des déclinaisons (je vends des oeuvres avec et sans cadres).

Je continue de regarder si il y a un module spécifique, sinon je suis preneur des besoins de chacun sur le sujet

A+
 

Edited by Guitoux (see edit history)
Link to comment
Share on other sites

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