diff -ru ubercart/uc_store/uc_store.module ubercart/uc_store/uc_store.module
--- ubercart/uc_store/uc_store.module	2009-11-11 21:05:18.000000000 +0000
+++ ubercart/uc_store/uc_store.module	2010-06-08 00:52:00.000000000 +0000
@@ -1052,11 +1052,33 @@
  * Format an address for display based on a country's address format.
  */
 function uc_address_format($first_name, $last_name, $company, $street1, $street2, $city, $zone, $postal_code, $country) {
-  $result = db_query("SELECT * FROM {uc_zones} WHERE zone_id = %d", $zone);
+  $address = Array(
+    'first_name' => $first_name,
+    'last_name' => $last_name,
+    'company' => $company,
+    'street1' => $street1,
+    'street2' => $street2,
+    'city' => $city,
+    'zone' => $zone,
+    'postal_code' => $postal_code,
+    'country' => $country,
+  );
+  return uc_address_format_array($address);
+}
+
+
+/**
+ * Format an address for display based on a country's address format.
+ */
+function uc_address_format_array($address) {
+  if(!is_object($address)) {
+    $address = (Object) $address;
+  }
+  $result = db_query("SELECT * FROM {uc_zones} WHERE zone_id = %d", $address->zone);
   if (!($zone_data = db_fetch_array($result))) {
     $zone_data = array('zone_code' => t('N/A'), 'zone_name' => t('Unknown'));
   }
-  $result = db_query("SELECT * FROM {uc_countries} WHERE country_id = %d", $country);
+  $result = db_query("SELECT * FROM {uc_countries} WHERE country_id = %d", $address->country);
   if (!($country_data = db_fetch_array($result))) {
     $country_data = array(
       'country_name' => t('Unknown'),
@@ -1067,21 +1089,22 @@
 
   $variables = array(
     "\r\n" => '<br />',
-    '!company' => check_plain($company),
-    '!first_name' => check_plain($first_name),
-    '!last_name' => check_plain($last_name),
-    '!street1' => check_plain($street1),
-    '!street2' => check_plain($street2),
-    '!city' => check_plain($city),
+    '!company' => check_plain($address->company),
+    '!job_title' => check_plain($address->job_title),
+    '!first_name' => check_plain($address->first_name),
+    '!last_name' => check_plain($address->last_name),
+    '!street1' => check_plain($address->street1),
+    '!street2' => check_plain($address->street2),
+    '!city' => check_plain($address->city),
     '!zone_code' => $zone_data['zone_code'],
     '!zone_name' => $zone_data['zone_name'],
-    '!postal_code' => check_plain($postal_code),
+    '!postal_code' => check_plain($address->postal_code),
     '!country_name' => $country_data['country_name'],
     '!country_code2' => $country_data['country_iso_code_2'],
     '!country_code3' => $country_data['country_iso_code_3'],
   );
 
-  if (uc_store_default_country() != $country) {
+  if (uc_store_default_country() != $address->country) {
     $variables['!country_name_if'] = $country_data['country_name'];
     $variables['!country_code2_if'] = $country_data['country_iso_code_2'];
     $variables['!country_code3_if'] = $country_data['country_iso_code_3'];
@@ -1092,18 +1115,18 @@
     $variables['!country_code3_if'] = '';
   }
 
-  $format = variable_get('uc_address_format_'. $country, '');
+  $format = variable_get('uc_address_format_'. $address->country, '');
   if (empty($format)) {
     $format = "!company\r\n!first_name !last_name\r\n!street1\r\n!street2\r\n!city, !zone_code !postal_code\r\n!country_name_if";
   }
-  $address = strtr($format, $variables);
-  $address = strtr($address, array("\n" => '<br />'));
+  $address_formatted = strtr($format, $variables);
+  $address_formatted = strtr($address_formatted, array("\n" => '<br />'));
 
   $match = array('`^<br( /)?>`', '`<br( /)?>$`', '`<br( /)?>(\s*|[\s*<br( /)?>\s*]+)<br( /)?>`', '`<br( /)?><br( /)?>`', '`<br( /)?>, N/A`');
   $replace = array('', '', '<br />', '<br />', '', '');
-  $address = preg_replace($match, $replace, $address);
+  $address_formatted = preg_replace($match, $replace, $address_formatted);
 
-  return $address;
+  return $address_formatted;
 }
 
 /**
@@ -1178,7 +1201,9 @@
     'last_name' => t('Last name'),
     'email' => t('E-mail'),
     'phone' => t('Phone number'),
+    'phone2' => t('Alternate phone number'),
     'company' => t('Company'),
+    'job_title' => t('Job title'),
     'address' => t('Address'),
     'street' => t('Street address'),
     'street1' => t('Street address 1'),
@@ -1202,7 +1227,7 @@
  * Return TRUE if the address field is enabled.
  */
 function uc_address_field_enabled($field) {
-  $fields = variable_get('uc_address_fields', drupal_map_assoc(array('first_name', 'last_name', 'phone', 'company', 'street1', 'street2', 'city', 'zone', 'postal_code', 'country')));
+  $fields = variable_get('uc_address_fields', drupal_map_assoc(array('first_name', 'last_name', 'phone', 'phone2', 'company', 'job_title', 'street1', 'street2', 'city', 'zone', 'postal_code', 'country')));
 
   if (!isset($fields[$field])) {
     return FALSE;
diff -ru uc_addresses/translations/uc_addresses.pot uc_addresses/translations/uc_addresses.pot
--- uc_addresses/translations/uc_addresses.pot	2009-12-14 18:08:26.000000000 +0000
+++ uc_addresses/translations/uc_addresses.pot	2010-06-07 22:05:18.000000000 +0000
@@ -65,6 +65,12 @@
 msgid "Phone"
 msgstr ""
 
+msgid "Alt phone"
+msgstr ""
+
+msgid "Job title"
+msgstr ""
+
 #: uc_addresses.module:283
 msgid "Select one..."
 msgstr ""
@@ -269,10 +275,16 @@
 msgid "The addressee's phone number"
 msgstr ""
 
+msgid "The addressee's alternate phone number"
+msgstr ""
+
 #: uc_addresses.install:46
 msgid "The addressee's company name"
 msgstr ""
 
+msgid "The addressee's job title"
+msgstr ""
+
 #: uc_addresses.install:53
 msgid "The addressee's residence number and street"
 msgstr ""
diff -ru uc_addresses/uc_addresses_address_pane.inc uc_addresses/uc_addresses_address_pane.inc
--- uc_addresses/uc_addresses_address_pane.inc	2009-04-20 20:54:43.000000000 +0000
+++ uc_addresses/uc_addresses_address_pane.inc	2010-06-07 22:39:31.000000000 +0000
@@ -54,6 +54,9 @@
       if (uc_address_field_enabled('company')) {
 	$form['address']['company'] = uc_textfield(uc_get_field_name('company'), $address->company, uc_address_field_required('company'), NULL, 64);
       }
+      if (uc_address_field_enabled('job_title')) {
+	$form['address']['job_title'] = uc_textfield(uc_get_field_name('job_title'), $address->job_title, uc_address_field_required('job_title'), NULL, 64);
+      }
       if (uc_address_field_enabled('street1')) {
 	$form['address']['street1'] = uc_textfield(uc_get_field_name('street1'), $address->street1, uc_address_field_required('street1'), NULL, 64);
       }
@@ -87,6 +90,9 @@
       if (uc_address_field_enabled('phone')) {
 	$form['address']['phone'] = uc_textfield(uc_get_field_name('phone'), $address->phone, uc_address_field_required('phone'), NULL, 32, 16);
       }
+      if (uc_address_field_enabled('phone2')) {
+	$form['address']['phone2'] = uc_textfield(uc_get_field_name('phone2'), $address->phone2, uc_address_field_required('phone2'), NULL, 32, 16);
+      }
       if ($op == 'add') {
 	$form['address']['address_name'] = uc_textfield(t('Save as'), $address->address_name, FALSE, t('Enter a name for this address (e.g. Home or Work)'));
 
@@ -128,9 +134,15 @@
       if (uc_address_field_enabled('phone')) {
 	$form['address']['phone'] = uc_textfield(uc_get_field_name('phone'), $address->phone, uc_address_field_required('phone'), NULL, 32, 16);
       }
+      if (uc_address_field_enabled('phone2')) {
+	$form['address']['phone2'] = uc_textfield(uc_get_field_name('phone2'), $address->phone2, uc_address_field_required('phone2'), NULL, 32, 16);
+      }
       if (uc_address_field_enabled('company')) {
 	$form['address']['company'] = uc_textfield(uc_get_field_name('company'), $address->company, uc_address_field_required('company'), NULL, 64);
       }
+      if (uc_address_field_enabled('job_title')) {
+	$form['address']['job_title'] = uc_textfield(uc_get_field_name('job_title'), $address->job_title, uc_address_field_required('job_title'), NULL, 64);
+      }
       if (uc_address_field_enabled('street1')) {
 	$form['address']['street1'] = uc_textfield(uc_get_field_name('street1'), $address->street1, uc_address_field_required('street1'), NULL, 64);
       }
@@ -172,6 +184,7 @@
       $address->first_name = $form_values['first_name'];
       $address->last_name = $form_values['last_name'];
       $address->company = $form_values['company'];
+      $address->job_title = $form_values['job_title'];
       $address->street1 = $form_values['street1'];
       $address->street2 = $form_values['street2'];
       $address->city = $form_values['city'];
@@ -179,6 +192,7 @@
       $address->postal_code = $form_values['postal_code'];
       $address->country = $form_values['country'];
       $address->phone = $form_values['phone'];
+      $address->phone2 = $form_values['phone2'];
       $address->address_name = $form_values['address_name'];
       $address->is_default = $form_values['save'];
       return TRUE;
@@ -188,6 +202,9 @@
       if (uc_address_field_enabled('phone') && !empty($address->phone)) {
 	$view[] = array('title' => t('Phone'), 'data' => check_plain($address->phone));
       }
+      if (uc_address_field_enabled('phone2') && !empty($address->phone2)) {
+	$view[] = array('title' => t('Alt phone'), 'data' => check_plain($address->phone2));
+      }
       return $view;
   }
 }
@@ -204,6 +221,7 @@
   $address->first_name = '';
   $address->last_name = '';
   $address->company = '';
+  $address->job_title = '';
   $address->street1 = '';
   $address->street2 = '';
   $address->city = '';
@@ -211,6 +229,7 @@
   $address->postal_code = '';
   $address->country = '';
   $address->phone = '';
+  $address->phone2 = '';
   $address->address_name = '';
   $address->is_default = false;
   return $address;
@@ -292,4 +311,4 @@
       return $pane[$key];
     }
   }
-}
\ No newline at end of file
+}
diff -ru uc_addresses/uc_addresses.install uc_addresses/uc_addresses.install
--- uc_addresses/uc_addresses.install	2009-12-10 17:21:39.000000000 +0000
+++ uc_addresses/uc_addresses.install	2010-06-07 22:40:09.000000000 +0000
@@ -42,6 +42,13 @@
         'not null' => TRUE,
 	'default' => '',
       ),
