diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index 19400b2fe93..c5cf1c77e5c 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -508,7 +508,7 @@ exports.PosModel = Backbone.Model.extend({ .then(function(){ load_model(index + 1); }, function(err){ loaded.reject(err); }); }catch(err){ - console.error(err.stack); + console.error(err.message, err.stack); loaded.reject(err); } },function(err){ diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index ab5f0021931..81053c2ac82 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -369,8 +369,8 @@ class WebsiteSale(http.Controller): def cart_update(self, product_id, add_qty=1, set_qty=0, **kw): request.website.sale_get_order(force_create=1)._cart_update( product_id=int(product_id), - add_qty=float(add_qty), - set_qty=float(set_qty), + add_qty=add_qty, + set_qty=set_qty, attributes=self._filter_attributes(**kw), ) return request.redirect("/shop/cart") @@ -384,7 +384,6 @@ class WebsiteSale(http.Controller): if order.state != 'draft': request.website.sale_reset() return {} - value = order._cart_update(product_id=product_id, line_id=line_id, add_qty=add_qty, set_qty=set_qty) if not order.cart_quantity: request.website.sale_reset() diff --git a/addons/website_sale/models/sale_order.py b/addons/website_sale/models/sale_order.py index ea8a1914e3d..83189c95c9b 100644 --- a/addons/website_sale/models/sale_order.py +++ b/addons/website_sale/models/sale_order.py @@ -113,6 +113,17 @@ class SaleOrder(models.Model): """ Add or set product quantity, add_qty can be negative """ self.ensure_one() SaleOrderLineSudo = self.env['sale.order.line'].sudo() + + try: + if add_qty: + add_qty = float(add_qty) + except ValueError: + add_qty = 1 + try: + if set_qty: + set_qty = float(set_qty) + except ValueError: + set_qty = 0 quantity = 0 order_line = False if self.state != 'draft': diff --git a/addons/website_sale/static/src/js/website_sale.js b/addons/website_sale/static/src/js/website_sale.js index 25e6cabb0a0..57a6beecca0 100644 --- a/addons/website_sale/static/src/js/website_sale.js +++ b/addons/website_sale/static/src/js/website_sale.js @@ -133,6 +133,9 @@ odoo.define('website_sale.website_sale', function (require) { return; } var value = parseInt($input.val() || 0, 10); + if (isNaN(value)) { + value = 1; + } var $dom = $(this).closest('tr'); //var default_price = parseFloat($dom.find('.text-danger > span.oe_currency_value').text()); var $dom_optional = $dom.nextUntil(':not(.optional_product.info)'); @@ -151,7 +154,11 @@ odoo.define('website_sale.website_sale', function (require) { 'set_qty': value }).then(function (data) { $input.data('update_change', false); - if (value !== parseInt($input.val() || 0, 10)) { + var check_value = parseInt($input.val() || 0, 10); + if (isNaN(check_value)) { + check_value = 1; + } + if (value !== check_value) { $input.trigger('change'); return; } diff --git a/addons/website_sale_options/controllers/main.py b/addons/website_sale_options/controllers/main.py index 4c9ba8e6502..1c84f9e460f 100644 --- a/addons/website_sale_options/controllers/main.py +++ b/addons/website_sale_options/controllers/main.py @@ -33,8 +33,8 @@ class WebsiteSaleOptions(WebsiteSale): if add_qty or set_qty: value = order._cart_update( product_id=int(product_id), - add_qty=int(add_qty), - set_qty=int(set_qty), + add_qty=add_qty, + set_qty=set_qty, attributes=attributes, optional_product_ids=optional_product_ids ) diff --git a/doc/cla/corporate/it-projects-llc.md b/doc/cla/corporate/it-projects-llc.md new file mode 100644 index 00000000000..038323173c3 --- /dev/null +++ b/doc/cla/corporate/it-projects-llc.md @@ -0,0 +1,20 @@ +Russia, 2017-11-25 + +IT-Projects LLC agrees to the terms of the Odoo Corporate Contributor License +Agreement v1.0. + +I declare that I am authorized and able to make this agreement and sign this +declaration. + +Signed, + +Ivan Yelizariev https://github.com/yelizariev + +List of contributors: + +Ivan Yelizariev yelizariev@it-projects.info https://github.com/yelizariev +Ildar Nasyrov nasyrov@it-projects.info https://github.com/iledarn +Ilmir Karamov karamov@it-projects.info https://github.com/ilmir-k +Dinar Gabbasov gabbasov@it-projects.info https://github.com/GabbasovDinar +Artyom Losev losev@it-projects.info https://github.com/ArtyomLosev +Alexandr Kolushov kolushov@it-projects.info https://github.com/KolushovAlexandr diff --git a/doc/cla/individual/adekock11.md b/doc/cla/individual/adekock11.md new file mode 100644 index 00000000000..999190ef207 --- /dev/null +++ b/doc/cla/individual/adekock11.md @@ -0,0 +1,11 @@ +South Africa, 2017-11-25 + +I hereby agree to the terms of the Odoo Individual Contributor License +Agreement v1.0. + +I declare that I am authorized and able to make this agreement and sign this +declaration. + +Signed, + +Andre de Kock adekock11@gmail.com https://github.com/adekock11 diff --git a/odoo/addons/base/res/res_currency_data.xml b/odoo/addons/base/res/res_currency_data.xml index a39d049ffe1..8b108fa978d 100644 --- a/odoo/addons/base/res/res_currency_data.xml +++ b/odoo/addons/base/res/res_currency_data.xml @@ -266,6 +266,7 @@ ZAR R 0.01 + before