From 037cfc9f67f86bc05aa9b239d8e479fd07ebaff9 Mon Sep 17 00:00:00 2001 From: Nicolas Martinelli Date: Mon, 5 Mar 2018 10:44:07 +0100 Subject: [PATCH] [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 --- addons/delivery/__manifest__.py | 1 + addons/delivery/models/__init__.py | 1 + addons/delivery/models/base_config_settings.py | 17 +++++++++++++++++ addons/delivery/security/delivery_security.xml | 12 ++++++++++++ 4 files changed, 31 insertions(+) create mode 100644 addons/delivery/models/base_config_settings.py create mode 100644 addons/delivery/security/delivery_security.xml 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 @@ + + + + + Delivery multi-company + + + ['|',('product_id.company_id','=',user.company_id.id),('product_id.company_id','=',False)] + + + +