+      'phone2' => array(
+        'description' => t('The addressee\'s alternate phone number'),
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+	'default' => '',
+      ),
       'company' => array(
         'description' => t('The addressee\'s company name'),
         'type' => 'varchar',
@@ -49,6 +56,13 @@
         'not null' => TRUE,
 	'default' => '',
       ),
+      'job_title' => array(
+        'description' => t('The addressee\'s job title'),
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+	'default' => '',
+      ),
       'street1' => array(
         'description' => t('The addressee\'s residence number and street'),
         'type' => 'varchar',
@@ -224,6 +238,28 @@
   return $ret;
 }
 
+function uc_addresses_update_6002() {
+  $new_fields = array(
+    'phone2' => array(
+      'type' => 'varchar',
+      'length' => 255,
+      'not null' => TRUE,
+      'default' => '',
+      ),
+    'job_title' => array(
+      'type' => 'varchar',
+      'length' => 255,
+      'not null' => TRUE,
+      'default' => '',
+      ),
+    );
+  $ret = array();
+  foreach ($new_fields as $k=>$v) {
+    db_add_field($ret, 'uc_addresses', $k, $v);
+  }
+  return $ret;
+}
+
 /**
  * Implementation of hook_uninstall().
  */
diff -ru uc_addresses/uc_addresses.module uc_addresses/uc_addresses.module
--- uc_addresses/uc_addresses.module	2009-12-14 17:47:23.000000000 +0000
+++ uc_addresses/uc_addresses.module	2010-06-08 00:43:17.000000000 +0000
@@ -307,20 +307,9 @@
       else {
         // Not happy about this--if uc_address_format() ever changes
         // it's output, we're hosed
-
         $options[drupal_to_js($address)] =
         preg_replace('/<.*?>/', ', ',
-          uc_address_format(
-            $address['first_name'],
-            $address['last_name'],
-            $address['company'],
-            $address['street1'],
-            $address['street2'],
-            $address['city'],
-            $address['zone'],
-            $address['postal_code'],
-            $address['country']
-          )
+          uc_address_format_array($address)
         );
       }
     }
