Dear ${object.partner_id.name}
+Dear ${object.partner_id.name}
% if object.partner_id.parent_id:
(${object.partner_id.parent_id.name})
% endif
diff --git a/addons/stock/data/stock_data.xml b/addons/stock/data/stock_data.xml
index 078273fb32d..35f2c008729 100644
--- a/addons/stock/data/stock_data.xml
+++ b/addons/stock/data/stock_data.xml
@@ -145,7 +145,6 @@ watch your stock valuation, and track production lots (based on serial numbers).
-
WH
diff --git a/addons/stock/models/stock_inventory.py b/addons/stock/models/stock_inventory.py
index 0f1c5f15419..283dc12ee5f 100644
--- a/addons/stock/models/stock_inventory.py
+++ b/addons/stock/models/stock_inventory.py
@@ -395,7 +395,8 @@ class InventoryLine(models.Model):
if existings:
raise UserError(_("You cannot have two inventory adjustements in state 'in Progess' with the same product"
"(%s), same location(%s), same package, same owner and same lot. Please first validate"
- "the first inventory adjustement with this product before creating another one.") % (res.product_id.name, res.location_id.name))
+ "the first inventory adjustement with this product before creating another one.") %
+ (res.product_id.display_name, res.location_id.display_name))
return res
def _get_quants(self):
diff --git a/addons/stock/models/stock_warehouse.py b/addons/stock/models/stock_warehouse.py
index ad1f0ea07e5..48dcf54d24f 100644
--- a/addons/stock/models/stock_warehouse.py
+++ b/addons/stock/models/stock_warehouse.py
@@ -21,7 +21,7 @@ class Warehouse(models.Model):
# namedtuple used in helper methods generating values for routes
Routing = namedtuple('Routing', ['from_loc', 'dest_loc', 'picking_type'])
- name = fields.Char('Warehouse Name', index=True, required=True)
+ name = fields.Char('Warehouse Name', index=True, required=True, default=lambda self: self.env['res.company']._company_default_get('stock.inventory').name)
active = fields.Boolean('Active', default=True)
company_id = fields.Many2one(
'res.company', 'Company', default=lambda self: self.env['res.company']._company_default_get('stock.inventory'),
diff --git a/addons/web/static/src/js/abstract_web_client.js b/addons/web/static/src/js/abstract_web_client.js
index 1d9c270b6c3..8c82abf846c 100644
--- a/addons/web/static/src/js/abstract_web_client.js
+++ b/addons/web/static/src/js/abstract_web_client.js
@@ -120,12 +120,37 @@ var WebClient = Widget.extend({
// crash manager integration
session.on('error', crash_manager, crash_manager.rpc_error);
window.onerror = function (message, file, line, col, error) {
- var traceback = error ? error.stack : '';
- crash_manager.show_error({
- type: _t("Odoo Client Error"),
- message: message,
- data: {debug: file + ':' + line + "\n" + _t('Traceback:') + "\n" + traceback}
- });
+ // Scripts injected in DOM (eg: google API's js files) won't return a clean error on window.onerror.
+ // The browser will just give you a 'Script error.' as message and nothing else for security issue.
+ // To enable onerror to work properly with CORS file, you should:
+ // 1. add crossorigin="anonymous" to your