diff --git a/base_partner_sequence/README.rst b/base_partner_sequence/README.rst index 39c89d65d..040ba9227 100644 --- a/base_partner_sequence/README.rst +++ b/base_partner_sequence/README.rst @@ -7,7 +7,7 @@ Add a sequence on partner's reference. ====================================== This module adds the possibility to define a sequence for -the partner's reference. This reference is then set as default +the partner's reference. This reference is then set as default when you create a new partner, using the defined sequence. The reference field is treated as a commercial field, i.e. it @@ -17,8 +17,6 @@ but it can only be modified from the commercial partner. No references are assigned for contacts such as shipping and invoice addresses. -This module is a migration of the original base_partner_sequence -addon to OpenERP version 7.0. Usage @@ -26,17 +24,16 @@ Usage .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/134/8.0 + :target: https://runbot.odoo-community.org/runbot/134/9.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 -`here `_. - +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 ======= @@ -51,6 +48,7 @@ Contributors * Laurent Mignon (ACSONE) * Guewen Baconnier * Alexandre Fayolle +* Vicent Cubells Maintainer ---------- diff --git a/base_partner_sequence/__init__.py b/base_partner_sequence/__init__.py index fcf98fb46..062d23fcc 100644 --- a/base_partner_sequence/__init__.py +++ b/base_partner_sequence/__init__.py @@ -1,3 +1,8 @@ -# -*- encoding: utf-8 -*- +# -*- coding: utf-8 -*- +# Copyright 2004-2009 Tiny SPRL (). +# Copyright 2013 initOS GmbH & Co. KG (). +# Copyright 2016 Tecnativa - Vicent Cubells +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + from . import models from . import tests diff --git a/base_partner_sequence/__openerp__.py b/base_partner_sequence/__openerp__.py index be79f9951..5e3163105 100644 --- a/base_partner_sequence/__openerp__.py +++ b/base_partner_sequence/__openerp__.py @@ -1,38 +1,26 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2009 Tiny SPRL (). -# Copyright (C) 2013 initOS GmbH & Co. KG (). -# Author Thomas Rehn -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# -*- coding: utf-8 -*- +# Copyright 2004-2009 Tiny SPRL (). +# Copyright 2013 initOS GmbH & Co. KG (). +# Copyright 2016 Tecnativa - Vicent Cubells +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + { "name": "Add a sequence on customers' code", - "version": "8.0.1.1.1", + "version": "9.0.0.1.0", "author": "Tiny/initOS GmbH & Co. KG," "ACSONE SA/NV," + "Tecnativa, " "Odoo Community Association (OCA)", "category": "Generic Modules/Base", "website": "http://www.initos.com", + "depends": [ + 'base', + ], "summary": "Sets customer's code from a sequence", "data": [ 'data/partner_sequence.xml', 'views/partner_view.xml', ], - "active": False, - "installable": True + "installable": True, + "license": "AGPL-3", } diff --git a/base_partner_sequence/data/partner_sequence.xml b/base_partner_sequence/data/partner_sequence.xml index 76f3d8bb7..aa053d1bd 100644 --- a/base_partner_sequence/data/partner_sequence.xml +++ b/base_partner_sequence/data/partner_sequence.xml @@ -1,21 +1,11 @@ - - + - # - # Sequences for res.partner - # + + Partner code + res.partner + P/ + 5 + - - Partner code - res.partner - - - Partner code - res.partner - P/ - 5 - - - - + diff --git a/base_partner_sequence/i18n/base_partner_sequence.pot b/base_partner_sequence/i18n/base_partner_sequence.pot deleted file mode 100644 index 769df21c8..000000000 --- a/base_partner_sequence/i18n/base_partner_sequence.pot +++ /dev/null @@ -1,21 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 7.0-20131013-231025\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-11-13 13:47+0000\n" -"PO-Revision-Date: 2013-11-13 13:47+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: base_partner_sequence -#: model:ir.model,name:base_partner_sequence.model_res_partner -msgid "Partner" -msgstr "" - diff --git a/base_partner_sequence/models/__init__.py b/base_partner_sequence/models/__init__.py index cb85880b7..9e8bfde26 100644 --- a/base_partner_sequence/models/__init__.py +++ b/base_partner_sequence/models/__init__.py @@ -1,2 +1,7 @@ # -*- coding: utf-8 -*- +# Copyright 2004-2009 Tiny SPRL (). +# Copyright 2013 initOS GmbH & Co. KG (). +# Copyright 2016 Tecnativa - Vicent Cubells +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + from . import partner diff --git a/base_partner_sequence/models/partner.py b/base_partner_sequence/models/partner.py index 8a6f84274..9dea8b649 100644 --- a/base_partner_sequence/models/partner.py +++ b/base_partner_sequence/models/partner.py @@ -1,9 +1,10 @@ # -*- coding: utf-8 -*- -# © 2004-2009 Tiny SPRL (). -# © 2013 initOS GmbH & Co. KG (). +# Copyright 2004-2009 Tiny SPRL (). +# Copyright 2013 initOS GmbH & Co. KG (). +# Copyright 2016 Tecnativa - Vicent Cubells # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from openerp import models, api +from openerp import models, api, exceptions, _ class ResPartner(models.Model): @@ -16,20 +17,24 @@ class ResPartner(models.Model): """ Checks whether a sequence value should be assigned to a partner's 'ref' - :param parnter_id: id of the partner object + :param partner_id: id of the partner object :param vals: known field values of the partner object - :return: true iff a sequence value should be assigned to the\ - partner's 'ref' + :return: true if a sequence value should be assigned to the + partner's 'ref' """ if not vals and not partner_id: - raise Exception('Either field values or an id must be provided.') - vals = vals or {} + raise exceptions.Warning( + _('Either field values or an id must be provided.') + ) + if vals is None: + vals = {} + values = vals.copy() # only assign a 'ref' to commercial partners if partner_id: partner = self.browse(partner_id) - vals.setdefault('is_company', partner.is_company) - vals.setdefault('parent_id', partner.parent_id.id) - return vals.get('is_company') or not vals.get('parent_id') + values.setdefault('is_company', partner.is_company) + values.setdefault('parent_id', partner.parent_id.id) + return values.get('is_company') or not values.get('parent_id') @api.model def _commercial_fields(self): @@ -41,7 +46,7 @@ class ResPartner(models.Model): @api.model def _get_next_ref(self, partner=None, vals=None): - return self.env['ir.sequence'].get('res.partner') + return self.env['ir.sequence'].next_by_code('res.partner') @api.model def create(self, vals): @@ -58,12 +63,13 @@ class ResPartner(models.Model): super(ResPartner, partner).write(vals) return True - @api.one + @api.multi def copy(self, default=None): - default = default or {} - if self._needsRef(self.id): - default.update({ - 'ref': self._get_next_ref(), - }) + for partner in self: + default = default or {} + if self._needsRef(self.id): + default.update({ + 'ref': self._get_next_ref(), + }) return super(ResPartner, self).copy(default) diff --git a/base_partner_sequence/tests/__init__.py b/base_partner_sequence/tests/__init__.py index 8ef33bbfe..675c51b6e 100644 --- a/base_partner_sequence/tests/__init__.py +++ b/base_partner_sequence/tests/__init__.py @@ -1,2 +1,7 @@ # -*- coding: utf-8 -*- +# Copyright 2004-2009 Tiny SPRL (). +# Copyright 2013 initOS GmbH & Co. KG (). +# Copyright 2016 Tecnativa - Vicent Cubells +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + from . import test_base_partner_sequence diff --git a/base_partner_sequence/tests/test_base_partner_sequence.py b/base_partner_sequence/tests/test_base_partner_sequence.py index 24296253a..32c68f2b1 100644 --- a/base_partner_sequence/tests/test_base_partner_sequence.py +++ b/base_partner_sequence/tests/test_base_partner_sequence.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- -# © 2015 ACSONE SA/NV (). +# Copyright 2015 ACSONE SA/NV (). +# Copyright 2016 Tecnativa - Vicent Cubells # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). import openerp.tests.common as common @@ -7,13 +8,28 @@ import openerp.tests.common as common class TestBasePartnerSequence(common.TransactionCase): - def test_ref_sequence_on_partner(self): - res_partner = self.env['res.partner'] - partner = res_partner.create({ + def setUp(self): + super(TestBasePartnerSequence, self).setUp() + + self.res_partner = self.env['res.partner'] + self.partner = self.res_partner.create({ 'name': "test1", 'email': "test@test.com"}) - self.assertTrue(partner.ref, "A partner has always a ref.") - copy = partner.copy() + def test_ref_sequence_on_partner(self): + # Test sequence on creating partner and copying it + self.assertTrue(self.partner.ref, "A partner has always a ref.") + + copy = self.partner.copy() self.assertTrue(copy.ref, "A partner with ref created by copy " "has a ref by default.") + + def test_ref_sequence_on_contact(self): + # Test if sequence doesn't increase on creating a contact child + contact = self.res_partner.create({ + 'name': "contact1", + 'email': "contact@contact.com", + 'parent_id': self.partner.id}) + self.assertEqual( + self.partner.ref, contact.ref, "All it's ok as sequence doesn't " + "increase.") diff --git a/base_partner_sequence/views/partner_view.xml b/base_partner_sequence/views/partner_view.xml index 00dcb16bb..f4207a625 100644 --- a/base_partner_sequence/views/partner_view.xml +++ b/base_partner_sequence/views/partner_view.xml @@ -1,20 +1,16 @@ - - + - - Make partner reference readonly when non-commercial - res.partner - - - - { - 'readonly': [('is_company', '=', False), - ('parent_id', '!=', False)]} - + + Make partner reference readonly when non-commercial + res.partner + + + + {'readonly': [('is_company', '=', False), ('parent_id', '!=', False)]} + + - - - +