[Résolu] Drupal Commerce - Impossible de commander à l'étranger avec un compte client

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Je rencontre un problème sur mon site Drupal Commerce.
Sur ma boutique, les clients peuvent commander en se connectant à leur compte client ou en invité. Dans les profils utilisateurs (facturation et livraison), il est possible de choisir tous les pays.

J'ai des règles qui permettent de modifier le prix des produits en fonction du pays de l'adresse de livraison choisie.
Exemple : si livraison en France, alors le produit a tel prix ; si livraison en Union Européenne, un autre prix, etc. J'ai en tout quatre règles pour diviser en quatre zones : France, UE, Dom-Tom, Autres.

Mon problème :
Lorsque je passe une commande en invité, tout fonctionne correctement.
Mais si je passe commande avec un compte client, je suis sans cesse bloquée à l'étape 2 du panier (checkout, quand on choisi la livraison et la facturation) si je choisi un pays autre que la France.

Dans mes "Entrées récentes du journal", j'ai les erreurs suivantes :
- "Unable to get variable commerce_line_item, it is not defined."
- "Unable to evaluate condition commerce_order_compare_address."

Voici le détail de la règle qui modifie le prix pour l'Europe :
{ "rules_prix_europe" : {
"LABEL" : "Prix EUROPE",
"PLUGIN" : "reaction rule",
"WEIGHT" : "-10",
"OWNER" : "rules",
"REQUIRES" : [
"commerce_order",
"rules",
"rb_theme",
"commerce_line_item",
"commerce_product_reference",
"entity"
],
"ON" : {
"commerce_product_calculate_sell_price" : [],
"commerce_customer_profile_update" : []
},
"IF" : [
{ "commerce_order_compare_address" : {
"commerce_order" : [ "commerce-line-item:order" ],
"address_field" : "commerce_customer_shipping|commerce_customer_address",
"address_component" : "country",
"operator" : "is one of",
"value" : "DE\r\nAT\r\nBE\r\nES\r\nFI\r\nGR\r\nIT\r\nLU\r\nNL\r\nPL\r\nPT\r\nCZ\r\nGB\r\nSE\r\nDK\r\nIE\r\nRO\r\nSK\r\nCY\r\nEE\r\nLV\r\nLI\r\nLT\r\nMT\r\nHU\r\nSI\r\nUA\r\nBA\r\nBG\r\nSU\r\nNO\r\nAD\r\nBY\r\nHR\r\nFO\r\nGL\r\nGI\r\nGG\r\nVA\r\nIS\r\nIM\r\nJE\r\nMK\r\nMD\r\nMC\r\nME\r\nRU\r\nSM\r\nRS\r\nSJ\r\nTR\r\nAL\r\nAX"
}
},
{ "entity_has_field" : { "entity" : [ "commerce-line-item" ], "field" : "commerce_product" } },
{ "entity_has_field" : {
"entity" : [ "commerce-line-item:commerce-product" ],
"field" : "field_prix_europe"
}
}
],
"DO" : [
{ "rb_theme_action_set_body_class" : { "classes" : "prix_livraison_europe" } },
{ "commerce_line_item_unit_price_amount" : {
"commerce_line_item" : [ "commerce_line_item" ],
"amount" : [ "commerce-line-item:commerce-product:field-prix-europe:amount" ],
"component_name" : "base_price",
"round_mode" : "1"
}
}
]
}
}

Mes config :
Drupal 7.37
Rules 7.x-2.9
Commerce 7.x-1.11
Address Field 7.x-1.1

Merci pour votre aide !

Forum : 
Version de Drupal : 

Re-bonjour,

Je n'ai pas vraiment résolu le problème, mais j'ai trouvé ce qui bloquait.

Dans les paramètres du panier (admin/commerce/config/checkout), dans les Informations de facturation et Informations de livraison, dans la partie "Select account's address field (Select the address field where the information gets cloned from.)" : j'avais un champ "Adresse" sélectionné. J'ai remis cette option à zéro et mes commandes fonctionnent à nouveau.
Il doit y avoir une mauvaise liaison entre les adresses du panier et l'adresse du compte client.