Wie erhalte ich die Lieferadresse programmgesteuert in Drupal Commerce? Welchen Wrapper soll ich verwenden?

12

Ich muss die Versandadresse (genauer gesagt das Versandland) programmgesteuert in Drupal Commerce ermitteln. Ich habe das $orderObjekt. Wie kann ich die Lieferadresse bekommen?

EDIT - Ok, ich habe das getan

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

Jetzt muss ich es wieder einpacken, aber ich kenne den Typ nicht

$shipping_wrapper = entity_metadata_wrapper(?, $order);

Was soll ich anstelle des Fragezeichens setzen?

Nicola Peluchetti
quelle

Antworten:

7

Ok, ich habe das so gemacht

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
quelle
1
Haben Sie es geschafft, das $ order-Objekt in Ihrem benutzerdefinierten Modul abzurufen? wenn ja, kannst du mir sagen wie?
DropDragon
1

Sie können verwenden commerce_customer_profile_load($profile_id), die Profil-ID kann von der $order->commerce_customer_shippingVariablen abgerufen werden, da Sie das Auftragsobjekt haben.

Victor Lazov
quelle
1

Es gibt 2 Möglichkeiten, die Versandadresse des Kunden / Benutzers zu finden.

function get_user_shipping_address(){

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

Nachdem Sie die Profil-ID erhalten haben, können Sie das Profil laden und den Namen und die Adresse des Kunden abrufen

$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;
}

zweite Möglichkeit, wenn Sie $ Auftrag haben

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
quelle