Shipping address id

  • Posts: 442
  • Thank you received: 30
  • Hikamarket Multivendor Hikashop Business
4 years 9 months ago #314111

-- HikaShop version -- : 4.2.2
-- Joomla version -- : 3.9.11
-- PHP version -- : 7

Bonjour,

j'ai programmé sur un site un système qui permet à l'acheteur de choisir un lieu de livraison autre que son adresse personnelle (site de vente de pneus, livraison vers garages partenaires).

A l'étape du choix de l'adresse de livraison j'ai donc ajouté une Google map sur laquelle l'acheteur peut sélectionner un garage partenaire pour faire livrer ses pneus directement là ou ils seront montés. Lorsque le partenaire est sélectionné, mon code modifie l'adresse de livraison pour la remplacer par celle du partenaire dans le champ cart_shipping_address_ids, jusque là tout va bien. Je valide l'étape de l'adresse avec "suivant", le bon id reste dans le champ de la table cart.

Mais lorsque je valide le moyen de paiement, au moment d'accéder à la passerelle de paiement, lorsque la ligne disparaît dans la table cart et qu'elle apparaît dans la table order, elle arrive avec l'id du client et non du partenaire. J'ai essayé de remédier à ce problème avec onBeforeOrderCreate, onAfterOrderCreate, et onAfterOrderUpdate. Dans ces 3 processus (qui sont bien pris en compte puisque j'y avait déjà inclus d'autres fonctions qui remplissent leur rôle), j'y inclus le même code que sur la page du choix de livraison (qui est testé et fonctionne), mais rien à faire, l'id de livraison revient toujours sur celle de l'acheteur et non du partenaire.

Pouvez vous m'indiquer comment faire pour que l'adresse de livraison reste celle du partenaire et non celle de l'acheteur ?

Merci d'avance.
Cordialement

Please Log in or Create an account to join the conversation.

  • Posts: 82501
  • Thank you received: 13281
  • MODERATOR
4 years 9 months ago #314120

Bonjour,

Lors du chargement du panier en mémoire (sur chaque page donc), le système ne prend en compte que les adresses de l'utilisateur.
Donc votre cart_shipping_address_ids n'est pas chargé à ce moment.
Ce que vous voulez faire, c'est utiliser un trigger lors du chargement du panier pour surcharger $cart->shipping_address
Par exemple dans le trigger onBeforeCartProductsLoad(&$cart, &$options, &$filters)

Please Log in or Create an account to join the conversation.

  • Posts: 442
  • Thank you received: 30
  • Hikamarket Multivendor Hikashop Business
4 years 9 months ago #314154

Bonjour,

merci pour votre réponse.
Malheureusement le champ cart_shipping_address_ids continue d’être remplacé par l'adresse du client au passage de la commande.
Mon souci majeur est que le mail order_status_notification est envoyé avec l'adresse du client et non du partenaire en "adresse de livraison"
Peut être y a t'il moyen de modifier d'une certaine façon le préchargement de cet email pour changer la valeur de la variable {VAR:SHIPPING_ADDRESS} ?
Si cette partie de surcharge du mail me permet les requêtes SQL, il ne me manque que la façon d’appeler une valeur d'un champ de la table hikashop_order pour récupérer l'id de l'adresse du partenaire et changer la valeur de {VAR:SHIPPING_ADDRESS}

Cordialement

Please Log in or Create an account to join the conversation.

  • Posts: 82501
  • Thank you received: 13281
  • MODERATOR
4 years 9 months ago #314156

Bonjour,

Oui, vous pouvez éditez l'email dans le menu Système->Emails et changer le code dans la section "preload" qui génère les valeurs des différents tags utilisés dans la version HTML.
Vous pouvez voir à la fin de la section preload le code:

if(!empty($data->cart->override_shipping_address)) {
	$vars['SHIPPING_ADDRESS'] =  $data->cart->override_shipping_address;
} elseif(!empty($data->cart->order_shipping_id) && !empty($data->cart->shipping_address) && !empty($data->cart->fields)) {
	$vars['SHIPPING_ADDRESS'] = $addressClass->displayAddress($data->cart->fields,$data->cart->shipping_address,$view);
} else {
	$vars['SHIPPING_ADDRESS'] = $vars['BILLING_ADDRESS'];
}
que vous pouvez remplacer par votre propre PHP.

Please Log in or Create an account to join the conversation.

  • Posts: 442
  • Thank you received: 30
  • Hikamarket Multivendor Hikashop Business
4 years 9 months ago #314170

Bonjour,

merci à vous, je pense m'en être sortie, d'après les tests.

Cordialement

Please Log in or Create an account to join the conversation.

Time to create page: 0.063 seconds
Powered by Kunena Forum