summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWolfgang Taferner <wtaferner@users.noreply.github.com>2015-09-18 19:44:46 +0200
committerJeremy Kersten <jke@odoo.com>2015-09-18 21:17:51 +0200
commit4f41c3327c40d3fbbd219dad732a98d09d52bd30 (patch)
tree5c30673ec38a47f1681356ecef26a8f1bd55d330
parentdbddc8246a388bf31dee102c6c77afe4385ab6e3 (diff)
[FIX] website_sale: make checkout fields customizable
[FIX] Valuable checkout hooks for website_sale [FIX] Values might need to be changed for different field mappings [FIX] Make definition of form fields inheritable within a function [FIX] Make shipping_info values available for inherited module manipulation Close #8490
-rw-r--r--addons/website_sale/controllers/main.py35
1 files changed, 28 insertions, 7 deletions
diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py
index f11f2b8595c..a7c9b68d342 100644
--- a/addons/website_sale/controllers/main.py
+++ b/addons/website_sale/controllers/main.py
@@ -463,16 +463,31 @@ class website_sale(http.Controller):
mandatory_shipping_fields = ["name", "phone", "street", "city", "country_id"]
optional_shipping_fields = ["state_id", "zip"]
+ def _get_mandatory_billing_fields(self):
+ return self.mandatory_billing_fields
+
+ def _get_optional_billing_fields(self):
+ return self.optional_billing_fields
+
+ def _get_mandatory_shipping_fields(self):
+ return self.mandatory_shipping_fields
+
+ def _get_optional_shipping_fields(self):
+ return self.optional_shipping_fields
+
+ def _post_prepare_query(self, query, data, address_type):
+ return query
+
def checkout_parse(self, address_type, data, remove_prefix=False):
""" data is a dict OR a partner browse record
"""
# set mandatory and optional fields
assert address_type in ('billing', 'shipping')
if address_type == 'billing':
- all_fields = self.mandatory_billing_fields + self.optional_billing_fields
+ all_fields = self._get_mandatory_billing_fields() + self._get_optional_billing_fields()
prefix = ''
else:
- all_fields = self.mandatory_shipping_fields + self.optional_shipping_fields
+ all_fields = self._get_mandatory_shipping_fields() + self._get_optional_shipping_fields()
prefix = 'shipping_'
# set data
@@ -493,6 +508,8 @@ class website_sale(http.Controller):
if query.get(prefix + 'vat'):
query[prefix + 'vat_subjected'] = True
+ query = self._post_prepare_query(query, data, address_type)
+
if not remove_prefix:
return query
@@ -503,7 +520,7 @@ class website_sale(http.Controller):
# Validation
error = dict()
- for field_name in self.mandatory_billing_fields:
+ for field_name in self._get_mandatory_billing_fields():
if not data.get(field_name):
error[field_name] = 'missing'
@@ -519,13 +536,19 @@ class website_sale(http.Controller):
error["vat"] = 'error'
if data.get("shipping_id") == -1:
- for field_name in self.mandatory_shipping_fields:
+ for field_name in self._get_mandatory_shipping_fields():
field_name = 'shipping_' + field_name
if not data.get(field_name):
error[field_name] = 'missing'
return error
+ def _get_shipping_info(self, checkout):
+ shipping_info = {}
+ shipping_info.update(self.checkout_parse('shipping', checkout, True))
+ shipping_info['type'] = 'delivery'
+ return shipping_info
+
def checkout_form_save(self, checkout):
cr, uid, context, registry = request.cr, request.uid, request.context, request.registry
@@ -561,11 +584,9 @@ class website_sale(http.Controller):
# create a new shipping partner
if checkout.get('shipping_id') == -1:
- shipping_info = {}
+ shipping_info = self._get_shipping_info(checkout)
if partner_lang:
shipping_info['lang'] = partner_lang
- shipping_info.update(self.checkout_parse('shipping', checkout, True))
- shipping_info['type'] = 'delivery'
shipping_info['parent_id'] = partner_id
checkout['shipping_id'] = orm_partner.create(cr, SUPERUSER_ID, shipping_info, context)