From 2f97f8b5b7616e19a869391fabbfa364b8102843 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Tue, 23 Jul 2013 17:16:07 +0200 Subject: [PATCH] [IMP] website_sale: default value in checkout bzr revid: chm@openerp.com-20130723151607-w4blimvr7f40rlzg --- addons/website/static/src/js/website.js | 2 +- addons/website/views/views.xml | 1 + addons/website_sale/controllers/main.py | 33 ++++++--- .../website_sale/static/src/css/ecommerce.css | 4 +- .../static/src/css/ecommerce.sass | 4 +- .../website_sale/static/src/js/ecommerce.js | 2 +- addons/website_sale/views/ecommerce.xml | 70 ++++++++++++------- 7 files changed, 74 insertions(+), 42 deletions(-) diff --git a/addons/website/static/src/js/website.js b/addons/website/static/src/js/website.js index 232dce97a53..db78b48915b 100644 --- a/addons/website/static/src/js/website.js +++ b/addons/website/static/src/js/website.js @@ -190,7 +190,7 @@ $(function(){ * If can't go back in history stack, will go back to home. */ instance.web.ActionGoBack = function(parent, action) { - window.history.back(); + window.location.href = document.referrer; }; instance.web.client_actions.add("goback", "instance.web.ActionGoBack"); diff --git a/addons/website/views/views.xml b/addons/website/views/views.xml index 4bb7ad2eda5..572aa5f1c3e 100644 --- a/addons/website/views/views.xml +++ b/addons/website/views/views.xml @@ -70,6 +70,7 @@ +
diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 84f384f5e0e..21011ab4f0e 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -194,6 +194,8 @@ class Ecommerce(http.Controller): values = self.get_values() partner_obj = request.registry.get('res.partner') user_obj = request.registry.get('res.users') + country_obj = request.registry.get('res.country') + obj_data = request.registry.get('ir.model.data') values['partner'] = False @@ -204,6 +206,13 @@ class Ecommerce(http.Controller): if partner_id: values['partner'] = partner_obj.browse(cr, uid, partner_id) + shipping_category_id = obj_data.get_object_reference(cr, uid, 'website_sale', 'shipping_address')[1] + shipping_ids = partner_obj.search(cr, uid, [("parent_id", "=", partner_id), ("category_id", "=", shipping_category_id)]) + shipping_id = shipping_ids and shipping_ids[0] or None + values['shipping'] = partner_obj.browse(cr, uid, shipping_id) + + values['countries'] = country_obj.browse(cr, uid, country_obj.search(cr, uid, [(1, "=", 1)])) + return request.registry.get("ir.ui.view").render(cr, uid, "website_sale.checkout", values) @http.route(['/shop/confirm_order'], type='http', auth="admin") @@ -214,11 +223,11 @@ class Ecommerce(http.Controller): # check values json = {'error': []} - required_field = ['tel', 'zip', 'email', 'state', 'street', 'city', 'name'] + required_field = ['phone', 'zip', 'email', 'street', 'city', 'name', 'country_id'] for key in required_field: - if not post[key]: + if not post.get(key): json['error'].append(key) - if 'shipping_name' in post and key != 'email' and not post["shipping_%s" % key]: + if 'shipping_name' in post and key != 'email' and not post.get("shipping_%s" % key): json['error'].append("shipping_%s" % key) if json['error']: return simplejson.dumps(json) @@ -226,18 +235,22 @@ class Ecommerce(http.Controller): # search or create company if post['company']: pass - if 'shipping_company' in post and post['shipping_company']: + if 'shipping_name' in post and post['shipping_company']: + pass + if post['state']: + pass + if 'shipping_name' in post and post['shipping_state']: pass partner_value = { 'fax': post['fax'], - 'tel': post['tel'], + 'phone': post['phone'], 'zip': post['zip'], 'email': post['email'], - 'state': post['state'], 'street': post['street'], 'city': post['city'], 'name': post['name'], + 'country_id': post['country_id'], } if partner_id: partner_obj.write(cr, uid, [partner_id], partner_value) @@ -245,18 +258,18 @@ class Ecommerce(http.Controller): partner_id = partner_obj.create(cr, uid, partner_value) if 'shipping_name' in post: + shipping_category_id = obj_data.get_object_reference(cr, uid, 'website_sale', 'shipping_address')[1] shipping_value = { 'fax': post['shipping_fax'], - 'tel': post['shipping_tel'], + 'phone': post['shipping_phone'], 'zip': post['shipping_zip'], - 'state': post['shipping_state'], 'street': post['shipping_street'], 'city': post['shipping_city'], 'name': post['shipping_name'], 'parent_id': partner_id, - 'category_id': (4, shipping_category_id) + 'category_id': [(4, shipping_category_id)], + 'country_id': post['shipping_country_id'], } - shipping_category_id = obj_data.get_object_reference(cr, uid, 'website_sale', 'shipping_address')[1] shipping_ids = partner_obj.search(cr, uid, [("parent_id", "=", partner_id), ("category_id", "=", shipping_category_id)]) shipping_id = shipping_ids and shipping_ids[0] or None if shipping_id: diff --git a/addons/website_sale/static/src/css/ecommerce.css b/addons/website_sale/static/src/css/ecommerce.css index 6c02bc1a371..984aca00278 100644 --- a/addons/website_sale/static/src/css/ecommerce.css +++ b/addons/website_sale/static/src/css/ecommerce.css @@ -147,7 +147,7 @@ max-width: 64px; max-height: 64px; } -.oe_ecommerce .oe_checkout .css_required input { +.oe_ecommerce .oe_checkout .css_required input, .oe_ecommerce .oe_checkout .css_required select { background-color: #d2d2ff !important; } .oe_ecommerce .oe_checkout h4 { @@ -160,7 +160,7 @@ .oe_ecommerce .oe_checkout input[type="image"] { height: 30px; } -.oe_ecommerce .oe_checkout label > input:not([type="radio"]):not([type="checkbox"]), .oe_ecommerce .oe_checkout label > div { +.oe_ecommerce .oe_checkout label > input:not([type="radio"]):not([type="checkbox"]), .oe_ecommerce .oe_checkout label > div, .oe_ecommerce .oe_checkout label > select { display: block; margin-top: 3px; } diff --git a/addons/website_sale/static/src/css/ecommerce.sass b/addons/website_sale/static/src/css/ecommerce.sass index 74f5880f44a..977a40635dd 100644 --- a/addons/website_sale/static/src/css/ecommerce.sass +++ b/addons/website_sale/static/src/css/ecommerce.sass @@ -111,7 +111,7 @@ max-height: 64px .oe_checkout .css_required - input + input, select background-color: #d2d2ff !important h4 border-bottom: 1px solid #ddd @@ -121,7 +121,7 @@ input[type="image"] height: 30px label - > input:not([type="radio"]):not([type="checkbox"]), > div + > input:not([type="radio"]):not([type="checkbox"]), > div, > select display: block margin-top: 3px select diff --git a/addons/website_sale/static/src/js/ecommerce.js b/addons/website_sale/static/src/js/ecommerce.js index 818e5e7867c..8184ee7b193 100644 --- a/addons/website_sale/static/src/js/ecommerce.js +++ b/addons/website_sale/static/src/js/ecommerce.js @@ -28,7 +28,7 @@ $(document).ready(function () { }); $(".oe_ecommerce .js_error_payment").click(function(e) { var values = {}; - $checkout.find(".js_inputs:not(:hidden) input:not(:checkbox), .js_signin_modal input").each(function() { + $checkout.find(".js_inputs:not(:hidden) input:not(:checkbox), .js_inputs:not(:hidden) select, .js_signin_modal input").each(function() { values[$(this).attr("name")] = $(this).val(); }); $checkout.find("input").css("border", ""); diff --git a/addons/website_sale/views/ecommerce.xml b/addons/website_sale/views/ecommerce.xml index 413327854cb..13e73c4eb5e 100644 --- a/addons/website_sale/views/ecommerce.xml +++ b/addons/website_sale/views/ecommerce.xml @@ -25,9 +25,13 @@