Partner first name and last name

partner_firstname
REPOSITORY
REPOSITORYOCA/partner-contact
GIT
GIThttps://github.com/OCA/partner-contact.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/partner-contact/tree/19.0/partner_firstname
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYExtra Tools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Camptocamp, GRAP, ACSONE SA/NV, LasLabs, Grupo ESOC Ingeniería de Servicios, DynApps NV
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Camptocamp, GRAP, ACSONE SA/NV, LasLabs, Grupo ESOC Ingeniería de Servicios, DynApps NV
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, AEstLo
WEBSITE
WEBSITEhttps://github.com/OCA/partner-contact
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:47
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_setup
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module was written to extend the functionality of contacts to
support having separate last name and first name.

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
res_config_settings_view_form Add partner_names_order config parameter res.config.settings xpath Inherits base_setup.res_config_settings_view_form
view_partner_form res.partner xpath Inherits base.view_partner_form
view_partner_simple_form res.partner xpath Inherits base.view_partner_simple_form
view_users_form Add firstname and surnames res.users xpath Inherits base.view_users_form
Models touched (4)

New fields (3)
  • firstname_required Boolean
    compute='_compute_firstname_lastname_required'
  • form_has_lastname_first Boolean
    compute='_compute_form_has_lastname_first'
  • lastname_required Boolean
    compute='_compute_firstname_lastname_required'
Public methods (2)
  • default_get(self, fields_list)
    @api.model
    Invert name when getting default values.
  • name_fields_in_vals(self, vals)
    @api.model
    Method to check if any name fields are in `vals`.

New fields (3)
  • partner_names_order Selection
    config_parameter='partner_names_order' default=<expr> help='Order to compose partner fullname' inverse='_inverse_partner_names_order' required=True selection='_partner_names_order_selection'
  • partner_names_order_changed Boolean
    config_parameter='partner_names_order_changed'
  • partner_names_required_fields Selection
    config_parameter='partner_firstname.required_fields' help='Define which fields are required or not' required=True selection='_partner_names_required_fields_selection'
Public methods (1)
  • action_recalculate_partners_name(self)

New fields (3)
  • firstname Char
    index=True args: 'First name'
  • lastname Char
    index=True args: 'Last name'
  • name Char
    compute='_compute_name' inverse='_inverse_name_after_cleaning_whitespace' readonly=False required=False store=True
Public methods (3)
  • copy(self, default=None)
    Ensure partners are copied right. Odoo adds ``(copy)`` to the end of :attr:`~.name`, but that would get ignored in :meth:`~.create` because it also copies explicitly firstname and lastname fields.
  • create(self, vals_list)
    @api.model_create_multi
    Add inverted names at creation if unavailable. Also, remove the full name from `vals` and context if the partner is an individual and is being created with any name fields, as the name must be computed from the provided name parts; otherwise, the name fields will be computed from the `name` again, when calling its inverse method. Note that, to avoid deleting the 'default_name' context for all partners when it's not appropriate, we must call `create` for each partner individually with the correct context.
  • get_extra_default_copy_values(self)
    Method to add '(copy)' suffix to lastname or firstname, depending on name order configuration.

New fields (0)

No new fields.

Public methods (1)
  • copy(self, default=None)
REPOSITORY
REPOSITORYOCA/partner-contact
GIT
GIThttps://github.com/OCA/partner-contact.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/partner-contact/tree/18.0/partner_firstname
VERSION
VERSION 6.2.0
CATEGORY
CATEGORYExtra Tools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Camptocamp, GRAP, ACSONE SA/NV, LasLabs, Grupo ESOC Ingeniería de Servicios, DynApps NV
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Camptocamp, GRAP, ACSONE SA/NV, LasLabs, Grupo ESOC Ingeniería de Servicios, DynApps NV
COMMITTERS
COMMITTERSSylvain LE GAL, Weblate, OCA-git-bot, oca-ci, Adam Heinz, Christopher Rogos, AEstLo, Joachim David, Kristian Solkær Gade Sørensen, chetan shende, Michele Di Croce
WEBSITE
WEBSITEhttps://github.com/OCA/partner-contact
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:10
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_setup
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module was written to extend the functionality of contacts to
support having separate last name and first name.

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
res_config_settings_view_form Add partner_names_order config parameter res.config.settings xpath Inherits base_setup.res_config_settings_view_form
view_partner_form res.partner xpath Inherits base.view_partner_form
view_partner_simple_form res.partner xpath Inherits base.view_partner_simple_form
view_users_form Add firstname and surnames res.users xpath Inherits base.view_users_form
Models touched (4)

