TIP: You can type at any time to perform a new search.
Contract ISP - Unique Product in Contract
contract_isp_unique_product · OCA/vertical-isp
Security findings
Migration considerations
- Imports from the old `openerp.osv` namespace: renamed to `odoo` since Odoo 10.0. migration-openerp-import · source
- Imports from the old `openerp.tools.translate` namespace: renamed to `odoo` since Odoo 10.0. migration-openerp-import · source
- Imports from the old `openerp.tools` namespace: renamed to `odoo` since Odoo 10.0. migration-openerp-import · source
- Imports from the old `openerp.tools.translate` namespace: renamed to `odoo` since Odoo 10.0. migration-openerp-import · source
- Imports from the old `openerp.osv` namespace: renamed to `odoo` since Odoo 10.0. migration-openerp-import · source
- Imports from the old `openerp.addons.contract_isp.wizard.activate_contract_service` namespace: renamed to `odoo` since Odoo 10.0. migration-openerp-import · source
- For a target of Odoo 10.0+: use the `__manifest__.py` manifest name instead of `__openerp__.py`. The filename alone does not establish module age or compatibility. migration-openerp-manifest · source
Contract— Class 'Contract' still inherits from the old-style `orm.Model` API: rewrite it against `models.Model`/`models.TransientModel`/`models.AbstractModel` - the old `osv`/`orm` API was removed entirely in modern Odoo. migration-old-api-base · sourceContract— Class 'Contract' declares `_columns` as a plain dict: old-style field/default declarations, replace with `fields.X(...)` class attributes and `default=`. migration-old-style-fields · sourceContractService— Class 'ContractService' still inherits from the old-style `orm.Model` API: rewrite it against `models.Model`/`models.TransientModel`/`models.AbstractModel` - the old `osv`/`orm` API was removed entirely in modern Odoo. migration-old-api-base · sourceContractService— Class 'ContractService' declares `_columns` as a plain dict: old-style field/default declarations, replace with `fields.X(...)` class attributes and `default=`. migration-old-style-fields · sourceContractServiceDelete— Class 'ContractServiceDelete' still inherits from the old-style `orm.TransientModel` API: rewrite it against `models.Model`/`models.TransientModel`/`models.AbstractModel` - the old `osv`/`orm` API was removed entirely in modern Odoo. migration-old-api-base · sourceContractServiceDelete— Class 'ContractServiceDelete' declares `_columns` as a plain dict: old-style field/default declarations, replace with `fields.X(...)` class attributes and `default=`. migration-old-style-fields · sourceContractServiceDelete— Class 'ContractServiceDelete' declares `_defaults` as a plain dict: old-style field/default declarations, replace with `fields.X(...)` class attributes and `default=`. migration-old-style-fields · sourceview_contract_isp_form— For a target of Odoo 17.0+: view 'view_contract_isp_form' uses `attrs=`/`states=`, which are no longer supported. Convert modifiers to direct Python boolean expressions in `invisible`/`readonly`/`required`; preserve the original AND/OR logic. migration-view-attrs-states · source
Migration review checklist, not a compatibility verdict. No target version is selected: apply version-specific advice only when migrating to that version or later.
- Repository
- OCA/vertical-isp · module folder · Try on Runboat
- Module version
- 0.1
- Category
- Contract Manage
- Folder size
- 0.02 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- http://www.savoirfairelinux.com
- Last tracking update
- 2026-08-07 06:56:14
- Authors
- Savoir-faire Linux, Odoo Community Association (OCA)
- Maintainers
- Odoo Community Association (OCA)
- Committers
- Stéphane Bidoul (ACSONE), OCA Transbot, Vincent Vinet
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- None
- Description
This module prevents creating or updating contracts with multiple services with the same product code. Contributors ------------ * Vincent Vinet (vincent.vinet@savoirfairelinux.com)
Code Analysis
Views touched (4)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
view_contract_isp_form |
contract.isp.form | account.analytic.account | form | Inherits contract_isp.view_contract_isp_form |
view_contract_service_activate |
Activate Service | contract.service.activate | form | New |
view_contract_service_deactivate |
Deactivate Service | contract.service.deactivate | form | New |
view_contract_service_delete |
Delete Service | contract.service.delete | form | New |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (3)
New fields (0)
No new fields.
Public methods (2)-
create(self, cr, uid, values, context=None) -
write(self, cr, uid, ids, values, context=None)
New fields (0)
No new fields.
Public methods (1)-
create(self, cr, uid, values, context=None)
New fields (0)
No new fields.
Public methods (1)-
delete(self, cr, uid, ids, context=None)