From 6d46ef65ad0581229deda29efc2c39d55ea814ac Mon Sep 17 00:00:00 2001 From: Thomas Rehn Date: Wed, 13 Nov 2013 14:51:48 +0100 Subject: [PATCH] [MIG] base_partner_sequence: from lp:openobject-addons/extra-trunk to OpenERP v7.0 * Conventions * implement 'copy' method, fix translation * change the scope of sequences to customers and suppliers --- base_partner_sequence/__init__.py | 22 +++++++ base_partner_sequence/__openerp__.py | 45 +++++++++++++ .../i18n/base_partner_sequence.pot | 21 ++++++ base_partner_sequence/i18n/de.po | 21 ++++++ base_partner_sequence/partner.py | 66 +++++++++++++++++++ base_partner_sequence/partner_sequence.xml | 21 ++++++ 6 files changed, 196 insertions(+) create mode 100644 base_partner_sequence/__init__.py create mode 100644 base_partner_sequence/__openerp__.py create mode 100644 base_partner_sequence/i18n/base_partner_sequence.pot create mode 100644 base_partner_sequence/i18n/de.po create mode 100644 base_partner_sequence/partner.py create mode 100644 base_partner_sequence/partner_sequence.xml 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..6fee88060 --- /dev/null +++ b/base_partner_sequence/__openerp__.py @@ -0,0 +1,45 @@ +# -*- 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": "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 customer or supplier, using the defined sequence. + 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'], + "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..1b0d734e1 --- /dev/null +++ b/base_partner_sequence/partner.py @@ -0,0 +1,66 @@ +# -*- 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').get(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 not default.get('ref') and self._needsRef(cr, uid, id=id, context=context): + default['ref'] = self.pool.get('ir.sequence').get(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' if it is a customer or supplier and + # if it not a child object (such as a shipping/invoice address) + if id: + vals = self.read(cr, uid, id, ['parent_id', 'customer', 'supplier'], context=context) + return not vals.get('parent_id') and (vals.get('customer') or vals.get('supplier')) + + _columns = { + 'ref': fields.char('Reference', size=64, readonly=True), + } + +# 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 + + + +