| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/partner-contact |
| GIT | |
| GIT | https://github.com/OCA/partner-contact.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/partner-contact/tree/18.0/partner_archive_propagate |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Partner Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Therp BV |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Therp BV |
| COMMITTERS | |
| COMMITTERS | OCA-git-bot, Nikos Tsirintanis, oca-ci |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/partner-contact |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:10 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base_setup - base - web - bus - web_tour - html_editor |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | ## Partner Archive Propagation This module extends the native archiving mechanism for partners. When archiving a company or parent contact, it will also handle its descendants according to business rules — with user control and safeguards. ### Features - Adds a new **"Archive Contact and Children"** button on the Partner form. - Shows a **wizard** listing contact-type descendants before archiving. - Automatically skips descendants linked to active users. - Adds a technical Many2one field (propagated_from_id) that records which parent partner caused the automatic archiving, making propagation fully traceable and reversible. - Ensures automatic unarchive propagation. - Includes a system setting to enforce propagation even for non-UI actions (imports, RPC, automated jobs, etc.). |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
view_archive_propagate_wizard_form |
res.partner.archive.propagate.wizard.form | res.partner.archive.propagate.wizard | form | New |
view_partner_form_inherit_archive_propagate |
res.partner.form.archive.propagate | res.partner | xpath | Inherits base.view_partner_form |
view_res_config_settings_partner_archive |
res.config.settings.view.form.partner.archive | res.config.settings | block | Inherits base_setup.res_config_settings_view_form |
partner_archive_force_outside_ui
Boolean
config_parameter='partner_archive_propagate.force_outside_ui'
default=False
help='If enabled, archiving a partner via any non-UI method (imports, RPC, automated) will also archive all descendants and mark them as propagated.'
string='Force propagation outside UI'
No public methods.
propagated_from_id
Many2one → res.partner
help='Technical field. Set when this partner was archived automatically because the source partner was archived. Cleared again when it is unarchived by the opposite propagation.'
index=True
string='Archived Due To'
args: 'res.partner'
show_prop_wizard_button
Boolean
compute='_compute_show_prop_wizard_button'
help='Show or hide the wizard button, depending on child_ids'
action_archive(self)
action_archive_with_contacts(self)
write(self, vals)
email
Char
related='partner_id.email'
name
Char
related='partner_id.name'
partner_id
Many2one → res.partner
required=True
string='Contact'
args: 'res.partner'
phone
Char
related='partner_id.phone'
wizard_id
Many2one → res.partner.archive.propagate.wizard
ondelete='cascade'
required=True
args: 'res.partner.archive.propagate.wizard'
No public methods.
line_ids
One2many → res.partner.archive.propagate.line
string='Contacts to archive'
args: 'res.partner.archive.propagate.line', 'wizard_id'
partner_id
Many2one → res.partner
readonly=True
required=True
args: 'res.partner'
action_confirm(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/partner-contact |
| GIT | |
| GIT | https://github.com/OCA/partner-contact.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/partner-contact/tree/16.0/partner_archive_propagate |
| VERSION | |
| VERSION | 1.2.0 |
| CATEGORY | |
| CATEGORY | Partner Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Therp BV |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Therp BV |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, Nikos Tsirintanis, oca-ci |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/partner-contact |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:43 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
view_archive_propagate_wizard_form |
res.partner.archive.propagate.wizard.form | res.partner.archive.propagate.wizard | form | New |
view_partner_form_inherit_archive_propagate |
res.partner.form.archive.propagate | res.partner | xpath | Inherits base.view_partner_form |
view_res_config_settings_partner_archive |
res.config.settings.view.form.partner.archive | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
partner_archive_force_outside_ui
Boolean
config_parameter='partner_archive_propagate.force_outside_ui'
default=False
help='If enabled, archiving a partner via any non-UI method (imports, RPC, automated) will also archive all descendants and mark them as propagated.'
string='Force propagation outside UI'
No public methods.
propagated_from_id
Many2one → res.partner
help='Technical field. Set when this partner was archived automatically because the source partner was archived. Cleared again when it is unarchived by the opposite propagation.'
index=True
string='Archived Due To'
args: 'res.partner'
show_prop_wizard_button
Boolean
compute='_compute_show_prop_wizard_button'
help='Show or hide the wizard button, depending on child_ids'
action_archive(self)
action_archive_with_contacts(self)
write(self, vals)
email
Char
related='partner_id.email'
name
Char
related='partner_id.name'
partner_id
Many2one → res.partner
required=True
string='Contact'
args: 'res.partner'
phone
Char
related='partner_id.phone'
wizard_id
Many2one → res.partner.archive.propagate.wizard
ondelete='cascade'
required=True
args: 'res.partner.archive.propagate.wizard'
No public methods.
line_ids
One2many → res.partner.archive.propagate.line
string='Contacts to archive'
args: 'res.partner.archive.propagate.line', 'wizard_id'
partner_id
Many2one → res.partner
readonly=True
required=True
args: 'res.partner'
action_confirm(self)