@@ -373,9 +362,15 @@
           if (uc_address_field_enabled('phone')) {
             $form['panes']['delivery']['delivery_phone']['#default_value'] = $default_address->phone;
           }
+          if (uc_address_field_enabled('phone2')) {
+            $form['panes']['delivery']['delivery_phone2']['#default_value'] = $default_address->phone2;
+          }
           if (uc_address_field_enabled('company')) {
             $form['panes']['delivery']['delivery_company']['#default_value'] = $default_address->company;
           }
+          if (uc_address_field_enabled('job_title')) {
+            $form['panes']['delivery']['delivery_job_title']['#default_value'] = $default_address->job_title;
+          }
           if (uc_address_field_enabled('street1')) {
             $form['panes']['delivery']['delivery_street1']['#default_value'] = $default_address->street1;
           }
@@ -433,9 +428,15 @@
         if (uc_address_field_enabled('phone')) {
           $form['panes']['billing']['billing_phone']['#default_value'] = $default_address->phone;
         }
+        if (uc_address_field_enabled('phone2')) {
+          $form['panes']['billing']['billing_phone2']['#default_value'] = $default_address->phone2;
+        }
         if (uc_address_field_enabled('company')) {
           $form['panes']['billing']['billing_company']['#default_value'] = $default_address->company;
         }
