it-swarm.com.de

Wie erhalte ich das Standard-Kundenprofil für Abrechnung / Versand im Code?

Gibt es eine Möglichkeit, das Standard-Kundenprofil für Abrechnung/Versand von einem Benutzer abzurufen?

Ich erhalte alle Kundenprofile mit:

$profiles = commerce_customer_profile_load_multiple(array(), array('uid' => $user->uid));

Aber welches Kundenprofil wurde vom Benutzer als Standard festgelegt?

5
freakimkaefig

Sie können die Standardbenutzerprofiladresse mit abrufen

commerce_addressbook_get_default_profile_id($uid, $type)

Gibt die Standardprofil-ID für eine bestimmte UID und einen bestimmten Profiltyp zurück.

@ param $ uid Die UID des Benutzers, dessen Standardprofil-ID zurückgegeben werden soll.

@ param $ type Der Typ des Kundenprofils, nach dem gesucht werden soll.

@ return Die ID des Standardprofils, falls festgelegt, andernfalls FALSE.

Ein Beispiel, wenn Sie aktuelle Benutzeradressen abrufen möchten shipping verwenden Sie den folgenden Code:

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

Ich vermute, wenn Sie sich auf das Standardfeld in Bezug auf den Benutzer beziehen, verwenden Sie Commerce Addressbook , Sie haben eine API-Funktion, um das Standardprofil mit einer Benutzer-ID und der zu erhalten Profiltyp: Commerce_Adressbuch_get_default_profile_id

Wenn dies nicht der Fall ist, können Sie die von einem bestimmten Kunden verwendeten Profile über das Kundenprofil-Referenzfeld für Abrechnung/Versand/was auch immer abrufen und die Variable konsultieren commerce_customer_profile_' . $type . '_field'

Zum Laden der Profile eines bestimmten Typs können Sie also Entity Field Query verwenden, indem Sie die Kundenbenutzer-ID für die Auftragsentität verwenden.

$query = new EntityFieldQuery();
$result = $query->entityCondition('entity_type', 'commerce_order')
  ->propertyCondition('uid', 0)
  ->execute();
if (!empty($result['commerce_order'])) {
  $orders = entity_load('commerce_order', array_keys($result['commerce_order']));
}

Und wickeln Sie dann die Entität ein oder verwenden Sie field_get_items:

$field_name = variable_get('commerce_customer_profile_billing_field', '');
$order_wrapper = entity_metadata_wrapper('commerce_order', $order);
$order_wrapper->{$field_name}->value();
1
pcambra

Dies könnte hilfreich sein (Nur die hier erwähnte Abrechnung, Sie können Ihren Zustand je nach Ihren Anforderungen ändern).

$uid = "1"; //Define user id for which default address is to be found
$query = db_select("commerce_addressbook_defaults","c");
$query->fields("c",array("profile_id"));
$query->condition("uid",$uid);
$query->condition("type","billing");
$output = $query->execute()->fetchObject();

$profile_id = $output->profile_id;
if(!empty($profile_id)){
    $franchisee_info = commerce_customer_profile_load ($profile_id);
    echo "<pre>";
    print_r($franchisee_info);
    echo "</pre>";
}
0
Kunal Kursija