Partner Changesets

partner_changeset
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_changeset
VERSION
VERSION 1.0.2
CATEGORY
CATEGORYSales Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSYannick Vaucher, Stéphane Bidoul (ACSONE), OCA Transbot, Damien Crier, oca-travis, Weblate, OCA-git-bot, David
WEBSITE
WEBSITEhttp://www.camptocamp.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:55
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - sale
    - sales_team
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
    - account
    - product
    - decimal_precision
    - report
    - analytic
    - web_planner
    - procurement
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
res_partner_view_buttons res.partner.view.buttons res.partner xpath Inherits base.view_partner_form
view_changeset_field_rule_form changeset.field.rule.form changeset.field.rule form New
view_changeset_field_rule_search changeset.field.rule.search changeset.field.rule search New
view_changeset_field_rule_tree changeset.field.rule.tree changeset.field.rule tree New
view_res_partner_changeset_change_form res.partner.changeset.change.form res.partner.changeset.change form New
view_res_partner_changeset_form res.partner.changeset.form res.partner.changeset form New
view_res_partner_changeset_search res.partner.changeset.search res.partner.changeset search New
view_res_partner_changeset_tree res.partner.changeset.tree res.partner.changeset tree New
view_res_partner_filter res.partner.select res.partner filter Inherits base.view_res_partner_filter
Models touched (4)

New fields (3)
  • action Selection
    help='Auto: always apply a change.\nValidate: manually applied by an administrator.\nNever: change never applied.' required=True selection='_selection_action' string='Action'
  • field_id Many2one → ir.model.fields
    comodel_name='ir.model.fields' domain="[('model_id.model', '=', 'res.partner'), ('ttype', 'in', ('char', 'selection', 'date', 'datetime', 'float', 'integer', 'text', 'boolean', 'many2one')), ('readonly', '=', False)]" ondelete='cascade' required=True string='Field'
  • source_model_id Many2one → ir.model
    comodel_name='ir.model' domain=<expr> help='If a source model is defined, the rule will be applied only when the change is made from this origin. Rules without source model are global and applies to all backends.\nRules with a source model have precedence over global rules, but if a field has no rule with a source model, the global rule is used.' ondelete='cascade' string='Source Model'
Public methods (4)
  • create(self, vals)
    @api.model
  • get_rules(self, source_model_name)
    @api.model
    Return the rules for a model When a model is specified, it will return the rules for this model. Fields that have no rule for this model will use the global rules (those without source). The source model is the model which ask for a change, it will be for instance ``res.users``, ``lefac.backend`` or ``magellan.backend``. The second argument (``source_model_name``) is optional but cannot be an optional keyword argument otherwise it would not be in the key for the cache. The callers have to pass ``None`` if they want only global rules.
  • unlink(self)
    @api.multi
  • write(self, vals)
    @api.multi

New fields (2)
  • changeset_ids One2many → res.partner.changeset
    comodel_name='res.partner.changeset' inverse_name='partner_id' readonly=True string='Changesets'
  • count_pending_changesets Integer
    compute='_count_pending_changesets' search='_search_count_pending_changesets' string='Changes'
Public methods (1)
  • write(self, values)
    @api.multi

New fields (6)
  • change_ids One2many → res.partner.changeset.change
    comodel_name='res.partner.changeset.change' inverse_name='changeset_id' readonly=True string='Changes'
  • date Datetime
    default=fields.Datetime.now index=True readonly=True
  • note Text
  • partner_id Many2one → res.partner
    comodel_name='res.partner' index=True ondelete='cascade' readonly=True required=True string='Partner'
  • source Reference
    readonly=True selection='_reference_models' string='Source of the change'
  • state Selection
    compute='_compute_state' selection=[('draft', 'Pending'), ('done', 'Done')] store=True string='State'
Public methods (3)
  • add_changeset(self, record, values)
    @api.model
    Add a changeset on a partner By default, when a partner is modified by a user or by the system, the the changeset will follow the rules configured for the 'Users' / global rules. A caller should pass the following keys in the context: * ``__changeset_rules_source_model``: name of the model which asks for the change * ``__changeset_rules_source_id``: id of the record which asks for the change When the source model and id are not defined, the current user is considered as the origin of the change. Should be called before the execution of ``write`` on the record so we can keep track of the existing value and also because the returned values should be used for ``write`` as some of the values may have been removed. :param values: the values being written on the partner :type values: dict :returns: dict of values that should be wrote on the partner (fields with a 'Validate' or 'Never' rule are excluded)
  • apply(self)
    @api.multi
  • cancel(self)
    @api.multi