New fields (3)
  • firstname_required Boolean
    compute='_compute_firstname_lastname_required'
  • form_has_lastname_first Boolean
    compute='_compute_form_has_lastname_first'
  • lastname_required Boolean
    compute='_compute_firstname_lastname_required'
Public methods (2)
  • default_get(self, fields_list)
    @api.model
    Invert name when getting default values.
  • name_fields_in_vals(self, vals)
    @api.model
    Method to check if any name fields are in `vals`.

New fields (3)
  • partner_names_order Selection
    config_parameter='partner_names_order' default=<expr> help='Order to compose partner fullname' inverse='_inverse_partner_names_order' required=True selection='_partner_names_order_selection'
  • partner_names_order_changed Boolean
    config_parameter='partner_names_order_changed'
  • partner_names_required_fields Selection
    config_parameter='partner_firstname.required_fields' help='Define which fields are required or not' required=True selection='_partner_names_required_fields_selection'
Public methods (1)
  • action_recalculate_partners_name(self)

New fields (3)
  • firstname Char
    index=True args: 'First name'
  • lastname Char
    index=True args: 'Last name'
  • name Char
    compute='_compute_name' inverse='_inverse_name_after_cleaning_whitespace' readonly=False required=False store=True
Public methods (3)
  • copy_data(self, default=None)
    Ensure partners are copied right. Odoo adds ``(copy)`` to the end of :attr:`~.name`, but that would get ignored in :meth:`~.create` because it also copies explicitly firstname and lastname fields.
  • create(self, vals_list)
    @api.model_create_multi
    Add inverted names at creation if unavailable. Also, remove the full name from `vals` and context if the partner is an individual and is being created with any name fields, as the name must be computed from the provided name parts; otherwise, the name fields will be computed from the `name` again, when calling its inverse method. Note that, to avoid deleting the 'default_name' context for all partners when it's not appropriate, we must call `create` for each partner individually with the correct context.
  • get_extra_default_copy_values(self, default=None)
    Method to add '(copy)' suffix to lastname or firstname, depending on name order configuration.

New fields (0)

No new fields.

Public methods (1)
  • copy(self, default=None)
REPOSITORY
REPOSITORYOCA/partner-contact
GIT
GIThttps://github.com/OCA/partner-contact.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/partner-contact/tree/17.0/partner_firstname
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYExtra Tools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Camptocamp, ACSONE SA/NV, LasLabs, Grupo ESOC Ingeniería de Servicios, DynApps NV
MAINTAINERS
MAINTAINERSCamptocamp, Acsone
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Andrea Manenti, Marcos Oitaben, Yannis Burkhalter, AEstLo, rpinset
WEBSITE
WEBSITEhttps://github.com/OCA/partner-contact
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:04
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_setup
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module was written to extend the functionality of contacts to
support having separate last name and first name.

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
res_config_settings_view_form Add partner_names_order config parameter res.config.settings xpath Inherits base_setup.res_config_settings_view_form
view_partner_form res.partner xpath Inherits base.view_partner_form
view_partner_simple_form res.partner xpath Inherits base.view_partner_simple_form
view_users_form Add firstname and surnames res.users xpath Inherits base.view_users_form
Models touched (3)

New fields (2)
  • partner_names_order Selection
    config_parameter='partner_names_order' default=<expr> help='Order to compose partner fullname' inverse='_inverse_partner_names_order' required=True selection='_partner_names_order_selection'
  • partner_names_order_changed Boolean
    config_parameter='partner_names_order_changed'
Public methods (1)
  • action_recalculate_partners_name(self)

New fields (3)
  • firstname Char
    index=True args: 'First name'
  • lastname Char
    index=True args: 'Last name'
  • name Char
    compute='_compute_name' inverse='_inverse_name_after_cleaning_whitespace' readonly=False required=False store=True
