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..78fe5b245
--- /dev/null
+++ b/partner_firstname/__openerp__.py
@@ -0,0 +1,36 @@
+# -*- 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 first name last name on res.partner.
+The field name become a stored function field concatenating lastname, firstname
+""",
+ '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/i18n/de.po b/partner_firstname/i18n/de.po
new file mode 100644
index 000000000..5565405d5
--- /dev/null
+++ b/partner_firstname/i18n/de.po
@@ -0,0 +1,31 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * partner_firstname
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 7.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-04 10:36+0000\n"
+"PO-Revision-Date: 2013-02-04 10:36+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: partner_firstname
+#: field:res.partner,lastname:0
+msgid "Lastname"
+msgstr "Name"
+
+#. module: partner_firstname
+#: field:res.partner,firstname:0
+msgid "Firstname"
+msgstr "Vorname"
+
+#. module: partner_firstname
+#: model:ir.model,name:partner_firstname.model_res_partner
+msgid "Partner"
+msgstr "Partner"
diff --git a/partner_firstname/i18n/en.po b/partner_firstname/i18n/en.po
new file mode 100644
index 000000000..26e710fec
--- /dev/null
+++ b/partner_firstname/i18n/en.po
@@ -0,0 +1,32 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * partner_firstname
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 7.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-04 10:36+0000\n"
+"PO-Revision-Date: 2013-02-04 10:36+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: partner_firstname
+#: field:res.partner,lastname:0
+msgid "Lastname"
+msgstr "Lastname"
+
+#. module: partner_firstname
+#: field:res.partner,firstname:0
+msgid "Firstname"
+msgstr "Firstname"
+
+#. module: partner_firstname
+#: model:ir.model,name:partner_firstname.model_res_partner
+msgid "Partner"
+msgstr "Partner"
+
diff --git a/partner_firstname/i18n/fr.po b/partner_firstname/i18n/fr.po
new file mode 100644
index 000000000..5155afb0c
--- /dev/null
+++ b/partner_firstname/i18n/fr.po
@@ -0,0 +1,31 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * partner_firstname
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 7.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-04 10:36+0000\n"
+"PO-Revision-Date: 2013-02-04 10:36+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: partner_firstname
+#: field:res.partner,lastname:0
+msgid "Lastname"
+msgstr "Nom"
+
+#. module: partner_firstname
+#: field:res.partner,firstname:0
+msgid "Firstname"
+msgstr "Prénom"
+
+#. module: partner_firstname
+#: model:ir.model,name:partner_firstname.model_res_partner
+msgid "Partner"
+msgstr "Partenaire"
diff --git a/partner_firstname/partner.py b/partner_firstname/partner.py
new file mode 100644
index 000000000..31b54220a
--- /dev/null
+++ b/partner_firstname/partner.py
@@ -0,0 +1,49 @@
+# -*- 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 Limit 1')
+ 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
+
+ def _write_name(self, cursor, uid, partner_id, field_name, field_value, arg, context=None):
+ return self.write(cursor, uid, partner_id, {'lastname': field_value})
+
+ _columns = {'name': fields.function(_compute_name_custom, string="Name",
+ type="char", store=True,
+ select=True, readonly=True,
+ fnct_inv=_write_name),
+
+ 'firstname': fields.char("Firstname"),
+ 'lastname': fields.char("Lastname", required=True)}
diff --git a/partner_firstname/partner_view.xml b/partner_firstname/partner_view.xml
new file mode 100644
index 000000000..d58edf639
--- /dev/null
+++ b/partner_firstname/partner_view.xml
@@ -0,0 +1,37 @@
+
+
+
+ res.partner.simplified.form.firstname
+ res.partner
+
+
+
+
+
+
+
+
+
+
+
+
+ res.partner.form.firstname
+ res.partner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+