I need to autofill the billing information on checkout with Drupal commerce.

I added to drupal user a field called 'field_commerce_billing' like a reference to 'Customer profile' entity and I want to autofill the checkout with the customer profile fields values if an user is logged in.


This code work for me:

function mymodule_form_alter(&$form, &$form_state, $form_id) { 
  global $user;

  if( $form_id == 'commerce_checkout_form_checkout' && $user->uid ){
    $user = user_load( $user->uid );
    $loaded_billing = commerce_customer_profile_load($user->field_commerce['und'][0]['profile_id']);

    // For each field in customer profile I fill the form field with the $user value 
    $form['customer_profile_billing']['commerce_customer_address']['und'][0]['#address']  = $loaded_billing->commerce_customer_address['und'][0];
    $form['customer_profile_billing']['field_telephone_number']['und'][0]['value']['#default_value']  = $loaded_billing->field_telephone_number['und'][0]['value'];

I tryed to retrive the commerce_customer_profile field list but I didn't find a way to generalize an action for filling every field type in the form.

| improve this answer | |
  • Please do not make a drastic changes in code. – Mołot Apr 29 '14 at 11:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.