Jump to content

Mondial Relay et autres pays de livraisons


vapo

Recommended Posts

Bonjour,

 

Je viens de mettre en place le module Mondial Relay. Le module fonctionne correctement. Aucun soucis à ce niveau là.

 

Le problème est que Mondial Relay permet des livraisons en point relais uniquement en France, Belgique, Luxembourg, et Espagne.

Lorsque le client arrive sur la page du choix du transporteur et qu'il est par exemple en Italie : Mondial Relay apparait... Alors que c'est impossible à livrer là bas en point relais...

 

Du coup ma question est : est-il possible de désactiver un transporteur uniquement pour certains pays? Ou de l'activer uniquement pour certains pays?

 

Je souhaiterais éviter de changer les zones... et l'attributions des pays aux zones pour garder un certain ordre.

 

Si quelqu'un a une idée ou a déjà été confronté à ce soucis?

 

Merci par avance :)

Link to comment
Share on other sites

Bonjour,

 

Effectivement, tu dois modifier tes zones transporteurs. Et dans l'idéal, il faudrait que le développeur du module le mette à jour avec une feature front-end simple mais importante : il faut que l’option de livraison ne soit pas affichée si le client se trouve hors des zones de livraisons. 

 

Je passe le message.

 

Merci pour ta remontée !

Link to comment
Share on other sites

Bonjour,

 

Effectivement, tu dois modifier tes zones transporteurs. Et dans l'idéal, il faudrait que le développeur du module le mette à jour avec une feature front-end simple mais importante : il faut que l’option de livraison ne soit pas affichée si le client se trouve hors des zones de livraisons. 

 

Je passe le message.

 

Merci pour ta remontée !

 

 

@vapo, Je suis à moitié d'accord avec Xavier, sur le fait que le module pourrait effectuer un test sur le pays de livraison, compte tenu que ce transporteur n'est effectif que pour une poignée de pays (4 aujourd'hui). Ce serait pratique.

 

Mais puisque que Mondial relay fonctionne avec de vrais transporteurs, et ne se charge sur la page transporteurs que si l'un des transporteurs associés à MR est présent, c'est en définitive les transporteurs affichés qui ont un contrôle sur le module, et non l'inverse.

 

Pour le coup il me semble bien qu'on ne peut se dispenser d'isoler les pays concernés dans une ou plusieurs(4) zones.

 

Voici pour ce qui est de l'usage.

 

Côté pratique on peut pallier au problème en créant une override, de la méthode _assignCarrier() (de tête),  dans la classe ParentOrderController ...

 

On y trouve ceci : 

	protected function _assignCarrier()
	{
		$customer = new Customer((int)(self::$cookie->id_customer));
		$address = new Address((int)(self::$cart->id_address_delivery));
		$id_zone = Address::getZoneById((int)($address->id));
		$carriers = Carrier::getCarriersForOrder($id_zone, $customer->getGroups());

		self::$smarty->assign(array(
			'checked' => $this->_setDefaultCarrierSelection($carriers),
			'carriers' => $carriers,
			'default_carrier' => (int)(Configuration::get('PS_CARRIER_DEFAULT'))
		));
		self::$smarty->assign(array(
			'HOOK_EXTRACARRIER' => Module::hookExec('extraCarrier', array('address' => $address)),
			'HOOK_BEFORECARRIER' => Module::hookExec('beforeCarrier', array('carriers' => $carriers))
		));
	}

On peut si on le souhaite ajouter une condition juste après 

		$carriers = Carrier::getCarriersForOrder($id_zone, $customer->getGroups());

On parcoure $carriers, on le compare à la liste des transporteurs associés à MR (je ne sais plus de tête si c'est une variable de configuration ou pas) , si on trouve un carrier MR , on compare avec l'id_country de l'adresse , et on unset le résultat si ça match pas , ça donnerait un truc genre : 

if(!in_array($address->id_country, array(a,b,c,d))
unset $carrier;

a,b,c,d seraient les 4 pays desservis par MR.

Bien sur c'est la méthode que j'explique , le code n'est pas utilisable en l'état.

 

Pour moi le module n'a pas vocation à modifier l'affichage de tel ou tel transporteur. Pour cela il faudrait une méthode dans la classe CarrierModule à laquelle sont liés les transporteurs modules , genre "isCarrierAvailable" , 

or aujourd'hui nous n'avons que deux méthodes : getOrderShippingCost et getOrderShippingCostExternal

En dehors donc du calcul de prix du transport un transporteur même lié à un module agit comme n'importe quel transporteur.

 

vapo ce n'est pas réellement un gros challenge de sortir ces 4 pays des zones existantes et leur affecter une zone chacuns.

 

Outre le fait de pouvoir le plus facilement du monde les désactiver pour tel ou tel pays , on a le plein contrôle sur le tarif par pays, ce n'est pas un luxe.

 

Sinon reste la fameuse override.

  • Like 1
Link to comment
Share on other sites

Merci pour vos réponses.

 

J'ai effectivement modifier les zones dans le prestashop. Une zone spéciale que j'ai nommé Point Relais avec à l'intérieur la France. Et une autre zone que j'ai nomée Point Relais 2, Belgique, luxembourg, et expagne. J'en ai fait deux pour ne pas que mes autres moyens de transports "métropole" ou retrait sur place soit impacté par le changement, pour ne pas qu'ils soient proposé à ces 3 dernier pays.

 

Merci pour votre aide.

 

Mickael

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