New fields (30)
  • changeset_id Many2one → res.partner.changeset
    comodel_name='res.partner.changeset' ondelete='cascade' readonly=True required=True string='Changeset'
  • field_id Many2one → ir.model.fields
    comodel_name='ir.model.fields' readonly=True required=True string='Field'
  • field_type Selection
    readonly=True related='field_id.ttype' string='Field Type'
  • new_value_boolean Boolean
    readonly=True string='New'
  • new_value_char Char
    readonly=True string='New'
  • new_value_date Date
    readonly=True string='New'
  • new_value_datetime Datetime
    readonly=True string='New'
  • new_value_display Char
    compute='_compute_value_display' string='New'
  • new_value_float Float
    readonly=True string='New'
  • new_value_integer Integer
    readonly=True string='New'
  • new_value_reference Reference
    readonly=True selection='_reference_models' string='New'
  • new_value_text Text
    readonly=True string='New'
  • old_value_boolean Boolean
    readonly=True string='Old'
  • old_value_char Char
    readonly=True string='Old'
  • old_value_date Date
    readonly=True string='Old'
  • old_value_datetime Datetime
    readonly=True string='Old'
  • old_value_float Float
    readonly=True string='Old'
  • old_value_integer Integer
    readonly=True string='Old'
  • old_value_reference Reference
    readonly=True selection='_reference_models' string='Old'
  • old_value_text Text
    readonly=True string='Old'
  • origin_value_boolean Boolean
    compute='_compute_origin_values' readonly=True string='Previous'
  • origin_value_char Char
    compute='_compute_origin_values' readonly=True string='Previous'
  • origin_value_date Date
    compute='_compute_origin_values' readonly=True string='Previous'
  • origin_value_datetime Datetime
    compute='_compute_origin_values' readonly=True string='Previous'
  • origin_value_display Char
    compute='_compute_value_display' string='Previous'
  • origin_value_float Float
    compute='_compute_origin_values' readonly=True string='Previous'
  • origin_value_integer Integer
    compute='_compute_origin_values' readonly=True string='Previous'
  • origin_value_reference Reference
    compute='_compute_origin_values' readonly=True selection='_reference_models' string='Previous'
  • origin_value_text Text
    compute='_compute_origin_values' readonly=True string='Previous'
  • state Selection
    default='draft' readonly=True required=True selection=[('draft', 'Pending'), ('done', 'Accepted'), ('cancel', 'Rejected')]
Public methods (7)
  • apply(self)
    @api.multi
    Apply the change on the changeset's partner It is optimized thus that it makes only one write on the partner per changeset if many changes are applied at once.
  • cancel(self)
    @api.multi
    Reject the change
  • fields_view_get(self, *args, **kwargs)
    @api.model
  • get_field_for_type(self, field, prefix)
    @api.model
  • get_new_value(self)
    @api.multi
  • get_origin_value(self)
    @api.multi
  • set_old_value(self)
    @api.multi
    Copy the value of the partner to the 'old' field
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_changeset
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYSales Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSmreficent, Stéphane Bidoul (ACSONE), OCA Transbot, Denis Leemann, oca-travis, Weblate
WEBSITE
WEBSITEhttp://www.camptocamp.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:19
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - sale
    - sales_team
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - account
    - product
    - decimal_precision
    - report
    - analytic
    - web_tip
    - web_planner
    - procurement
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
res_partner_view_buttons res.partner.view.buttons res.partner xpath Inherits base.view_partner_form
view_changeset_field_rule_form changeset.field.rule.form changeset.field.rule form New
view_changeset_field_rule_search changeset.field.rule.search changeset.field.rule search New
view_changeset_field_rule_tree changeset.field.rule.tree changeset.field.rule tree New
view_res_partner_changeset_change_form res.partner.changeset.change.form res.partner.changeset.change form New
view_res_partner_changeset_form res.partner.changeset.form res.partner.changeset form New
view_res_partner_changeset_search res.partner.changeset.search res.partner.changeset search New
view_res_partner_changeset_tree res.partner.changeset.tree res.partner.changeset tree New
view_res_partner_filter res.partner.select res.partner filter Inherits base.view_res_partner_filter
Models touched (4)

