Comment obtenir l'adresse de livraison par programme dans le commerce Drupal - quel emballage dois-je utiliser?

12

J'ai besoin d'obtenir l'adresse de livraison (le pays de livraison pour être précis) par programme dans le commerce Drupal. J'ai l' $orderobjet. Comment puis-je obtenir l'adresse de livraison?

EDIT - Ok je l'ai fait

 $order_wrapper = entity_metadata_wrapper('commerce_order', $order);
 $shipping =  $order_wrapper->commerce_customer_shipping->value();

Maintenant, je dois récapituler, mais je ne connais pas le type

$shipping_wrapper = entity_metadata_wrapper(?, $order);

Que dois-je mettre à la place du point d'interrogation?

Nicola Peluchetti
la source

Réponses:

7

Ok j'ai fait ça de cette façon

function commerce_shipping_biagetti_service_rate_order($shipping_service, $order) {
  $order_wrapper = entity_metadata_wrapper('commerce_order', $order);
  $shipping = $order_wrapper->commerce_customer_shipping->commerce_customer_address->value();
  //$shipping is an array containing all shipping data
Nicola Peluchetti
la source
1
Avez-vous réussi à obtenir l'objet $ order dans votre module personnalisé? si oui, pouvez-vous me dire comment?
DropDragon
1

vous pouvez utiliser commerce_customer_profile_load($profile_id), l'ID de profil peut être récupéré à partir d'une $order->commerce_customer_shippingvariable puisque vous avez l'objet de commande.

Victor Lazov
la source
1

Il existe 2 façons de trouver l'adresse de livraison du client / utilisateur

function get_user_shipping_address(){

global $user; 
$default_pid =commerce_addressbook_get_default_profile_id($user->uid,'shipping');

Après avoir obtenu l'ID de profil, vous pouvez charger le profil et obtenir le nom et l'adresse du client

$profile_load = commerce_customer_profile_load($default_pid);
$first_line = $profile_load->commerce_customer_address['und'][0]['name_line'];
$landmark = $profile_load->commerce_customer_address['und'][0]['sub_premise'];
$postal_code = $profile_load->commerce_customer_address['und'][0]['postal_code'];
$state = $profile_load->commerce_customer_address['und'][0]['locality'];
$add[] = $first_line . ' ' . $landmark . ' ' . $postal_code . ' ' . $state;
return $add;
}

deuxième façon si vous avez $ order

function get_default_address_of_customer_by_order_id($order) {
  $order1 = commerce_order_load($order);
  $shipping_id = $order1->commerce_customer_shipping['und'][0]['profile_id'];
  $address = commerce_customer_profile_load($shipping_id);
  $first_line = $address->commerce_customer_address['und'][0]['name_line'];
  $landmark = $address->commerce_customer_address['und'][0]['sub_premise'];
  $postal_code = $address->commerce_customer_address['und'][0]['postal_code'];
  $state = $address->commerce_customer_address['und'][0]['locality'];
  $add[] = $first_line . ' ' . $landmark . ' ' . $postal_code . ' ' . $state;
  return $add;
 }
Vikram Singh Shekhawat
la source