From aa1f4d0e5704534594e6ec7ae44e8cee368e831e Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Sat, 28 Nov 2015 23:23:40 +0100 Subject: [PATCH 01/49] product_multi_company ========================================== Product permissions for discrete companies ========================================== This modules allows to select in which of the companies you want to use each of the products. Installation ============ This module uses the post and uninstall hooks for updating default product template security rule. This only means that updating the module will not restore the security rule this module changes. Only a complete removal and reinstallation will serve. Usage ===== On the product form view, go to the "Information" tab, and put the companies in which you want to use that product. If none is selected, the product will be visible in all of them. The default value is the current one. --- product_multi_company/README.rst | 64 ++++++++++++++ product_multi_company/__init__.py | 7 ++ product_multi_company/__openerp__.py | 24 ++++++ product_multi_company/hooks.py | 35 ++++++++ product_multi_company/i18n/es.po | 27 ++++++ product_multi_company/models/__init__.py | 5 ++ .../models/product_template.py | 26 ++++++ .../static/description/icon.png | Bin 0 -> 9455 bytes product_multi_company/tests/__init__.py | 5 ++ .../tests/test_product_multi_company.py | 79 ++++++++++++++++++ .../views/product_template_view.xml | 24 ++++++ 11 files changed, 296 insertions(+) create mode 100644 product_multi_company/README.rst create mode 100644 product_multi_company/__init__.py create mode 100644 product_multi_company/__openerp__.py create mode 100644 product_multi_company/hooks.py create mode 100644 product_multi_company/i18n/es.po create mode 100644 product_multi_company/models/__init__.py create mode 100644 product_multi_company/models/product_template.py create mode 100644 product_multi_company/static/description/icon.png create mode 100644 product_multi_company/tests/__init__.py create mode 100644 product_multi_company/tests/test_product_multi_company.py create mode 100644 product_multi_company/views/product_template_view.xml diff --git a/product_multi_company/README.rst b/product_multi_company/README.rst new file mode 100644 index 00000000000..3f8487d3cb7 --- /dev/null +++ b/product_multi_company/README.rst @@ -0,0 +1,64 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +========================================== +Product permissions for discrete companies +========================================== + +This modules allows to select in which of the companies you want to use each +of the products. + +Installation +============ + +This module uses the post and uninstall hooks for updating default product +template security rule. This only means that updating the module will not +restore the security rule this module changes. Only a complete removal and +reinstallation will serve. + +Usage +===== + +On the product form view, go to the "Information" tab, and put the companies +in which you want to use that product. If none is selected, the product will +be visible in all of them. The default value is the current one. + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/133/8.0 + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed `feedback +`_. + +Credits +======= + +Contributors +------------ + +* Pedro M. Baeza + +Maintainer +---------- + +.. image:: http://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit https://odoo-community.org. \ No newline at end of file diff --git a/product_multi_company/__init__.py b/product_multi_company/__init__.py new file mode 100644 index 00000000000..e6ab609cacc --- /dev/null +++ b/product_multi_company/__init__.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# (c) 2015 Serv. Tecnol. Avanzados - Pedro M. Baeza +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from . import models +from .hooks import post_init_hook +from .hooks import uninstall_hook diff --git a/product_multi_company/__openerp__.py b/product_multi_company/__openerp__.py new file mode 100644 index 00000000000..d80192b87aa --- /dev/null +++ b/product_multi_company/__openerp__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# (c) 2015 Serv. Tecnol. Avanzados - Pedro M. Baeza +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +{ + 'name': "Product multi-company", + 'summary': "Select individually the product visibility on each company", + 'author': "Serv. Tecnol. Avanzados - Pedro M. Baeza," + "Odoo Community Association (OCA)", + 'website': "http://serviciosbaeza.com", + 'category': 'Product Management', + 'version': '8.0.1.0.0', + 'license': 'AGPL-3', + 'depends': [ + 'product', + 'purchase', + 'sale_stock', + ], + 'data': [ + 'views/product_template_view.xml', + ], + 'post_init_hook': 'post_init_hook', + 'uninstall_hook': 'uninstall_hook', +} diff --git a/product_multi_company/hooks.py b/product_multi_company/hooks.py new file mode 100644 index 00000000000..7bed339d691 --- /dev/null +++ b/product_multi_company/hooks.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# (c) 2015 Serv. Tecnol. Avanzados - Pedro M. Baeza +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from openerp import api, SUPERUSER_ID + + +def post_init_hook(cr, registry): + """Put domain in product access rule and copy company_id as the default + value in new field company_ids.""" + with api.Environment.manage(): + env = api.Environment(cr, SUPERUSER_ID, {}) + # Change access rule + rule = env.ref('product.product_comp_rule') + rule.domain_force = ("['|', " + "('company_ids', 'in', user.company_id.id), " + "('company_id', '=', False)]") + # Copy company values + template_model = env['product.template'] + groups = template_model.read_group([], ['company_id'], ['company_id']) + for group in groups: + if not group['company_id']: + continue + templates = template_model.search(group['__domain']) + templates.write( + {'company_ids': [(6, 0, [group['company_id'][0]])]}) + + +def uninstall_hook(cr, registry): + """Restore product rule to base value.""" + with api.Environment.manage(): + env = api.Environment(cr, SUPERUSER_ID, {}) + rule = env.ref('product.product_comp_rule') + rule.domain_force = (" ['|',('company_id','=',user.company_id.id)," + "('company_id','=',False)]") diff --git a/product_multi_company/i18n/es.po b/product_multi_company/i18n/es.po new file mode 100644 index 00000000000..921d87cbe0a --- /dev/null +++ b/product_multi_company/i18n/es.po @@ -0,0 +1,27 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_multi_company +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-28 22:16+0000\n" +"PO-Revision-Date: 2015-11-28 22:16+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: product_multi_company +#: field:product.template,company_ids:0 +msgid "Companies" +msgstr "Compañías" + +#. module: product_multi_company +#: model:ir.model,name:product_multi_company.model_product_template +msgid "Product Template" +msgstr "Plantilla de producto" + diff --git a/product_multi_company/models/__init__.py b/product_multi_company/models/__init__.py new file mode 100644 index 00000000000..135f43074c0 --- /dev/null +++ b/product_multi_company/models/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# (c) 2015 Serv. Tecnol. Avanzados - Pedro M. Baeza +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from . import product_template diff --git a/product_multi_company/models/product_template.py b/product_multi_company/models/product_template.py new file mode 100644 index 00000000000..b00894ed807 --- /dev/null +++ b/product_multi_company/models/product_template.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# (c) 2015 Serv. Tecnol. Avanzados - Pedro M. Baeza +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from openerp import api, fields, models + + +class ProductTemplate(models.Model): + _inherit = "product.template" + + def _default_company_ids(self): + company_model = self.env['res.company'] + return [(6, 0, + [company_model._company_default_get('product.template')])] + + company_ids = fields.Many2many( + comodel_name='res.company', string="Companies", + default=_default_company_ids) + company_id = fields.Many2one( + comodel_name='res.company', compute="_compute_company_id", store=True) + + @api.multi + @api.depends('company_ids') + def _compute_company_id(self): + for template in self: + template.company_id = template.company_ids[:1] diff --git a/product_multi_company/static/description/icon.png b/product_multi_company/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/product_multi_company/tests/__init__.py b/product_multi_company/tests/__init__.py new file mode 100644 index 00000000000..d2178023d82 --- /dev/null +++ b/product_multi_company/tests/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# (c) 2015 Serv. Tecnol. Avanzados - Pedro M. Baeza +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from . import test_product_multi_company diff --git a/product_multi_company/tests/test_product_multi_company.py b/product_multi_company/tests/test_product_multi_company.py new file mode 100644 index 00000000000..27d8977272c --- /dev/null +++ b/product_multi_company/tests/test_product_multi_company.py @@ -0,0 +1,79 @@ +# -*- coding: utf-8 -*- +# (c) 2015 Serv. Tecnol. Avanzados - Pedro M. Baeza +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from openerp.tests import common +from openerp.osv.osv import except_orm as AccessError + + +class TestProductMultiCompany(common.TransactionCase): + def setUp(self): + super(TestProductMultiCompany, self).setUp() + self.company_1 = self.env['res.company'].create( + {'name': 'Test company 1'}) + self.company_2 = self.env['res.company'].create( + {'name': 'Test company 2'}) + self.product_company_none = self.env['product.product'].create( + {'name': 'Product without company', + 'company_ids': [(6, 0, [])]}) + self.product_company_1 = self.env['product.product'].create( + {'name': 'Product from company 1', + 'company_ids': [(6, 0, self.company_1.ids)]}) + self.product_company_2 = self.env['product.product'].create( + {'name': 'Product from company 2', + 'company_ids': [(6, 0, self.company_2.ids)]}) + self.product_company_both = self.env['product.product'].create( + {'name': 'Product for both companies', + 'company_ids': [(6, 0, (self.company_1 + self.company_2).ids)]}) + self.user_company_1 = self.env['res.users'].create( + {'name': 'User company 1', + 'login': 'user_company_1', + 'groups_id': [ + (6, 0, self.env.ref('base.group_sale_manager').ids)], + 'company_id': self.company_1.id, + 'company_ids': [(6, 0, self.company_1.ids)]}) + self.user_company_2 = self.env['res.users'].create( + {'name': 'User company 2', + 'login': 'user_company_2', + 'groups_id': [ + (6, 0, self.env.ref('base.group_sale_manager').ids)], + 'company_id': self.company_2.id, + 'company_ids': [(6, 0, self.company_2.ids)]}) + + def test_create_product(self): + product = self.env['product.product'].create({'name': 'Test'}) + company_id = ( + self.env['res.company']._company_default_get('product.template')) + self.assertTrue(company_id in product.company_ids.ids) + + def test_company_none(self): + self.assertFalse(self.product_company_none.company_id) + # All of this should be allowed + self.product_company_none.sudo(self.user_company_1.id).name = "Test" + self.product_company_none.sudo(self.user_company_2.id).name = "Test" + + def test_company_1(self): + self.assertEqual(self.product_company_1.company_id, self.company_1) + # All of this should be allowed + self.product_company_1.sudo(self.user_company_1).name = "Test" + self.product_company_both.sudo(self.user_company_1).name = "Test" + # And this one not + with self.assertRaises(AccessError): + self.product_company_2.sudo(self.user_company_1).name = "Test" + + def test_company_2(self): + self.assertEqual(self.product_company_2.company_id, self.company_2) + # All of this should be allowed + self.product_company_2.sudo(self.user_company_2).name = "Test" + self.product_company_both.sudo(self.user_company_2).name = "Test" + # And this one not + with self.assertRaises(AccessError): + self.product_company_1.sudo(self.user_company_2).name = "Test" + + def test_uninstall(self): + from openerp.addons.product_multi_company.hooks import uninstall_hook + uninstall_hook(self.env.cr, None) + rule = self.env.ref('product.product_comp_rule') + domain = (" ['|',('company_id','=',user.company_id.id)," + "('company_id','=',False)]") + self.assertEqual(rule.domain_force, domain) diff --git a/product_multi_company/views/product_template_view.xml b/product_multi_company/views/product_template_view.xml new file mode 100644 index 00000000000..0c31d619e05 --- /dev/null +++ b/product_multi_company/views/product_template_view.xml @@ -0,0 +1,24 @@ + + + + + + Product template form view (with multi-company) + product.template + + + + 1 + + + + + + + + + From 1e244cb4353ae2874be9f4729006bdfbc65319c9 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Tue, 6 Dec 2016 19:12:51 +0100 Subject: [PATCH 02/49] product_multi_company: Migration to 9.0 --- product_multi_company/README.rst | 12 ++---- product_multi_company/__openerp__.py | 10 ++--- product_multi_company/hooks.py | 21 +++++++--- product_multi_company/i18n/es.po | 2 +- .../models/product_template.py | 13 ++++--- product_multi_company/tests/__init__.py | 1 - .../tests/test_product_multi_company.py | 14 ++++--- .../views/product_template_view.xml | 38 +++++++++---------- 8 files changed, 58 insertions(+), 53 deletions(-) diff --git a/product_multi_company/README.rst b/product_multi_company/README.rst index 3f8487d3cb7..c9eb242dbda 100644 --- a/product_multi_company/README.rst +++ b/product_multi_company/README.rst @@ -26,7 +26,7 @@ be visible in all of them. The default value is the current one. .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/133/8.0 + :target: https://runbot.odoo-community.org/runbot/133/9.0 Bug Tracker =========== @@ -34,11 +34,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, -help us smashing it by providing a detailed and welcomed `feedback -`_. +help us smashing it by providing a detailed and welcomed feedback. Credits ======= @@ -46,7 +42,7 @@ Credits Contributors ------------ -* Pedro M. Baeza +* Pedro M. Baeza Maintainer ---------- @@ -61,4 +57,4 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -To contribute to this module, please visit https://odoo-community.org. \ No newline at end of file +To contribute to this module, please visit https://odoo-community.org. diff --git a/product_multi_company/__openerp__.py b/product_multi_company/__openerp__.py index d80192b87aa..83a113d2b3d 100644 --- a/product_multi_company/__openerp__.py +++ b/product_multi_company/__openerp__.py @@ -1,20 +1,18 @@ # -*- coding: utf-8 -*- -# (c) 2015 Serv. Tecnol. Avanzados - Pedro M. Baeza +# Copyright 2015-2016 Pedro M. Baeza # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html { 'name': "Product multi-company", 'summary': "Select individually the product visibility on each company", - 'author': "Serv. Tecnol. Avanzados - Pedro M. Baeza," + 'author': "Tecnativa," "Odoo Community Association (OCA)", - 'website': "http://serviciosbaeza.com", + 'website': "https://www.tecnativa.com", 'category': 'Product Management', - 'version': '8.0.1.0.0', + 'version': '9.0.1.0.0', 'license': 'AGPL-3', 'depends': [ 'product', - 'purchase', - 'sale_stock', ], 'data': [ 'views/product_template_view.xml', diff --git a/product_multi_company/hooks.py b/product_multi_company/hooks.py index 7bed339d691..3ba52033551 100644 --- a/product_multi_company/hooks.py +++ b/product_multi_company/hooks.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# (c) 2015 Serv. Tecnol. Avanzados - Pedro M. Baeza +# Copyright 2015-2016 Pedro M. Baeza # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html from openerp import api, SUPERUSER_ID @@ -12,9 +12,13 @@ def post_init_hook(cr, registry): env = api.Environment(cr, SUPERUSER_ID, {}) # Change access rule rule = env.ref('product.product_comp_rule') - rule.domain_force = ("['|', " - "('company_ids', 'in', user.company_id.id), " - "('company_id', '=', False)]") + rule.write({ + 'active': True, + 'domain_force': ( + "['|', ('company_ids', 'in', user.company_id.ids)," + " ('company_id', '=', False)]" + ), + }) # Copy company values template_model = env['product.template'] groups = template_model.read_group([], ['company_id'], ['company_id']) @@ -31,5 +35,10 @@ def uninstall_hook(cr, registry): with api.Environment.manage(): env = api.Environment(cr, SUPERUSER_ID, {}) rule = env.ref('product.product_comp_rule') - rule.domain_force = (" ['|',('company_id','=',user.company_id.id)," - "('company_id','=',False)]") + rule.write({ + 'active': False, + 'domain_force': ( + " ['|',('company_id','=',user.company_id.id)," + "('company_id','=',False)]" + ), + }) diff --git a/product_multi_company/i18n/es.po b/product_multi_company/i18n/es.po index 921d87cbe0a..6eceb58ae64 100644 --- a/product_multi_company/i18n/es.po +++ b/product_multi_company/i18n/es.po @@ -16,7 +16,7 @@ msgstr "" "Plural-Forms: \n" #. module: product_multi_company -#: field:product.template,company_ids:0 +#: model:ir.model.fields,field_description:product_multi_company.field_product_template_company_ids msgid "Companies" msgstr "Compañías" diff --git a/product_multi_company/models/product_template.py b/product_multi_company/models/product_template.py index b00894ed807..faf5b1a982d 100644 --- a/product_multi_company/models/product_template.py +++ b/product_multi_company/models/product_template.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# (c) 2015 Serv. Tecnol. Avanzados - Pedro M. Baeza +# Copyright 2015-2016 Pedro M. Baeza # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html from openerp import api, fields, models @@ -10,14 +10,17 @@ class ProductTemplate(models.Model): def _default_company_ids(self): company_model = self.env['res.company'] - return [(6, 0, - [company_model._company_default_get('product.template')])] + return [ + (6, 0, company_model._company_default_get('product.template').ids), + ] company_ids = fields.Many2many( comodel_name='res.company', string="Companies", - default=_default_company_ids) + default=_default_company_ids, + ) company_id = fields.Many2one( - comodel_name='res.company', compute="_compute_company_id", store=True) + comodel_name='res.company', compute="_compute_company_id", store=True, + ) @api.multi @api.depends('company_ids') diff --git a/product_multi_company/tests/__init__.py b/product_multi_company/tests/__init__.py index d2178023d82..7bb8679d086 100644 --- a/product_multi_company/tests/__init__.py +++ b/product_multi_company/tests/__init__.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -# (c) 2015 Serv. Tecnol. Avanzados - Pedro M. Baeza # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html from . import test_product_multi_company diff --git a/product_multi_company/tests/test_product_multi_company.py b/product_multi_company/tests/test_product_multi_company.py index 27d8977272c..ad9aa6375a7 100644 --- a/product_multi_company/tests/test_product_multi_company.py +++ b/product_multi_company/tests/test_product_multi_company.py @@ -1,11 +1,13 @@ # -*- coding: utf-8 -*- -# (c) 2015 Serv. Tecnol. Avanzados - Pedro M. Baeza +# Copyright 2015-2016 Pedro M. Baeza # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html from openerp.tests import common -from openerp.osv.osv import except_orm as AccessError +from openerp.exceptions import AccessError +@common.at_install(False) +@common.post_install(True) class TestProductMultiCompany(common.TransactionCase): def setUp(self): super(TestProductMultiCompany, self).setUp() @@ -42,9 +44,9 @@ def setUp(self): def test_create_product(self): product = self.env['product.product'].create({'name': 'Test'}) - company_id = ( - self.env['res.company']._company_default_get('product.template')) - self.assertTrue(company_id in product.company_ids.ids) + company = self.env['res.company']._company_default_get( + 'product.template') + self.assertTrue(company in product.company_ids) def test_company_none(self): self.assertFalse(self.product_company_none.company_id) @@ -71,7 +73,7 @@ def test_company_2(self): self.product_company_1.sudo(self.user_company_2).name = "Test" def test_uninstall(self): - from openerp.addons.product_multi_company.hooks import uninstall_hook + from ..hooks import uninstall_hook uninstall_hook(self.env.cr, None) rule = self.env.ref('product.product_comp_rule') domain = (" ['|',('company_id','=',user.company_id.id)," diff --git a/product_multi_company/views/product_template_view.xml b/product_multi_company/views/product_template_view.xml index 0c31d619e05..2a8ac781991 100644 --- a/product_multi_company/views/product_template_view.xml +++ b/product_multi_company/views/product_template_view.xml @@ -1,24 +1,22 @@ - - + - - Product template form view (with multi-company) - product.template - - - - 1 - - - - + + Product template form view (with multi-company) + product.template + + + + 1 - + + + + + - - + From 55ccc179099672cd958aa0f8ddcb5de303b97498 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Fri, 9 Dec 2016 22:09:07 -0500 Subject: [PATCH 03/49] OCA Transbot updated translations from Transifex --- product_multi_company/i18n/fr.po | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 product_multi_company/i18n/fr.po diff --git a/product_multi_company/i18n/fr.po b/product_multi_company/i18n/fr.po new file mode 100644 index 00000000000..c506261f99b --- /dev/null +++ b/product_multi_company/i18n/fr.po @@ -0,0 +1,30 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_multi_company +# +# Translators: +# OCA Transbot , 2016 +# leemannd , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-10 05:05+0000\n" +"PO-Revision-Date: 2016-12-10 05:05+0000\n" +"Last-Translator: leemannd , 2016\n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: product_multi_company +#: model:ir.model.fields,field_description:product_multi_company.field_product_template_company_ids +msgid "Companies" +msgstr "Sociétés" + +#. module: product_multi_company +#: model:ir.model,name:product_multi_company.model_product_template +msgid "Product Template" +msgstr "Template de produit" From 9470a230dcedc686b7b8885ca393d40f95afc4b3 Mon Sep 17 00:00:00 2001 From: Dave Lasley Date: Mon, 26 Dec 2016 12:13:33 -0800 Subject: [PATCH 04/49] [MIG] product_multi_company: Upgrade to v10 * Rename manifest * Change openerp references to odoo * Bump version * Add pragma no cover * Edit security of product employee to allow writes (in tests) * Fix permissions in tests * Fix domain & add test * Implement base_multi_company on product_multi_company * Add related cols for product variant --- product_multi_company/README.rst | 5 +- .../{__openerp__.py => __manifest__.py} | 6 ++- product_multi_company/hooks.py | 51 +++++++------------ .../models/product_template.py | 26 ++-------- .../tests/test_product_multi_company.py | 46 ++++++++++++----- 5 files changed, 62 insertions(+), 72 deletions(-) rename product_multi_company/{__openerp__.py => __manifest__.py} (77%) diff --git a/product_multi_company/README.rst b/product_multi_company/README.rst index c9eb242dbda..e35ef4e7e33 100644 --- a/product_multi_company/README.rst +++ b/product_multi_company/README.rst @@ -7,7 +7,7 @@ Product permissions for discrete companies ========================================== This modules allows to select in which of the companies you want to use each -of the products. +of the product templates. Installation ============ @@ -26,7 +26,7 @@ be visible in all of them. The default value is the current one. .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/133/9.0 + :target: https://runbot.odoo-community.org/runbot/133/10.0 Bug Tracker =========== @@ -43,6 +43,7 @@ Contributors ------------ * Pedro M. Baeza +* Dave Lasley Maintainer ---------- diff --git a/product_multi_company/__openerp__.py b/product_multi_company/__manifest__.py similarity index 77% rename from product_multi_company/__openerp__.py rename to product_multi_company/__manifest__.py index 83a113d2b3d..a4ea614e445 100644 --- a/product_multi_company/__openerp__.py +++ b/product_multi_company/__manifest__.py @@ -4,14 +4,16 @@ { 'name': "Product multi-company", - 'summary': "Select individually the product visibility on each company", + 'summary': "Select individually the product template visibility on each " + "company", 'author': "Tecnativa," "Odoo Community Association (OCA)", 'website': "https://www.tecnativa.com", 'category': 'Product Management', - 'version': '9.0.1.0.0', + 'version': '10.0.1.0.0', 'license': 'AGPL-3', 'depends': [ + 'base_multi_company', 'product', ], 'data': [ diff --git a/product_multi_company/hooks.py b/product_multi_company/hooks.py index 3ba52033551..b94a681770a 100644 --- a/product_multi_company/hooks.py +++ b/product_multi_company/hooks.py @@ -2,43 +2,26 @@ # Copyright 2015-2016 Pedro M. Baeza # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html -from openerp import api, SUPERUSER_ID +import logging + +_logger = logging.getLogger(__name__) + +try: + from odoo.addons.base_multi_company import hooks +except ImportError: + _logger.info('Cannot find `base_multi_company` module in addons path.') def post_init_hook(cr, registry): - """Put domain in product access rule and copy company_id as the default - value in new field company_ids.""" - with api.Environment.manage(): - env = api.Environment(cr, SUPERUSER_ID, {}) - # Change access rule - rule = env.ref('product.product_comp_rule') - rule.write({ - 'active': True, - 'domain_force': ( - "['|', ('company_ids', 'in', user.company_id.ids)," - " ('company_id', '=', False)]" - ), - }) - # Copy company values - template_model = env['product.template'] - groups = template_model.read_group([], ['company_id'], ['company_id']) - for group in groups: - if not group['company_id']: - continue - templates = template_model.search(group['__domain']) - templates.write( - {'company_ids': [(6, 0, [group['company_id'][0]])]}) + hooks.post_init_hook( + cr, + 'product.product_comp_rule', + 'product.template', + ) def uninstall_hook(cr, registry): - """Restore product rule to base value.""" - with api.Environment.manage(): - env = api.Environment(cr, SUPERUSER_ID, {}) - rule = env.ref('product.product_comp_rule') - rule.write({ - 'active': False, - 'domain_force': ( - " ['|',('company_id','=',user.company_id.id)," - "('company_id','=',False)]" - ), - }) + hooks.uninstall_hook( + cr, + 'product.product_comp_rule', + ) diff --git a/product_multi_company/models/product_template.py b/product_multi_company/models/product_template.py index faf5b1a982d..59c179096e1 100644 --- a/product_multi_company/models/product_template.py +++ b/product_multi_company/models/product_template.py @@ -2,28 +2,10 @@ # Copyright 2015-2016 Pedro M. Baeza # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html -from openerp import api, fields, models +from odoo import models class ProductTemplate(models.Model): - _inherit = "product.template" - - def _default_company_ids(self): - company_model = self.env['res.company'] - return [ - (6, 0, company_model._company_default_get('product.template').ids), - ] - - company_ids = fields.Many2many( - comodel_name='res.company', string="Companies", - default=_default_company_ids, - ) - company_id = fields.Many2one( - comodel_name='res.company', compute="_compute_company_id", store=True, - ) - - @api.multi - @api.depends('company_ids') - def _compute_company_id(self): - for template in self: - template.company_id = template.company_ids[:1] + _inherit = ["multi.company.abstract", "product.template"] + _name = "product.template" + _description = "Product Template (Multi-Company)" diff --git a/product_multi_company/tests/test_product_multi_company.py b/product_multi_company/tests/test_product_multi_company.py index ad9aa6375a7..26cce56c891 100644 --- a/product_multi_company/tests/test_product_multi_company.py +++ b/product_multi_company/tests/test_product_multi_company.py @@ -2,8 +2,8 @@ # Copyright 2015-2016 Pedro M. Baeza # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html -from openerp.tests import common -from openerp.exceptions import AccessError +from odoo.tests import common +from odoo.exceptions import AccessError @common.at_install(False) @@ -11,13 +11,29 @@ class TestProductMultiCompany(common.TransactionCase): def setUp(self): super(TestProductMultiCompany, self).setUp() + self.group_user = self.env.ref('base.group_user') + self.env.ref('product.access_product_product_employee').write({ + 'perm_write': True, + 'perm_read': True, + 'perm_create': True, + 'perm_unlink': True, + }) + self.env.ref('product.access_product_template_user').write({ + 'perm_write': True, + 'perm_read': True, + 'perm_create': True, + 'perm_unlink': True, + }) self.company_1 = self.env['res.company'].create( - {'name': 'Test company 1'}) + {'name': 'Test company 1'} + ) self.company_2 = self.env['res.company'].create( - {'name': 'Test company 2'}) + {'name': 'Test company 2'} + ) self.product_company_none = self.env['product.product'].create( {'name': 'Product without company', - 'company_ids': [(6, 0, [])]}) + 'company_ids': [(6, 0, [])], + 'company_id': False}) self.product_company_1 = self.env['product.product'].create( {'name': 'Product from company 1', 'company_ids': [(6, 0, self.company_1.ids)]}) @@ -31,14 +47,14 @@ def setUp(self): {'name': 'User company 1', 'login': 'user_company_1', 'groups_id': [ - (6, 0, self.env.ref('base.group_sale_manager').ids)], + (6, 0, self.group_user.ids)], 'company_id': self.company_1.id, 'company_ids': [(6, 0, self.company_1.ids)]}) self.user_company_2 = self.env['res.users'].create( {'name': 'User company 2', 'login': 'user_company_2', 'groups_id': [ - (6, 0, self.env.ref('base.group_sale_manager').ids)], + (6, 0, self.group_user.ids)], 'company_id': self.company_2.id, 'company_ids': [(6, 0, self.company_2.ids)]}) @@ -46,7 +62,7 @@ def test_create_product(self): product = self.env['product.product'].create({'name': 'Test'}) company = self.env['res.company']._company_default_get( 'product.template') - self.assertTrue(company in product.company_ids) + self.assertTrue(company.id in product.company_ids.ids) def test_company_none(self): self.assertFalse(self.product_company_none.company_id) @@ -55,7 +71,10 @@ def test_company_none(self): self.product_company_none.sudo(self.user_company_2.id).name = "Test" def test_company_1(self): - self.assertEqual(self.product_company_1.company_id, self.company_1) + self.assertEqual( + self.product_company_1.sudo(self.user_company_1).company_id, + self.company_1, + ) # All of this should be allowed self.product_company_1.sudo(self.user_company_1).name = "Test" self.product_company_both.sudo(self.user_company_1).name = "Test" @@ -64,7 +83,10 @@ def test_company_1(self): self.product_company_2.sudo(self.user_company_1).name = "Test" def test_company_2(self): - self.assertEqual(self.product_company_2.company_id, self.company_2) + self.assertEqual( + self.product_company_2.sudo(self.user_company_2).company_id, + self.company_2, + ) # All of this should be allowed self.product_company_2.sudo(self.user_company_2).name = "Test" self.product_company_both.sudo(self.user_company_2).name = "Test" @@ -76,6 +98,6 @@ def test_uninstall(self): from ..hooks import uninstall_hook uninstall_hook(self.env.cr, None) rule = self.env.ref('product.product_comp_rule') - domain = (" ['|',('company_id','=',user.company_id.id)," - "('company_id','=',False)]") + domain = (" ['|', ('company_id', '=', user.company_id.id), " + "('company_id', '=', False)]") self.assertEqual(rule.domain_force, domain) From c495e455d46bf3a5da17b43b07173ef6838448b6 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sat, 17 Jun 2017 06:28:55 +0200 Subject: [PATCH 05/49] OCA Transbot updated translations from Transifex --- product_multi_company/i18n/es.po | 26 ++++++++++++++------------ product_multi_company/i18n/fr.po | 17 ++++++++--------- product_multi_company/i18n/nl_NL.po | 29 +++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 21 deletions(-) create mode 100644 product_multi_company/i18n/nl_NL.po diff --git a/product_multi_company/i18n/es.po b/product_multi_company/i18n/es.po index 6eceb58ae64..cd6c2c1e54b 100644 --- a/product_multi_company/i18n/es.po +++ b/product_multi_company/i18n/es.po @@ -1,27 +1,29 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * product_multi_company -# +# * product_multi_company +# +# Translators: +# OCA Transbot , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" +"Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-11-28 22:16+0000\n" -"PO-Revision-Date: 2015-11-28 22:16+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" +"POT-Creation-Date: 2017-06-15 16:43+0000\n" +"PO-Revision-Date: 2017-06-15 16:43+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: product_multi_company -#: model:ir.model.fields,field_description:product_multi_company.field_product_template_company_ids +#: model:ir.model.fields,field_description:product_multi_company.field_product_product_company_ids msgid "Companies" msgstr "Compañías" #. module: product_multi_company #: model:ir.model,name:product_multi_company.model_product_template -msgid "Product Template" -msgstr "Plantilla de producto" - +msgid "Product Template (Multi-Company)" +msgstr "" diff --git a/product_multi_company/i18n/fr.po b/product_multi_company/i18n/fr.po index c506261f99b..2dfdec1dc22 100644 --- a/product_multi_company/i18n/fr.po +++ b/product_multi_company/i18n/fr.po @@ -3,15 +3,14 @@ # * product_multi_company # # Translators: -# OCA Transbot , 2016 -# leemannd , 2016 +# OCA Transbot , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 9.0c\n" +"Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-12-10 05:05+0000\n" -"PO-Revision-Date: 2016-12-10 05:05+0000\n" -"Last-Translator: leemannd , 2016\n" +"POT-Creation-Date: 2017-06-15 16:43+0000\n" +"PO-Revision-Date: 2017-06-15 16:43+0000\n" +"Last-Translator: OCA Transbot , 2017\n" "Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,11 +19,11 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: product_multi_company -#: model:ir.model.fields,field_description:product_multi_company.field_product_template_company_ids +#: model:ir.model.fields,field_description:product_multi_company.field_product_product_company_ids msgid "Companies" msgstr "Sociétés" #. module: product_multi_company #: model:ir.model,name:product_multi_company.model_product_template -msgid "Product Template" -msgstr "Template de produit" +msgid "Product Template (Multi-Company)" +msgstr "" diff --git a/product_multi_company/i18n/nl_NL.po b/product_multi_company/i18n/nl_NL.po new file mode 100644 index 00000000000..13fd2ceaac5 --- /dev/null +++ b/product_multi_company/i18n/nl_NL.po @@ -0,0 +1,29 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_multi_company +# +# Translators: +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-15 16:43+0000\n" +"PO-Revision-Date: 2017-06-15 16:43+0000\n" +"Last-Translator: Peter Hageman , 2017\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/teams/23907/nl_NL/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: nl_NL\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: product_multi_company +#: model:ir.model.fields,field_description:product_multi_company.field_product_product_company_ids +msgid "Companies" +msgstr "Bedrijven" + +#. module: product_multi_company +#: model:ir.model,name:product_multi_company.model_product_template +msgid "Product Template (Multi-Company)" +msgstr "Productsjabloon (Meerdere Bedrijven)" From 02da3f8aaac2c4cc9e9088029e8af854d078a3a4 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Fri, 15 Dec 2017 17:10:51 +0100 Subject: [PATCH 06/49] [MIG] *_multi_company: OpenUpgrade migration scripts --- .../migrations/10.0.1.0.0/post-migration.py | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 product_multi_company/migrations/10.0.1.0.0/post-migration.py diff --git a/product_multi_company/migrations/10.0.1.0.0/post-migration.py b/product_multi_company/migrations/10.0.1.0.0/post-migration.py new file mode 100644 index 00000000000..085c165b44c --- /dev/null +++ b/product_multi_company/migrations/10.0.1.0.0/post-migration.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openupgradelib import openupgrade +from odoo.addons.base_multi_company import hooks + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.rename_tables( + env.cr, [ + ('product_template_res_company_rel', + 'product_template_res_company_assignment_rel'), + ], + ) + openupgrade.rename_columns( + env.cr, { + 'product_template_res_company_assignment_rel': [ + ('res_company_id', 'res_company_assignment_id'), + ], + } + ) + hooks.set_security_rule(env, 'product.product_comp_rule') From 37b228b58bb157ce8e15baa4821b4160a63cc776 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sat, 30 Dec 2017 08:18:11 +0100 Subject: [PATCH 07/49] OCA Transbot updated translations from Transifex --- product_multi_company/i18n/es.po | 4 +-- product_multi_company/i18n/fr.po | 4 +-- product_multi_company/i18n/hr.po | 30 +++++++++++++++++++ product_multi_company/i18n/nl_NL.po | 7 +++-- .../i18n/product_multi_company.pot | 25 ++++++++++++++++ product_multi_company/i18n/pt.po | 29 ++++++++++++++++++ 6 files changed, 92 insertions(+), 7 deletions(-) create mode 100644 product_multi_company/i18n/hr.po create mode 100644 product_multi_company/i18n/product_multi_company.pot create mode 100644 product_multi_company/i18n/pt.po diff --git a/product_multi_company/i18n/es.po b/product_multi_company/i18n/es.po index cd6c2c1e54b..2f2f5136fba 100644 --- a/product_multi_company/i18n/es.po +++ b/product_multi_company/i18n/es.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * product_multi_company -# +# # Translators: # OCA Transbot , 2017 msgid "" @@ -12,10 +12,10 @@ msgstr "" "PO-Revision-Date: 2017-06-15 16:43+0000\n" "Last-Translator: OCA Transbot , 2017\n" "Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: product_multi_company diff --git a/product_multi_company/i18n/fr.po b/product_multi_company/i18n/fr.po index 2dfdec1dc22..c103f842185 100644 --- a/product_multi_company/i18n/fr.po +++ b/product_multi_company/i18n/fr.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * product_multi_company -# +# # Translators: # OCA Transbot , 2017 msgid "" @@ -12,10 +12,10 @@ msgstr "" "PO-Revision-Date: 2017-06-15 16:43+0000\n" "Last-Translator: OCA Transbot , 2017\n" "Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: product_multi_company diff --git a/product_multi_company/i18n/hr.po b/product_multi_company/i18n/hr.po new file mode 100644 index 00000000000..fda2359ed92 --- /dev/null +++ b/product_multi_company/i18n/hr.po @@ -0,0 +1,30 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_multi_company +# +# Translators: +# Bole , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-27 07:37+0000\n" +"PO-Revision-Date: 2018-01-27 07:37+0000\n" +"Last-Translator: Bole , 2018\n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: product_multi_company +#: model:ir.model.fields,field_description:product_multi_company.field_product_product_company_ids +msgid "Companies" +msgstr "Tvrtke" + +#. module: product_multi_company +#: model:ir.model,name:product_multi_company.model_product_template +msgid "Product Template (Multi-Company)" +msgstr "Predložak proizvoda ( više tvrtki)" diff --git a/product_multi_company/i18n/nl_NL.po b/product_multi_company/i18n/nl_NL.po index 13fd2ceaac5..37b6c9e529c 100644 --- a/product_multi_company/i18n/nl_NL.po +++ b/product_multi_company/i18n/nl_NL.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * product_multi_company -# +# # Translators: # Peter Hageman , 2017 msgid "" @@ -11,11 +11,12 @@ msgstr "" "POT-Creation-Date: 2017-06-15 16:43+0000\n" "PO-Revision-Date: 2017-06-15 16:43+0000\n" "Last-Translator: Peter Hageman , 2017\n" -"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/teams/23907/nl_NL/)\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/" +"teams/23907/nl_NL/)\n" +"Language: nl_NL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: product_multi_company diff --git a/product_multi_company/i18n/product_multi_company.pot b/product_multi_company/i18n/product_multi_company.pot new file mode 100644 index 00000000000..e2038ccd998 --- /dev/null +++ b/product_multi_company/i18n/product_multi_company.pot @@ -0,0 +1,25 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_multi_company +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: product_multi_company +#: model:ir.model.fields,field_description:product_multi_company.field_product_product_company_ids +msgid "Companies" +msgstr "" + +#. module: product_multi_company +#: model:ir.model,name:product_multi_company.model_product_template +msgid "Product Template (Multi-Company)" +msgstr "" + diff --git a/product_multi_company/i18n/pt.po b/product_multi_company/i18n/pt.po new file mode 100644 index 00000000000..c563c415117 --- /dev/null +++ b/product_multi_company/i18n/pt.po @@ -0,0 +1,29 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_multi_company +# +# Translators: +# Pedro Castro Silva , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-16 07:23+0000\n" +"PO-Revision-Date: 2017-12-16 07:23+0000\n" +"Last-Translator: Pedro Castro Silva , 2017\n" +"Language-Team: Portuguese (https://www.transifex.com/oca/teams/23907/pt/)\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: product_multi_company +#: model:ir.model.fields,field_description:product_multi_company.field_product_product_company_ids +msgid "Companies" +msgstr "Empresas" + +#. module: product_multi_company +#: model:ir.model,name:product_multi_company.model_product_template +msgid "Product Template (Multi-Company)" +msgstr "Modelo de Produto (Multi-Empresa)" From 4ecfa550b6b8a03f1a363b9e22e41543cfe18ccf Mon Sep 17 00:00:00 2001 From: cubells Date: Fri, 16 Nov 2018 09:03:22 +0100 Subject: [PATCH 08/49] [MIG] product_multi_company: Migration to 11.0 --- product_multi_company/README.rst | 83 +++- product_multi_company/__init__.py | 4 - product_multi_company/__manifest__.py | 3 +- product_multi_company/hooks.py | 1 - .../i18n/product_multi_company.pot | 2 +- .../post-migration.py | 1 - product_multi_company/models/__init__.py | 3 +- .../models/product_template.py | 1 - product_multi_company/readme/CONTRIBUTORS.rst | 5 + product_multi_company/readme/DESCRIPTION.rst | 3 + product_multi_company/readme/INSTALL.rst | 4 + product_multi_company/readme/USAGE.rst | 3 + .../static/description/index.html | 441 ++++++++++++++++++ product_multi_company/tests/__init__.py | 3 - .../tests/test_product_multi_company.py | 1 - 15 files changed, 517 insertions(+), 41 deletions(-) rename product_multi_company/migrations/{10.0.1.0.0 => 11.0.1.0.0}/post-migration.py (96%) create mode 100644 product_multi_company/readme/CONTRIBUTORS.rst create mode 100644 product_multi_company/readme/DESCRIPTION.rst create mode 100644 product_multi_company/readme/INSTALL.rst create mode 100644 product_multi_company/readme/USAGE.rst create mode 100644 product_multi_company/static/description/index.html diff --git a/product_multi_company/README.rst b/product_multi_company/README.rst index e35ef4e7e33..2b48d48eae9 100644 --- a/product_multi_company/README.rst +++ b/product_multi_company/README.rst @@ -1,13 +1,38 @@ -.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html - :alt: License: AGPL-3 - -========================================== -Product permissions for discrete companies -========================================== - -This modules allows to select in which of the companies you want to use each -of the product templates. +===================== +Product multi-company +===================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmulti--company-lightgray.png?logo=github + :target: https://github.com/OCA/multi-company/tree/11.0/product_multi_company + :alt: OCA/multi-company +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/multi-company-11-0/multi-company-11-0-product_multi_company + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/133/11.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module sets the default company taxes for all the existing companies when +a product is created. It also adds a button to set all the taxes from other +companies matching them by tax code. + +**Table of contents** + +.. contents:: + :local: Installation ============ @@ -24,38 +49,46 @@ On the product form view, go to the "Information" tab, and put the companies in which you want to use that product. If none is selected, the product will be visible in all of them. The default value is the current one. -.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas - :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/133/10.0 - Bug Tracker =========== -Bugs are tracked on `GitHub Issues -`_. In case of trouble, please -check there if your issue has already been reported. If you spotted it first, -help us smashing it by providing a detailed and welcomed feedback. +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. Credits ======= +Authors +~~~~~~~ + +* Tecnativa + Contributors ------------- +~~~~~~~~~~~~ * Pedro M. Baeza * Dave Lasley +* `Tecnativa `_: -Maintainer ----------- + * Vicent Cubells -.. image:: http://odoo-community.org/logo.png - :alt: Odoo Community Association - :target: https://odoo-community.org +Maintainers +~~~~~~~~~~~ This module is maintained by the OCA. +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -To contribute to this module, please visit https://odoo-community.org. +This module is part of the `OCA/multi-company `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_multi_company/__init__.py b/product_multi_company/__init__.py index e6ab609cacc..3568264f59d 100644 --- a/product_multi_company/__init__.py +++ b/product_multi_company/__init__.py @@ -1,7 +1,3 @@ -# -*- coding: utf-8 -*- -# (c) 2015 Serv. Tecnol. Avanzados - Pedro M. Baeza -# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html - from . import models from .hooks import post_init_hook from .hooks import uninstall_hook diff --git a/product_multi_company/__manifest__.py b/product_multi_company/__manifest__.py index a4ea614e445..1a8633c57fa 100644 --- a/product_multi_company/__manifest__.py +++ b/product_multi_company/__manifest__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2015-2016 Pedro M. Baeza # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html @@ -10,7 +9,7 @@ "Odoo Community Association (OCA)", 'website': "https://www.tecnativa.com", 'category': 'Product Management', - 'version': '10.0.1.0.0', + 'version': '11.0.1.0.0', 'license': 'AGPL-3', 'depends': [ 'base_multi_company', diff --git a/product_multi_company/hooks.py b/product_multi_company/hooks.py index b94a681770a..c441391c70f 100644 --- a/product_multi_company/hooks.py +++ b/product_multi_company/hooks.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2015-2016 Pedro M. Baeza # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html diff --git a/product_multi_company/i18n/product_multi_company.pot b/product_multi_company/i18n/product_multi_company.pot index e2038ccd998..57d3c995562 100644 --- a/product_multi_company/i18n/product_multi_company.pot +++ b/product_multi_company/i18n/product_multi_company.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" +"Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" diff --git a/product_multi_company/migrations/10.0.1.0.0/post-migration.py b/product_multi_company/migrations/11.0.1.0.0/post-migration.py similarity index 96% rename from product_multi_company/migrations/10.0.1.0.0/post-migration.py rename to product_multi_company/migrations/11.0.1.0.0/post-migration.py index 085c165b44c..d0fc40a6221 100644 --- a/product_multi_company/migrations/10.0.1.0.0/post-migration.py +++ b/product_multi_company/migrations/11.0.1.0.0/post-migration.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2017 Tecnativa - Pedro M. Baeza # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). diff --git a/product_multi_company/models/__init__.py b/product_multi_company/models/__init__.py index 135f43074c0..96487a48234 100644 --- a/product_multi_company/models/__init__.py +++ b/product_multi_company/models/__init__.py @@ -1,5 +1,4 @@ -# -*- coding: utf-8 -*- -# (c) 2015 Serv. Tecnol. Avanzados - Pedro M. Baeza +# Copyright 2015 Serv. Tecnol. Avanzados - Pedro M. Baeza # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html from . import product_template diff --git a/product_multi_company/models/product_template.py b/product_multi_company/models/product_template.py index 59c179096e1..28dd9a5172e 100644 --- a/product_multi_company/models/product_template.py +++ b/product_multi_company/models/product_template.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2015-2016 Pedro M. Baeza # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html diff --git a/product_multi_company/readme/CONTRIBUTORS.rst b/product_multi_company/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..c3a5238e67a --- /dev/null +++ b/product_multi_company/readme/CONTRIBUTORS.rst @@ -0,0 +1,5 @@ +* Pedro M. Baeza +* Dave Lasley +* `Tecnativa `_: + + * Vicent Cubells diff --git a/product_multi_company/readme/DESCRIPTION.rst b/product_multi_company/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..c53bbb24b27 --- /dev/null +++ b/product_multi_company/readme/DESCRIPTION.rst @@ -0,0 +1,3 @@ +This module sets the default company taxes for all the existing companies when +a product is created. It also adds a button to set all the taxes from other +companies matching them by tax code. diff --git a/product_multi_company/readme/INSTALL.rst b/product_multi_company/readme/INSTALL.rst new file mode 100644 index 00000000000..fdca27ed705 --- /dev/null +++ b/product_multi_company/readme/INSTALL.rst @@ -0,0 +1,4 @@ +This module uses the post and uninstall hooks for updating default product +template security rule. This only means that updating the module will not +restore the security rule this module changes. Only a complete removal and +reinstallation will serve. diff --git a/product_multi_company/readme/USAGE.rst b/product_multi_company/readme/USAGE.rst new file mode 100644 index 00000000000..22b4090b3ff --- /dev/null +++ b/product_multi_company/readme/USAGE.rst @@ -0,0 +1,3 @@ +On the product form view, go to the "Information" tab, and put the companies +in which you want to use that product. If none is selected, the product will +be visible in all of them. The default value is the current one. diff --git a/product_multi_company/static/description/index.html b/product_multi_company/static/description/index.html new file mode 100644 index 00000000000..7c428b98cd4 --- /dev/null +++ b/product_multi_company/static/description/index.html @@ -0,0 +1,441 @@ + + + + + + +Product multi-company + + + +
+