Public methods (5)
  • copy(self, default=None)
    Ensure partners are copied right. Odoo adds ``(copy)`` to the end of :attr:`~.name`, but that would get ignored in :meth:`~.create` because it also copies explicitly firstname and lastname fields.
  • create(self, vals_list)
    @api.model_create_multi
    Add inverted names at creation if unavailable. Also, remove the full name from `vals` and context if the partner is an individual and is being created with any name fields, as the name must be computed from the provided name parts; otherwise, the name fields will be computed from the `name` again, when calling its inverse method. Note that, to avoid deleting the 'default_name' context for all partners when it's not appropriate, we must call `create` for each partner individually with the correct context.
  • default_get(self, fields_list)
    @api.model
    Invert name when getting default values.
  • get_extra_default_copy_values(self, order)
    Method to add '(copy)' suffix to lastname or firstname, depending on name order configuration.
  • name_fields_in_vals(self, vals)
    @api.model
    Method to check if any name fields are in `vals`.

New fields (0)

No new fields.

Public methods (2)
  • copy(self, default=None)
  • default_get(self, fields_list)
    @api.model
    Invert name when getting default values.
REPOSITORY
REPOSITORYOCA/partner-contact
GIT
GIThttps://github.com/OCA/partner-contact.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/partner-contact/tree/16.0/partner_firstname
VERSION
VERSION 1.0.4
CATEGORY
CATEGORYExtra Tools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Camptocamp, ACSONE SA/NV, LasLabs, Grupo ESOC Ingeniería de Servicios, DynApps NV
MAINTAINERS
MAINTAINERSCamptocamp, Acsone
COMMITTERS
COMMITTERSSylvain LE GAL, OCA Transbot, Weblate, OCA-git-bot, Simone Rubino, oca-ci, Benoit Aimont, payen000
WEBSITE
WEBSITEhttps://github.com/OCA/partner-contact
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:43
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_setup
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
res_config_settings_view_form Add partner_names_order config parameter res.config.settings xpath Inherits base_setup.res_config_settings_view_form
res_partner_view_form_private res.partner field Inherits base.res_partner_view_form_private
view_partner_form res.partner xpath Inherits base.view_partner_form
view_partner_simple_form res.partner xpath Inherits base.view_partner_simple_form
view_users_form Add firstname and surnames res.users xpath Inherits base.view_users_form
Models touched (3)

New fields (2)
  • partner_names_order Selection
    config_parameter='partner_names_order' default=<expr> help='Order to compose partner fullname' inverse='_inverse_partner_names_order' required=True selection='_partner_names_order_selection'
  • partner_names_order_changed Boolean
    config_parameter='partner_names_order_changed'
Public methods (1)
  • action_recalculate_partners_name(self)

New fields (3)
  • firstname Char
    index=True args: 'First name'
  • lastname Char
    index=True args: 'Last name'
  • name Char
    compute='_compute_name' inverse='_inverse_name_after_cleaning_whitespace' readonly=False required=False store=True
Public methods (5)
  • copy(self, default=None)
    Ensure partners are copied right. Odoo adds ``(copy)`` to the end of :attr:`~.name`, but that would get ignored in :meth:`~.create` because it also copies explicitly firstname and lastname fields.
  • create(self, vals_list)
    @api.model_create_multi
    Add inverted names at creation if unavailable. Also, remove the full name from `vals` and context if the partner is an individual and is being created with any name fields, as the name must be computed from the provided name parts; otherwise, the name fields will be computed from the `name` again, when calling its inverse method. Note that, to avoid deleting the 'default_name' context for all partners when it's not appropriate, we must call `create` for each partner individually with the correct context.
  • default_get(self, fields_list)
    @api.model
    Invert name when getting default values.
  • get_extra_default_copy_values(self, order)
    Method to add '(copy)' suffix to lastname or firstname, depending on name order configuration.
  • name_fields_in_vals(self, vals)
    @api.model
    Method to check if any name fields are in `vals`.

New fields (0)

No new fields.

Public methods (2)
  • copy(self, default=None)
  • default_get(self, fields_list)
    @api.model
    Invert name when getting default values.
