| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/agreement |
| GIT | |
| GIT | https://github.com/OCA/agreement.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/agreement/tree/19.0/agreement |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Contract |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion, Yves Goldberg (Ygol Internetwork) |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion, Yves Goldberg (Ygol Internetwork) |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, oca-ci, Vang - Nguyen Phu |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/agreement |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:40:48 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour - html_editor |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module adds an *Agreement* object with the following properties: - code, - name, - link to a partner, - signature date. - start date. - end date. Optionally, you can also enable using: \* agreement types \* a flag to set an agreement as a template agreement (Install agreement_sale to get the configuration settings for these). |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
agreement_form |
agreement.form | agreement | form | New |
agreement_search |
agreement.search | agreement | search | New |
agreement_tree |
agreement.list | agreement | list | New |
agreement_type_form_view |
Agreement Type Form | agreement.type | form | New |
agreement_type_list_view |
Agreement Type List | agreement.type | list | New |
agreement_type_search |
agreement.type.search | agreement.type | search | New |
partner_form |
res.partner | xpath | Inherits base.view_partner_form |
active
Boolean
default=True
agreement_type_id
Many2one → agreement.type
help='Select the type of agreement'
string='Agreement Type'
args: 'agreement.type'
code
Char
required=True
tracking=True
commercial_partner_id
Many2one → res.partner
compute='_compute_commercial_partner_id'
precompute=True
store=True
string='Commercial Entity'
tracking=True
args: 'res.partner'
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
domain
Selection
compute='_compute_domain'
readonly=False
selection='_domain_selection'
store=True
tracking=True
end_date
Date
tracking=True
is_template
Boolean
copy=False
help="Set if the agreement is a template. Template agreements don't require a partner."
string='Is a Template?'
name
Char
required=True
tracking=True
partner_id
Many2one → res.partner
ondelete='restrict'
string='Partner'
tracking=True
args: 'res.partner'
signature_date
Date
tracking=True
start_date
Date
tracking=True
copy(self, default=None)
active
Boolean
default=True
domain
Selection
default='sale'
args: '_domain_selection'
name
Char
required=True
No public methods.
agreement_ids
One2many → agreement
string='Agreements'
args: 'agreement', 'partner_id'
agreements_count
Integer
compute='_compute_agreements_count'
action_open_agreement(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/agreement |
| GIT | |
| GIT | https://github.com/OCA/agreement.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/agreement/tree/18.0/agreement |
| VERSION | |
| VERSION | 1.2.0 |
| CATEGORY | |
| CATEGORY | Contract |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion, Yves Goldberg (Ygol Internetwork) |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion, Yves Goldberg (Ygol Internetwork) |
| COMMITTERS | |
| COMMITTERS | Enric Tobella, Weblate, OCA-git-bot, Iván Todorovich, oca-ci, Vincent Van Rossem, Lukas Tran |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/agreement |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:11 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour - html_editor |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module adds an *Agreement* object with the following properties: - code, - name, - link to a partner, - signature date. - start date. - end date. Optionally, you can also enable using: \* agreement types \* a flag to set an agreement as a template agreement (Install agreement_sale to get the configuration settings for these). |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
agreement_form |
agreement.form | agreement | form | New |
agreement_search |
agreement.search | agreement | search | New |
agreement_tree |
agreement.list | agreement | list | New |
agreement_type_form_view |
Agreement Type Form | agreement.type | form | New |
agreement_type_list_view |
Agreement Type List | agreement.type | list | New |
agreement_type_search |
agreement.type.search | agreement.type | search | New |
partner_form |
res.partner | xpath | Inherits base.view_partner_form |
active
Boolean
default=True
agreement_type_id
Many2one → agreement.type
help='Select the type of agreement'
string='Agreement Type'
args: 'agreement.type'
code
Char
required=True
tracking=True
commercial_partner_id
Many2one → res.partner
compute='_compute_commercial_partner_id'
precompute=True
store=True
string='Commercial Entity'
tracking=True
args: 'res.partner'
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
domain
Selection
compute='_compute_domain'
readonly=False
selection='_domain_selection'
store=True
tracking=True
end_date
Date
tracking=True
is_template
Boolean
copy=False
help="Set if the agreement is a template. Template agreements don't require a partner."
string='Is a Template?'
name
Char
required=True
tracking=True
partner_id
Many2one → res.partner
ondelete='restrict'
string='Partner'
tracking=True
args: 'res.partner'
signature_date
Date
tracking=True
start_date
Date
tracking=True
copy(self, default=None)
active
Boolean
default=True
domain
Selection
default='sale'
args: '_domain_selection'
name
Char
required=True
No public methods.
agreement_ids
One2many → agreement
string='Agreements'
args: 'agreement', 'partner_id'
agreements_count
Integer
compute='_compute_agreements_count'
action_open_agreement(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/agreement |
| GIT | |
| GIT | https://github.com/OCA/agreement.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/agreement/tree/17.0/agreement |
| VERSION | |
| VERSION | 1.1.1 |
| CATEGORY | |
| CATEGORY | Contract |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion, Yves Goldberg (Ygol Internetwork) |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion, Yves Goldberg (Ygol Internetwork) |
| COMMITTERS | |
| COMMITTERS | GitHub, Enric Tobella, Weblate, OCA-git-bot, oca-ci, Antoni Marroig Campomar |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/agreement |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:20:04 |
| 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 | This module adds an *Agreement* object with the following properties: - code, - name, - link to a partner, - signature date. - start date. - end date. Optionally, you can also enable using: \* agreement types \* a flag to set an agreement as a template agreement (Install agreement_sale to get the configuration settings for these). |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
agreement_form |
agreement.form | agreement | form | New |
agreement_search |
agreement.search | agreement | search | New |
agreement_tree |
agreement.tree | agreement | tree | New |
agreement_type_form_view |
Agreement Type Form | agreement.type | form | New |
agreement_type_list_view |
Agreement Type List | agreement.type | tree | New |
agreement_type_search |
agreement.type.search | agreement.type | search | New |
active
Boolean
default=True
agreement_type_id
Many2one → agreement.type
help='Select the type of agreement'
string='Agreement Type'
args: 'agreement.type'
code
Char
required=True
tracking=True
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
domain
Selection
compute='_compute_domain'
readonly=False
selection='_domain_selection'
store=True
tracking=True
end_date
Date
tracking=True
is_template
Boolean
copy=False
default=False
help="Set if the agreement is a template. Template agreements don't require a partner."
string='Is a Template?'
name
Char
required=True
tracking=True
partner_id
Many2one → res.partner
domain=[('parent_id', '=', False)]
ondelete='restrict'
string='Partner'
tracking=True
args: 'res.partner'
signature_date
Date
tracking=True
start_date
Date
tracking=True
copy(self, default=None)
name_get(self)
active
Boolean
default=True
domain
Selection
default='sale'
args: '_domain_selection'
name
Char
required=True
translate=True
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/agreement |
| GIT | |
| GIT | https://github.com/OCA/agreement.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/agreement/tree/16.0/agreement |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Contract |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion, Yves Goldberg (Ygol Internetwork) |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion, Yves Goldberg (Ygol Internetwork) |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, Maxime Franco, oca-ci |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/agreement |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 22:15:14 |
| 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 |
|---|---|---|---|---|
agreement_form |
agreement.form | agreement | form | New |
agreement_search |
agreement.search | agreement | search | New |
agreement_tree |
agreement.tree | agreement | tree | New |
agreement_type_form_view |
Agreement Type Form | agreement.type | form | New |
agreement_type_list_view |
Agreement Type List | agreement.type | tree | New |
agreement_type_search |
agreement.type.search | agreement.type | search | New |
active
Boolean
default=True
agreement_type_id
Many2one → agreement.type
help='Select the type of agreement'
string='Agreement Type'
args: 'agreement.type'
code
Char
required=True
tracking=True
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
domain
Selection
compute='_compute_domain'
readonly=False
selection='_domain_selection'
store=True
tracking=True
end_date
Date
tracking=True
is_template
Boolean
copy=False
default=False
help="Set if the agreement is a template. Template agreements don't require a partner."
string='Is a Template?'
name
Char
required=True
tracking=True
partner_id
Many2one → res.partner
domain=[('parent_id', '=', False)]
ondelete='restrict'
string='Partner'
tracking=True
args: 'res.partner'
signature_date
Date
tracking=True
start_date
Date
tracking=True
copy(self, default=None)
name_get(self)
active
Boolean
default=True
domain
Selection
default='sale'
args: '_domain_selection'
name
Char
required=True
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/agreement |
| GIT | |
| GIT | https://github.com/OCA/agreement.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/agreement/tree/15.0/agreement |
| VERSION | |
| VERSION | 1.1.0 |
| CATEGORY | |
| CATEGORY | Contract |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion, Yves Goldberg (Ygol Internetwork) |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion, Yves Goldberg (Ygol Internetwork) |
| COMMITTERS | |
| COMMITTERS | Enric Tobella, OCA Transbot, Ernesto Tejeda, Weblate, OCA-git-bot, oca-ci |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/agreement |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:46:33 |
| 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 |
|---|---|---|---|---|
agreement_form |
agreement.form | agreement | form | New |
agreement_search |
agreement.search | agreement | search | New |
agreement_tree |
agreement.tree | agreement | tree | New |
agreement_type_form_view |
Agreement Type Form | agreement.type | form | New |
agreement_type_list_view |
Agreement Type List | agreement.type | tree | New |
agreement_type_search |
agreement.type.search | agreement.type | search | New |
active
Boolean
default=True
agreement_type_id
Many2one → agreement.type
help='Select the type of agreement'
string='Agreement Type'
args: 'agreement.type'
code
Char
required=True
tracking=True
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
domain
Selection
default='sale'
tracking=True
args: '_domain_selection'
end_date
Date
tracking=True
is_template
Boolean
copy=False
default=False
help="Set if the agreement is a template. Template agreements don't require a partner."
string='Is a Template?'
name
Char
required=True
tracking=True
partner_id
Many2one → res.partner
domain=[('parent_id', '=', False)]
ondelete='restrict'
string='Partner'
tracking=True
args: 'res.partner'
signature_date
Date
tracking=True
start_date
Date
tracking=True
agreement_type_change(self)
copy(self, default=None)
name_get(self)
active
Boolean
default=True
domain
Selection
default='sale'
args: '_domain_selection'
name
Char
required=True
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/contract |
| GIT | |
| GIT | https://github.com/OCA/contract.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/contract/tree/14.0/agreement |
| VERSION | |
| VERSION | 1.1.1 |
| CATEGORY | |
| CATEGORY | Contract |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion, Yves Goldberg (Ygol Internetwork) |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion, Yves Goldberg (Ygol Internetwork) |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, OCA Transbot, oca-travis, Weblate, OCA-git-bot, newtratip |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/contract |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:40:55 |
| 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 |
|---|---|---|---|---|
agreement_form |
agreement.form | agreement | form | New |
agreement_search |
agreement.search | agreement | search | New |
agreement_tree |
agreement.tree | agreement | tree | New |
agreement_type_form_view |
Agreement Type Form | agreement.type | form | New |
agreement_type_list_view |
Agreement Type List | agreement.type | tree | New |
agreement_type_search |
agreement.type.search | agreement.type | search | New |
active
Boolean
default=True
agreement_type_id
Many2one → agreement.type
help='Select the type of agreement'
string='Agreement Type'
args: 'agreement.type'
code
Char
required=True
tracking=True
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
domain
Selection
default='sale'
string='Domain'
tracking=True
args: '_domain_selection'
end_date
Date
tracking=True
is_template
Boolean
copy=False
default=False
help="Set if the agreement is a template. Template agreements don't require a partner."
string='Is a Template?'
name
Char
required=True
tracking=True
partner_id
Many2one → res.partner
domain=[('parent_id', '=', False)]
ondelete='restrict'
string='Partner'
tracking=True
args: 'res.partner'
signature_date
Date
tracking=True
start_date
Date
tracking=True
agreement_type_change(self)
copy(self, default=None)
name_get(self)
active
Boolean
default=True
domain
Selection
default='sale'
string='Domain'
args: '_domain_selection'
name
Char
required=True
string='Name'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/contract |
| GIT | |
| GIT | https://github.com/OCA/contract.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/contract/tree/13.0/agreement |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Contract |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion, Yves Goldberg (Ygol Internetwork) |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion, Yves Goldberg (Ygol Internetwork) |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Denis Roussel, OCA Transbot, oca-travis, OCA-git-bot |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/contract |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:34:11 |
| 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 |
|---|---|---|---|---|
agreement_form |
agreement.form | agreement | form | New |
agreement_search |
agreement.search | agreement | search | New |
agreement_tree |
agreement.tree | agreement | tree | New |
agreement_type_form_view |
Agreement Type Form | agreement.type | form | New |
agreement_type_list_view |
Agreement Type List | agreement.type | tree | New |
agreement_type_search |
agreement.type.search | agreement.type | search | New |
active
Boolean
default=True
agreement_type_id
Many2one → agreement.type
help='Select the type of agreement'
string='Agreement Type'
args: 'agreement.type'
code
Char
required=True
track_visibility='onchange'
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
domain
Selection
default='sale'
string='Domain'
track_visibility='onchange'
args: '_domain_selection'
end_date
Date
track_visibility='onchange'
is_template
Boolean
copy=False
default=False
help="Set if the agreement is a template. Template agreements don't require a partner."
string='Is a Template?'
name
Char
required=True
track_visibility='onchange'
partner_id
Many2one → res.partner
domain=[('parent_id', '=', False)]
ondelete='restrict'
string='Partner'
track_visibility='onchange'
args: 'res.partner'
signature_date
Date
track_visibility='onchange'
start_date
Date
track_visibility='onchange'
agreement_type_change(self)
copy(self, default=None)
name_get(self)
active
Boolean
default=True
domain
Selection
default='sale'
string='Domain'
args: '_domain_selection'
name
Char
required=True
string='Name'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/contract |
| GIT | |
| GIT | https://github.com/OCA/contract.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/contract/tree/12.0/agreement |
| VERSION | |
| VERSION | 1.2.1 |
| CATEGORY | |
| CATEGORY | Contract |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion, Yves Goldberg (Ygol Internetwork) |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion, Yves Goldberg (Ygol Internetwork) |
| COMMITTERS | |
| COMMITTERS | Alexis de Lattre, Alexandre Fayolle, Maxime Chambreuil, GitHub, Jairo Llopis, Denis Roussel, OCA Transbot, Sergio Teruel, David Beal, oca-travis, Weblate, OCA-git-bot, oca-ci, Marcel Savegnago, ygol |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/contract |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:29:15 |
| 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 |
|---|---|---|---|---|
agreement_form |
agreement.form | agreement | form | New |
agreement_search |
agreement.search | agreement | search | New |
agreement_tree |
agreement.tree | agreement | tree | New |
agreement_type_form_view |
Agreement Type Form | agreement.type | form | New |
agreement_type_list_view |
Agreement Type List | agreement.type | tree | New |
agreement_type_search |
agreement.type.search | agreement.type | search | New |
active
Boolean
default=True
agreement_type_id
Many2one → agreement.type
help='Select the type of agreement'
string='Agreement Type'
args: 'agreement.type'
code
Char
required=True
track_visibility='onchange'
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
domain
Selection
default='sale'
string='Domain'
track_visibility='onchange'
args: '_domain_selection'
end_date
Date
track_visibility='onchange'
is_template
Boolean
copy=False
default=False
help="Set if the agreement is a template. Template agreements don't require a partner."
string='Is a Template?'
name
Char
required=True
track_visibility='onchange'
partner_id
Many2one → res.partner
domain=[('parent_id', '=', False)]
ondelete='restrict'
string='Partner'
track_visibility='onchange'
args: 'res.partner'
signature_date
Date
track_visibility='onchange'
start_date
Date
track_visibility='onchange'
agreement_type_change(self)
copy(self, default=None)
name_get(self)
active
Boolean
default=True
domain
Selection
default='sale'
string='Domain'
args: '_domain_selection'
name
Char
required=True
string='Name'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/contract |
| GIT | |
| GIT | https://github.com/OCA/contract.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/contract/tree/11.0/agreement |
| VERSION | |
| VERSION | 0.1.0 |
| CATEGORY | |
| CATEGORY | Partner |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Open Source Integrators, Pavlov Media |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Open Source Integrators, Pavlov Media |
| COMMITTERS | |
| COMMITTERS | Maxime Chambreuil, GitHub, Stéphane Bidoul (ACSONE), Bhavesh Odedra, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Sandip Mangukiya |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/contract |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:23:56 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web - product - decimal_precision - bus - web_tour - analytic - web_planner - portal - http_routing - contacts - sale_management - sale - sales_team - account_invoicing |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
agreement_appendix_form |
Agreement Appendix Form | agreement.appendix | form | New |
agreement_appendix_search |
Agreement Appendix Search | agreement.appendix | search | New |
agreement_appendix_tree |
Agreement Appendix Tree | agreement.appendix | tree | New |
agreement_clause_search_view |
Agreement Clause Search | agreement.clause | search | New |
agreement_graph_view |
agreement.graph | agreement | graph | New |
agreement_pivot_view |
agreement.pivot | agreement | pivot | New |
agreement_recital_form |
Agreement Recital Form | agreement.recital | form | New |
agreement_recital_search |
Agreement Recital Search | agreement.recital | search | New |
agreement_recital_tree |
Agreement Recital Tree | agreement.recital | tree | New |
agreement_serviceprofile_form |
Agreement Service Profile Form | agreement.serviceprofile | form | New |
agreement_serviceprofile_search |
Agreement Service Profile Search | agreement.serviceprofile | search | New |
agreement_serviceprofile_tree |
Agreement Service Profile Tree | agreement.serviceprofile | tree | New |
order_lines_search_view |
Order Lines Search | sale.order.line | xpath | Inherits sale.view_sales_order_line_filter |
partner_agreement_clause_form_view |
Agreement clause Form | agreement.clause | form | New |
partner_agreement_clause_list_view |
Agreement Clause List | agreement.clause | tree | New |
partner_agreement_form_view |
Agreement Form | agreement | form | New |
partner_agreement_increasetype_form_view |
Agreement Increase Type Form | agreement.increasetype | form | New |
partner_agreement_increasetype_list_view |
Agreement Increase Type List | agreement.increasetype | tree | New |
partner_agreement_list_view |
Agreement List | agreement | tree | New |
partner_agreement_renewaltype_form_view |
Agreement Renewal Type Form | agreement.renewaltype | form | New |
partner_agreement_renewaltype_list_view |
Agreement Renewal Type List | agreement.renewaltype | tree | New |
partner_agreement_search_view |
Agreement Search | agreement | search | New |
partner_agreement_section_form_view |
Agreement Section Form | agreement.section | form | New |
partner_agreement_section_list_view |
Agreement Section List | agreement.section | tree | New |
partner_agreement_section_search_view |
Agreement Section Search | agreement.section | search | New |
partner_agreement_stage_form_view |
Agreement Stage Form | agreement.stage | form | New |
partner_agreement_stage_list_view |
Agreement Stage List | agreement.stage | tree | New |
partner_agreement_subtype_form_view |
Agreement Sub Type Form | agreement.subtype | form | New |
partner_agreement_subtype_list_view |
Agreement Subtype List | agreement.subtype | tree | New |
partner_agreement_type_form_view |
Agreement Type Form | agreement.type | form | New |
partner_agreement_type_list_view |
Agreement Type List | agreement.type | tree | New |
partner_form |
res.partner | xpath | Inherits base.view_partner_form | |
report_agreement_document |
report_agreement_document | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.agreement | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
view_project_agreement_kanban |
Agreement Kanban | agreement | kanban | New |
agreement_id
Many2one → agreement
string='Agreement'
args: 'agreement'
No public methods.
active
Boolean
default=True
help='If unchecked, it will allow you to hide the agreement without removing it.'
string='Active'
agreement_subtype_id
Many2one → agreement.subtype
help='Select the sub-type of this agreement. Sub-Types are related to agreement types.'
string='Agreement Sub-type'
track_visibility='onchange'
args: 'agreement.subtype'
agreement_type_id
Many2one → agreement.type
help='Select the type of agreement.'
string='Agreement Type'
track_visibility='onchange'
args: 'agreement.type'
analytic_id
Many2one → account.analytic.account
index=True
string='Analytic Account'
args: 'account.analytic.account'
analytic_line_ids
One2many → account.analytic.line
copy=False
string='Revenues and Costs'
args: 'account.analytic.line', 'agreement_id'
appendix_ids
One2many → agreement.appendix
copy=True
string='Appendices'
args: 'agreement.appendix', 'agreement_id'
approved_date
Date
string='Approved Date'
track_visibility='onchange'
approved_user_id
Many2one → res.users
string='Approved By'
track_visibility='onchange'
args: 'res.users'
assigned_user_id
Many2one → res.users
help='Select the user who manages this agreement.'
string='Assigned To'
track_visibility='onchange'
args: 'res.users'
change_notice
Integer
help='Number of Days to be notified before changes.'
string='Change Notice (Days)'
track_visibility='onchange'
child_agreements_ids
One2many → agreement
copy=False
domain=[('active', '=', True)]
string='Child Agreements'
args: 'agreement', 'parent_agreement_id'
clauses_ids
One2many → agreement.clause
copy=True
string='Clauses'
args: 'agreement.clause', 'agreement_id'
color
Integer
company_contact_email
Char
related='company_contact_id.email'
string='Email'
company_contact_id
Many2one → res.partner
copy=True
help='The primary contact in the company.'
string='Company Contact'
args: 'res.partner'
company_contact_phone
Char
related='company_contact_id.phone'
string='Phone'
company_partner_id
Many2one → res.partner
copy=True
default=<expr>
string='Company'
args: 'res.partner'
company_signed_date
Date
help='Date the contract was signed by Company.'
string='Signed on'
track_visibility='onchange'
company_signed_user_id
Many2one → res.users
help='The user at our company who authorized/signed the agreement or contract.'
string='Signed By'
track_visibility='onchange'
args: 'res.users'
contract_value
Monetary
compute='_compute_contract_value'
help='Total value of the contract over ther entire term.'
store=True
string='Contract Value'
copyvalue
Char
help='Final placeholder expression, to be copy-pasted in the desired\n template field.'
string='Placeholder Expression'
currency_id
Many2one → res.currency
string='Currency'
args: 'res.currency'
default_value
Char
help='Optional value to use if the target field is empty.'
string='Default Value'
description
Text
help='Description of the agreement'
string='Description'
track_visibility='onchange'
dynamic_description
Text
compute='_compute_dynamic_description'
help='Compute dynamic description'
string='Dynamic Description'
dynamic_special_terms
Text
compute='_compute_dynamic_special_terms'
help='Compute dynamic special terms'
string='Dynamic Special Terms'
end_date
Date
help='When the agreement ends.'
string='End Date'
track_visibility='onchange'
expiration_notice
Integer
help='Number of Days before expiration to be notified.'
string='Exp. Notice (Days)'
track_visibility='onchange'
field_id
Many2one → ir.model.fields
help='Select target field from the related document model. If it is a\n relationship field you will be able to select a target field at the\n destination of the relationship.'
string='Field'
args: 'ir.model.fields'
increase_type_id
Many2one → agreement.increasetype
help='The amount that certain rates may increase.'
string='Increase Type'
track_visibility='onchange'
args: 'agreement.increasetype'
is_template
Boolean
copy=False
default=False
help='Make this agreement a template.'
string='Is a Template?'
line_ids
One2many → agreement.line
copy=False
string='Products/Services'
args: 'agreement.line', 'agreement_id'
name
Char
required=True
string='Title'
notification_address_id
Many2one → res.partner
help='The address to send notificaitons to, if different from customer address.(Address Type = Other)'
string='Notification Address'
args: 'res.partner'
order_lines_services_ids
One2many
copy=False
related='sale_order_id.order_line'
string='Service Order Lines'
parent_agreement_id
Many2one → agreement
help='Link this agreement to a parent agreement. For example if this agreement is an amendment to another agreement. This list will only show other agreements related to the same account.'
string='Parent Agreement'
args: 'agreement'
partner_contact_email
Char
related='partner_contact_id.email'
string='Email'
partner_contact_id
Many2one → res.partner
copy=True
help='The primary partner contact (If Applicable).'
string='Partner Contact'
args: 'res.partner'
partner_contact_phone
Char
related='partner_contact_id.phone'
string='Phone'
partner_id
Many2one → res.partner
copy=True
help='The customer or vendor this agreement is related to.'
string='Partner'
args: 'res.partner'
partner_signed_date
Date
help='Date the contract was signed by the Partner.'
string='Signed on'
track_visibility='onchange'
partner_signed_user_id
Many2one → res.partner
help='Contact on the account that signed the agreement/contract.'
string='Signed By'
track_visibility='onchange'
args: 'res.partner'
payment_term_id
Many2one → account.payment.term
help='Terms of payments.'
string='Payment Term'
track_visibility='onchange'
args: 'account.payment.term'
previous_version_agreements_ids
One2many → agreement
copy=False
domain=[('active', '=', False)]
string='Child Agreements'
args: 'agreement', 'parent_agreement_id'
product_ids
Many2many → product.template
string='Products & Services'
args: 'product.template'
recital_ids
One2many → agreement.recital
copy=True
string='Recitals'
args: 'agreement.recital', 'agreement_id'
reference
Char
copy=False
default=<expr>
help='ID used for internal contract tracking.'
required=True
string='Reference'
track_visibility='onchange'
renewal_type_id
Many2one → agreement.renewaltype
help='Describes what happens after the contract expires.'
string='Renewal Type'
track_visibility='onchange'
args: 'agreement.renewaltype'
reviewed_date
Date
string='Reviewed Date'
track_visibility='onchange'
reviewed_user_id
Many2one → res.users
string='Reviewed By'
track_visibility='onchange'
args: 'res.users'
revision
Integer
copy=False
default=0
help='The revision will increase with every save event.'
string='Revision'
sale_order_id
Many2one → sale.order
copy=False
help='Select the Sales Order that this agreement is related to.'
string='Sales Order'
track_visibility='onchange'
args: 'sale.order'
sections_ids
One2many → agreement.section
copy=True
string='Sections'
args: 'agreement.section', 'agreement_id'
serviceprofile_ids
One2many → agreement.serviceprofile
string='Service Profiles'
args: 'agreement.serviceprofile', 'agreement_id'
signed_contract
Binary
string='Signed Document'
track_visibility='always'
signed_contract_filename
Char
string='Filename'
special_terms
Text
help='Any terms that you have agreed to and want to track on the agreement/contract.'
string='Special Terms'
track_visibility='onchange'
stage_id
Many2one → agreement.stage
default=<expr>
group_expand='_read_group_stage_ids'
help='Select the current stage of the agreement.'
index=True
string='Stage'
track_visibility='onchange'
args: 'agreement.stage'
start_date
Date
help='When the agreement starts.'
string='Start Date'
track_visibility='onchange'
state
Selection
default='draft'
track_visibility='always'
args: [('draft', 'Draft'), ('active', 'Active'), ('inactive', 'Inactive')]
sub_model_object_field_id
Many2one → ir.model.fields
help='When a relationship field is selected as first field, this\n field lets you select the target field within the destination document\n model (sub-model).'
string='Sub-field'
args: 'ir.model.fields'
sub_object_id
Many2one → ir.model
help='When a relationship field is selected as first field, this\n field shows the document model the relationship goes to.'
string='Sub-model'
args: 'ir.model'
term
Integer
help='Number of months this agreement/contract is in effect with the partner.'
string='Term (Months)'
track_visibility='onchange'
termination_date
Date
help='Date that the contract was terminated.'
string='Termination Date'
track_visibility='onchange'
termination_requested
Date
help='Date that a request for termination was received.'
string='Termination Requested Date'
track_visibility='onchange'
total_company_mrc
Monetary
currency_field='currency_id'
help='Total company monthly recurring costs.'
args: 'Company MRC'
total_company_nrc
Monetary
currency_field='currency_id'
help='Total company non-recurring costs.'
args: 'Company NRC'
total_customer_mrc
Monetary
currency_field='currency_id'
help='Total custemer monthly recurring costs.'
args: 'Customer MRC'
total_customer_nrc
Monetary
currency_field='currency_id'
help='Total custemer non-monthly recurring costs.'
args: 'Customer NRC'
version
Integer
copy=False
default=1
help='The versions are used to keep track of document history and previous versions can be referenced.'
string='Version'
create(self, vals)
create_new_agreement(self)
create_new_version(self, vals)
onchange_copyvalue(self)
write(self, vals)
active
Boolean
default=True
help='If unchecked, it will allow you to hide this appendix without removing it.'
string='Active'
agreement_id
Many2one → agreement
ondelete='cascade'
string='Agreement'
args: 'agreement'
content
Html
string='Content'
copyvalue
Char
help='Final placeholder expression, to be copy-pasted in the desired\n template field.'
string='Placeholder Expression'
default_value
Char
help='Optional value to use if the target field is empty.'
string='Default Value'
dynamic_content
Html
compute='_compute_dynamic_content'
help='compute dynamic Content'
string='Dynamic Content'
field_id
Many2one → ir.model.fields
help='Select target field from the related document model. If it is a\n relationship field you will be able to select a target field at the\n destination of the relationship.'
string='Field'
args: 'ir.model.fields'
name
Char
required=True
string='Name'
sequence
Integer
default=10
string='Sequence'
sub_model_object_field_id
Many2one → ir.model.fields
help='When a relationship field is selected as first field, this\n field lets you select the target field within the destination document\n model (sub-model).'
string='Sub-field'
args: 'ir.model.fields'
sub_object_id
Many2one → ir.model
help='When a relationship field is selected as first field, this\n field shows the document model the relationship goes to.'
string='Sub-model'
args: 'ir.model'
title
Char
help='The title is displayed on the PDF.The name is not.'
required=True
string='Title'
onchange_copyvalue(self)
active
Boolean
default=True
help='If unchecked, it will allow you to hide the agreement without removing it.'
string='Active'
agreement_id
Many2one → agreement
ondelete='cascade'
string='Agreement'
args: 'agreement'
content
Html
string='Clause Content'
copyvalue
Char
help='Final placeholder expression, to be copy-pasted in the desired\n template field.'
string='Placeholder Expression'
default_value
Char
help='Optional value to use if the target field is empty.'
string='Default Value'
dynamic_content
Html
compute='_compute_dynamic_content'
help='compute dynamic Content'
string='Dynamic Content'
field_id
Many2one → ir.model.fields
help='Select target field from the related document model. If it is a\n relationship field you will be able to select a target field at the\n destination of the relationship.'
string='Field'
args: 'ir.model.fields'
name
Char
required=True
string='Name'
section_id
Many2one → agreement.section
ondelete='cascade'
string='Section'
args: 'agreement.section'
sequence
Integer
string='Sequence'
sub_model_object_field_id
Many2one → ir.model.fields
help='When a relationship field is selected as first field, this\n field lets you select the target field within the destination document\n model (sub-model).'
string='Sub-field'
args: 'ir.model.fields'
sub_object_id
Many2one → ir.model
help='When a relationship field is selected as first field, this\n field shows the document model the relationship goes to.'
string='Sub-model'
args: 'ir.model'
title
Char
help='The title is displayed on the PDF.The name is not.'
string='Title'
onchange_copyvalue(self)
description
Text
help='Description of the renewal type.'
required=True
string='Description'
increase_percent
Integer
help='Percentage that the amount will increase.'
string='Increase Percentage'
name
Char
help='Increase types describe any increases that may happen during the contract.'
required=True
string='Title'
No public methods.
agreement_id
Many2one → agreement
ondelete='cascade'
string='Agreement'
args: 'agreement'
name
Char
required=True
string='Description'
product_id
Many2one → product.product
string='Product'
args: 'product.product'
qty
Float
string='Quantity'
uom_id
Many2one → product.uom
required=True
string='Unit of Measure'
args: 'product.uom'
No public methods.
active
Boolean
default=True
help='If unchecked, it will allow you to hide this recital without removing it.'
string='Active'
agreement_id
Many2one → agreement
ondelete='cascade'
string='Agreement'
args: 'agreement'
content
Html
string='Content'
copyvalue
Char
help='Final placeholder expression, to be copy-pasted in the desired\n template field.'
string='Placeholder Expression'
default_value
Char
help='Optional value to use if the target field is empty.'
string='Default Value'
dynamic_content
Html
compute='_compute_dynamic_content'
help='compute dynamic Content'
string='Dynamic Content'
field_id
Many2one → ir.model.fields
help='Select target field from the related document model. If it is a\n relationship field you will be able to select a target field at the\n destination of the relationship.'
string='Field'
args: 'ir.model.fields'
name
Char
required=True
string='Name'
sequence
Integer
default=10
string='Sequence'
sub_model_object_field_id
Many2one → ir.model.fields
help='When a relationship field is selected as first field, this\n field lets you select the target field within the destination document\n model (sub-model).'
string='Sub-field'
args: 'ir.model.fields'
sub_object_id
Many2one → ir.model
help='When a relationship field is selected as first field, this\n field shows the document model the relationship goes to.'
string='Sub-model'
args: 'ir.model'
title
Char
help='The title is displayed on the PDF.The name is not.'
string='Title'
onchange_copyvalue(self)
description
Text
help='Description of the renewal type.'
required=True
string='Description'
name
Char
help='Renewal types describe what happens after the agreement/contract expires.'
required=True
string='Title'
No public methods.
active
Boolean
default=True
help='If unchecked, it will allow you to hide the\n agreement without removing it.'
string='Active'
agreement_id
Many2one → agreement
ondelete='cascade'
string='Agreement'
args: 'agreement'
clauses_ids
One2many → agreement.clause
string='Clauses'
args: 'agreement.clause', 'section_id'
content
Html
string='Section Content'
copyvalue
Char
help='Final placeholder expression, to be copy-pasted in the desired\n template field.'
string='Placeholder Expression'
default_value
Char
help='Optional value to use if the target field is empty.'
string='Default Value'
dynamic_content
Html
compute='_compute_dynamic_content'
help='compute dynamic Content'
string='Dynamic Content'
field_id
Many2one → ir.model.fields
help='Select target field from the related document model. If it is a\n relationship field you will be able to select a target field at the\n destination of the relationship.'
string='Field'
args: 'ir.model.fields'
name
Char
required=True
string='Name'
sequence
Integer
string='Sequence'
sub_model_object_field_id
Many2one → ir.model.fields
help='When a relationship field is selected as first field, this\n field lets you select the target field within the destination document\n model (sub-model).'
string='Sub-field'
args: 'ir.model.fields'
sub_object_id
Many2one → ir.model
help='When a relationship field is selected as first field, this\n field shows the document model the relationship goes to.'
string='Sub-model'
args: 'ir.model'
title
Char
help='The title is displayed on the PDF.The name is not.'
string='Title'
onchange_copyvalue(self)
active
Boolean
default=True
help='If unchecked, it will allow you to hide this service profile without removing it.'
string='Active'
agreement_id
Many2one → agreement
ondelete='cascade'
string='Agreement'
args: 'agreement'
name
Char
required=True
string='Name'
No public methods.
description
Text
required=False
string='Description'
fold
Boolean
help='This stage is folded in the kanban view by deafault.'
required=False
string='Is Folded'
name
Char
required=True
string='Stage Name'
sequence
Integer
default='1'
required=False
string='Sequence'
No public methods.
agreement_type_id
Many2one → agreement.type
string='Agreement Type'
args: 'agreement.type'
name
Char
required=True
string='Name'
No public methods.
agreement_subtypes_ids
One2many → agreement.subtype
string='Subtypes'
args: 'agreement.subtype', 'agreement_type_id'
name
Char
required=True
string='Name'
No public methods.
agreements_ids
Many2many → agreement
string='Agreements'
args: 'agreement'
No public methods.
module_agreement_maintenance
Boolean
string='Manage maintenance agreements and contracts.'
module_agreement_mrp
Boolean
string='Link your manufacturing orders to an agreement.'
module_agreement_project
Boolean
string='Link your projects and tasks to an agreement.'
module_agreement_repair
Boolean
string='Link your repair orders to an agreement.'
module_agreement_rma
Boolean
string='Link your RMAs to an agreement.'
module_agreement_sale
Boolean
string='Create an agreement when the sale order is confirmed.'
module_agreement_sale_subscription
Boolean
string='Link your subscriptions to an agreement.'
module_agreement_stock
Boolean
string='Link your pickings to an agreement.'
module_fieldservice_agreement
Boolean
string='Link your Field Service orders and equipments to an agreement.'
module_helpdesk_agreement
Boolean
string='Link your Helpdesk tickets to an agreement.'
No public methods.
agreement_ids
One2many → agreement
string='Agreements'
args: 'agreement', 'partner_id'
No public methods.