diff --git a/base_partner_sequence/__init__.py b/base_partner_sequence/__init__.py new file mode 100644 index 000000000..a2cd05adc --- /dev/null +++ b/base_partner_sequence/__init__.py @@ -0,0 +1,22 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2009 Tiny SPRL (). +# +# 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 . +# +############################################################################## +from . import partner +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/base_partner_sequence/__openerp__.py b/base_partner_sequence/__openerp__.py new file mode 100644 index 000000000..0b7d60a8f --- /dev/null +++ b/base_partner_sequence/__openerp__.py @@ -0,0 +1,54 @@ +# -*- 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 . +# +############################################################################## +{ + "name": "Add a sequence on customers' code", + "version": "1.1", + "author": "Tiny/initOS GmbH & Co. KG", + "category": "Generic Modules/Base", + "website": "http://www.initos.com", + "depends": ["base"], + "summary": "Sets customer's code from a sequence", + "description": """ + This module adds the possibility to define a sequence for + the partner code. This code is then set as default when you + create a new commercial partner, using the defined sequence. + + The reference field is treated as a commercial field, i.e. it + is managed from the commercial partner and then propagated to + the partner's contacts. The field is visible on the contacts, + but it can only be modified from the commercial partner. + + No codes 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. + """, + "data": [ + 'partner_sequence.xml', + 'partner_view.xml', + ], + "demo": [], + "active": False, + "installable": True +} +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/base_partner_sequence/i18n/base_partner_sequence.pot b/base_partner_sequence/i18n/base_partner_sequence.pot new file mode 100644 index 000000000..769df21c8 --- /dev/null +++ b/base_partner_sequence/i18n/base_partner_sequence.pot @@ -0,0 +1,21 @@ +# 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/i18n/de.po b/base_partner_sequence/i18n/de.po new file mode 100644 index 000000000..b2d209e70 --- /dev/null +++ b/base_partner_sequence/i18n/de.po @@ -0,0 +1,21 @@ +# 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 "Partner" + diff --git a/base_partner_sequence/partner.py b/base_partner_sequence/partner.py new file mode 100644 index 000000000..190391fcc --- /dev/null +++ b/base_partner_sequence/partner.py @@ -0,0 +1,80 @@ +# -*- 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 . +# +############################################################################## + +from openerp.osv import orm, fields + + +class ResPartner(orm.Model): + """Assigns 'ref' from a sequence on creation and copying""" + + _inherit = 'res.partner' + + def create(self, cr, uid, vals, context=None): + context = context or {} + if not vals.get('ref') and self._needsRef(cr, uid, vals=vals, + context=context): + vals['ref'] = self.pool.get('ir.sequence')\ + .next_by_code(cr, uid, 'res.partner') + return super(ResPartner, self).create(cr, uid, vals, context) + + def copy(self, cr, uid, id, default=None, context=None): + default = default or {} + if self._needsRef(cr, uid, id=id, context=context): + default['ref'] = self.pool.get('ir.sequence')\ + .next_by_code(cr, uid, 'res.partner', + context=context) + return super(ResPartner, self).copy(cr, uid, id, default, + context=context) + + def _needsRef(self, cr, uid, id=None, vals=None, context=None): + """ + Checks whether a sequence value should be assigned to a partner's 'ref' + + :param cr: database cursor + :param uid: current user id + :param 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' + """ + if not vals and not id: + raise Exception('Either field values or an id must be provided.') + # only assign a 'ref' to commercial partners + if id: + vals = self.read(cr, uid, id, ['parent_id', 'is_company'], + context=context) + return vals.get('is_company') or not vals.get('parent_id') + + _columns = { + 'ref': fields.char('Reference', size=64, readonly=True), + } + + def _commercial_fields(self, cr, uid, context=None): + """ + Make the partner reference a field that is propagated + to the partner's contacts + """ + return super(ResPartner, self)._commercial_fields( + cr, uid, context=context) + ['ref'] + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/base_partner_sequence/partner_sequence.xml b/base_partner_sequence/partner_sequence.xml new file mode 100644 index 000000000..76f3d8bb7 --- /dev/null +++ b/base_partner_sequence/partner_sequence.xml @@ -0,0 +1,21 @@ + + + + + # + # Sequences for res.partner + # + + + Partner code + res.partner + + + Partner code + res.partner + P/ + 5 + + + + diff --git a/base_partner_sequence/partner_view.xml b/base_partner_sequence/partner_view.xml new file mode 100644 index 000000000..00dcb16bb --- /dev/null +++ b/base_partner_sequence/partner_view.xml @@ -0,0 +1,20 @@ + + + + + + Make partner reference readonly when non-commercial + res.partner + + + + { + 'readonly': [('is_company', '=', False), + ('parent_id', '!=', False)]} + + + + + + +