Addresses¶
store.addresses
provide to you logged user’s addresses.
Address
object represent an customer address (for shipping or billing) or
user data profile. Some attribute are only available for “profile” type address.
with_scope
, paginate
liquid tag are available with store.addresses
.
A customer have only one “profile” type address.
It isn’t possible to update address_type
value or remove address with
“profile” type.
Attributes¶
The store.addresses
item has the following attributes:
Name | Type | Desciption |
---|---|---|
id | Integer | Address ID” |
address_type | String | profile for user data or address for shipping or invoice address |
city | String | City |
country | Object | Object with country id and name |
display_name | String | Address name (firstname and lastname) |
is_company | Boolean | |
name | String | Address name |
opt_in | Boolean | |
opt_out | Boolean | |
phone | String | Phone number |
ref | String | |
state | String | State ID (US Addresses) |
street | String | Address |
street2 | String | Address |
vat | String | VAT identification number (for company profile) |
zip | String | Zip code |
- Example :
Display available shipping or billing addresses of logged user
{% with_scope address_type: "address" %} {% for address in store.addresses %} <address> <b>{{address.display_name}}</b><br> {{address.street}}<br> {{address.street2}}<br> {{address.zip}} - {{address.city}}<br> {{address.country_id.name}}<br> </address> {% endfor %} {% endwith_scope %}
Display login user profile data
{% with_scope address_type: "profile" %} {% assign profile = store.addresses.first %} <address> <b>{{profile.display_name}}</b><br> {{profile.street}}<br> {{profile.street2}}<br> {{profile.zip}} - {{profile.city}}<br> {{profile.country_id.name}}<br> </address> {% endwith_scope %} A user have only one profile address.
Actions¶
Add shipping or billing address¶
To add an address to logged user’s address book you need to submit a form to “invader/address/create” action with all address paramaters required.
available_countries
provide countries list set up to the store on Odoo.
Only available if address_type
is “address”.
Controller invader/address/create
- HTML form to add address
<form method="POST" action="invader/address/create"> <input type="hidden" name="invader_success_url" value="<URL success page>" /> <input type="hidden" name="invader_error_url" value="<URL error page>" /> <input type="hidden" name="item_id" value="<Cart line ID>" /> <div> <label> Name <input type="text" name="name" value="" placeholder="Name"/> </label> </div> <div> <label> Street <input type="text" name="street" value="" placeholder="Street"/> </label> </div> <div> <label> Street <input type="text" name="street2" value="" placeholder="Street complement"/> </label> </div> <div> <label> ZIP Code <input type="text" name="zip" value="" placeholder="ZIP"/> </label> </div> <div> <label> City <input type="text" name="city" value="" placeholder="City"/> </label> </div> <div> <label> City <select name="country"> {% for country in store.available_countries %} <option value="{{country.id}}"> {{country.name}} </option> {% endfor %} </select> </label> </div> <div> <label> Phone <input type="text" name="phone" value="" placeholder="Phone"/> </label> </div> <input type="submit" value="Create"/> </form>
Update address¶
To update an address you have to submit a form to
“invader/address/<address id>/update” action with all address paramaters
updated. <address id>
represent the address ID.
available_countries
provide countries list set up to the store on Odoo.
Controller invader/address/<address id>/update
- HTML form to update address
<form method="POST" action="invader/address/<address id>/update"> <input type="hidden" name="invader_success_url" value="<URL success page>" /> <input type="hidden" name="invader_error_url" value="<URL error page>" /> <input type="hidden" name="item_id" value="<Cart line ID>" /> <div> <label> Name <input type="text" name="name" value="" placeholder="Name"/> </label> </div> <div> <label> Street <input type="text" name="street" value="" placeholder="Street"/> </label> </div> <div> <label> Street <input type="text" name="street2" value="" placeholder="Street complement"/> </label> </div> <div> <label> ZIP Code <input type="text" name="zip" value="" placeholder="ZIP"/> </label> </div> <div> <label> City <input type="text" name="city" value="" placeholder="City"/> </label> </div> <div> <label> City <select name="country"> {% for country in store.available_countries %} <option value="{{country.id}}"> {{country.name}} </option> {% endfor %} </select> </label> </div> <div> <label> Phone <input type="text" name="phone" value="" placeholder="Phone"/> </label> </div> <input type="submit" value="Update"/> </form>
Remove address¶
To remove an address you need to submit a form to
“invader/address/<address id>/remove” action.
<address id>
represent the address ID.
Only available if address_type
is “address”.
Controller invader/address/<address id>/remove
- HTML form to remove address
<form method="POST" action="invader/address/<address id>/remove"> <input type="hidden" name="invader_success_url" value="<URL success page>" /> <input type="hidden" name="invader_error_url" value="<URL error page>" /> ... <input type="submit" value="Remove"/> </form>