X-Cart: shopping cart software

X-Cart forums (https://forum.x-cart.com/index.php)
-   Dev Questions (https://forum.x-cart.com/forumdisplay.php?f=20)
-   -   2 Address Lines (https://forum.x-cart.com/showthread.php?t=4168)

bbf 08-28-2003 11:06 AM

2 Address Lines
 
We need a second "Address" line in the "Bill To" and "Ship To" info.

I don't understand why this isn't currently in X-cart when the vast majority of etailers provide this second line. Some people have complex addresses and a second line is required.

rodneyw 08-28-2003 12:21 PM

yea, I agree. Thought this would be an easy fix so I got started and now ... well I have questions.

My questions revolve around the order it self. Where does the mail templates get the inf to populate the order_invoice?
I.E.
Code:

{$lng.lbl_billing_address}:
----------------
  {$lng.lbl_address}:    {$order.b_address}
  {$lng.lbl_address}:    {$order.b_address2}
  {$lng.lbl_city}:      {$order.b_city}
  {$lng.lbl_state}:      {$order.b_statename}
  {$lng.lbl_country}:    {$order.b_countryname}
  {$lng.lbl_zip_code}:  {$order.b_zipcode}


I think I have a fix as soon as I figure this out .. unless it has already been posted before :)

shan 08-28-2003 05:17 PM

check register.tpl

you could re use an un needed field

rodneyw 08-29-2003 04:19 AM

whew .. what a mess. I hope I have all this right. Use at your own risk and if you try it make sure you BACK EVERYTHING UP!!

My ONLY concern is that I missed a tpl file somewhere that needs to display the new address lines. Here is what I have done if anyone wants to give it a try. If you see ANYTHING wrong please let me know.

```````````````````````````````````````

Using phpMyAdmin you will need to modify your CUSTOMER table in the database.
Insert new field AFTER b_address with the name b_address2
Insert new field AFTER s_address with the name s_address2

Using phpMyAdmin you will need to modify your ORDERS table in the database.
Insert new field AFTER b_address with the name b_address2
Insert new field AFTER s_address with the name s_address2



PHP FILE: include/register.php

REPLACE
Code:

#
# Update/Insert user info
#

if ($mode=="update") {
        $intershipper_recalc = "Y";

        db_query("update $sql_tbl[customers] set password='$crypted', password_hint='$password_hint', password_hint_answer='$password_hint_answer',

title='$title', firstname='$firstname', lastname='$lastname', company='$company', b_address='$b_address', b_city='$b_city', b_state='$b_state',

b_country='$b_country', b_zipcode='$b_zipcode', s_address='$s_address', s_city='$s_city', s_state='$s_state', s_country='$s_country', s_zipcode='$s_zipcode',

phone='$phone', email='$email', fax='$fax', url='$url', card_name='$card_name', card_type='$card_type', card_number='".text_crypt($card_number)."',

card_expire='$card_expire', card_cvv2='$card_cvv2', pending_membership='$pending_membership', ssn='$ssn' where login='$login' and usertype='$login_type'");


WITH
Code:

#
# Update/Insert user info
#

if ($mode=="update") {
        $intershipper_recalc = "Y";

        db_query("update $sql_tbl[customers] set password='$crypted', password_hint='$password_hint', password_hint_answer='$password_hint_answer',

title='$title', firstname='$firstname', lastname='$lastname', company='$company', b_address='$b_address',b_address2='$b_address2', b_city='$b_city',

b_state='$b_state', b_country='$b_country', b_zipcode='$b_zipcode', s_address='$s_address', s_address2='$s_address2', s_city='$s_city', s_state='$s_state',

s_country='$s_country', s_zipcode='$s_zipcode', phone='$phone', email='$email', fax='$fax', url='$url', card_name='$card_name', card_type='$card_type',

card_number='".text_crypt($card_number)."', card_expire='$card_expire', card_cvv2='$card_cvv2', pending_membership='$pending_membership', ssn='$ssn' where

login='$login' and usertype='$login_type'");




REPLACE
Code:

#
# Add new person to customers table
#
        $intershipper_recalc = "Y";

        db_query("insert into $sql_tbl[customers]

(login,usertype,membership,password,password_hint,password_hint_answer,title,firstname,lastname,company,b_address,b_city,b_state,b_country,b_zipcode,s_addres

s,s_city,s_state,s_country,s_zipcode,phone,email,fax,url,card_name,card_type,card_number,card_expire,card_cvv2,first_login,status,referer,pending_membership,

ssn) values

('$uname','$usertype','$membership','$crypted','$password_hint','$password_hint_answer','$title','$firstname','$lastname','$company','$b_address','$b_city','

$b_state','$b_country','$b_zipcode','$s_address','$s_city','$s_state','$s_country','$s_zipcode','$phone','$email','$fax','$url','$card_name','$card_type','".

text_crypt($card_number)."','$card_expire','$card_cvv2','".time()."','Y','$RefererCookie','$pending_membership','$ssn')");



WITH
Code:

#
# Add new person to customers table
#
        $intershipper_recalc = "Y";

        db_query("insert into $sql_tbl[customers]

(login,usertype,membership,password,password_hint,password_hint_answer,title,firstname,lastname,company,b_address,b_address2,b_city,b_state,b_country,b_zipco

de,s_address,s_address2,s_city,s_state,s_country,s_zipcode,phone,email,fax,url,card_name,card_type,card_number,card_expire,card_cvv2,first_login,status,refer

er,pending_membership,ssn) values

('$uname','$usertype','$membership','$crypted','$password_hint','$password_hint_answer','$title','$firstname','$lastname','$company','$b_address','$b_address

2','$b_city','$b_state','$b_country','$b_zipcode','$s_address','$s_address2','$s_city','$s_state','$s_country','$s_zipcode','$phone','$email','$fax','$url','

$card_name','$card_type','".text_crypt($card_number)."','$card_expire','$card_cvv2','".time()."','Y','$RefererCookie','$pending_membership','$ssn')");




REPLACE
Code:

if ($uerror || $eerror || $fillerror || $error) {
        $userinfo[firstname]=stripslashes($firstname);
        $userinfo[lastname]=stripslashes($lastname);
        $userinfo[company]=stripslashes($company);
        $userinfo[ssn]=stripslashes($ssn);
        $userinfo[b_address]=stripslashes($b_address);
        $userinfo[b_city]=stripslashes($b_city);
        $userinfo[b_state]=stripslashes($b_state);
        $userinfo[b_zipcode]=stripslashes($b_zipcode);
        $userinfo[s_address]=stripslashes($s_address);
        $userinfo[s_city]=stripslashes($s_city);
        $userinfo[s_state]=stripslashes($s_state);
        $userinfo[s_zipcode]=stripslashes($s_zipcode);
        $userinfo[phone]=stripslashes($phone);
        $userinfo[fax]=stripslashes($fax);
        $userinfo[uname]=stripslashes($uname);
        $userinfo[login]=stripslashes($uname);
        $userinfo[passwd1]=stripslashes($passwd1);
        $userinfo[passwd2]=stripslashes($passwd2);
        $userinfo[password_hint]=stripslashes($password_hint);
        $userinfo[password_hint_answer]=stripslashes($password_hint_answer);



WITH
Code:

if ($uerror || $eerror || $fillerror || $error) {
        $userinfo[firstname]=stripslashes($firstname);
        $userinfo[lastname]=stripslashes($lastname);
        $userinfo[company]=stripslashes($company);
        $userinfo[ssn]=stripslashes($ssn);
        $userinfo[b_address]=stripslashes($b_address);
        $userinfo[b_address2]=stripslashes($b_address2);
        $userinfo[b_city]=stripslashes($b_city);
        $userinfo[b_state]=stripslashes($b_state);
        $userinfo[b_zipcode]=stripslashes($b_zipcode);
        $userinfo[s_address]=stripslashes($s_address);
        $userinfo[s_address2]=stripslashes($s_address2);
        $userinfo[s_city]=stripslashes($s_city);
        $userinfo[s_state]=stripslashes($s_state);
        $userinfo[s_zipcode]=stripslashes($s_zipcode);
        $userinfo[phone]=stripslashes($phone);
        $userinfo[fax]=stripslashes($fax);
        $userinfo[uname]=stripslashes($uname);
        $userinfo[login]=stripslashes($uname);
        $userinfo[passwd1]=stripslashes($passwd1);
        $userinfo[passwd2]=stripslashes($passwd2);
        $userinfo[password_hint]=stripslashes($password_hint);
        $userinfo[password_hint_answer]=stripslashes($password_hint_answer);




PHP FILE: include/func.php

REPLACE
Code:

Insert into orders
#
        db_query("insert into $sql_tbl[orders] (login, total, giftcert_discount, giftcert_ids, subtotal, shipping_cost, shippingid, tax, tax_gst, tax_pst,

total_vat, taxes_applyed, discount, coupon, coupon_discount, date, status, payment_method, flag, details, title, firstname, lastname, company, b_address,

b_city, b_state, b_country, b_zipcode, s_address, s_city, s_state, s_country, s_zipcode, phone, fax, email, url, reg_numbers) values

('".addslashes($userinfo["login"])."', '$current_order[total_cost]', '$giftcert_discount', '$giftcert_str',

'$current_order[sub_total]','$current_order[shipping_cost]', '$cart[shippingid]', '$current_order[tax_cost]', '$current_order[tax_gst]',

'$current_order[tax_pst]', '$current_order[total_vat]', '$taxes_applyed', '$current_order[discount]', '".addslashes($current_order[coupon])."',

'$current_order[coupon_discount]', '".time()."', '$order_status', '".addslashes($payment_method)."', 'N', '".addslashes(text_crypt($order_details))."',

'".addslashes($userinfo["title"])."', '".addslashes($userinfo["firstname"])."', '".addslashes($userinfo["lastname"])."',

'".addslashes($userinfo["company"])."', '".addslashes($userinfo["b_address"])."', '".addslashes($userinfo["b_city"])."',

'".addslashes($userinfo["b_state"])."', '".addslashes($userinfo["b_country"])."', '".addslashes($userinfo["b_zipcode"])."',

'".addslashes($userinfo["s_address"])."', '".addslashes($userinfo["s_city"])."', '".addslashes($userinfo["s_state"])."',

'".addslashes($userinfo["s_country"])."', '".addslashes($userinfo["s_zipcode"])."', '".addslashes($userinfo["phone"])."', '".addslashes($userinfo["fax"])."',

'$userinfo[email]', '".addslashes($userinfo["url"])."', '$reg_numbers')");


WITH
Code:

Insert into orders
#
        db_query("insert into $sql_tbl[orders] (login, total, giftcert_discount, giftcert_ids, subtotal, shipping_cost, shippingid, tax, tax_gst, tax_pst,

total_vat, taxes_applyed, discount, coupon, coupon_discount, date, status, payment_method, flag, details, title, firstname, lastname, company, b_address,

b_address2, b_city, b_state, b_country, b_zipcode, s_address, s_address2, s_city, s_state, s_country, s_zipcode, phone, fax, email, url, reg_numbers) values

('".addslashes($userinfo["login"])."', '$current_order[total_cost]', '$giftcert_discount', '$giftcert_str',

'$current_order[sub_total]','$current_order[shipping_cost]', '$cart[shippingid]', '$current_order[tax_cost]', '$current_order[tax_gst]',

'$current_order[tax_pst]', '$current_order[total_vat]', '$taxes_applyed', '$current_order[discount]', '".addslashes($current_order[coupon])."',

'$current_order[coupon_discount]', '".time()."', '$order_status', '".addslashes($payment_method)."', 'N', '".addslashes(text_crypt($order_details))."',

'".addslashes($userinfo["title"])."', '".addslashes($userinfo["firstname"])."', '".addslashes($userinfo["lastname"])."',

'".addslashes($userinfo["company"])."', '".addslashes($userinfo["b_address"])."', '".addslashes($userinfo["b_address2"])."',

'".addslashes($userinfo["b_city"])."', '".addslashes($userinfo["b_state"])."', '".addslashes($userinfo["b_country"])."',

'".addslashes($userinfo["b_zipcode"])."', '".addslashes($userinfo["s_address"])."', '".addslashes($userinfo["s_address2"])."',

'".addslashes($userinfo["s_city"])."', '".addslashes($userinfo["s_state"])."', '".addslashes($userinfo["s_country"])."',

'".addslashes($userinfo["s_zipcode"])."', '".addslashes($userinfo["phone"])."', '".addslashes($userinfo["fax"])."', '$userinfo[email]',

'".addslashes($userinfo["url"])."', '$reg_numbers')");





TEMPLATE FILE: skin1/main/register.tpl

Add these lines after the first shipping address blocvk of code for BOTH Billing and Shipping

BILLING ADDRESS 2:
Code:

<tr valign=middle>
<td align=right>{$lng.lbl_address} 2</td>
<td></td>
<td nowrap>
<input type=text name=b_address2 size=32 maxlength=64 value="{$userinfo.b_address2}">
</td>
</tr>


SHIPPING ADDRESS 2:
Code:

<tr valign=middle>
<td align=right>{$lng.lbl_address} 2</td>
<td></td>
<td nowrap>
<input type=text name=s_address2 size=32 maxlength=64 value="{$userinfo.s_address2}">
</td>
</tr>


TEMPLATE FILES:
The following tpl file will need to be modified to include and display the new address lines
skin/mail/
-->order_invoice.tpl USE:: {$order.s_address2} {$order.b_address2}
-->order_notification_admin.tpl USE:: {$order.s_address2} {$order.b_address2}
-->order_notification.tpl USE:: {$order.s_address2} {$order.b_address2}

skin/provider/
-->order_printable.tpl USE:: {$customer.s_address2} {$customer.b_address2}

skin/main/
-->order_invoice.tpl USE:: {$order.s_address2} {$order.b_address2}
-->order_label_print.tpl USE:: {$customer.s_address2} {$customer.b_address2}
-->history_order.tpl USE:: {$customer.s_address2} {$customer.b_address2}

shan 08-29-2003 06:04 AM

moved to custom templates

bbf 08-29-2003 07:54 AM

Rodney, thanks for the legwork! :)

Hopefully the Xcart people notice this and add it to their next version.

funkydunk 08-29-2003 08:53 AM

great work :)

Really nice of you to fully document it.

Done it many times, but keep forgetting to totally write it down :lol:

rodneyw 08-29-2003 09:02 AM

thank you!!

I'm usually not that organized but I will have to do this to several sites now and didn't want to have to remember each time ... my memory is not what it use to be :)

ron33 09-18-2003 09:02 PM

There has to be happen a similar thing with gift certificate recipient addresses too.
- If you use this module and prefer to have 2 address lines there as well.

All the following refers to version x-cart-3.4.7gold.

Quote:

Table xcart_giftcerts has to be amended by a field recipient_address2 after recipient_address.


Then the following changes to the code:

admin/giftcerts.php

change:
Quote:

#
# Send via Postal Mail
#
$fill_error = ($fill_error || empty($recipient_firstname) || empty($recipient_lastname) || empty($recipient_address) ||

empty($recipient_city) || empty($recipient_zipcode) || empty($recipient_state) || empty($recipient_country));

$giftcert = array ("purchaser" => stripslashes($purchaser),
"recipient" => stripslashes($recipient),
"message" => stripslashes($message),
"amount" => $amount,
"send_via" => $send_via,
"recipient_firstname" => stripslashes($recipient_firstname),
"recipient_lastname" => stripslashes($recipient_lastname),
"recipient_address" => stripslashes($recipient_address),
"recipient_city" => stripslashes($recipient_city),
"recipient_zipcode" => $recipient_zipcode,
"recipient_state" => $recipient_state,
"recipient_country" => $recipient_country,
"recipient_phone" => $recipient_phone);
}


to
Quote:

#
# Send via Postal Mail
#
$fill_error = ($fill_error || empty($recipient_firstname) || empty($recipient_lastname) || empty($recipient_address) ||

empty($recipient_city) || empty($recipient_zipcode) || empty($recipient_state) || empty($recipient_country));

$giftcert = array ("purchaser" => stripslashes($purchaser),
"recipient" => stripslashes($recipient),
"message" => stripslashes($message),
"amount" => $amount,
"send_via" => $send_via,
"recipient_firstname" => stripslashes($recipient_firstname),
"recipient_lastname" => stripslashes($recipient_lastname),
"recipient_address" => stripslashes($recipient_address),
"recipient_address2" => stripslashes($recipient_address2),
"recipient_city" => stripslashes($recipient_city),
"recipient_zipcode" => $recipient_zipcode,
"recipient_state" => $recipient_state,
"recipient_country" => $recipient_country,
"recipient_phone" => $recipient_phone);
}


change in:
Quote:

#
# If gcindex is empty - add
# overwise - update
#
.
.
db_query("insert into $sql_tbl[giftcerts] (gcid, orderid, purchaser, recipient, send_via, recipient_email, recipient_firstname, recipient_lastname,

recipient_address, recipient_city, recipient_state, recipient_country, recipient_zipcode, recipient_phone, message, amount, debit, status, add_date) values

('$gcid',

'0','".addslashes($giftcert[purchaser])."','".addslashes($giftcert[recipient])."','$giftcert[send_via]','$giftcert[recipient_email]','".addslashes($giftcert

[recipient_firstname])."','".addslashes($giftcert[recipient_lastname])."','".addslashes($giftcert[recipient_address])."','".addslashes($giftcert[recipient_c

ity])."','$giftcert[recipient_state]','$giftcert[recipient_country]','$giftcert[recipient_zipcode]','$giftcert[recipient_phone]','".addslashes($giftcert[mes

sage])."','$giftcert[amount]','$giftcert[amount]','P','".time()."')");


to:
Quote:

db_query("insert into $sql_tbl[giftcerts] (gcid, orderid, purchaser, recipient, send_via, recipient_email, recipient_firstname, recipient_lastname,

recipient_address, recipient_address2, recipient_city, recipient_state, recipient_country, recipient_zipcode, recipient_phone, message, amount, debit,

status, add_date) values ('$gcid',

'0','".addslashes($giftcert[purchaser])."','".addslashes($giftcert[recipient])."','$giftcert[send_via]','$giftcert[recipient_email]','".addslashes($giftcert

[recipient_firstname])."','".addslashes($giftcert[recipient_lastname])."','".addslashes($giftcert[recipient_address])."','".addslashes($giftcert[recipient_a

ddress2])."','".addslashes($giftcert[recipient_city])."','$giftcert[recipient_state]','$giftcert[recipient_country]','$giftcert[recipient_zipcode]','$giftce

rt[recipient_phone]','".addslashes($giftcert[message])."','$giftcert[amount]','$giftcert[amount]','P','".time()."')");





in customer/giftcert.php:

change:
Quote:

#
# Send via Postal Mail
#
$fill_error = ($fill_error || empty($recipient_firstname) || empty($recipient_lastname) || empty($recipient_address) || empty($recipient_city) ||

empty($recipient_zipcode) || empty($recipient_state) || empty($recipient_country));

$giftcert = array ("purchaser" => stripslashes($purchaser),
"recipient" => stripslashes($recipient),
"message" => stripslashes($message),
"amount" => $amount,
"send_via" => $send_via,
"recipient_firstname" => stripslashes($recipient_firstname),
"recipient_lastname" => stripslashes($recipient_lastname),
"recipient_address" => stripslashes($recipient_address),
"recipient_city" => stripslashes($recipient_city),
"recipient_zipcode" => $recipient_zipcode,
"recipient_state" => $recipient_state,
"recipient_country" => $recipient_country,
"recipient_phone" => $recipient_phone);
}


to:
Quote:

#
# Send via Postal Mail
#
$fill_error = ($fill_error || empty($recipient_firstname) || empty($recipient_lastname) || empty($recipient_address) || empty($recipient_city) ||

empty($recipient_zipcode) || empty($recipient_state) || empty($recipient_country));

$giftcert = array ("purchaser" => stripslashes($purchaser),
"recipient" => stripslashes($recipient),
"message" => stripslashes($message),
"amount" => $amount,
"send_via" => $send_via,
"recipient_firstname" => stripslashes($recipient_firstname),
"recipient_lastname" => stripslashes($recipient_lastname),
"recipient_address" => stripslashes($recipient_address),
"recipient_address2" => stripslashes($recipient_address2),
"recipient_city" => stripslashes($recipient_city),
"recipient_zipcode" => $recipient_zipcode,
"recipient_state" => $recipient_state,
"recipient_country" => $recipient_country,
"recipient_phone" => $recipient_phone);
}



in include/func.php:

change:
Quote:

#
# status == Pending!
#
db_query("insert into $sql_tbl[giftcerts] (gcid, orderid, purchaser, recipient, send_via, recipient_email,

recipient_firstname, recipient_lastname, recipient_address, recipient_city, recipient_state, recipient_country, recipient_zipcode, recipient_phone, message,

amount, debit, status, add_date) values ('$gcid',

'$orderid','".addslashes($giftcert[purchaser])."','".addslashes($giftcert[recipient])."','$giftcert[send_via]','$giftcert[recipient_email]','".addslashes($g

iftcert[recipient_firstname])."','".addslashes($giftcert[recipient_lastname])."','".addslashes($giftcert[recipient_address])."','".addslashes($giftcert[reci

pient_city])."','$giftcert[recipient_state]','$giftcert[recipient_country]','$giftcert[recipient_zipcode]','$giftcert[recipient_phone]','".addslashes($giftc

ert[message])."','$giftcert[amount]','$giftcert[amount]','P','".time()."')");


to:
Quote:

#
# status == Pending!
#
db_query("insert into $sql_tbl[giftcerts] (gcid, orderid, purchaser, recipient, send_via, recipient_email,

recipient_firstname, recipient_lastname, recipient_address, recipient_address2, recipient_city, recipient_state, recipient_country, recipient_zipcode,

recipient_phone, message, amount, debit, status, add_date) values ('$gcid',

'$orderid','".addslashes($giftcert[purchaser])."','".addslashes($giftcert[recipient])."','$giftcert[send_via]','$giftcert[recipient_email]','".addslashes($g

iftcert[recipient_firstname])."','".addslashes($giftcert[recipient_lastname])."','".addslashes($giftcert[recipient_address])."','".addslashes($giftcert[reci

pient_address2])."','".addslashes($giftcert[recipient_city])."','$giftcert[recipient_state]','$giftcert[recipient_country]','$giftcert[recipient_zipcode]','

$giftcert[recipient_phone]','".addslashes($giftcert[message])."','$giftcert[amount]','$giftcert[amount]','P','".time()."')");


In skin1/modules/Gift_Certificates/giftcert.tpl:
shortly after the statement group around line 231 about the address line add the following:
Quote:

<tr>
<td nowrap align=right>{$lng.lbl_address}</td>
<td> </font></td>
<td align=left><input type=text name=recipient_address size=40 value="{$giftcert.recipient_address2}"></td>
</tr>


In skin1/modules/Gift_Certificates/giftcert_static.tpl:
shortly after the statement group around line 90 about the address line add the following:
Quote:

<tr>
<td nowrap align=right>{$lng.lbl_address}:</td>
<td></td>
<td align=left>
{$giftcert.recipient_address2|escape:"htmlall"}
</td>
</tr>


In skin1/main/history_order.tpl:
around line 90 change:
Quote:

<tr>
<td valign="top" class="LabelStyle">{$lng.lbl_mail_address}</td>
<td valign="top">
{$giftcerts[giftcert].recipient_firstname} {$giftcerts[giftcert].recipient_lastname}

{$giftcerts[giftcert].recipient_address}, {$giftcerts[giftcert].recipient_city},

{$giftcerts[giftcert].recipient_state} {$giftcerts[giftcert].recipient_country}, {$giftcerts[giftcert].recipient_zipcode}
</td>
</tr>


to:
Quote:

<tr>
<td valign="top" class="LabelStyle">{$lng.lbl_mail_address}</td>
<td valign="top">
{$giftcerts[giftcert].recipient_firstname} {$giftcerts[giftcert].recipient_lastname}

{$giftcerts[giftcert].recipient_address}, {$giftcerts[giftcert].recipient_address2},

{$giftcerts[giftcert].recipient_city},

{$giftcerts[giftcert].recipient_state} {$giftcerts[giftcert].recipient_country}, {$giftcerts[giftcert].recipient_zipcode}
</td>
</tr>


I hope I did not oversee something.

BoomBoomBap 11-28-2003 09:08 PM

After a bit of work I got this functioning properly in 3.4.10. It should be noted that the additions need to be made to several more .tpl files. Namely those files that call out the shipping address in email notifications.

Essentially, the mod is thus;

Add the two columns into the database and then add b_address2 and s_address2 throughout the site.

Not a quick task but a good extended search tool will help you find s_address and b_address throughout your code. From there you just copy and add the '2' for address line 2.

Thanks much for your work on this and for your detailed explanation rodenyw!
:D


All times are GMT -8. The time now is 10:58 PM.

Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.