+        if (uc_address_field_enabled('job_title')) {
+          $form['panes']['billing']['billing_job_title']['#default_value'] = $default_address->job_title;
+        }
         if (uc_address_field_enabled('street1')) {
           $form['panes']['billing']['billing_street1']['#default_value'] = $default_address->street1;
         }
@@ -504,8 +505,12 @@
 	   $fields[$type . '_last_name']['#default_value']) return FALSE;
   else if (uc_address_field_enabled('phone') &&
 	 $fields[$type . '_phone']['#default_value']) return FALSE;
+  else if (uc_address_field_enabled('phone2') &&
+	 $fields[$type . '_phone2']['#default_value']) return FALSE;
   else if (uc_address_field_enabled('company') &&
 	 $fields[$type . '_company']['#default_value']) return FALSE;
+  else if (uc_address_field_enabled('job_title') &&
+	 $fields[$type . '_job_title']['#default_value']) return FALSE;
   else if (uc_address_field_enabled('street1') &&
 	   $fields[$type . '_street1']['#default_value']) return FALSE;
   else if (uc_address_field_enabled('street2') &&
@@ -558,6 +563,7 @@
   $address->first_name = $order->billing_first_name;
   $address->last_name = $order->billing_last_name;
   $address->company = $order->billing_company;
+  $address->job_title = $order->billing_job_title;
   $address->street1 = $order->billing_street1;
   $address->street2 = $order->billing_street2;
   $address->city = $order->billing_city;
@@ -565,6 +571,7 @@
   $address->postal_code = $order->billing_postal_code;
   $address->country = $order->billing_country;
   $address->phone = $order->billing_phone;
+  $address->phone2 = $order->billing_phone2;
   $address->is_default = 0;
   _uc_addresses_db_add_address($address, TRUE);
 
@@ -574,6 +581,7 @@
     $address->first_name = $order->delivery_first_name;
     $address->last_name = $order->delivery_last_name;
     $address->company = $order->delivery_company;
+    $address->job_title = $order->delivery_job_title;
     $address->street1 = $order->delivery_street1;
     $address->street2 = $order->delivery_street2;
     $address->city = $order->delivery_city;
@@ -581,6 +589,7 @@
     $address->postal_code = $order->delivery_postal_code;
     $address->country = $order->delivery_country;
     $address->phone = $order->delivery_phone;
+    $address->phone2 = $order->delivery_phone2;
     $address->is_default = 0;
     _uc_addresses_db_add_address($address, TRUE);
   }