REPOSITORY
REPOSITORYOCA/partner-contact
GIT
GIThttps://github.com/OCA/partner-contact.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/partner-contact/tree/15.0/partner_firstname
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYExtra Tools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Camptocamp, ACSONE SA/NV, LasLabs, Grupo ESOC Ingeniería de Servicios, DynApps NV
MAINTAINERS
MAINTAINERSCamptocamp, Acsone
COMMITTERS
COMMITTERSGitHub, OCA Transbot, Weblate, OCA-git-bot, oca-ci, oca-git-bot, bjorn.billen
WEBSITE
WEBSITEhttps://github.com/OCA/partner-contact
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:32
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_setup
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
res_config_settings_view_form Add partner_names_order config parameter res.config.settings xpath Inherits base_setup.res_config_settings_view_form
view_partner_form res.partner xpath Inherits base.view_partner_form
view_partner_simple_form res.partner xpath Inherits base.view_partner_simple_form
view_users_form Add firstname and surnames res.users xpath Inherits base.view_users_form
Models touched (3)

New fields (2)
  • partner_names_order Selection
    config_parameter='partner_names_order' default=<expr> help='Order to compose partner fullname' inverse='_inverse_partner_names_order' required=True selection='_partner_names_order_selection'
  • partner_names_order_changed Boolean
    config_parameter='partner_names_order_changed'
Public methods (1)
  • action_recalculate_partners_name(self)

New fields (3)
  • firstname Char
    index=True args: 'First name'
  • lastname Char
    index=True args: 'Last name'
  • name Char
    compute='_compute_name' inverse='_inverse_name_after_cleaning_whitespace' readonly=False required=False store=True
Public methods (3)
  • copy(self, default=None)
    Ensure partners are copied right. Odoo adds ``(copy)`` to the end of :attr:`~.name`, but that would get ignored in :meth:`~.create` because it also copies explicitly firstname and lastname fields.
  • create(self, vals)
    @api.model
    Add inverted names at creation if unavailable.
  • default_get(self, fields_list)
    @api.model
    Invert name when getting default values.

New fields (0)

No new fields.

Public methods (2)
  • copy(self, default=None)
  • default_get(self, fields_list)
    @api.model
    Invert name when getting default values.
REPOSITORY
REPOSITORYOCA/partner-contact
GIT
GIThttps://github.com/OCA/partner-contact.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/partner-contact/tree/14.0/partner_firstname
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYExtra Tools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Camptocamp, ACSONE SA/NV, LasLabs, Grupo ESOC Ingeniería de Servicios
MAINTAINERS
MAINTAINERSCamptocamp, Acsone
COMMITTERS
COMMITTERSLuis Torres, Andrea, OCA Transbot, oca-travis, Weblate, OCA-git-bot, payen000, oca-git-bot, Moises Lopez moylop260@vauxoo.com
WEBSITE
WEBSITEhttps://github.com/OCA/partner-contact
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:56
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_setup
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
res_config_settings_view_form Add partner_names_order config parameter res.config.settings xpath Inherits base_setup.res_config_settings_view_form
view_partner_form_firstname Add firstname and surnames res.partner data Inherits base.view_partner_form
view_partner_simple_form_firstname Add firstname and lastname res.partner data Inherits base.view_partner_simple_form
view_users_form Add firstname and surnames res.users data Inherits base.view_users_form
Models touched (3)

New fields (2)
  • partner_names_order Selection
    config_parameter='partner_names_order' default=<expr> help='Order to compose partner fullname' inverse='_inverse_partner_names_order' required=True selection='_partner_names_order_selection' string='Partner names order'
  • partner_names_order_changed Boolean
    config_parameter='partner_names_order_changed'
Public methods (1)
  • action_recalculate_partners_name(self)

New fields (3)
  • firstname Char
    index=True args: 'First name'
  • lastname Char
    index=True args: 'Last name'
  • name Char
    compute='_compute_name' inverse='_inverse_name_after_cleaning_whitespace' readonly=False required=False store=True
Public methods (3)
  • copy(self, default=None)
    Ensure partners are copied right. Odoo adds ``(copy)`` to the end of :attr:`~.name`, but that would get ignored in :meth:`~.create` because it also copies explicitly firstname and lastname fields.
  • create(self, vals)
    @api.model
    Add inverted names at creation if unavailable.
  • default_get(self, fields_list)
    @api.model
    Invert name when getting default values.

New fields (0)

No new fields.

Public methods (2)
  • copy(self, default=None)
  • default_get(self, fields_list)
    @api.model
    Invert name when getting default values.
