Jump to content

[résolu]Augmenter les frais de livraison si paiement à la livraison


Recommended Posts

Bonjour,

 

Je suis entrain de modifier le module cashondelivery (paiement à la livraison).

Je voudrais augmenter les frais de livraison si le client choisi ce mode de paiement (à la livraison). (C'est légale dans mon pays, je sais qu'en France ce n'est pas autorisé).

 

Pour cela je dois modifier le fichier validation.php (/modules/cashondelivery/validation.php).

 

Avant d’exécuter la fonction $cashOnDelivery->validateOrder, je devrais augmenter les frais de livraison.

 

Je dois exécuter quoi comme fonction pour updater ce montant ?

 

J'ai trouvé cette fonction : $cart->getTotalShippingCost(), existe-il une fonction du genre : "setTotalShippingCost()" ?

 

 

Merci d'avance pour votre aide.

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

Bonsoir,

 

La solution (je l'ai appliqué chez un client belge aujourd'hui) est de créer une zone "belgique" contenant "belgique" et n'activer le transporteur "cash on delivery" uniquement en belgique.

 

Ensuite, actives un transporteur "Bpost - Contre remboursement" et en frais de port ajoute frais de port + frais de contre remboursement.

 

Et voilà.

 

Il y a toutefois un problème dont prestashop se moque complètement depuis 2008, c'est l'impossibilité de désactiver le moyen de paiement "Cash on delivery" si le transporteur n'est pas ici "Bpost contre remboursement", si bien que des clients pourraient dans mon cas prendre tnt 24h , payer 35 euros de frais de port et 0 de frais de contre remboursement puis demander le contre remboursement en moyen de paiement...au final on perd les frais de contre remboursement et en plus, si le transporteur ne propose pas le contre remboursement il sera tout de même proposer.

 

Bref, un problème important mais inutile d'espérer quoi que ce soit.

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

Merci Mpic pour ta réponse.

 

Finalement, j'ai trouvé une solution:

J'ai crée un deuxieme transporteur (plus cher que le transporteur par default) (je l'affiche pas dans la liste des transporteurs)

Dès que le client valide le paiement à la livraison je lui change le mode de livraison qu'il à choisi.

Et donc dans le fichier validation.php je met :

$customer = new Customer((int)$cart->id_customer);
/* Début de la partie ajoutée */
$delivery_option = $cart->getDeliveryOption();
$delivery_option[$cart->id_address_delivery] ='32,'; /* 32 c'est l'id du nouveau transporteur */
$cart->setDeliveryOption($delivery_option);
$cart->update();
/* Fin de la partie ajoutée */
$total = $cart->getOrderTotal(true, Cart::BOTH);
$cashOnDelivery->validateOrder((int)$cart->id, Configuration::get('PS_OS_PREPARATION'), $total, $cashOnDelivery->displayName, NULL, array(), NULL, false,	    $customer->secure_key);

Link to comment
Share on other sites

Bonjour,

 

Travailler avec un second transporteur est souvent plus facile.

 

Je vous conseils de ne pas mettre en dur l'ID du transporteur, car pour la moindre modification du transporteur prestashop duplique le transporteur et en recréé un nouveau. Il est préférable d'aller cherche l'ID à partir du nom du tranporteur par exemple.

 

Bonne journée.

Link to comment
Share on other sites

  • 10 months later...

Bonjour à tous,

j'ai une simple question:

Pensez-vous qu'il soit possible de proposer un paiement d'une partie du montant directement sur le site et l'autre partie à la livraison avec le module cashondelivery?

 

Merc d'avance pour votre réponse

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