New fields (3)
  • action Selection
    help='Auto: always apply a change.\nValidate: manually applied by an administrator.\nNever: change never applied.' required=True selection='_selection_action' string='Action'
  • field_id Many2one → ir.model.fields
    comodel_name='ir.model.fields' domain="[('model_id.model', '=', 'res.partner'), ('ttype', 'in', ('char', 'selection', 'date', 'datetime', 'float', 'integer', 'text', 'boolean', 'many2one')), ('readonly', '=', False)]" ondelete='cascade' required=True string='Field'
  • source_model_id Many2one → ir.model
    comodel_name='ir.model' domain=<expr> help='If a source model is defined, the rule will be applied only when the change is made from this origin. Rules without source model are global and applies to all backends.\nRules with a source model have precedence over global rules, but if a field has no rule with a source model, the global rule is used.' ondelete='cascade' string='Source Model'
Public methods (4)
  • create(self, vals)
    @api.model
  • get_rules(self, source_model_name)
    @api.model
    Return the rules for a model When a model is specified, it will return the rules for this model. Fields that have no rule for this model will use the global rules (those without source). The source model is the model which ask for a change, it will be for instance ``res.users``, ``lefac.backend`` or ``magellan.backend``. The second argument (``source_model_name``) is optional but cannot be an optional keyword argument otherwise it would not be in the key for the cache. The callers have to pass ``None`` if they want only global rules.
  • unlink(self)
    @api.multi
  • write(self, vals)
    @api.multi

New fields (2)
  • changeset_ids One2many → res.partner.changeset
    comodel_name='res.partner.changeset' inverse_name='partner_id' readonly=True string='Changesets'
  • count_pending_changesets Integer
    compute='_compute_count_pending_changesets' search='_search_count_pending_changesets' string='Changes'
Public methods (1)
  • write(self, values)
    @api.multi

New fields (6)
  • change_ids One2many → res.partner.changeset.change
    comodel_name='res.partner.changeset.change' inverse_name='changeset_id' readonly=True string='Changes'
  • date Datetime
    default=fields.Datetime.now readonly=True select=True
  • note Text
  • partner_id Many2one → res.partner
    comodel_name='res.partner' ondelete='cascade' readonly=True required=True select=True string='Partner'
  • source Reference
    readonly=True selection='_reference_models' string='Source of the change'
  • state Selection
    compute='_compute_state' selection=[('draft', 'Pending'), ('done', 'Done')] store=True string='State'
Public methods (3)
  • add_changeset(self, record, values)
    @api.multi
    Add a changeset on a partner By default, when a partner is modified by a user or by the system, the the changeset will follow the rules configured for the 'Users' / global rules. A caller should pass the following keys in the context: * ``__changeset_rules_source_model``: name of the model which asks for the change * ``__changeset_rules_source_id``: id of the record which asks for the change When the source model and id are not defined, the current user is considered as the origin of the change. Should be called before the execution of ``write`` on the record so we can keep track of the existing value and also because the returned values should be used for ``write`` as some of the values may have been removed. :param values: the values being written on the partner :type values: dict :returns: dict of values that should be wrote on the partner (fields with a 'Validate' or 'Never' rule are excluded)
  • apply(self)
    @api.multi
  • cancel(self)
    @api.multi

New fields (30)
  • changeset_id Many2one → res.partner.changeset
    comodel_name='res.partner.changeset' ondelete='cascade' readonly=True required=True string='Changeset'
  • field_id Many2one → ir.model.fields
    comodel_name='ir.model.fields' readonly=True required=True string='Field'
  • field_type Selection
    readonly=True related='field_id.ttype' string='Field Type'
  • new_value_boolean Boolean
    readonly=True string='New'
  • new_value_char Char
    readonly=True string='New'
  • new_value_date Date
    readonly=True string='New'
  • new_value_datetime Datetime
    readonly=True string='New'
  • new_value_display Char
    compute='_compute_value_display' string='New'
  • new_value_float Float
    readonly=True string='New'
  • new_value_integer Integer
    readonly=True string='New'
  • new_value_reference Reference
    readonly=True selection='_reference_models' string='New'
  • new_value_text Text
    readonly=True string='New'
  • old_value_boolean Boolean
    readonly=True string='Old'
  • old_value_char Char
    readonly=True string='Old'
  • old_value_date Date
    readonly=True string='Old'
  • old_value_datetime Datetime
    readonly=True string='Old'
  • old_value_float Float
    readonly=True string='Old'
  • old_value_integer Integer
    readonly=True string='Old'
  • old_value_reference Reference
    readonly=True selection='_reference_models' string='Old'
  • old_value_text Text
    readonly=True string='Old'
  • origin_value_boolean Boolean
    compute='_compute_origin_values' readonly=True string='Previous'
  • origin_value_char Char
    compute='_compute_origin_values' readonly=True string='Previous'
  • origin_value_date Date
    compute='_compute_origin_values' readonly=True string='Previous'
  • origin_value_datetime Datetime
    compute='_compute_origin_values' readonly=True string='Previous'
  • origin_value_display Char
    compute='_compute_value_display' string='Previous'
  • origin_value_float Float
    compute='_compute_origin_values' readonly=True string='Previous'
  • origin_value_integer Integer
    compute='_compute_origin_values' readonly=True string='Previous'
  • origin_value_reference Reference
    compute='_compute_origin_values' readonly=True selection='_reference_models' string='Previous'
  • origin_value_text Text
    compute='_compute_origin_values' readonly=True string='Previous'
  • state Selection
    default='draft' readonly=True required=True selection=[('draft', 'Pending'), ('done', 'Accepted'), ('cancel', 'Rejected')]