REPOSITORY
REPOSITORYOCA/partner-contact
GIT
GIThttps://github.com/OCA/partner-contact.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/partner-contact/tree/13.0/partner_firstname
VERSION
VERSION 1.0.2
CATEGORY
CATEGORYExtra Tools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Camptocamp, ACSONE SA/NV, LasLabs, Grupo ESOC Ingeniería de Servicios
MAINTAINERS
MAINTAINERSCamptocamp, Acsone
COMMITTERS
COMMITTERSRonald Portier, Laurent Mignon (ACSONE), Andrea, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Raf Ven, laurent.corron
WEBSITE
WEBSITEhttps://github.com/OCA/partner-contact
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_setup
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
res_config_settings_view_form Add partner_names_order config parameter res.config.settings xpath Inherits base_setup.res_config_settings_view_form
view_partner_form_firstname Add firstname and surnames res.partner data Inherits base.view_partner_form
view_partner_simple_form_firstname Add firstname and lastname res.partner data Inherits base.view_partner_simple_form
view_users_form Add firstname and surnames res.users data Inherits base.view_users_form
Models touched (3)

New fields (2)
  • partner_names_order Selection
    config_parameter='partner_names_order' default=<expr> help='Order to compose partner fullname' inverse='_inverse_partner_names_order' required=True selection='_partner_names_order_selection' string='Partner names order'
  • partner_names_order_changed Boolean
    config_parameter='partner_names_order_changed'
Public methods (1)
  • action_recalculate_partners_name(self)

New fields (3)
  • firstname Char
    index=True args: 'First name'
  • lastname Char
    index=True args: 'Last name'
  • name Char
    compute='_compute_name' inverse='_inverse_name_after_cleaning_whitespace' readonly=False required=False store=True
Public methods (3)
  • copy(self, default=None)
    Ensure partners are copied right. Odoo adds ``(copy)`` to the end of :attr:`~.name`, but that would get ignored in :meth:`~.create` because it also copies explicitly firstname and lastname fields.
  • create(self, vals)
    @api.model
    Add inverted names at creation if unavailable.
  • default_get(self, fields_list)
    @api.model
    Invert name when getting default values.

New fields (0)

No new fields.

Public methods (2)
  • copy(self, default=None)
  • default_get(self, fields_list)
    @api.model
    Invert name when getting default values.
REPOSITORY
REPOSITORYOCA/partner-contact
GIT
GIThttps://github.com/OCA/partner-contact.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/partner-contact/tree/12.0/partner_firstname
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYExtra Tools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Camptocamp, ACSONE SA/NV, LasLabs, Grupo ESOC Ingeniería de Servicios
MAINTAINERS
MAINTAINERSCamptocamp, Acsone
COMMITTERS
COMMITTERSMaxime Chambreuil, GitHub, Jairo Llopis, OCA Transbot, David Dufresne, oca-travis, Weblate, OCA-git-bot, Simone Orsi, Lara Baggio
WEBSITE
WEBSITEhttps://github.com/OCA/partner-contact
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:15
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_setup
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_general_configuration Add partner_names_order config parameter res.config.settings xpath Inherits base_setup.res_config_settings_view_form
view_partner_form_firstname Add firstname and surnames res.partner data Inherits base.view_partner_form
view_partner_simple_form_firstname Add firstname and lastname res.partner data Inherits base.view_partner_simple_form
view_users_form Add firstname and surnames res.users data Inherits base.view_users_form
Models touched (3)

New fields (2)
  • partner_names_order Selection
    help='Order to compose partner fullname' required=True selection='_partner_names_order_selection' string='Partner names order'
  • partner_names_order_changed Boolean
    compute='_compute_names_order_changed'
Public methods (3)
  • action_recalculate_partners_name(self)
    @api.multi
  • get_values(self)
    @api.model
  • set_values(self)
    @api.multi

New fields (3)
  • firstname Char
    index=True args: 'First name'
  • lastname Char
    index=True args: 'Last name'
  • name Char
    compute='_compute_name' inverse='_inverse_name_after_cleaning_whitespace' required=False store=True
Public methods (3)
  • copy(self, default=None)
    @api.multi
    Ensure partners are copied right. Odoo adds ``(copy)`` to the end of :attr:`~.name`, but that would get ignored in :meth:`~.create` because it also copies explicitly firstname and lastname fields.
  • create(self, vals)
    @api.model
    Add inverted names at creation if unavailable.
  • default_get(self, fields_list)
    @api.model
    Invert name when getting default values.

