From 9f7b9f9cf227a7d3ff86c6c19f3a66f27873c9f7 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 14 Jan 2013 12:06:45 +0100 Subject: [PATCH] [ADD] partner_firstname addons --- partner_firstname/__init__.py | 20 +++++++++ partner_firstname/__openerp__.py | 37 +++++++++++++++++ partner_firstname/partner.py | 65 ++++++++++++++++++++++++++++++ partner_firstname/partner_view.xml | 32 +++++++++++++++ 4 files changed, 154 insertions(+) create mode 100644 partner_firstname/__init__.py create mode 100644 partner_firstname/__openerp__.py create mode 100644 partner_firstname/partner.py create mode 100644 partner_firstname/partner_view.xml diff --git a/partner_firstname/__init__.py b/partner_firstname/__init__.py new file mode 100644 index 000000000..716a72b0b --- /dev/null +++ b/partner_firstname/__init__.py @@ -0,0 +1,20 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# Author: Nicolas Bessi. Copyright Camptocamp SA +# +# 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 diff --git a/partner_firstname/__openerp__.py b/partner_firstname/__openerp__.py new file mode 100644 index 000000000..ef84583f8 --- /dev/null +++ b/partner_firstname/__openerp__.py @@ -0,0 +1,37 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# Author: Nicolas Bessi. Copyright Camptocamp SA +# +# 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': 'Partner first name, last name', + 'description': """Split firstname and lastname on res.partner. +The field name becomes a stored function field concatenating lastname, firstname. +The create write function are overwritten to support compatibility +""", + 'version': '1.0', + 'author': 'Camptocamp', + 'category': 'MISC', + 'website': 'http://www.camptocamp.com', + 'depends': ['base'], + 'data': ['partner_view.xml'], + 'demo': [], + 'test': [], + 'auto_install': False, + 'installable': True, + 'images': [] +} diff --git a/partner_firstname/partner.py b/partner_firstname/partner.py new file mode 100644 index 000000000..a7f354cab --- /dev/null +++ b/partner_firstname/partner.py @@ -0,0 +1,65 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# Author: Nicolas Bessi. Copyright Camptocamp SA +# +# 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.orm import Model, fields + + +class ResPartner(Model): + """Adds lastname and firstname, name become a stored function field""" + + _inherit = 'res.partner' + + def init(self, cursor): + cursor.execute('SELECT id FROM res_partner WHERE lastname IS NOT NULL') + if not cursor.fetchone(): + cursor.execute('UPDATE res_partner set lastname = name WHERE name IS NOT NULL') + + def _compute_name_custom(self, cursor, uid, ids, fname, arg, context=None): + res = {} + for rec in self.read(cursor, uid, ids, ['firstname', 'lastname']): + name = rec['lastname'] + (u" " + rec['firstname'] if rec['firstname'] else u"") + res[rec['id']] = name + return res + + _columns = {'name': fields.function(_compute_name_custom, string="Name", + type="char", store=True, + select=True, readonly=True), + + 'firstname': fields.char("Firstname"), + 'lastname': fields.char("Lastname", required=True)} + + def create(self, cursor, uid, vals, context=None): + """To support data backward compatibility""" + to_use = vals + if vals.get('name'): + corr_vals = vals.copy() + corr_vals['lastname'] = corr_vals['name'] + del(corr_vals['name']) + to_use = corr_vals + return super(ResPartner, self).create(cursor, uid, to_use, context=context) + + def write(self, cursor, uid, ids, vals, context=None): + """To support data backward compatibility""" + to_use = vals + if vals.get('name'): + corr_vals = vals.copy() + corr_vals['lastname'] = corr_vals['name'] + del(corr_vals['name']) + to_use = corr_vals + return super(ResPartner, self).write(cursor, uid, ids, to_use, context=context) diff --git a/partner_firstname/partner_view.xml b/partner_firstname/partner_view.xml new file mode 100644 index 000000000..4052da4bb --- /dev/null +++ b/partner_firstname/partner_view.xml @@ -0,0 +1,32 @@ + + + + res.partner.simplified.form.firstname + res.partner + + + + + + + + + + + + + res.partner.form.firstname + res.partner + + + + + + + + + + + + +