@@ -981,18 +990,7 @@
  * @return A formatted address.
  */
 function uc_addresses_address($items) {
-  $address = uc_address_format(
-    $items->first_name,
-    $items->last_name,
-    $items->company,
-    $items->street1,
-    $items->street2,
-    $items->city,
-    $items->zone,
-    $items->postal_code,
-    $items->country
-    );
-  return $address;
+  return uc_address_format_array($items);
 }
 
 /**
@@ -1173,11 +1171,11 @@
   // Add the address
 
   db_query("INSERT INTO {uc_addresses} (aid, uid, first_name, last_name, "
-	   ."phone, company, street1, street2, city, zone, postal_code, country, "
+	   ."phone, phone2, company, job_title, street1, street2, city, zone, postal_code, country, "
 	   ."address_name, "
 	   ."created, modified) VALUES (%d, %d, "
-	   ."'%s', '%s', '%s', "
-	   ."'%s', '%s', '%s', "
+	   ."'%s', '%s', '%s', '%s', "
+	   ."'%s', '%s', '%s', '%s', "
 	   ."'%s', %d, '%s', %d, "
 	   ."'%s', "
 	   ."%d, %d)",
@@ -1186,7 +1184,9 @@
            $address->first_name,
 	   $address->last_name,
 	   $address->phone,
+	   $address->phone2,
            $address->company,
+           $address->job_title,
 	   $address->street1,
 	   $address->street2,
            $address->city,
@@ -1245,7 +1245,9 @@
 	   ."first_name = '%s', "
 	   ."last_name = '%s', "
 	   ."phone = '%s', "
+	   ."phone2 = '%s', "
 	   ."company = '%s', "
+	   ."job_title = '%s', "
 	   ."street1 = '%s', "
 	   ."street2 = '%s', "
 	   ."city = '%s', "
@@ -1258,7 +1260,9 @@
            $address->first_name,
 	   $address->last_name,
 	   $address->phone,
+	   $address->phone2,
            $address->company,
+           $address->job_title,
 	   $address->street1,
 	   $address->street2,
            $address->city,
@@ -1298,7 +1302,9 @@
 	     ."first_name = '%s' AND "
 	     ."last_name = '%s' AND "
 	     ."phone = '%s' AND "
+	     ."phone2 = '%s' AND "
 	     ."company = '%s' AND "
+	     ."job_title = '%s' AND "
 	     ."street1 = '%s' AND "
 	     ."street2 = '%s' AND "
 	     ."city = '%s' AND "
@@ -1309,7 +1315,9 @@
 	     $address->first_name,
 	     $address->last_name,
 	     $address->phone,
+	     $address->phone2,
 	     $address->company,
+	     $address->job_title,
 	     $address->street1,
 	     $address->street2,
 	     $address->city,
@@ -1396,7 +1404,9 @@
   if (!$address->first_name) $address->first_name = '';
   if (!$address->last_name) $address->last_name = '';
   if (!$address->phone) $address->phone = '';
+  if (!$address->phone2) $address->phone2 = '';
   if (!$address->company) $address->company = '';
+  if (!$address->job_title) $address->job_title = '';
   if (!$address->street1) $address->street1 = '';
   if (!$address->street2) $address->street2 = '';
   if (!$address->city) $address->city = '';