New fields (0)

No new fields.

Public methods (2)
  • copy(self, default=None)
    @api.multi
  • default_get(self, fields_list)
    @api.model
    Invert name when getting default values.
REPOSITORY
REPOSITORYOCA/partner-contact
GIT
GIThttps://github.com/OCA/partner-contact.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/partner-contact/tree/11.0/partner_firstname
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYExtra Tools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Camptocamp, ACSONE SA/NV, LasLabs, Grupo ESOC Ingeniería de Servicios
MAINTAINERS
MAINTAINERSCamptocamp, Acsone
COMMITTERS
COMMITTERSJairo Llopis, Enric Tobella, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis, Weblate
WEBSITE
WEBSITEhttps://odoo-community.org/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:23:56
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_setup
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_general_configuration Add partner_names_order config parameter res.config.settings xpath Inherits base_setup.res_config_settings_view_form
view_partner_form_firstname Add firstname and surnames res.partner data Inherits base.view_partner_form
view_partner_simple_form_firstname Add firstname and lastname res.partner data Inherits base.view_partner_simple_form
view_users_form Add firstname and surnames res.users data Inherits base.view_users_form
Models touched (3)

New fields (2)
  • partner_names_order Selection
    help='Order to compose partner fullname' required=True selection='_partner_names_order_selection' string='Partner names order'
  • partner_names_order_changed Boolean
    compute='_compute_names_order_changed'
Public methods (3)
  • action_recalculate_partners_name(self)
    @api.multi
  • get_values(self)
    @api.model
  • set_values(self)
    @api.multi

New fields (3)
  • firstname Char
    index=True args: 'First name'
  • lastname Char
    index=True args: 'Last name'
  • name Char
    compute='_compute_name' inverse='_inverse_name_after_cleaning_whitespace' required=False store=True
Public methods (3)
  • copy(self, default=None)
    @api.multi
    Ensure partners are copied right. Odoo adds ``(copy)`` to the end of :attr:`~.name`, but that would get ignored in :meth:`~.create` because it also copies explicitly firstname and lastname fields.
  • create(self, vals)
    @api.model
    Add inverted names at creation if unavailable.
  • default_get(self, fields_list)
    @api.model
    Invert name when getting default values.

New fields (0)

No new fields.

Public methods (1)
  • default_get(self, fields_list)
    @api.model
    Invert name when getting default values.
REPOSITORY
REPOSITORYOCA/partner-contact
GIT
GIThttps://github.com/OCA/partner-contact.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/partner-contact/tree/10.0/partner_firstname
VERSION
VERSION 2.1.4
CATEGORY
CATEGORYExtra Tools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Camptocamp, ACSONE SA/NV, LasLabs, Grupo ESOC Ingeniería de Servicios
MAINTAINERS
MAINTAINERSCamptocamp, Acsone
COMMITTERS
COMMITTERSHolger Brunn, Pedro M. Baeza, GitHub, Luis Torres, Stéphane Bidoul (ACSONE), Alex Comba, OCA Transbot, Dave Lasley, oca-travis, Weblate, OCA-git-bot, Marcel Much, Wolfgang Pichler
WEBSITE
WEBSITEhttps://odoo-community.org/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:55
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_setup
    - base
    - web_kanban
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_general_configuration Add partner_names_order config parameter base.config.settings xpath Inherits base_setup.view_general_configuration
view_partner_form_firstname Add firstname and surnames res.partner data Inherits base.view_partner_form
view_partner_simple_form_firstname Add firstname and lastname res.partner data Inherits base.view_partner_simple_form
view_users_form Add firstname and surnames res.users data Inherits base.view_users_form
Models touched (3)

New fields (2)
  • partner_names_order Selection
    help='Order to compose partner fullname' required=True selection='_partner_names_order_selection' string='Partner names order'
  • partner_names_order_changed Boolean
    compute='_compute_names_order_changed'
Public methods (3)
  • action_recalculate_partners_name(self)
    @api.multi
  • get_default_partner_names_order(self, fields)
    @api.model
  • set_partner_names_order(self)
    @api.multi

