- This has been modifiedcreated from:
+
This has been modifiedcreated from:
,
diff --git a/addons/portal/views/portal_templates.xml b/addons/portal/views/portal_templates.xml
index 5783a1c24f8..24910d0c6d2 100644
--- a/addons/portal/views/portal_templates.xml
+++ b/addons/portal/views/portal_templates.xml
@@ -399,7 +399,7 @@
-
+
diff --git a/addons/sale/models/sale.py b/addons/sale/models/sale.py
index 4cb02549b38..833d59adba4 100644
--- a/addons/sale/models/sale.py
+++ b/addons/sale/models/sale.py
@@ -1046,7 +1046,8 @@ class SaleOrderLine(models.Model):
for line in self:
fpos = line.order_id.fiscal_position_id or line.order_id.partner_id.property_account_position_id
# If company_id is set, always filter taxes by the company
- taxes = line.product_id.taxes_id.filtered(lambda r: not line.company_id or r.company_id == line.company_id)
+ line_company_id = line.company_id or line.order_id.company_id
+ taxes = line.product_id.taxes_id.filtered(lambda r: not line_company_id or r.company_id == line_company_id)
line.tax_id = fpos.map_tax(taxes, line.product_id, line.order_id.partner_shipping_id) if fpos else taxes
@api.model
diff --git a/addons/sale/tests/test_sale_order.py b/addons/sale/tests/test_sale_order.py
index 78a1afec795..160f8d27e22 100644
--- a/addons/sale/tests/test_sale_order.py
+++ b/addons/sale/tests/test_sale_order.py
@@ -238,3 +238,56 @@ class TestSaleOrder(TestCommonSaleNoChart):
self.assertEquals(self.sale_order.amount_total,
self.sale_order.amount_untaxed + self.sale_order.amount_tax,
'Taxes should be applied')
+
+ def test_so_create_multicompany(self):
+ # Preparing test Data
+ user_demo = self.env.ref('base.user_demo')
+ company_1 = self.env.ref('base.main_company')
+ company_2 = self.env['res.company'].create({
+ 'name': 'company 2',
+ 'parent_id': company_1.id,
+ })
+ user_demo.write({
+ 'groups_id': [(4, self.env.ref('sales_team.group_sale_manager').id, False)],
+ 'company_ids': [(6, False, [company_1.id])],
+ 'company_id': company_1.id,
+ })
+
+ so_partner = self.env.ref('base.res_partner_2')
+ so_partner.write({
+ 'property_account_position_id': False,
+ })
+
+ tax_company_1 = self.env['account.tax'].create({
+ 'name': 'T1',
+ 'amount': 90,
+ 'company_id': company_1.id,
+ })
+
+ tax_company_2 = self.env['account.tax'].create({
+ 'name': 'T2',
+ 'amount': 90,
+ 'company_id': company_2.id,
+ })
+
+ product_shared = self.env['product.template'].create({
+ 'name': 'shared product',
+ 'taxes_id': [(6, False, [tax_company_1.id, tax_company_2.id])],
+ })
+
+ # Use case
+ so_1 = self.env['sale.order'].sudo(user_demo.id).create({
+ 'partner_id': so_partner.id,
+ 'company_id': company_1.id,
+ })
+ so_1.invalidate_cache()
+
+ # This is what is done when importing the csv lines (on sale.order):
+ # id,order_line/product_id
+ # __export__.sale_order_37_1bb960ba,Product name
+ so_1.write({
+ 'order_line': [(0, False, {'product_id': product_shared.product_variant_id.id, 'order_id': so_1.id})],
+ })
+
+ self.assertEqual(set(so_1.order_line.tax_id.ids), set([tax_company_1.id]),
+ 'Only taxes from the right company are put by default')
diff --git a/addons/stock/security/stock_security.xml b/addons/stock/security/stock_security.xml
index 53f4b5933ac..9b990d6fd84 100644
--- a/addons/stock/security/stock_security.xml
+++ b/addons/stock/security/stock_security.xml
@@ -94,7 +94,7 @@
stock_move multi-company
- ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
+ ['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('location_dest_id.company_id', '=', False)]
diff --git a/addons/stock/views/product_views.xml b/addons/stock/views/product_views.xml
index e2d796d80b0..70321544e00 100644
--- a/addons/stock/views/product_views.xml
+++ b/addons/stock/views/product_views.xml
@@ -180,6 +180,7 @@
product.product.procurement
product.product
+
@@ -265,6 +266,7 @@
product.template_procurement
product.template
+
diff --git a/addons/test_mail/tests/test_performance.py b/addons/test_mail/tests/test_performance.py
index 2d45899f142..f0bb882e92a 100644
--- a/addons/test_mail/tests/test_performance.py
+++ b/addons/test_mail/tests/test_performance.py
@@ -488,7 +488,7 @@ class TestHeavyMailPerformance(TransactionCase):
})
self.assertEqual(rec.message_partner_ids, self.partners | self.env.user.partner_id)
- with self.assertQueryCount(__system__=61, emp=79): # com runbot: 61 - 75 // test_mail only: 60 - 72
+ with self.assertQueryCount(__system__=62, emp=79): # com runbot: 61 - 75 // test_mail only: 60 - 72
rec.write({'user_id': self.user_portal.id})
self.assertEqual(rec.message_partner_ids, self.partners | self.env.user.partner_id | self.user_portal.partner_id)
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index 3e531f26da4..798ea4a3f3f 100644
--- a/addons/web/controllers/main.py
+++ b/addons/web/controllers/main.py
@@ -198,11 +198,11 @@ def concat_xml(file_list):
:param list(str) file_list: list of files to check
:returns: (concatenation_result, checksum)
- :rtype: (str, str)
+ :rtype: (bytes, str)
"""
checksum = hashlib.new('sha1')
if not file_list:
- return '', checksum.hexdigest()
+ return b'', checksum.hexdigest()
root = None
for fname in file_list:
diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js
index 43e7a82ddf9..ce4f01ab467 100644
--- a/addons/web/static/src/js/views/basic/basic_model.js
+++ b/addons/web/static/src/js/views/basic/basic_model.js
@@ -857,6 +857,7 @@ var BasicModel = AbstractModel.extend({
});
_.each(fields, function (field) {
var dataPoint;
+ record.data[field.name] = null;
if (field.type === 'many2one') {
if (field.value) {
var id = _.isArray(field.value) ? field.value[0] : field.value;
diff --git a/doc/cla/individual/anhvu-sg.md b/doc/cla/individual/anhvu-sg.md
new file mode 100644
index 00000000000..125880cbcd7
--- /dev/null
+++ b/doc/cla/individual/anhvu-sg.md
@@ -0,0 +1,11 @@
+Vietnam, 2019-07-27
+
+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,
+
+Anh Vu https://github.com/anhvu-sg
diff --git a/doc/cla/individual/stfnndrsn.md b/doc/cla/individual/stfnndrsn.md
new file mode 100644
index 00000000000..021aec0aca8
--- /dev/null
+++ b/doc/cla/individual/stfnndrsn.md
@@ -0,0 +1,11 @@
+Denmark, 2019-07-24
+
+ 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,
+
+ Stefan Andersen https://github.com/stfnndrsn
diff --git a/odoo/addons/base/rng/gantt_view.rng b/odoo/addons/base/rng/gantt_view.rng
index 095efcf7b28..505df34ca75 100644
--- a/odoo/addons/base/rng/gantt_view.rng
+++ b/odoo/addons/base/rng/gantt_view.rng
@@ -25,9 +25,11 @@
-
-
+
+
+
+