From 5668f4bc935b71566795b039e6330205343ef039 Mon Sep 17 00:00:00 2001 From: Antonio Espinosa Date: Mon, 18 Apr 2016 19:20:01 +0200 Subject: [PATCH] partner_ref_unique addon and change description icon --- partner_ref_unique/README.rst | 34 ++++++++++++++++++ partner_ref_unique/__init__.py | 5 +++ partner_ref_unique/__openerp__.py | 30 ++++++++++++++++ partner_ref_unique/models/__init__.py | 6 ++++ partner_ref_unique/models/res_company.py | 16 +++++++++ partner_ref_unique/models/res_partner.py | 31 ++++++++++++++++ .../static/description/icon.png | Bin 0 -> 11429 bytes partner_ref_unique/views/res_company_view.xml | 23 ++++++++++++ 8 files changed, 145 insertions(+) create mode 100644 partner_ref_unique/README.rst create mode 100644 partner_ref_unique/__init__.py create mode 100644 partner_ref_unique/__openerp__.py create mode 100644 partner_ref_unique/models/__init__.py create mode 100644 partner_ref_unique/models/res_company.py create mode 100644 partner_ref_unique/models/res_partner.py create mode 100644 partner_ref_unique/static/description/icon.png create mode 100644 partner_ref_unique/views/res_company_view.xml diff --git a/partner_ref_unique/README.rst b/partner_ref_unique/README.rst new file mode 100644 index 000000000..7a8502323 --- /dev/null +++ b/partner_ref_unique/README.rst @@ -0,0 +1,34 @@ +.. 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 + +======================== +Partner unique reference +======================== + +Add an unique constraint to partner ref field + +Credits +======= + +Contributors +------------ + +* Antonio Espinosa + +Maintainer +---------- + +.. image:: http://www.antiun.com/images/logo-b.png + :alt: Antiun Ingeniería S.L. + :target: http://www.antiun.com + +This module is maintained by Antiun Ingeniería S.L. + +Antiun Ingeniería S.L. is an IT consulting company especialized in Odoo +and provides Odoo development, install, maintenance and hosting +services. + +To contribute to this module, please visit https://github.com/Antiun +or contact us at odoo@antiun.com + diff --git a/partner_ref_unique/__init__.py b/partner_ref_unique/__init__.py new file mode 100644 index 000000000..6b49297d7 --- /dev/null +++ b/partner_ref_unique/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# © 2016 Antiun Ingenieria S.L. - Antonio Espinosa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import models diff --git a/partner_ref_unique/__openerp__.py b/partner_ref_unique/__openerp__.py new file mode 100644 index 000000000..9a611b5eb --- /dev/null +++ b/partner_ref_unique/__openerp__.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# © 2016 Antiun Ingenieria S.L. - Antonio Espinosa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + "name": "Partner unique reference", + "summary": "Add an unique constraint to partner ref field", + "version": "8.0.1.0.0", + "category": "Customer Relationship Management", + "website": "http://www.antiun.com", + "author": "Antiun Ingeniería S.L.", + "license": "AGPL-3", + "application": False, + "installable": True, + # 'auto_install':False, + "external_dependencies": { + "python": [], + "bin": [], + }, + "depends": [ + "base", + ], + "data": [ + "views/res_company_view.xml", + ], + "demo": [ + ], + "qweb": [ + ] +} diff --git a/partner_ref_unique/models/__init__.py b/partner_ref_unique/models/__init__.py new file mode 100644 index 000000000..0b15881ca --- /dev/null +++ b/partner_ref_unique/models/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# © 2016 Antiun Ingenieria S.L. - Antonio Espinosa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import res_company +from . import res_partner diff --git a/partner_ref_unique/models/res_company.py b/partner_ref_unique/models/res_company.py new file mode 100644 index 000000000..5b0909de9 --- /dev/null +++ b/partner_ref_unique/models/res_company.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# © 2016 Antiun Ingenieria S.L. - Antonio Espinosa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields + + +class ResCompany(models.Model): + _inherit = "res.company" + + partner_ref_unique = fields.Selection( + selection=[ + ('none', 'None'), + ('companies', 'Only companies'), + ('all', 'All partners'), + ], string="Unique partner reference for", default="none") diff --git a/partner_ref_unique/models/res_partner.py b/partner_ref_unique/models/res_partner.py new file mode 100644 index 000000000..13b3284ef --- /dev/null +++ b/partner_ref_unique/models/res_partner.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# © 2016 Antiun Ingenieria S.L. - Antonio Espinosa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, api, _ +from openerp.exceptions import ValidationError + + +class ResPartner(models.Model): + _inherit = "res.partner" + + @api.multi + @api.constrains('ref', 'is_company', 'company_id') + def _check_ref(self): + for partner in self: + mode = partner.company_id.partner_ref_unique + if (partner.ref and ( + mode == 'all' or + (mode == 'companies' and partner.is_company))): + domain = [ + ('id', '!=', partner.id), + ('ref', '=', partner.ref), + ('customer', '=', True), + ] + if mode == 'companies': + domain.append(('is_company', '=', True)) + other = self.search(domain) + if other: + raise ValidationError( + _("This reference is equal to partner '%s'") % + other[0].display_name) diff --git a/partner_ref_unique/static/description/icon.png b/partner_ref_unique/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2d8a45c39a9b63943bc91733947e8c6a99c9babf GIT binary patch literal 11429 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 + + + + + + Add partner_ref_unique field + res.company + + + + + + + + + + + + + +