New fields (3)
  • firstname Char
    index=True args: 'First name'
  • lastname Char
    index=True args: 'Last name'
  • name Char
    compute='_compute_name' inverse='_inverse_name_after_cleaning_whitespace' required=False store=True
Public methods (4)
  • copy(self, default=None)
    @api.multi
    Ensure partners are copied right. Odoo adds ``(copy)`` to the end of :attr:`~.name`, but that would get ignored in :meth:`~.create` because it also copies explicitly firstname and lastname fields.
  • create(self, vals)
    @api.model
    Add inverted names at creation if unavailable.
  • default_get(self, fields_list)
    @api.model
    Invert name when getting default values.
  • onchange(self, values, field_name, field_onchange)
    @api.multi
    when one of our name fields is changed, suppress updates to the connected user's (user_ids) name, as this in turn would cause another write on the partner's name, with possible mistakes in parsing the parts

New fields (0)

No new fields.

Public methods (2)
  • copy(self, default=None)
    @api.multi
  • default_get(self, fields_list)
    @api.model
    Invert name when getting default values.
REPOSITORY
REPOSITORYOCA/partner-contact
GIT
GIThttps://github.com/OCA/partner-contact.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/partner-contact/tree/9.0/partner_firstname
VERSION
VERSION 2.0.0
CATEGORY
CATEGORYExtra Tools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Camptocamp, ACSONE SA/NV, Grupo ESOC Ingeniería de Servicios
MAINTAINERS
MAINTAINERSCamptocamp, Acsone
COMMITTERS
COMMITTERSYannick Vaucher, Paulius Sladkevičius, Pedro M. Baeza, GitHub, Stéphane Bidoul (ACSONE), OCA Transbot, Emanuel Cino, oca-travis, Weblate, Rafael Blasco, Marcel Much
WEBSITE
WEBSITEhttps://odoo-community.org
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:19
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_setup
    - base
    - web_kanban
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_general_configuration Add partner_names_order config parameter base.config.settings xpath Inherits base_setup.view_general_configuration
view_partner_form_firstname Add firstname and surnames res.partner data Inherits base.view_partner_form
view_partner_simple_form_firstname Add firstname and lastname res.partner data Inherits base.view_partner_simple_form
view_users_form Add firstname and surnames res.users data Inherits base.view_users_form
Models touched (3)

New fields (2)
  • partner_names_order Selection
    help='Order to compose partner fullname' required=True selection='_partner_names_order_selection' string='Partner names order'
  • partner_names_order_changed Boolean
    compute='_compute_names_order_changed' readonly=True
Public methods (3)
  • action_recalculate_partners_name(self)
    @api.multi
  • get_default_partner_names_order(self)
    @api.multi
  • set_partner_names_order(self)
    @api.multi

New fields (3)
  • firstname Char
    args: 'First name'
  • lastname Char
    args: 'Last name'
  • name Char
    compute='_compute_name' inverse='_inverse_name_after_cleaning_whitespace' required=False store=True
Public methods (3)
  • copy(self, default=None)
    @api.multi
    Ensure partners are copied right. Odoo adds ``(copy)`` to the end of :attr:`~.name`, but that would get ignored in :meth:`~.create` because it also copies explicitly firstname and lastname fields.
  • create(self, vals)
    @api.model
    Add inverted names at creation if unavailable.
  • default_get(self, fields_list)
    @api.model
    Invert name when getting default values.

New fields (0)

No new fields.

Public methods (1)
  • default_get(self, fields_list)
    @api.model
    Invert name when getting default values.