Public methods (7)
  • apply(self)
    @api.multi
    Apply the change on the changeset's partner It is optimized thus that it makes only one write on the partner per changeset if many changes are applied at once.
  • cancel(self)
    @api.multi
    Reject the change
  • fields_view_get(self, *args, **kwargs)
  • get_field_for_type(self, field, prefix)
    @api.model
  • get_new_value(self)
    @api.multi
  • get_origin_value(self)
    @api.multi
  • set_old_value(self)
    @api.multi
    Copy the value of the partner to the 'old' field
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_changeset
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYSales Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSGuewen Baconnier, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis
WEBSITE
WEBSITEhttp://www.camptocamp.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:21
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
res_partner_view_buttons res.partner.view.buttons res.partner xpath Inherits base.view_partner_form
view_changeset_field_rule_form changeset.field.rule.form changeset.field.rule form New
view_changeset_field_rule_search changeset.field.rule.search changeset.field.rule search New
view_changeset_field_rule_tree changeset.field.rule.tree changeset.field.rule tree New
view_res_partner_changeset_change_form res.partner.changeset.change.form res.partner.changeset.change form New
view_res_partner_changeset_form res.partner.changeset.form res.partner.changeset form New
view_res_partner_changeset_search res.partner.changeset.search res.partner.changeset search New
view_res_partner_changeset_tree res.partner.changeset.tree res.partner.changeset tree New
view_res_partner_filter res.partner.select res.partner filter Inherits base.view_res_partner_filter
Models touched (4)

New fields (3)
  • action Selection
    help='Auto: always apply a change.\nValidate: manually applied by an administrator.\nNever: change never applied.' required=True selection='_selection_action' string='Action'
  • field_id Many2one → ir.model.fields
    comodel_name='ir.model.fields' domain="[('model_id.model', '=', 'res.partner'), ('ttype', 'in', ('char', 'selection', 'date', 'datetime', 'float', 'integer', 'text', 'boolean', 'many2one')), ('readonly', '=', False)]" ondelete='cascade' required=True string='Field'
  • source_model_id Many2one → ir.model
    comodel_name='ir.model' domain=<expr> help='If a source model is defined, the rule will be applied only when the change is made from this origin. Rules without source model are global and applies to all backends.\nRules with a source model have precedence over global rules, but if a field has no rule with a source model, the global rule is used.' ondelete='cascade' string='Source Model'
Public methods (4)
  • create(self, vals)
    @api.model
  • get_rules(self, source_model_name)
    @api.model
    Return the rules for a model When a model is specified, it will return the rules for this model. Fields that have no rule for this model will use the global rules (those without source). The source model is the model which ask for a change, it will be for instance ``res.users``, ``lefac.backend`` or ``magellan.backend``. The second argument (``source_model_name``) is optional but cannot be an optional keyword argument otherwise it would not be in the key for the cache. The callers have to pass ``None`` if they want only global rules.
  • unlink(self)
    @api.multi
  • write(self, vals)
    @api.multi

New fields (2)
  • changeset_ids One2many → res.partner.changeset
    comodel_name='res.partner.changeset' inverse_name='partner_id' readonly=True string='Changesets'
  • count_pending_changesets Integer
    compute='_count_pending_changesets' search='_search_count_pending_changesets' string='Changes'