Product multi-company

+ + +

Beta License: AGPL-3 OCA/multi-company Translate me on Weblate Try me on Runbot

+

This module sets the default company taxes for all the existing companies when +a product is created. It also adds a button to set all the taxes from other +companies matching them by tax code.

+

Table of contents

+ +
+

Installation

+

This module uses the post and uninstall hooks for updating default product +template security rule. This only means that updating the module will not +restore the security rule this module changes. Only a complete removal and +reinstallation will serve.

+
+
+

Usage

+

On the product form view, go to the “Information” tab, and put the companies +in which you want to use that product. If none is selected, the product will +be visible in all of them. The default value is the current one.

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/multi-company project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/product_multi_company/tests/__init__.py b/product_multi_company/tests/__init__.py index 7bb8679d086..2f4478a571c 100644 --- a/product_multi_company/tests/__init__.py +++ b/product_multi_company/tests/__init__.py @@ -1,4 +1 @@ -# -*- coding: utf-8 -*- -# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html - from . import test_product_multi_company diff --git a/product_multi_company/tests/test_product_multi_company.py b/product_multi_company/tests/test_product_multi_company.py index 26cce56c891..00516c394aa 100644 --- a/product_multi_company/tests/test_product_multi_company.py +++ b/product_multi_company/tests/test_product_multi_company.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2015-2016 Pedro M. Baeza # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html From 711aa9a34c859d4d74b8ae05a6b8347db16fa1e4 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Fri, 18 Jan 2019 02:26:13 +0100 Subject: [PATCH 09/49] [MIG] product_multi_company: Remove migration scripts --- .../migrations/11.0.1.0.0/post-migration.py | 23 ------------------- 1 file changed, 23 deletions(-) delete mode 100644 product_multi_company/migrations/11.0.1.0.0/post-migration.py diff --git a/product_multi_company/migrations/11.0.1.0.0/post-migration.py b/product_multi_company/migrations/11.0.1.0.0/post-migration.py deleted file mode 100644 index d0fc40a6221..00000000000 --- a/product_multi_company/migrations/11.0.1.0.0/post-migration.py +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2017 Tecnativa - Pedro M. Baeza -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - -from openupgradelib import openupgrade -from odoo.addons.base_multi_company import hooks - - -@openupgrade.migrate() -def migrate(env, version): - openupgrade.rename_tables( - env.cr, [ - ('product_template_res_company_rel', - 'product_template_res_company_assignment_rel'), - ], - ) - openupgrade.rename_columns( - env.cr, { - 'product_template_res_company_assignment_rel': [ - ('res_company_id', 'res_company_assignment_id'), - ], - } - ) - hooks.set_security_rule(env, 'product.product_comp_rule') From 603dde900c9660b6e40c3874294e8e36c3bdaa47 Mon Sep 17 00:00:00 2001 From: Florian da Costa Date: Sat, 4 May 2019 16:24:54 +0200 Subject: [PATCH 10/49] Migrate product_multi_company to version 12 --- product_multi_company/README.rst | 94 --------------------------- product_multi_company/__manifest__.py | 4 +- 2 files changed, 2 insertions(+), 96 deletions(-) delete mode 100644 product_multi_company/README.rst diff --git a/product_multi_company/README.rst b/product_multi_company/README.rst deleted file mode 100644 index 2b48d48eae9..00000000000 --- a/product_multi_company/README.rst +++ /dev/null @@ -1,94 +0,0 @@ -===================== -Product multi-company -===================== - -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! This file is generated by oca-gen-addon-readme !! - !! changes will be overwritten. !! - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png - :target: https://odoo-community.org/page/development-status - :alt: Beta -.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png - :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html - :alt: License: AGPL-3 -.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmulti--company-lightgray.png?logo=github - :target: https://github.com/OCA/multi-company/tree/11.0/product_multi_company - :alt: OCA/multi-company -.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/multi-company-11-0/multi-company-11-0-product_multi_company - :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/133/11.0 - :alt: Try me on Runbot - -|badge1| |badge2| |badge3| |badge4| |badge5| - -This module sets the default company taxes for all the existing companies when -a product is created. It also adds a button to set all the taxes from other -companies matching them by tax code. - -**Table of contents** - -.. contents:: - :local: - -Installation -============ - -This module uses the post and uninstall hooks for updating default product -template security rule. This only means that updating the module will not -restore the security rule this module changes. Only a complete removal and -reinstallation will serve. - -Usage -===== - -On the product form view, go to the "Information" tab, and put the companies -in which you want to use that product. If none is selected, the product will -be visible in all of them. The default value is the current one. - -Bug Tracker -=========== - -Bugs are tracked on `GitHub Issues `_. -In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. - -Do not contact contributors directly about support or help with technical issues. - -Credits -======= - -Authors -~~~~~~~ - -* Tecnativa - -Contributors -~~~~~~~~~~~~ - -* Pedro M. Baeza -* Dave Lasley -* `Tecnativa `_: - - * Vicent Cubells - -Maintainers -~~~~~~~~~~~ - -This module is maintained by the OCA. - -.. image:: https://odoo-community.org/logo.png - :alt: Odoo Community Association - :target: https://odoo-community.org - -OCA, or the Odoo Community Association, is a nonprofit organization whose -mission is to support the collaborative development of Odoo features and -promote its widespread use. - -This module is part of the `OCA/multi-company `_ project on GitHub. - -You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_multi_company/__manifest__.py b/product_multi_company/__manifest__.py index 1a8633c57fa..b32030c6522 100644 --- a/product_multi_company/__manifest__.py +++ b/product_multi_company/__manifest__.py @@ -7,9 +7,9 @@ "company", 'author': "Tecnativa," "Odoo Community Association (OCA)", - 'website': "https://www.tecnativa.com", + 'website': "https://github.com/OCA/multi-company", 'category': 'Product Management', - 'version': '11.0.1.0.0', + 'version': '12.0.1.0.0', 'license': 'AGPL-3', 'depends': [ 'base_multi_company', From 51337ae05097cb2fef39bcb0d3dd7ea0e793322f Mon Sep 17 00:00:00 2001 From: Florian da Costa Date: Mon, 20 Jan 2020 23:42:30 +0100 Subject: [PATCH 11/49] Fix product_multi_company description --- product_multi_company/README.rst | 92 +++++++++++++++++++ product_multi_company/i18n/es.po | 8 +- product_multi_company/i18n/fr.po | 8 +- product_multi_company/i18n/hr.po | 8 +- product_multi_company/i18n/nl_NL.po | 8 +- .../i18n/product_multi_company.pot | 7 +- product_multi_company/i18n/pt.po | 8 +- product_multi_company/readme/DESCRIPTION.rst | 4 +- .../static/description/index.html | 12 +-- 9 files changed, 114 insertions(+), 41 deletions(-) create mode 100644 product_multi_company/README.rst diff --git a/product_multi_company/README.rst b/product_multi_company/README.rst new file mode 100644 index 00000000000..8459efdea81 --- /dev/null +++ b/product_multi_company/README.rst @@ -0,0 +1,92 @@ +===================== +Product multi-company +===================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmulti--company-lightgray.png?logo=github + :target: https://github.com/OCA/multi-company/tree/12.0/product_multi_company + :alt: OCA/multi-company +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/multi-company-12-0/multi-company-12-0-product_multi_company + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/133/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This modules allows to select in which of the companies you want to use each of the product templates. + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +This module uses the post and uninstall hooks for updating default product +template security rule. This only means that updating the module will not +restore the security rule this module changes. Only a complete removal and +reinstallation will serve. + +Usage +===== + +On the product form view, go to the "Information" tab, and put the companies +in which you want to use that product. If none is selected, the product will +be visible in all of them. The default value is the current one. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* Pedro M. Baeza +* Dave Lasley +* `Tecnativa `_: + + * Vicent Cubells + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/multi-company `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_multi_company/i18n/es.po b/product_multi_company/i18n/es.po index 2f2f5136fba..de9e2cd3439 100644 --- a/product_multi_company/i18n/es.po +++ b/product_multi_company/i18n/es.po @@ -18,12 +18,10 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#. module: product_multi_company -#: model:ir.model.fields,field_description:product_multi_company.field_product_product_company_ids -msgid "Companies" -msgstr "Compañías" - #. module: product_multi_company #: model:ir.model,name:product_multi_company.model_product_template msgid "Product Template (Multi-Company)" msgstr "" + +#~ msgid "Companies" +#~ msgstr "Compañías" diff --git a/product_multi_company/i18n/fr.po b/product_multi_company/i18n/fr.po index c103f842185..28a5e54a2ca 100644 --- a/product_multi_company/i18n/fr.po +++ b/product_multi_company/i18n/fr.po @@ -18,12 +18,10 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#. module: product_multi_company -#: model:ir.model.fields,field_description:product_multi_company.field_product_product_company_ids -msgid "Companies" -msgstr "Sociétés" - #. module: product_multi_company #: model:ir.model,name:product_multi_company.model_product_template msgid "Product Template (Multi-Company)" msgstr "" + +#~ msgid "Companies" +#~ msgstr "Sociétés" diff --git a/product_multi_company/i18n/hr.po b/product_multi_company/i18n/hr.po index fda2359ed92..d7df4aeb323 100644 --- a/product_multi_company/i18n/hr.po +++ b/product_multi_company/i18n/hr.po @@ -19,12 +19,10 @@ msgstr "" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -#. module: product_multi_company -#: model:ir.model.fields,field_description:product_multi_company.field_product_product_company_ids -msgid "Companies" -msgstr "Tvrtke" - #. module: product_multi_company #: model:ir.model,name:product_multi_company.model_product_template msgid "Product Template (Multi-Company)" msgstr "Predložak proizvoda ( više tvrtki)" + +#~ msgid "Companies" +#~ msgstr "Tvrtke" diff --git a/product_multi_company/i18n/nl_NL.po b/product_multi_company/i18n/nl_NL.po index 37b6c9e529c..fc6a4ce1d4a 100644 --- a/product_multi_company/i18n/nl_NL.po +++ b/product_multi_company/i18n/nl_NL.po @@ -19,12 +19,10 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#. module: product_multi_company -#: model:ir.model.fields,field_description:product_multi_company.field_product_product_company_ids -msgid "Companies" -msgstr "Bedrijven" - #. module: product_multi_company #: model:ir.model,name:product_multi_company.model_product_template msgid "Product Template (Multi-Company)" msgstr "Productsjabloon (Meerdere Bedrijven)" + +#~ msgid "Companies" +#~ msgstr "Bedrijven" diff --git a/product_multi_company/i18n/product_multi_company.pot b/product_multi_company/i18n/product_multi_company.pot index 57d3c995562..b20e2d58592 100644 --- a/product_multi_company/i18n/product_multi_company.pot +++ b/product_multi_company/i18n/product_multi_company.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" @@ -13,11 +13,6 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: product_multi_company -#: model:ir.model.fields,field_description:product_multi_company.field_product_product_company_ids -msgid "Companies" -msgstr "" - #. module: product_multi_company #: model:ir.model,name:product_multi_company.model_product_template msgid "Product Template (Multi-Company)" diff --git a/product_multi_company/i18n/pt.po b/product_multi_company/i18n/pt.po index c563c415117..dc9f94de00d 100644 --- a/product_multi_company/i18n/pt.po +++ b/product_multi_company/i18n/pt.po @@ -18,12 +18,10 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#. module: product_multi_company -#: model:ir.model.fields,field_description:product_multi_company.field_product_product_company_ids -msgid "Companies" -msgstr "Empresas" - #. module: product_multi_company #: model:ir.model,name:product_multi_company.model_product_template msgid "Product Template (Multi-Company)" msgstr "Modelo de Produto (Multi-Empresa)" + +#~ msgid "Companies" +#~ msgstr "Empresas" diff --git a/product_multi_company/readme/DESCRIPTION.rst b/product_multi_company/readme/DESCRIPTION.rst index c53bbb24b27..be1881fdc62 100644 --- a/product_multi_company/readme/DESCRIPTION.rst +++ b/product_multi_company/readme/DESCRIPTION.rst @@ -1,3 +1 @@ -This module sets the default company taxes for all the existing companies when -a product is created. It also adds a button to set all the taxes from other -companies matching them by tax code. +This modules allows to select in which of the companies you want to use each of the product templates. diff --git a/product_multi_company/static/description/index.html b/product_multi_company/static/description/index.html index 7c428b98cd4..c169c85cf42 100644 --- a/product_multi_company/static/description/index.html +++ b/product_multi_company/static/description/index.html @@ -3,7 +3,7 @@ - + Product multi-company