REPOSITORY
REPOSITORYOCA/partner-contact
GIT
GIThttps://github.com/OCA/partner-contact.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/partner-contact/tree/8.0/partner_firstname
VERSION
VERSION 2.2.1
CATEGORY
CATEGORYExtra Tools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp, ACSONE SA/NV, Grupo ESOC Ingeniería de Servicios
MAINTAINERS
MAINTAINERSCamptocamp, Acsone
COMMITTERS
COMMITTERSStéphane Bidoul, Yannick Vaucher, Lorenzo Battistini, Alexandre Fayolle, Sandy Carter, Holger Brunn, Pedro M. Baeza, GitHub, Jairo Llopis, Stéphane Bidoul (ACSONE), Alex Comba, Ronald Portier (Therp BV), OCA Transbot, Leonardo Donelli, Adrien Peiffer (ACSONE), David Beal, Dave Lasley, oca-travis, Weblate, Antonio Espinosa, Rafael Blasco, Sylvain Van Hoof, Hans Henrik Gabelgaard
WEBSITE
WEBSITEhttps://odoo-community.org
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:21
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_setup
    - base
    - web_kanban
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_general_configuration Add partner_names_order config parameter base.config.settings xpath Inherits base_setup.view_general_configuration
view_partner_form_firstname Add firstname and surnames res.partner data Inherits base.view_partner_form
view_partner_simple_form_firstname Add firstname and lastname res.partner data Inherits base.view_partner_simple_form
view_users_form Add firstname and surnames res.users data Inherits base.view_users_form
Models touched (2)

New fields (2)
  • partner_names_order Selection
    help='Order to compose partner fullname' required=True selection='_partner_names_order_selection' string='Partner names order'
  • partner_names_order_changed Boolean
    compute='_compute_names_order_changed' readonly=True
Public methods (3)
  • action_recalculate_partners_name(self)
    @api.multi
  • get_default_partner_names_order(self)
    @api.multi
  • set_partner_names_order(self)
    @api.multi

New fields (3)
  • firstname Char
    args: 'First name'
  • lastname Char
    args: 'Last name'
  • name Char
    compute='_compute_name' inverse='_inverse_name_after_cleaning_whitespace' required=False store=True
Public methods (4)
  • copy(self, default=None)
    @api.multi
    Ensure partners are copied right. Odoo adds ``(copy)`` to the end of :attr:`~.name`, but that would get ignored in :meth:`~.create` because it also copies explicitly firstname and lastname fields.
  • create(self, vals)
    @api.model
    Add inverted names at creation if unavailable.
  • default_get(self, fields_list)
    @api.model
    Invert name when getting default values.
  • write(self, vals)
    @api.multi
REPOSITORY
REPOSITORYOCA/partner-contact
GIT
GIThttps://github.com/OCA/partner-contact.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/partner-contact/tree/7.0/partner_firstname
VERSION
VERSION 1.2.0
CATEGORY
CATEGORYExtra Tools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSCamptocamp, Acsone
COMMITTERS
COMMITTERSAlexis de Lattre, Yannick Vaucher, Guewen Baconnier, Alexandre Fayolle, Paulius Sladkevičius, Sandy Carter, Holger Brunn, Olivier LAURENT, Maxime Chambreuil, Pedro M. Baeza, Stéphane Bidoul (ACSONE), unknown, Vincent Renaville, OCA Transbot, steveferry, Jonathan Nemry
WEBSITE
WEBSITEhttp://www.camptocamp.com, http://www.acsone.eu
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:07:13
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module splits first name and last name for non company partners
====================================================================

The field 'name' becomes a stored function field concatenating lastname and
firstname
Note: in version 7.0, installing this module invalidates a yaml test in the
'edi' module

Contributors
============
Jonathan Nemry <jonathan.nemry@acsone.eu>
Olivier Laurent <olivier.laurent@acsone.eu>

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
view_partner_form_firstname res.partner.form.firstname res.partner field Inherits base.view_partner_form
view_partner_simple_form_firstname res.partner.simplified.form.firstname res.partner field Inherits base.view_partner_simple_form
view_users_form res.users.form.firstname res.users label Inherits base.view_users_form
Models touched (2)

New fields (0)

No new fields.

Public methods (3)
  • copy_data(self, cr, uid, _id, default=None, context=None)
    Avoid to replicate the firstname into the name when duplicating a partner
  • create(self, cursor, uid, vals, context=None)
    To support data backward compatibility we have to keep this overwrite even if we use fnct_inv: otherwise we can't create entry because lastname is mandatory and module will not install if there is demo data
  • init(self, cursor)

New fields (0)

No new fields.

Public methods (2)
  • copy_data(self, cr, uid, _id, default=None, context=None)
    Avoid to replicate the firstname into the name when duplicating a user
  • create(self, cr, user, vals, context=None)
    To support data backward compatibility we have to keep this overwrite even if we use fnct_inv: otherwise we can't create entry because lastname is mandatory and module will not install if there is demo data This fixes the unittests in stock when partner_firstname is installed