From d4b9b953e58a6d3fd6968235eb977882b9656be8 Mon Sep 17 00:00:00 2001 From: Thomas Rehn Date: Wed, 13 Nov 2013 14:51:48 +0100 Subject: [PATCH 01/10] migrate 'base_partner_sequence' from lp:openobject-addons/extra-trunk to OpenERP v7.0 --- base_partner_sequence/__init__.py | 23 ++++++++++ base_partner_sequence/__openerp__.py | 45 +++++++++++++++++++ .../i18n/base_partner_sequence.pot | 21 +++++++++ base_partner_sequence/i18n/de.po | 21 +++++++++ base_partner_sequence/partner_sequence.py | 42 +++++++++++++++++ base_partner_sequence/partner_sequence.xml | 21 +++++++++ 6 files changed, 173 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_sequence.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..9c107a729 --- /dev/null +++ b/base_partner_sequence/__init__.py @@ -0,0 +1,23 @@ +# -*- 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 . +# +############################################################################## +import partner_sequence +# 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..65619fcd6 --- /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, using the defined sequence. + This module is a migration of the original base_partner_sequence + addon to OpenERP version 7.0. + """, + "demo_xml" : [], + "init_xml" : ['partner_sequence.xml'], + "update_xml" : [], + "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_sequence.py b/base_partner_sequence/partner_sequence.py new file mode 100644 index 000000000..b19d3afe0 --- /dev/null +++ b/base_partner_sequence/partner_sequence.py @@ -0,0 +1,42 @@ +# -*- 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 osv import osv, fields +import logging +_logger = logging.getLogger(__name__) + +class partner_sequence(osv.osv): + _inherit = 'res.partner' + def create(self, cr, uid, vals, context={}): + # only assign a 'ref' if it is not a child object + # (such as a shipping/invoice address) + if vals.get('parent_id', 0) > 0: + vals['ref'] = self.pool.get('ir.sequence').get(cr, uid, 'res.partner') + res = super(partner_sequence, self).create(cr, uid, vals, context) + return res + _columns = { + 'ref': fields.char('Code', size=64, readonly=True), + } +partner_sequence() +# 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 + + + + From 0186d4513d8b9175d89607caaa3832ec40932fd4 Mon Sep 17 00:00:00 2001 From: Thomas Rehn Date: Wed, 13 Nov 2013 16:18:37 +0100 Subject: [PATCH 02/10] improve adherance to coding conventions --- base_partner_sequence/__init__.py | 7 +++--- base_partner_sequence/__openerp__.py | 25 +++++++++---------- .../{partner_sequence.py => partner.py} | 23 +++++++++-------- 3 files changed, 27 insertions(+), 28 deletions(-) rename base_partner_sequence/{partner_sequence.py => partner.py} (83%) diff --git a/base_partner_sequence/__init__.py b/base_partner_sequence/__init__.py index 9c107a729..40b7591a3 100644 --- a/base_partner_sequence/__init__.py +++ b/base_partner_sequence/__init__.py @@ -1,6 +1,6 @@ # -*- encoding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). # @@ -15,9 +15,8 @@ # 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 . +# along with this program. If not, see . # ############################################################################## -import partner_sequence +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 index 65619fcd6..f7aec863e 100644 --- a/base_partner_sequence/__openerp__.py +++ b/base_partner_sequence/__openerp__.py @@ -1,6 +1,6 @@ # -*- encoding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). # Copyright (C) 2013 initOS GmbH & Co. KG (). @@ -17,29 +17,28 @@ # 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 . +# 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", + "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", + "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, using the defined sequence. + create a new partner (not a contact), using the defined sequence. This module is a migration of the original base_partner_sequence addon to OpenERP version 7.0. """, - "demo_xml" : [], - "init_xml" : ['partner_sequence.xml'], - "update_xml" : [], + "demo_xml": [], + "init_xml": ['partner_sequence.xml'], + "update_xml": [], "active": False, "installable": True } # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - diff --git a/base_partner_sequence/partner_sequence.py b/base_partner_sequence/partner.py similarity index 83% rename from base_partner_sequence/partner_sequence.py rename to base_partner_sequence/partner.py index b19d3afe0..36b715f09 100644 --- a/base_partner_sequence/partner_sequence.py +++ b/base_partner_sequence/partner.py @@ -1,6 +1,6 @@ # -*- encoding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). # Copyright (C) 2013 initOS GmbH & Co. KG (). @@ -17,26 +17,27 @@ # 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 . +# along with this program. If not, see . # ############################################################################## -from osv import osv, fields -import logging -_logger = logging.getLogger(__name__) +from openerp.osv import orm, fields + + +class ResPartner(orm.Model): + """Assigns 'ref' from a sequence on creation""" -class partner_sequence(osv.osv): _inherit = 'res.partner' + def create(self, cr, uid, vals, context={}): # only assign a 'ref' if it is not a child object # (such as a shipping/invoice address) - if vals.get('parent_id', 0) > 0: + if not vals.get('parent_id'): vals['ref'] = self.pool.get('ir.sequence').get(cr, uid, 'res.partner') - res = super(partner_sequence, self).create(cr, uid, vals, context) - return res + return super(ResPartner, self).create(cr, uid, vals, context) + _columns = { 'ref': fields.char('Code', size=64, readonly=True), } -partner_sequence() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 83ad6507e27aeea92f2aa29afebae858bf1bf984 Mon Sep 17 00:00:00 2001 From: Thomas Rehn Date: Thu, 14 Nov 2013 16:20:40 +0100 Subject: [PATCH 03/10] update keys in __openerp__ dictionary --- base_partner_sequence/__openerp__.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/base_partner_sequence/__openerp__.py b/base_partner_sequence/__openerp__.py index f7aec863e..e985cd9ad 100644 --- a/base_partner_sequence/__openerp__.py +++ b/base_partner_sequence/__openerp__.py @@ -35,9 +35,8 @@ This module is a migration of the original base_partner_sequence addon to OpenERP version 7.0. """, - "demo_xml": [], - "init_xml": ['partner_sequence.xml'], - "update_xml": [], + "data": ['partner_sequence.xml'], + "demo": [], "active": False, "installable": True } From c3e8b9781061065f0c080068db6f9427d8be81eb Mon Sep 17 00:00:00 2001 From: Thomas Rehn Date: Thu, 14 Nov 2013 16:21:40 +0100 Subject: [PATCH 04/10] implement 'copy' method, fix translation --- base_partner_sequence/partner.py | 35 ++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/base_partner_sequence/partner.py b/base_partner_sequence/partner.py index 36b715f09..2123f3a7e 100644 --- a/base_partner_sequence/partner.py +++ b/base_partner_sequence/partner.py @@ -25,19 +25,42 @@ from openerp.osv import orm, fields class ResPartner(orm.Model): - """Assigns 'ref' from a sequence on creation""" + """Assigns 'ref' from a sequence on creation and copying""" _inherit = 'res.partner' - def create(self, cr, uid, vals, context={}): - # only assign a 'ref' if it is not a child object - # (such as a shipping/invoice address) - if not vals.get('parent_id'): + def create(self, cr, uid, vals, context=None): + context = context or {} + if not vals.get('ref') and self._needsRef(cr, uid, None, vals, 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, None, 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 not a child object + # (such as a shipping/invoice address) + if id: + vals = self.read(cr, uid, id, ['parent_id'], context=context) + return not vals.get('parent_id') + _columns = { - 'ref': fields.char('Code', size=64, readonly=True), + 'ref': fields.char('Reference', size=64, readonly=True), } # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From c4f21c19612be2e0fab732aa292e08597aff4817 Mon Sep 17 00:00:00 2001 From: Thomas Rehn Date: Fri, 15 Nov 2013 11:09:34 +0100 Subject: [PATCH 05/10] change the scope of sequences to customers and suppliers --- base_partner_sequence/__init__.py | 2 +- base_partner_sequence/__openerp__.py | 4 +++- base_partner_sequence/partner.py | 12 ++++++------ 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/base_partner_sequence/__init__.py b/base_partner_sequence/__init__.py index 40b7591a3..a2cd05adc 100644 --- a/base_partner_sequence/__init__.py +++ b/base_partner_sequence/__init__.py @@ -18,5 +18,5 @@ # along with this program. If not, see . # ############################################################################## -import partner +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 index e985cd9ad..6fee88060 100644 --- a/base_partner_sequence/__openerp__.py +++ b/base_partner_sequence/__openerp__.py @@ -31,7 +31,9 @@ "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 partner (not a contact), using the defined sequence. + 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. """, diff --git a/base_partner_sequence/partner.py b/base_partner_sequence/partner.py index 2123f3a7e..066f491cb 100644 --- a/base_partner_sequence/partner.py +++ b/base_partner_sequence/partner.py @@ -31,13 +31,13 @@ class ResPartner(orm.Model): def create(self, cr, uid, vals, context=None): context = context or {} - if not vals.get('ref') and self._needsRef(cr, uid, None, vals, context): + 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, None, context): + 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) @@ -53,11 +53,11 @@ class ResPartner(orm.Model): """ if not vals and not id: raise Exception('Either field values or an id must be provided.') - # only assign a 'ref' if it is not a child object - # (such as a shipping/invoice address) + # 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'], context=context) - return not vals.get('parent_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), From 9d87571040b158daa6eaba6a8677de78bedee31f Mon Sep 17 00:00:00 2001 From: Thomas Rehn Date: Fri, 15 Nov 2013 11:14:58 +0100 Subject: [PATCH 06/10] whitespace cleanup --- base_partner_sequence/partner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/base_partner_sequence/partner.py b/base_partner_sequence/partner.py index 066f491cb..1b0d734e1 100644 --- a/base_partner_sequence/partner.py +++ b/base_partner_sequence/partner.py @@ -53,10 +53,10 @@ class ResPartner(orm.Model): """ 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 + # 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) + 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 = { From 0fb9e0125f3538996092f76cb0ecc66b6b53c956 Mon Sep 17 00:00:00 2001 From: Stefan Rijnhart Date: Tue, 19 Nov 2013 11:34:50 +0100 Subject: [PATCH 07/10] [IMP] Adapt to commercial partners [FIX] Replacd call to deprecated method --- base_partner_sequence/__openerp__.py | 7 +++++-- base_partner_sequence/partner.py | 19 +++++++++++++------ base_partner_sequence/partner_view.xml | 20 ++++++++++++++++++++ 3 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 base_partner_sequence/partner_view.xml diff --git a/base_partner_sequence/__openerp__.py b/base_partner_sequence/__openerp__.py index 6fee88060..98294fe65 100644 --- a/base_partner_sequence/__openerp__.py +++ b/base_partner_sequence/__openerp__.py @@ -23,7 +23,7 @@ { "name": "Add a sequence on customers' code", "version": "1.1", - "author": "initOS GmbH & Co. KG", + "author": "Tiny/initOS GmbH & Co. KG", "category": "Generic Modules/Base", "website": "http://www.initos.com", "depends": ["base"], @@ -37,7 +37,10 @@ This module is a migration of the original base_partner_sequence addon to OpenERP version 7.0. """, - "data": ['partner_sequence.xml'], + "data": [ + 'partner_sequence.xml', + 'partner_view.xml', + ], "demo": [], "active": False, "installable": True diff --git a/base_partner_sequence/partner.py b/base_partner_sequence/partner.py index 1b0d734e1..674ffa66e 100644 --- a/base_partner_sequence/partner.py +++ b/base_partner_sequence/partner.py @@ -32,13 +32,13 @@ class ResPartner(orm.Model): 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') + 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 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) + 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): @@ -53,14 +53,21 @@ class ResPartner(orm.Model): """ 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) + # only assign a 'ref' to commercial partners 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')) + 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_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)]} + + + + + + + From 473af33520aaf7367761c0ff95bd2fa88640e1b6 Mon Sep 17 00:00:00 2001 From: Stefan Rijnhart Date: Tue, 19 Nov 2013 11:59:15 +0100 Subject: [PATCH 08/10] [IMP] Module description --- base_partner_sequence/__openerp__.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/base_partner_sequence/__openerp__.py b/base_partner_sequence/__openerp__.py index 98294fe65..0b7d60a8f 100644 --- a/base_partner_sequence/__openerp__.py +++ b/base_partner_sequence/__openerp__.py @@ -31,7 +31,13 @@ "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. + 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 From 7ee59af62f3dfb9c3240fc4e52b9076a6266317a Mon Sep 17 00:00:00 2001 From: Thomas Rehn Date: Tue, 26 Nov 2013 09:29:02 +0100 Subject: [PATCH 09/10] shortened long lines --- base_partner_sequence/partner.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/base_partner_sequence/partner.py b/base_partner_sequence/partner.py index 674ffa66e..0378b2537 100644 --- a/base_partner_sequence/partner.py +++ b/base_partner_sequence/partner.py @@ -31,15 +31,21 @@ class ResPartner(orm.Model): 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') + 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 not default.get('ref') and 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) + if not default.get('ref') and 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): """ @@ -49,13 +55,15 @@ class ResPartner(orm.Model): :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' + :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) + vals = self.read(cr, uid, id, ['parent_id', 'is_company'], + context=context) return vals.get('is_company') or not vals.get('parent_id') _columns = { From 587cad2e996adb78044b68c122c2780d18b6d384 Mon Sep 17 00:00:00 2001 From: Thomas Rehn Date: Mon, 2 Dec 2013 17:15:47 +0100 Subject: [PATCH 10/10] fix a bug in copying an object with a ref --- base_partner_sequence/partner.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/base_partner_sequence/partner.py b/base_partner_sequence/partner.py index 0378b2537..190391fcc 100644 --- a/base_partner_sequence/partner.py +++ b/base_partner_sequence/partner.py @@ -39,8 +39,7 @@ class ResPartner(orm.Model): 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): + 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)