summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Martinelli <nim@odoo.com>2018-03-05 10:44:07 +0100
committerNicolas Martinelli <nim-odoo@users.noreply.github.com>2018-03-06 10:02:44 +0100
commit037cfc9f67f86bc05aa9b239d8e479fd07ebaff9 (patch)
tree29d5912525cfdb5970f609cd684da14af78f31ac
parentb466b3bc608b54d96ca0242b4d9c6176b76d88b6 (diff)
[FIX] delivery: products not shared
- Define 2 companies A and B. Delivery methods are linked to products in company A - Deactivate 'Share product to all companies' - Create a user B in Company B only - As user B, create a SO and open the drop-down list for delivery methods An access error is raised. Delivery methods should follow the same record rules than the products they are linked to. opw-1815490
-rw-r--r--addons/delivery/__manifest__.py1
-rw-r--r--addons/delivery/models/__init__.py1
-rw-r--r--addons/delivery/models/base_config_settings.py17
-rw-r--r--addons/delivery/security/delivery_security.xml12
4 files changed, 31 insertions, 0 deletions
diff --git a/addons/delivery/__manifest__.py b/addons/delivery/__manifest__.py
index e91e09fef5f..462a3d7bddb 100644
--- a/addons/delivery/__manifest__.py
+++ b/addons/delivery/__manifest__.py
@@ -16,6 +16,7 @@ invoices from picking, the system is able to add and compute the shipping line.
'depends': ['sale_stock'],
'data': [
'security/ir.model.access.csv',
+ 'security/delivery_security.xml',
'views/delivery_view.xml',
'views/partner_view.xml',
'views/product_template_view.xml',
diff --git a/addons/delivery/models/__init__.py b/addons/delivery/models/__init__.py
index 33fb6434d71..140f3e93204 100644
--- a/addons/delivery/models/__init__.py
+++ b/addons/delivery/models/__init__.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
+from . import base_config_settings
import delivery_carrier
import delivery_price_rule
import product_template
diff --git a/addons/delivery/models/base_config_settings.py b/addons/delivery/models/base_config_settings.py
new file mode 100644
index 00000000000..2ab67cbebdd
--- /dev/null
+++ b/addons/delivery/models/base_config_settings.py
@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, models
+
+
+class BaseConfigSettings(models.TransientModel):
+ _inherit = 'base.config.settings'
+
+ @api.multi
+ def set_auth_company_share_product(self):
+ self.ensure_one()
+ res = super(BaseConfigSettings, self).set_auth_company_share_product()
+ delivery_rule = self.env.ref('delivery.delivery_comp_rule', False)
+ if delivery_rule:
+ delivery_rule.write({'active': not bool(self.company_share_product)})
+ return res
diff --git a/addons/delivery/security/delivery_security.xml b/addons/delivery/security/delivery_security.xml
new file mode 100644
index 00000000000..ae588bc245c
--- /dev/null
+++ b/addons/delivery/security/delivery_security.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+<data noupdate="1">
+ <record id="delivery_comp_rule" model="ir.rule">
+ <field name="name">Delivery multi-company</field>
+ <field name="model_id" ref="model_delivery_carrier"/>
+ <field name="global" eval="True"/>
+ <field name="domain_force"> ['|',('product_id.company_id','=',user.company_id.id),('product_id.company_id','=',False)]</field>
+ <field name="active" eval="False"/>
+ </record>
+</data>
+</odoo>