Index: admin/user_profiles.php @@ -275,10 +275,16 @@ foreach ($address_fields as $k => $v) { } } $smarty->assign('address_fields', $address_fields); /** + * Additional address fields + */ +$additional_address_fields = func_get_additional_fields('', '', 'B'); +$smarty->assign('additional_address_fields', $additional_address_fields); + +/** * Additional fields */ $additional_fields = func_get_additional_fields(); $smarty->assign('additional_fields', $additional_fields); @@ -304,11 +310,12 @@ if(empty($active_modules['Simple_Mode']) * Service arrays */ // Sections $sections = array( 'A' => func_get_langvar_by_name('lbl_additional_information'), - 'P' => func_get_langvar_by_name('lbl_personal_information') + 'P' => func_get_langvar_by_name('lbl_personal_information'), + 'B' => func_get_langvar_by_name('lbl_address_book') ); // Field types $types = array( 'T' => 'Text', Index: include/address_book.php @@ -62,13 +62,36 @@ if ($REQUEST_METHOD == 'POST') { if ( $current_area == 'C' && $main == 'checkout' ) { // Update request from customer area - if (!$is_anonymous) + if (!$is_anonymous) { $address_book = func_customer_save_address_book_indb($address_book, @$ship2diff, @$existing_address, @$new_address); + // Add additional address values + if (isset($address_book['S']['id']) && isset($additional_values['address']['S'])) { + func_save_additional_address_fields($logged_userid, $address_book['S']['id'], $additional_values['address']['S']); + } + if (isset($address_book['B']['id']) && isset($additional_values['address']['B'])) { + func_save_additional_address_fields($logged_userid, $address_book['B']['id'], $additional_values['address']['B']); + } + + // Update additional address values + if (isset($address_book['S']['id']) && isset($additional_values['address'][@$new_address['S']])) { + func_save_additional_address_fields($logged_userid, $address_book['S']['id'], $additional_values['address'][$new_address['S']]); + } + elseif (isset($address_book['S']['id']) && isset($additional_values['address'][@$existing_address['S']])) { + func_save_additional_address_fields($logged_userid, $address_book['S']['id'], $additional_values['address'][$existing_address['S']]); + } + if (isset($address_book['B']['id']) && isset($additional_values['address'][@$new_address['B']])) { + func_save_additional_address_fields($logged_userid, $address_book['B']['id'], $additional_values['address'][$new_address['B']]); + } + elseif (isset($address_book['B']['id']) && isset($additional_values['address'][@$existing_address['B']])) { + func_save_additional_address_fields($logged_userid, $address_book['B']['id'], $additional_values['address'][$existing_address['B']]); + } + } + $cart = func_customer_save_address_book_insession($cart, $address_book, @$ship2diff); } elseif ($current_area != 'C') { // Update request from admin area if (!empty($delete_address)) { @@ -78,9 +101,20 @@ if ($REQUEST_METHOD == 'POST') { // Update address_book for customer logged_userid list($address_book, $new_addressid) = func_admin_save_address_book($address_book, $logged_userid); // Mark default address(es) func_admin_mark_default_addresses($logged_userid, $new_addressid); + // Update additional address value + foreach ($address_book as $__addressid => $__address_data) { + if (isset($additional_values['address'][$__addressid]) && $__addressid != 0) { + func_save_additional_address_fields($logged_userid, $__addressid, $additional_values['address'][$__addressid]); + } + } + + // Add additional address values + if (isset($additional_values['address'][0]) && $new_addressid) { + func_save_additional_address_fields($logged_userid, $new_addressid, $additional_values['address'][0]); + } } } ?> Index: include/func/func.user.php @@ -496,11 +496,12 @@ function func_userinfo($user, $usertype if (isset($userinfo['email'])) $email = $userinfo['email']; // Get additional fields - $additional_fields = func_get_additional_fields($profile_area, $user); + $additional_fields = func_get_additional_fields($profile_area, $user, '', 0); + $userinfo['additional_fields'] = $additional_fields; // Get default fields $default_fields = func_get_default_fields($profile_area, 'user_profile', true, true); $userinfo['default_fields'] = $default_fields; @@ -590,10 +591,21 @@ function func_userinfo($user, $usertype ) { // Adjust addresses for logged in customer ($cart can be changed) list($cart, $userinfo) = func_adjust_customer_address($cart, $userinfo); } + if (isset($userinfo['address']['B']['id'])) { + $userinfo['additional_fields']['address']['B'] = func_get_additional_fields($userinfo['usertype'], $user, 'B', $userinfo['address']['B']['id']); + } else { + $userinfo['additional_fields']['address']['B'] = func_get_additional_fields($userinfo['usertype'], $user, 'B', 'B'); + } + if (isset($userinfo['address']['S']['id'])) { + $userinfo['additional_fields']['address']['S'] = func_get_additional_fields($userinfo['usertype'], $user, 'B', $userinfo['address']['S']['id']); + } else { + $userinfo['additional_fields']['address']['S'] = func_get_additional_fields($userinfo['usertype'], $user, 'B', 'S'); + } + // Add these fields for backward compatibility with 43x code like payment gateways $userinfo['phone'] = empty($userinfo['b_phone']) ? @$userinfo['s_phone'] : $userinfo['b_phone']; $userinfo['fax'] = empty($userinfo['b_fax']) ? @$userinfo['s_fax'] : $userinfo['b_fax']; if (empty($userinfo['language']) && (!empty($shop_language))) { @@ -1064,30 +1076,38 @@ function func_get_profile_areas($profile } /** * Get additional register fields settings */ -function func_get_additional_fields($area = '', $user = '') +function func_get_additional_fields($area = '', $user = '', $section = null, $address = null) { global $sql_tbl, $shop_language, $is_anonymous; $_anonymous_userinfo = func_get_anonymous_userinfo(); + $section_condition = empty($section) ? "$sql_tbl[register_fields].section <> ''" : "$sql_tbl[register_fields].section = '$section'"; + $address_condition = empty($address) ? "$sql_tbl[register_field_values].addressid = '0'" : "$sql_tbl[register_field_values].addressid = '$address'"; + + $_address_exists = func_query_first_cell("SELECT COUNT(id) FROM $sql_tbl[address_book] WHERE userid='$user' AND id='$address'") == 0 ? false : true; + $_value_exists = func_query_first_cell("SELECT COUNT(fieldid) FROM $sql_tbl[register_field_values] WHERE userid='$user' AND addressid='$address'") == 0 ? false : true; + + $join_type = (!$_address_exists || !$_value_exists) ? "LEFT JOIN" : "INNER JOIN"; + if ($area) { if (!is_array($area)) $area = array($area); $avail_condition = "($sql_tbl[register_fields].avail LIKE '%" . implode("%' OR $sql_tbl[register_fields].avail LIKE '%", $area) . "%')"; $required_condition = "($sql_tbl[register_fields].required LIKE '%" . implode("%' OR $sql_tbl[register_fields].required LIKE '%", $area) . "%')"; - $fields = func_query("SELECT $sql_tbl[register_fields].*, IF($avail_condition, 'Y', '') as avail, IF($required_condition, 'Y', '') as required, $sql_tbl[register_field_values].value FROM $sql_tbl[register_fields] LEFT JOIN $sql_tbl[register_field_values] ON $sql_tbl[register_fields].fieldid = $sql_tbl[register_field_values].fieldid AND $sql_tbl[register_field_values].userid = '$user' ORDER BY $sql_tbl[register_fields].section, $sql_tbl[register_fields].orderby"); + $fields = func_query("SELECT $sql_tbl[register_fields].*, IF($avail_condition, 'Y', '') as avail, IF($required_condition, 'Y', '') as required, $sql_tbl[register_field_values].value, $sql_tbl[register_field_values].addressid FROM $sql_tbl[register_fields] $join_type $sql_tbl[register_field_values] ON $sql_tbl[register_fields].fieldid = $sql_tbl[register_field_values].fieldid AND $sql_tbl[register_field_values].userid = '$user' AND $address_condition WHERE $section_condition ORDER BY $sql_tbl[register_fields].section, $sql_tbl[register_fields].orderby"); } else { - $fields = func_query("SELECT * FROM $sql_tbl[register_fields] ORDER BY section, orderby"); + $fields = func_query("SELECT * FROM $sql_tbl[register_fields] WHERE $section_condition ORDER BY section, orderby"); } if ($fields) { @@ -1098,11 +1118,18 @@ function func_get_additional_fields($are && $area && isset($_anonymous_userinfo['additional_values'][$v['fieldid']]) ) { // Anonymous profile $fields[$k]['value'] = stripslashes($_anonymous_userinfo['additional_values'][$v['fieldid']]); - } + } + + if ( + ($address == 'B' || $address == 'S') + && isset($_anonymous_userinfo['additional_values']['address'][$address][$v['fieldid']]) + ) { + $fields[$k]['value'] = $_anonymous_userinfo['additional_values']['address'][$address][$v['fieldid']]; + } $fields[$k]['title'] = func_get_languages_alt("lbl_register_field_" . $v['fieldid'], $shop_language); if (!$area) { @@ -1318,18 +1345,41 @@ function func_check_required_fields($use foreach ($additional_fields as $k => $v) { if ( $v['required'] == "Y" && empty($userinfo['additional_fields'][$k]["value"]) + && $v['section'] != 'B' ) { return false; } } + foreach (@$userinfo['additional_fields']['address']['B'] as $k => $v) { + if ( + @$v['required']['C'] == "Y" + && empty($v['value']) + ) { + + return false; + + } + } + + foreach (@$userinfo['additional_fields']['address']['S'] as $k => $v) { + if ( + @$v['required']['C'] == "Y" + && empty($v['value']) + ) { + + return false; + + } + } + } // Do not take required county fields into account if the county feature is disabled bt:89518 if ($config['General']['use_counties'] != 'Y') { @@ -2045,10 +2095,90 @@ function func_save_address($userid = 0, return $data; } /** + * Check address book additional field entries + * + * @param mixed $data Posted data + * @param mixed $fields_area Fields area + * + * @return array + * @see ____func_see____ + */ +function func_check_additional_address_fields($data, $fields_area) +{ + if (empty($data)) { + return false; + } + + $result = array('status' => true, 'errors' => array()); + + $additional_address_fields = func_get_additional_fields($fields_area, null, 'B'); + + foreach($additional_address_fields as $field) { + if ( + $field['avail'] == 'Y' + && $field['required'] == 'Y' + && ( + !isset($data[$field['fieldid']]) + || empty($data[$field['fieldid']]) + ) + ) { + $result['status'] = false; + $result['errors'][] = func_reg_error(14); + + return $result; + } + } + + return $result; +} + +/** + * Save additional address fields + * + * @param int $userid User ID + * @param int $addressid Address ID + * @param array $data + * + * @return mixed + * @see ____func_see____ + */ +function func_save_additional_address_fields($userid, $addressid, $data=array()) { + + if (empty($data) || !is_array($data)) { + return false; + } + + if ( + abs(intval($userid)) != $userid + || $userid <= 0 + ) { + return false; + } + + $saved_data = array(); + + foreach ($data as $key => $value) { + $saved_data[] = array ( + 'userid' => $userid, + 'fieldid' => $key, + 'value' => $value, + 'addressid' => $addressid + ); + } + + // Perform add/update + foreach ($saved_data as $key => $value) { + func_array2insert('register_field_values', $value, true); + } + + return $saved_data; +} + +/** * Delete address entry * * @param int $addressid Address ID * * @return bool @@ -2062,11 +2192,14 @@ function func_delete_address($addressid return false; } - return db_query("DELETE FROM $sql_tbl[address_book] WHERE id='$addressid'"); + $result1 = db_query("DELETE FROM $sql_tbl[register_field_values] WHERE addressid='$addressid'"); + $result2 = db_query("DELETE FROM $sql_tbl[address_book] WHERE id='$addressid'"); + + return $result1 && $result2; } /** * Mark address default * @@ -3416,10 +3549,36 @@ function func_is_adresses_different($b_a return $is_different; } /** + * Compare b_address additional info with s_address additional info on checkout pages + * return false if is equal + * return true if is different + */ +function func_is_additional_address_info_different($b_address, $s_address, $fields_area = 'H') { + + if ( + empty($s_address) + || count($b_address) != count($s_address) + ) { + return true; + } + + foreach($b_address as $key => $field) { + if ( + $field['fieldid'] == $s_address[$key]['fieldid'] + && $field['value'] != $s_address[$key]['value'] + ) { + return true; + } + } + + return false; +} + +/** * Setter for $cart['used_s(b)_address'] global session var. * Setter for $l_cart['used_s(b)_address'] local var * Use only this function to change the vars */ function func_set_cart_address($l_cart, $type, $data, $run_save = '') Index: include/register.php @@ -174,10 +174,21 @@ if ( $additional_fields = func_get_additional_fields($fields_area, $logged_userid); $default_fields = func_get_default_fields($fields_area); $address_fields = func_get_default_fields($fields_area, 'address_book'); +if (isset($userinfo['address']['B']['id'])) { + $additional_b_address_fields = func_get_additional_fields($fields_area, $logged_userid, 'B', $userinfo['address']['B']['id']); +} else { + $additional_b_address_fields = func_get_additional_fields($fields_area, $logged_userid, 'B', 'B'); +} +if (isset($userinfo['address']['S']['id'])) { + $additional_s_address_fields = func_get_additional_fields($fields_area, $logged_userid, 'B', $userinfo['address']['S']['id']); +} else { + $additional_s_address_fields = func_get_additional_fields($fields_area, $logged_userid, 'B', 'S'); +} + $name_fields = array(); $is_areas = func_get_profile_areas($fields_area); $allow_pwd_modify = @@ -489,18 +500,50 @@ if ( && $additional_fields ) { foreach ($additional_fields as $v) { if ( $v['required'] == 'Y' + && $v['section'] != 'B' && empty($additional_values[$v['fieldid']]) && $v['avail'] == 'Y' && !$is_admin_editor ) { $fillerror = true; break; } } + + if ( + $ship2diff + && isset($additional_values['address']['S']) + ) { + $additional_address_fields_check_result = func_check_additional_address_fields($additional_values['address']['S'], $fields_area); + } + elseif ( + !$ship2diff + && isset($additional_values['address']['B']) + ) { + $additional_address_fields_check_result = func_check_additional_address_fields($additional_values['address']['B'], $fields_area); + } + + if ( + !empty($additional_address_fields_check_result['errors']) + ) { + $fillerror = true; + } + elseif ( + !$ship2diff + && isset($additional_values['address']['B']) + ) { + $additional_values['address']['S'] = $additional_values['address']['B']; + } + elseif ( + !$ship2diff + && isset($additional_values['address'][$userinfo['address']['B']['id']]) + ) { + $additional_values['address']['S'] = $additional_values['address'][$userinfo['address']['B']['id']]; + } } // Check email if (!func_check_email($email)) { $errors[] = func_reg_error(2); @@ -820,22 +863,25 @@ if ( ? "'$login_' user has updated '$login' profile" : "'$login' user has updated '$login' profile" ); } - db_query("DELETE FROM $sql_tbl[register_field_values] WHERE userid = '$logged_userid'"); + db_query("DELETE FROM $sql_tbl[register_field_values] WHERE userid = '$logged_userid' AND addressid = 0"); if (!empty($additional_values)) { foreach ($additional_values as $k => $v) { - func_array2insert( - 'register_field_values', - array( - 'fieldid' => $k, - 'userid' => $logged_userid, - 'value' => $v, - ) - ); + if ($k != 'address') { + func_array2insert( + 'register_field_values', + array( + 'fieldid' => $k, + 'userid' => $logged_userid, + 'value' => $v, + 'addressid' => 0 + ) + ); + } } } if ($login_type == 'B') { @@ -1031,24 +1077,25 @@ if ( ); } $new_user_flag = true; - db_query("DELETE FROM $sql_tbl[register_field_values] WHERE userid = '$newuserid'"); + db_query("DELETE FROM $sql_tbl[register_field_values] WHERE userid = '$newuserid' AND addressid = 0"); - if ($additional_values) { - + if (!empty($additional_values)) { foreach ($additional_values as $k => $v) { - - func_array2insert( - 'register_field_values', - array( - 'fieldid' => $k, - 'userid' => $newuserid, - 'value' => $v, - ) - ); + if ($k != 'address') { + func_array2insert( + 'register_field_values', + array( + 'fieldid' => $k, + 'userid' => $newuserid, + 'value' => $v, + 'addressid' => 0 + ) + ); + } } } if ($usertype == 'B') { @@ -1662,10 +1709,18 @@ if (!empty($userinfo)) { && @is_array($userinfo['address']['B']) && is_array($userinfo['address']['S']) ) { $ship2diff = func_is_adresses_different($userinfo['address']['B'], $userinfo['address']['S'], $fields_area); + + if (!$ship2diff) { + $ship2diff = func_is_additional_address_info_different( + $userinfo['additional_fields']['address']['B'], + $userinfo['additional_fields']['address']['S'], + $fields_area + ); + } $b_display_states = func_is_display_states(addslashes($userinfo['address']['B']['country'])); $s_display_states = (!$ship2diff) ? $b_display_states : @@ -1833,10 +1888,27 @@ if ( $smarty->assign('default_fields', $default_fields); $smarty->assign('additional_fields', $additional_fields); $smarty->assign('is_areas', $is_areas); +$smarty->assign('additional_b_address_fields', $additional_b_address_fields); +$smarty->assign('additional_s_address_fields', $additional_s_address_fields); + +if (!empty($address_book)) { + $additional_address_fields = array(); + $additional_address_fields['0'] = func_get_additional_fields(@$userinfo['usertype'], @$userinfo['id'], 'B'); + foreach($address_book as $_ab_record) { + $additional_address_fields[$_ab_record['id']] = func_get_additional_fields(@$userinfo['usertype'], @$userinfo['id'], 'B', $_ab_record['id']); + } + $additional_address_fields['avail'] = 'Y'; + $smarty->assign('additional_address_fields', $additional_address_fields); +} else { + $additional_address_fields['B'] = $additional_b_address_fields; + $additional_address_fields['S'] = $additional_s_address_fields; +} + + if (!empty($av_error)) $smarty->assign('av_error', $av_error); $m_usertype = empty($_GET['usertype']) ? $current_area Index: modules/Advanced_Order_Management/order_edit.php @@ -448,10 +448,11 @@ if ($REQUEST_METHOD == 'POST') { $cart_tmp['userinfo']['b_title'] = func_get_title($cart_tmp['userinfo']['b_titleid']); $cart_tmp['userinfo']['s_title'] = func_get_title($cart_tmp['userinfo']['s_titleid']); } if(is_array($additional_fields)) { $cart_tmp['userinfo']['additional_fields'] = $additional_fields; + $cart_tmp['extra']['additional_fields'] = $additional_fields; } func_header_location("order.php?orderid=$orderid&mode=edit&show=customer"); } elseif ($action == 'update_totals') { Index: modules/One_Page_Checkout/func.php @@ -81,10 +81,24 @@ function func_ajax_block_opc_profile() || isset($_POST['edit_profile']) ) { $smarty->assign('need_address_info', true); $smarty->assign('force_change_address', true); $smarty->assign('address_fields', func_get_default_fields('H', 'address_book')); + + if (isset($userinfo['address']['B']['id'])) { + $additional_b_address_fields = func_get_additional_fields($fields_area, $logged_userid, 'B', $userinfo['address']['B']['id']); + } else { + $additional_b_address_fields = func_get_additional_fields($fields_area, $logged_userid, 'B', 'B'); + } + if (isset($userinfo['address']['S']['id'])) { + $additional_s_address_fields = func_get_additional_fields($fields_area, $logged_userid, 'B', $userinfo['address']['S']['id']); + } else { + $additional_s_address_fields = func_get_additional_fields($fields_area, $logged_userid, 'B', 'S'); + } + + $smarty->assign('additional_b_address_fields', $additional_b_address_fields); + $smarty->assign('additional_s_address_fields', $additional_s_address_fields); } $smarty->assign( 'register_script_name', ( Index: popup_address.php @@ -164,12 +164,14 @@ if ($REQUEST_METHOD == 'POST') { // Add/update address if (($mode == 'update' || $mode == 'add') && !empty($posted_data)) { $result = func_check_address($posted_data, 'C'); + $additional_result = func_check_additional_address_fields($additional_values, 'C'); - if (!empty($result['errors'])) { + if (!empty($result['errors']) || !empty($additional_result['errors'])) { + $errors = $result['errors']; // Prepare errors data if (!$is_ajax_request) { $top_message = array( @@ -178,13 +180,24 @@ if ($REQUEST_METHOD == 'POST') { ); } $reg_error = func_prepare_error($errors); $reg_error['saved_data'] = func_stripslashes($posted_data); + + $reg_error['additional_data'] = func_stripslashes($additional_values); + + $reg_error['address_id'] = $id; } else { $result = func_save_address($logged_userid, $id, $posted_data); + + // Add/update additional address fields + $_aid = !empty($id) ? $id : $result['addressid']; + func_save_additional_address_fields($logged_userid, $_aid, $additional_values); + + $reg_error = array(); + $res = true; } } // Delete address @@ -239,28 +252,26 @@ if (!empty($id)) { // Security check if (empty($address) || $address['userid'] != $logged_userid) { func_close_window(); } - // Assign error data - if (!empty($reg_error)) { - $smarty->assign('reg_error', $reg_error); - $smarty->assign('address', func_prepare_address($reg_error['saved_data'])); - $reg_error = array(); - } else { - $smarty->assign('address', $address); - } - + $smarty->assign('address', $address); $smarty->assign('id', $id); } else { // Check if there are any addresses already filled in $is_address_book_empty = func_is_address_book_empty($logged_userid); $smarty->assign('is_address_book_empty', $is_address_book_empty); } +// Assign error data +if (!empty($reg_error) && $reg_error['address_id'] == $id ) { + $smarty->assign('reg_error', $reg_error); + $smarty->assign('address', func_prepare_address($reg_error['saved_data'])); +} + // Address validation error for anonymous customers if ( $av_error && $is_anonymous ) { @@ -300,10 +311,29 @@ if ($mode != 'select' || isset($id)) { } $default_fields = func_get_default_fields('C', 'address_book'); $smarty->assign('default_fields', $default_fields); +/** + * Additional address fields + */ +$additional_address_fields = func_get_additional_fields('C', $logged_userid, 'B', $id); + +if ( + !empty($reg_error['additional_data']) && $reg_error['address_id'] == $id +) { + foreach($additional_address_fields as $_a_key => $_a_field) { + if ( + isset($reg_error['additional_data'][$_a_field['fieldid']]) + ) { + $additional_address_fields[$_a_key]['value'] = $reg_error['additional_data'][$_a_field['fieldid']]; + } + } +} + +$smarty->assign('additional_address_fields', $additional_address_fields); + // Assign smarty variables $smarty->assign('mode', $mode); $smarty->assign('for', $for); $smarty->assign('type', @$type); $smarty->assign('return', @$return); Index: skin/common_files/admin/main/user_profiles.tpl @@ -79,10 +79,16 @@ function displayVariants(obj, objv) { {/if} {/foreach} +{foreach from=$additional_address_fields item=v key=k} + {if $v.section eq "B"} + {include file="admin/main/user_profiles_row.tpl" title=$v.title|default:$v.field name_prefix="add" field=$v.fieldid idprefix="ab" required=$v.required avail=$v.avail} + {/if} +{/foreach} + {*** / Address book ***} {foreach from=$additional_fields item=v key=k} {if $v.section eq 'A'} {if $ai_exist ne 'Y'} Index: skin/common_files/customer/main/address_details_html.tpl @@ -14,10 +14,16 @@ vim: set ts=2 sw=2 sts=2 et: {if $default_fields.city and $address.city ne ''}{$address.city|escape}, {/if} {if $default_fields.state and $address.state ne ''}{$address.statename|default:$address.state|escape}, {/if} {if $default_fields.county and $address.county ne ''}{$address.countyname|default:$address.county|escape},
{/if} {if $default_fields.zipcode and $address.zipcode ne ''}{include file="main/zipcode.tpl" val=$address.zipcode zip4=$address.zip4 static=true}
{/if} {if $default_fields.country and $address.country ne ''}{$address.countryname|default:$address.country|escape}{/if} + {if $additional_info ne ''} +
+ {foreach from=$additional_info item=v} + {$v.value}
+ {/foreach} + {/if}
{if $default_fields.phone and $address.phone ne ''}{$lng.lbl_phone}: {$address.phone|escape}{/if}
{if $default_fields.fax and $address.fax ne ''}{$lng.lbl_fax}: {$address.fax|escape}{/if} Index: skin/common_files/customer/main/address_fields.tpl @@ -132,10 +132,19 @@ vim: set ts=2 sw=2 sts=2 et: {/if} + + {if $address_type eq 'B'} + {include file="main/additional_address_fields.tpl" ex_additional_address_fields=$additional_b_address_fields type=$address_type require_aid='Y'} + {elseif $address_type eq 'S'} + {include file="main/additional_address_fields.tpl" ex_additional_address_fields=$additional_s_address_fields type=$address_type require_aid='Y'} + {else} + {include file="main/additional_address_fields.tpl" ex_additional_address_fields=$additional_address_fields} + {/if} + {if $update_address_book eq 'Y' and $login ne ''}     Index: skin/common_files/mail/html/order_invoice.tpl @@ -225,12 +225,12 @@ vim: set ts=2 sw=2 sts=2 et: {$lng.lbl_fax}: {$order.b_fax|escape} {/if} - {foreach from=$_userinfo.additional_fields item=v} - {if $v.section eq 'B' and $v.value ne ''} + {foreach from=$order.extra.additional_fields.address.B item=v} + {if $v.value ne ''} {$v.title}: {$v.value} {/if} @@ -319,17 +319,17 @@ vim: set ts=2 sw=2 sts=2 et: {$lng.lbl_fax}: {$order.s_fax|escape} {/if} - {foreach from=$_userinfo.additional_fields item=v} - {if $v.section eq 'S' and $v.value ne ''} + {foreach from=$order.extra.additional_fields.address.S item=v} + {if $v.value ne ''} {$v.title}: {$v.value} - {/if} + {/if} {/foreach} Index: skin/common_files/mail/order_invoice.tpl @@ -69,13 +69,13 @@ vim: set ts=2 sw=2 sts=2 et: {/if} {if $_userinfo.default_address_fields.phone}{$lng.lbl_phone|mail_truncate}{$order.b_phone} {/if} {if $_userinfo.default_address_fields.fax}{$lng.lbl_fax|mail_truncate}{$order.b_fax} {/if} -{foreach from=$_userinfo.additional_fields item=v}{if $v.section eq 'B' and $v.value ne ''} +{foreach from=$order.extra.additional_fields.address.B item=v} {$v.title|mail_truncate}{$v.value} -{/if}{/foreach} +{/foreach} {$lng.lbl_shipping_address}: ----------------- {if $_userinfo.default_address_fields.title}{$lng.lbl_title|mail_truncate}{$order.s_title} {/if} @@ -99,13 +99,14 @@ vim: set ts=2 sw=2 sts=2 et: {/if} {if $_userinfo.default_address_fields.phone}{$lng.lbl_phone|mail_truncate}{$order.s_phone} {/if} {if $_userinfo.default_address_fields.fax}{$lng.lbl_fax|mail_truncate}{$order.s_fax} {/if} -{foreach from=$_userinfo.additional_fields item=v}{if $v.section eq 'S' and $v.value ne ''} +{foreach from=$order.extra.additional_fields.address.S item=v} {$v.title|mail_truncate}{$v.value} -{/if}{/foreach}{assign var="is_header" value=""} +{/foreach}{assign var="is_header" value=""} + {foreach from=$_userinfo.additional_fields item=v}{if $v.section eq 'A' and $v.value ne ''} {if $is_header ne 'Y'} {$lng.lbl_additional_information}: ----------------- Index: skin/common_files/main/address_fields.tpl @@ -145,10 +145,20 @@ vim: set ts=2 sw=2 sts=2 et: {/if} + {if $additional_address_fields.avail ne 'Y'} + {assign var=ex_additional_address_fields value=$additional_address_fields} + {elseif $additional_address_fields.$id ne ''} + {assign var=ex_additional_address_fields value=$additional_address_fields.$id} + {else} + {assign var=ex_additional_address_fields value=$additional_address_fields.0} + {/if} + + {include file="main/additional_address_fields.tpl" ex_additional_address_fields=$ex_additional_address_fields require_aid='Y'} + Index: skin/common_files/main/order_info.tpl @@ -463,11 +463,11 @@ vim: set ts=2 sw=2 sts=2 et:   {$lng.lbl_fax} {$customer.b_fax|escape} {/if} -{foreach from=$customer.additional_fields item=v} +{foreach from=$order.extra.additional_fields.address.B item=v} {if $v.section eq 'B'}   {$v.title} {$v.value} @@ -558,19 +558,23 @@ vim: set ts=2 sw=2 sts=2 et:   {$lng.lbl_fax} {$customer.s_fax|escape} {/if} -{foreach from=$customer.additional_fields item=v} -{if $v.section eq 'S'} +{foreach from=$order.extra.additional_fields.address.S item=v} +{if $v.section eq 'B'}   {$v.title} {$v.value} {/if} {/foreach} + +   + + {assign var="is_header" value=""} {foreach from=$customer.additional_fields item=v} {if $v.section eq 'A'} {if $is_header ne 'Y'} Index: skin/common_files/modules/Advanced_Order_Management/edit_customer.tpl @@ -215,24 +215,12 @@ vim: set ts=2 sw=2 sts=2 et: {$lng.lbl_fax} {$customer.s_fax} {/if} -{foreach from=$cart_customer.additional_fields item=v key=k} -{if $v.section eq 'B'} - - {$v.title} - - - - - - - {$v.value} - -{/if} -{/foreach} + +{include file="main/additional_address_fields.tpl" ex_additional_address_fields=$cart_customer.additional_fields.address.B type='B'}   @@ -336,25 +324,11 @@ vim: set ts=2 sw=2 sts=2 et: {$customer.s_fax} {/if} - -{foreach from=$cart_customer.additional_fields item=v key=k} -{if $v.section eq 'S'} - - - - - -{$v.title} - - - {$v.value} - -{/if} -{/foreach} +{include file="main/additional_address_fields.tpl" ex_additional_address_fields=$cart_customer.additional_fields.address.S type='S'} {assign var="is_header" value=""} {foreach from=$cart_customer.additional_fields item=v key=k} {if $v.section eq 'A'} {if $is_header ne 'Y'} Index: skin/common_files/modules/Fast_Lane_Checkout/customer_details_html.tpl @@ -151,12 +151,12 @@ vim: set ts=2 sw=2 sts=2 et: {$lng.lbl_zip_code}: {include file="main/zipcode.tpl" val=$userinfo.b_zipcode zip4=$userinfo.b_zip4 static=true} {/if} -{foreach from=$userinfo.additional_fields item=v} -{if $v.section eq 'B' and $v.value ne ''} +{foreach from=$userinfo.additional_fields.address.B item=v} +{if $v.value ne ''} {$v.title}: {$v.value} {/if} @@ -235,12 +235,12 @@ vim: set ts=2 sw=2 sts=2 et: {$lng.lbl_zip_code}: {include file="main/zipcode.tpl" val=$userinfo.s_zipcode zip4=$userinfo.s_zip4 static=true} {/if} -{foreach from=$userinfo.additional_fields item=v} -{if $v.section eq 'S' and $v.value ne ''} +{foreach from=$userinfo.additional_fields.address.S item=v} +{if $v.value ne ''} {$v.title}: {$v.value} {/if} Index: skin/common_files/modules/One_Page_Checkout/profile/address_fields.tpl @@ -74,10 +74,18 @@ vim: set ts=2 sw=2 sts=2 et:
  • {include file="main/register_states.tpl" state_name="`$name_prefix`[state]" country_name="`$id_prefix`country" county_name="`$name_prefix`[county]" state_value=$address.state|default:$config.General.default_state county_value=$address.county}
  • {/if} +{if $type eq 'S'} + {assign var=ex_additional_address_fields value=$additional_s_address_fields} +{else} + {assign var=ex_additional_address_fields value=$additional_b_address_fields} +{/if} + +{include file="main/additional_address_fields.tpl" ex_additional_address_fields=$ex_additional_address_fields require_aid='Y' ex_list_view='Y'} + {if $type eq 'S'} Index: skin/common_files/modules/One_Page_Checkout/profile/profile_details_html.tpl @@ -7,11 +7,11 @@ vim: set ts=2 sw=2 sts=2 et: {if $userinfo.field_sections.B} {if $userinfo.login ne ''} {include file="modules/One_Page_Checkout/profile/address_book_link.tpl" type='B'} {/if}
    - {include file="customer/main/address_details_html.tpl" address=$userinfo.address.B default_fields=$userinfo.default_address_fields} + {include file="customer/main/address_details_html.tpl" address=$userinfo.address.B default_fields=$userinfo.default_address_fields additional_info=$userinfo.additional_fields.address.B} {if $userinfo.login eq ''}
    {$lng.lbl_email}: {$userinfo.email}
    {/if} @@ -26,11 +26,11 @@ vim: set ts=2 sw=2 sts=2 et:
    {if $userinfo.login ne ''} {include file="modules/One_Page_Checkout/profile/address_book_link.tpl" type='S'} {/if}
    - {include file="customer/main/address_details_html.tpl" address=$userinfo.address.S default_fields=$userinfo.default_address_fields} + {include file="customer/main/address_details_html.tpl" address=$userinfo.address.S default_fields=$userinfo.default_address_fields additional_info=$userinfo.additional_fields.address.S}
    {/if} {if $userinfo.field_sections.P}

    {$lng.lbl_personal_details}

    Index: skin/ideal_comfort/mail/html/order_invoice.tpl @@ -225,12 +225,12 @@ vim: set ts=2 sw=2 sts=2 et: {$lng.lbl_fax}: {$order.b_fax|escape} {/if} - {foreach from=$_userinfo.additional_fields item=v} - {if $v.section eq 'B' and $v.value ne ''} + {foreach from=$order.extra.additional_fields.address.B item=v} + {if $v.value ne ''} {$v.title}: {$v.value} {/if} @@ -319,17 +319,17 @@ vim: set ts=2 sw=2 sts=2 et: {$lng.lbl_fax}: {$order.s_fax|escape} {/if} - {foreach from=$_userinfo.additional_fields item=v} - {if $v.section eq 'S' and $v.value ne ''} + {foreach from=$order.extra.additional_fields.address.S item=v} + {if $v.value ne ''} {$v.title}: {$v.value} - {/if} + {/if} {/foreach}