Public methods (1)
  • write(self, values)
    @api.multi

New fields (6)
  • change_ids One2many → res.partner.changeset.change
    comodel_name='res.partner.changeset.change' inverse_name='changeset_id' readonly=True string='Changes'
  • date Datetime
    default=fields.Datetime.now readonly=True select=True
  • note Text
  • partner_id Many2one → res.partner
    comodel_name='res.partner' ondelete='cascade' readonly=True required=True select=True string='Partner'
  • source Reference
    readonly=True selection='_reference_models' string='Source of the change'
  • state Selection
    compute='_compute_state' selection=[('draft', 'Pending'), ('done', 'Done')] store=True string='State'
Public methods (3)
  • add_changeset(self, record, values)
    @api.multi
    Add a changeset on a partner By default, when a partner is modified by a user or by the system, the the changeset will follow the rules configured for the 'Users' / global rules. A caller should pass the following keys in the context: * ``__changeset_rules_source_model``: name of the model which asks for the change * ``__changeset_rules_source_id``: id of the record which asks for the change When the source model and id are not defined, the current user is considered as the origin of the change. Should be called before the execution of ``write`` on the record so we can keep track of the existing value and also because the returned values should be used for ``write`` as some of the values may have been removed. :param values: the values being written on the partner :type values: dict :returns: dict of values that should be wrote on the partner (fields with a 'Validate' or 'Never' rule are excluded)
  • apply(self)
    @api.multi
  • cancel(self)
    @api.multi

New fields (30)
  • changeset_id Many2one → res.partner.changeset
    comodel_name='res.partner.changeset' ondelete='cascade' readonly=True required=True string='Changeset'
  • field_id Many2one → ir.model.fields
    comodel_name='ir.model.fields' readonly=True required=True string='Field'
  • field_type Selection
    readonly=True related='field_id.ttype' string='Field Type'
  • new_value_boolean Boolean
    readonly=True string='New'
  • new_value_char Char
    readonly=True string='New'
  • new_value_date Date
    readonly=True string='New'
  • new_value_datetime Datetime
    readonly=True string='New'
  • new_value_display Char
    compute='_compute_value_display' string='New'
  • new_value_float Float
    readonly=True string='New'
  • new_value_integer Integer
    readonly=True string='New'
  • new_value_reference Reference
    readonly=True selection='_reference_models' string='New'
  • new_value_text Text
    readonly=True string='New'
  • old_value_boolean Boolean
    readonly=True string='Old'
  • old_value_char Char
    readonly=True string='Old'
  • old_value_date Date
    readonly=True string='Old'
  • old_value_datetime Datetime
    readonly=True string='Old'
  • old_value_float Float
    readonly=True string='Old'
  • old_value_integer Integer
    readonly=True string='Old'
  • old_value_reference Reference
    readonly=True selection='_reference_models' string='Old'
  • old_value_text Text
    readonly=True string='Old'
  • origin_value_boolean Boolean
    compute='_compute_origin_values' readonly=True string='Previous'
  • origin_value_char Char
    compute='_compute_origin_values' readonly=True string='Previous'
  • origin_value_date Date
    compute='_compute_origin_values' readonly=True string='Previous'
  • origin_value_datetime Datetime
    compute='_compute_origin_values' readonly=True string='Previous'
  • origin_value_display Char
    compute='_compute_value_display' string='Previous'
  • origin_value_float Float
    compute='_compute_origin_values' readonly=True string='Previous'
  • origin_value_integer Integer
    compute='_compute_origin_values' readonly=True string='Previous'
  • origin_value_reference Reference
    compute='_compute_origin_values' readonly=True selection='_reference_models' string='Previous'
  • origin_value_text Text
    compute='_compute_origin_values' readonly=True string='Previous'
  • state Selection
    default='draft' readonly=True required=True selection=[('draft', 'Pending'), ('done', 'Accepted'), ('cancel', 'Rejected')]
Public methods (7)
  • apply(self)
    @api.multi
    Apply the change on the changeset's partner It is optimized thus that it makes only one write on the partner per changeset if many changes are applied at once.
  • cancel(self)
    @api.multi
    Reject the change
  • fields_view_get(self, *args, **kwargs)
  • get_field_for_type(self, field, prefix)
    @api.model
  • get_new_value(self)
    @api.multi
  • get_origin_value(self)
    @api.multi
  • set_old_value(self)
    @api.multi
    Copy the value of the partner to the 'old' field