diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py
index c8cf81d062c..7ba4bb98180 100644
--- a/addons/point_of_sale/point_of_sale.py
+++ b/addons/point_of_sale/point_of_sale.py
@@ -1379,16 +1379,4 @@ class product_template(osv.osv):
'available_in_pos': True,
}
- def edit_ean(self, cr, uid, ids, context):
- return {
- 'name': _("Assign a Custom EAN"),
- 'type': 'ir.actions.act_window',
- 'view_type': 'form',
- 'view_mode': 'form',
- 'res_model': 'pos.ean_wizard',
- 'target' : 'new',
- 'view_id': False,
- 'context':context,
- }
-
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/point_of_sale/point_of_sale_view.xml b/addons/point_of_sale/point_of_sale_view.xml
index 559fff5d7fc..7f43484603e 100644
--- a/addons/point_of_sale/point_of_sale_view.xml
+++ b/addons/point_of_sale/point_of_sale_view.xml
@@ -523,6 +523,13 @@
+
+ Edit Ean
+ pos.ean_wizard
+ new
+ form
+ form
+
product.template.form.inherit
@@ -539,7 +546,7 @@
-
+
diff --git a/addons/point_of_sale/res_partner.py b/addons/point_of_sale/res_partner.py
index d7969b0e21a..87ca525005b 100644
--- a/addons/point_of_sale/res_partner.py
+++ b/addons/point_of_sale/res_partner.py
@@ -18,18 +18,6 @@ class res_users(osv.osv):
for user in self.browse(cr, uid, ids, context=context)
)
- def edit_ean(self, cr, uid, ids, context):
- return {
- 'name': "Edit Ean",
- 'type': 'ir.actions.act_window',
- 'view_type': 'form',
- 'view_mode': 'form',
- 'res_model': 'pos.ean_wizard',
- 'target' : 'new',
- 'view_id': False,
- 'context':context,
- }
-
_constraints = [
(_check_ean, "Error: Invalid ean code", ['ean13'],),
]
diff --git a/addons/point_of_sale/res_partner_view.xml b/addons/point_of_sale/res_partner_view.xml
index 4bd433adf28..f1aeccabf5b 100644
--- a/addons/point_of_sale/res_partner_view.xml
+++ b/addons/point_of_sale/res_partner_view.xml
@@ -11,7 +11,7 @@
-
+
diff --git a/addons/point_of_sale/res_users.py b/addons/point_of_sale/res_users.py
index ed2c6fae598..9198e33e1e9 100644
--- a/addons/point_of_sale/res_users.py
+++ b/addons/point_of_sale/res_users.py
@@ -19,18 +19,6 @@ class res_users(osv.osv):
for user in self.browse(cr, uid, ids, context=context)
)
- def edit_ean(self, cr, uid, ids, context):
- return {
- 'name': "Edit EAN",
- 'type': 'ir.actions.act_window',
- 'view_type': 'form',
- 'view_mode': 'form',
- 'res_model': 'pos.ean_wizard',
- 'target' : 'new',
- 'view_id': False,
- 'context':context,
- }
-
_constraints = [
(_check_ean, "Error: Invalid ean code", ['ean13'],),
]
diff --git a/addons/point_of_sale/res_users_view.xml b/addons/point_of_sale/res_users_view.xml
index 11d37324ec9..03f3c986c2c 100644
--- a/addons/point_of_sale/res_users_view.xml
+++ b/addons/point_of_sale/res_users_view.xml
@@ -23,7 +23,7 @@
-
+
diff --git a/addons/product/product.py b/addons/product/product.py
index 94b431ec66f..01a1863c23a 100644
--- a/addons/product/product.py
+++ b/addons/product/product.py
@@ -418,13 +418,7 @@ class product_template(osv.osv):
return self.is_product_variant(cr, uid, ids, name, arg, context=context)
def is_product_variant(self, cr, uid, ids, name, arg, context=None):
- prod = self.pool.get('product.product')
- res = dict.fromkeys(ids, False)
- ctx = dict(context, active_test=True)
- for product in self.browse(cr, uid, ids, context=context):
- res[product.id] = prod.search(cr, uid, [('product_tmpl_id','=',product.id)], context=ctx, count=True) == 1
- return res
-
+ return dict.fromkeys(ids, False)
def _product_template_price(self, cr, uid, ids, name, arg, context=None):
plobj = self.pool.get('product.pricelist')
diff --git a/addons/website/static/src/css/website.css b/addons/website/static/src/css/website.css
index 209d431ae8f..453a10df793 100644
--- a/addons/website/static/src/css/website.css
+++ b/addons/website/static/src/css/website.css
@@ -503,12 +503,15 @@ div.media_iframe_video {
div.media_iframe_video iframe {
width: 100%;
height: 100%;
+ position: absolute;
+ margin-left: -50%;
}
-div.media_iframe_video div {
+div.media_iframe_video .css_editable_mode_display {
position: absolute;
width: 100%;
height: 100%;
display: none;
+ z-index: 2;
}
/* Mobile view */
diff --git a/addons/website/static/src/css/website.sass b/addons/website/static/src/css/website.sass
index a9707799177..f67dcbcbbde 100644
--- a/addons/website/static/src/css/website.sass
+++ b/addons/website/static/src/css/website.sass
@@ -88,7 +88,7 @@ header
/* ----- EDITOR ----- */
.css_non_editable_mode_hidden
- display: none
+ display: none !important
/* ----- BOOTSTRAP FIX ----- */
@@ -413,11 +413,14 @@ div.media_iframe_video
iframe
width: 100%
height: 100%
- div
+ position: absolute
+ margin-left: -50%
+ .css_editable_mode_display
position: absolute
width: 100%
height: 100%
display: none
+ z-index: 2
/* Mobile view */
diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py
index 4b496c06f1e..79b04fa5ee6 100644
--- a/addons/website_sale/controllers/main.py
+++ b/addons/website_sale/controllers/main.py
@@ -304,18 +304,17 @@ class website_sale(http.Controller):
countries = orm_country.browse(cr, SUPERUSER_ID, country_ids, context)
states_ids = state_orm.search(cr, SUPERUSER_ID, [], context=context)
states = state_orm.browse(cr, SUPERUSER_ID, states_ids, context)
+ partner = orm_user.browse(cr, SUPERUSER_ID, request.uid, context).partner_id
+ order = None
+
+ shipping_id = None
+ shipping_ids = []
checkout = {}
if not data:
if request.uid != request.website.user_id.id:
- partner = orm_user.browse(cr, SUPERUSER_ID, request.uid, context).partner_id
checkout.update( self.checkout_parse("billing", partner) )
-
- shipping_ids = orm_partner.search(cr, SUPERUSER_ID, [("parent_id", "=", partner.id), ('type', "=", 'delivery')], limit=1, context=context)
- if shipping_ids:
- shipping = orm_user.browse(cr, SUPERUSER_ID, request.uid, context)
- checkout.update( self.checkout_parse("shipping", shipping) )
- checkout['shipping_different'] = True
+ shipping_ids = orm_partner.search(cr, SUPERUSER_ID, [("parent_id", "=", partner.id), ('type', "=", 'delivery')], context=context)
else:
order = request.website.sale_get_order(force_create=1, context=context)
if order.partner_id:
@@ -325,17 +324,47 @@ class website_sale(http.Controller):
checkout.update( self.checkout_parse("billing", order.partner_id) )
else:
checkout = self.checkout_parse('billing', data)
- if data.get("shipping_different"):
+ try:
+ shipping_id = int(data["shipping_id"])
+ except ValueError:
+ pass
+ if shipping_id == -1:
checkout.update(self.checkout_parse('shipping', data))
- checkout["shipping_different"] = True
+
+ if shipping_id is None:
+ if not order:
+ order = request.website.sale_get_order(context=context)
+ if order and order.partner_shipping_id:
+ shipping_id = order.partner_shipping_id.id
+
+ shipping_ids = list(set(shipping_ids) - set([partner.id]))
+
+ if shipping_id == partner.id:
+ shipping_id = 0
+ elif shipping_id > 0 and shipping_id not in shipping_ids:
+ shipping_ids.append(shipping_id)
+ elif shipping_id is None and shipping_ids:
+ shipping_id = shipping_ids[0]
+
+ ctx = dict(context, show_address=1)
+ shippings = []
+ if shipping_ids:
+ shippings = shipping_ids and orm_partner.browse(cr, SUPERUSER_ID, list(shipping_ids), ctx) or []
+ if shipping_id > 0:
+ shipping = orm_partner.browse(cr, SUPERUSER_ID, shipping_id, ctx)
+ checkout.update( self.checkout_parse("shipping", shipping) )
+
+ checkout['shipping_id'] = shipping_id
values = {
'countries': countries,
'states': states,
'checkout': checkout,
- 'shipping_different': checkout.get('shipping_different'),
+ 'shipping_id': partner.id != shipping_id and shipping_id or 0,
+ 'shippings': shippings,
'error': {},
}
+
return values
mandatory_billing_fields = ["name", "phone", "email", "street", "city", "country_id", "zip"]
@@ -395,7 +424,7 @@ class website_sale(http.Controller):
if not check_func(cr, uid, vat_country, vat_number, context=None): # simple_vat_check
error["vat"] = 'error'
- if data.get("shipping_different"):
+ if data.get("shipping_id") == -1:
for field_name in self.mandatory_shipping_fields:
field_name = 'shipping_' + field_name
if not data.get(field_name):
@@ -431,21 +460,20 @@ class website_sale(http.Controller):
partner_id = orm_partner.create(cr, SUPERUSER_ID, billing_info, context=context)
# create a new shipping partner
- shipping_id = None
- if checkout.get('shipping_different'):
+ if checkout.get('shipping_id') == -1:
shipping_info = self.checkout_parse('shipping', checkout, True)
shipping_info['type'] = 'delivery'
shipping_info['parent_id'] = partner_id
- shipping_id = orm_partner.create(cr, SUPERUSER_ID, shipping_info, context)
+ checkout['shipping_id'] = orm_partner.create(cr, SUPERUSER_ID, shipping_info, context)
order_info = {
'partner_id': partner_id,
'message_follower_ids': [(4, partner_id)],
'partner_invoice_id': partner_id,
- 'partner_shipping_id': shipping_id or partner_id
}
order_info.update(registry.get('sale.order').onchange_partner_id(cr, SUPERUSER_ID, [], partner_id, context=context)['value'])
order_info.pop('user_id')
+ order_info.update(partner_shipping_id=checkout.get('shipping_id') or partner_id)
order_obj.write(cr, SUPERUSER_ID, [order.id], order_info, context=context)
@@ -482,6 +510,7 @@ class website_sale(http.Controller):
return request.website.render("website_sale.checkout", values)
self.checkout_form_save(values["checkout"])
+
request.session['sale_last_order_id'] = order.id
return request.redirect("/shop/payment")
diff --git a/addons/website_sale/static/src/js/website_sale.js b/addons/website_sale/static/src/js/website_sale.js
index 62c1f829bde..4ca9aa34e8b 100644
--- a/addons/website_sale/static/src/js/website_sale.js
+++ b/addons/website_sale/static/src/js/website_sale.js
@@ -1,10 +1,17 @@
$(document).ready(function () {
- var $shippingDifferent = $(".oe_website_sale input[name='shipping_different']");
- if ($shippingDifferent.is(':checked')) {
- $(".oe_website_sale .js_shipping").show();
- }
- $shippingDifferent.change(function () {
- $(".oe_website_sale .js_shipping").toggle();
+ var $shippingDifferent = $(".oe_website_sale select[name='shipping_id']");
+ $shippingDifferent.change(function (event) {
+ var value = +$shippingDifferent.val();
+ var data = $shippingDifferent.find("option:selected").data();
+ var $snipping = $(".oe_website_sale .js_shipping");
+ var $inputs = $snipping.find("input,select");
+
+ $snipping.toggle(!!value);
+ $inputs.attr("readonly", value <= 0 ? null : "readonly" ).prop("readonly", value <= 0 ? null : "readonly" );
+
+ $inputs.each(function () {
+ $(this).val( data[$(this).attr("name")] || "" );
+ });
});
// change for css
diff --git a/addons/website_sale/views/templates.xml b/addons/website_sale/views/templates.xml
index 9efdb5159b5..f4becb6ce45 100644
--- a/addons/website_sale/views/templates.xml
+++ b/addons/website_sale/views/templates.xml
@@ -865,7 +865,7 @@
-
+