Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
143 changes: 143 additions & 0 deletions contract_termination/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

====================
Contract Termination
====================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:bac235b49f4cf12018e6c640f74d0fce7d5fb3131e882ad72a4d040a8fc36d1f
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fcontract-lightgray.png?logo=github
:target: https://github.com/OCA/contract/tree/19.0/contract_termination
:alt: OCA/contract
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/contract-19-0/contract-19-0-contract_termination
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/contract&target_branch=19.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

| The **Contract Termination** module extends the ``contract`` module,
allowing users to properly manage the termination of contracts.
| It provides functionality to terminate contracts with a reason, track
termination comments and dates, and prevent further modifications on
terminated contracts unless reactivated.

Features
--------

- **Terminate Contracts**

- Users with the appropriate rights can terminate active contracts.
- Capture a termination reason, comment, and termination date.

- **Update or Cancel Termination**

- Update termination details if needed.
- Cancel (reactivate) a terminated contract.

- **Contract Form Enhancements**

- Display an alert on terminated contracts with the reason and
comment.
- Hide or disable contract actions (e.g., Send) and fields on
terminated contracts.
- Set contract fields as read-only after termination.

- **Permissions**

- Only users with the group ``Contract: Can Terminate Contracts``
can terminate or cancel termination of contracts.

**Table of contents**

.. contents::
:local:

Configuration
=============

- **Define Termination Reasons**

- Go to **Contracts > Configuration > Termination Reasons**.
- Create reasons for contract termination (e.g., Customer decision,
End of service).

- **Assign Rights**

- Assign the group ``Can terminate contracts`` to users who should
be allowed to terminate contracts.

- **Optional**

- Define whether a termination comment should be required per
reason.

Usage
=====

1. Open an active contract.
2. Click on the **Terminate Contract** button.
3. Provide the termination reason, comment, and date.
4. After termination:

- The contract becomes read-only.
- An alert banner shows the termination details.

5. If necessary, you can **Update Termination Details** or **Cancel
Contract Termination** to reactivate the contract.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/contract/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/contract/issues/new?body=module:%20contract_termination%0Aversion:%2019.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* ACSONE SA/NV

Contributors
------------

- Souheil Bejaoui souheil.bejaoui@acsone.eu (ACSONE SA/NV)

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/contract <https://github.com/OCA/contract/tree/19.0/contract_termination>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
2 changes: 2 additions & 0 deletions contract_termination/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import models
from . import wizards
21 changes: 21 additions & 0 deletions contract_termination/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Copyright 2025 ACSONE SA/NV
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

{
"name": "Contract Termination",
"summary": """contract_termination""",
"version": "19.0.1.0.0",
"license": "AGPL-3",
"author": "ACSONE SA/NV,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/contract",
"depends": ["contract_line_successor"],
"data": [
"security/groups.xml",
"security/ir.model.access.csv",
"security/contract_terminate_reason.xml",
"views/contract_contract.xml",
"views/contract_terminate_reason.xml",
"wizards/contract_contract_terminate.xml",
],
"demo": [],
}
178 changes: 178 additions & 0 deletions contract_termination/i18n/contract_termination.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_termination
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: contract_termination
#: model_terms:ir.ui.view,arch_db:contract_termination.contract_contract_form_view
msgid "Are you sure you want to re-activate this contract?"
msgstr ""

#. module: contract_termination
#: model_terms:ir.ui.view,arch_db:contract_termination.contract_contract_terminate_form_view
msgid "Are you sure you want to terminate this contract?"
msgstr ""

#. module: contract_termination
#: model_terms:ir.ui.view,arch_db:contract_termination.contract_contract_terminate_form_view
msgid "Cancel"
msgstr ""

#. module: contract_termination
#: model_terms:ir.ui.view,arch_db:contract_termination.contract_contract_form_view
msgid "Cancel Contract Termination"
msgstr ""

#. module: contract_termination
#: model:ir.model,name:contract_termination.model_contract_contract
#: model:ir.model.fields,field_description:contract_termination.field_contract_contract_terminate__contract_id
msgid "Contract"
msgstr ""

#. module: contract_termination
#: model_terms:ir.ui.view,arch_db:contract_termination.contract_contract_terminate_form_view
msgid "Contract Contract Terminate"
msgstr ""

#. module: contract_termination
#: model:ir.model,name:contract_termination.model_contract_line
msgid "Contract Line"
msgstr ""

#. module: contract_termination
#: model:ir.actions.act_window,name:contract_termination.contract_terminate_reason_act_window
#: model:ir.model,name:contract_termination.model_contract_terminate_reason
#: model:ir.ui.menu,name:contract_termination.contract_terminate_reason_menu
msgid "Contract Termination Reason"
msgstr ""

#. module: contract_termination
#: model:res.groups,name:contract_termination.can_terminate_contract
msgid "Contract: Can Terminate Contracts"
msgstr ""

#. module: contract_termination
#: model:ir.model.fields,field_description:contract_termination.field_contract_contract_terminate__create_uid
#: model:ir.model.fields,field_description:contract_termination.field_contract_terminate_reason__create_uid
msgid "Created by"
msgstr ""

#. module: contract_termination
#: model:ir.model.fields,field_description:contract_termination.field_contract_contract_terminate__create_date
#: model:ir.model.fields,field_description:contract_termination.field_contract_terminate_reason__create_date
msgid "Created on"
msgstr ""

#. module: contract_termination
#: model:ir.model.fields,field_description:contract_termination.field_contract_contract_terminate__display_name
#: model:ir.model.fields,field_description:contract_termination.field_contract_terminate_reason__display_name
msgid "Display Name"
msgstr ""

#. module: contract_termination
#: model:ir.model.fields,field_description:contract_termination.field_contract_contract_terminate__id
#: model:ir.model.fields,field_description:contract_termination.field_contract_terminate_reason__id
msgid "ID"
msgstr ""

#. module: contract_termination
#: model:ir.model.fields,field_description:contract_termination.field_contract_contract_terminate__write_uid
#: model:ir.model.fields,field_description:contract_termination.field_contract_terminate_reason__write_uid
msgid "Last Updated by"
msgstr ""

#. module: contract_termination
#: model:ir.model.fields,field_description:contract_termination.field_contract_contract_terminate__write_date
#: model:ir.model.fields,field_description:contract_termination.field_contract_terminate_reason__write_date
msgid "Last Updated on"
msgstr ""

#. module: contract_termination
#: model:ir.model.fields,field_description:contract_termination.field_contract_terminate_reason__name
msgid "Name"
msgstr ""

#. module: contract_termination
#: model:ir.model.fields,field_description:contract_termination.field_contract_contract_terminate__terminate_comment_required
#: model:ir.model.fields,field_description:contract_termination.field_contract_terminate_reason__terminate_comment_required
msgid "Require a termination comment"
msgstr ""

#. module: contract_termination
#. odoo-python
#: code:addons/contract_termination/models/contract_contract.py:0
#: model_terms:ir.ui.view,arch_db:contract_termination.contract_contract_form_view
#: model_terms:ir.ui.view,arch_db:contract_termination.contract_contract_terminate_form_view
msgid "Terminate Contract"
msgstr ""

#. module: contract_termination
#: model:ir.model,name:contract_termination.model_contract_contract_terminate
msgid "Terminate Contract Wizard"
msgstr ""

#. module: contract_termination
#: model:ir.model.fields,field_description:contract_termination.field_contract_contract_terminate__terminate_with_last_date_invoiced
msgid "Terminate lines with last date invoiced"
msgstr ""

#. module: contract_termination
#: model:ir.model.fields,help:contract_termination.field_contract_contract_terminate__terminate_with_last_date_invoiced
msgid ""
"Terminate the contract lines with the last invoiced date if they cannot be "
"terminated with the date reported in the wizard."
msgstr ""

#. module: contract_termination
#: model:ir.model.fields,field_description:contract_termination.field_contract_contract__is_terminated
msgid "Terminated"
msgstr ""

#. module: contract_termination
#: model:ir.model.fields,field_description:contract_termination.field_contract_contract__terminate_comment
#: model:ir.model.fields,field_description:contract_termination.field_contract_contract_terminate__terminate_comment
msgid "Termination Comment"
msgstr ""

#. module: contract_termination
#: model:ir.model.fields,field_description:contract_termination.field_contract_contract__terminate_date
#: model:ir.model.fields,field_description:contract_termination.field_contract_contract_terminate__terminate_date
msgid "Termination Date"
msgstr ""

#. module: contract_termination
#: model:ir.model.fields,field_description:contract_termination.field_contract_contract__terminate_reason_id
#: model:ir.model.fields,field_description:contract_termination.field_contract_contract_terminate__terminate_reason_id
msgid "Termination Reason"
msgstr ""

#. module: contract_termination
#: model_terms:ir.ui.view,arch_db:contract_termination.contract_contract_form_view
msgid "This contract was terminated for the reason"
msgstr ""

#. module: contract_termination
#: model_terms:ir.ui.view,arch_db:contract_termination.contract_contract_form_view
msgid "Update Termination Details"
msgstr ""

#. module: contract_termination
#. odoo-python
#: code:addons/contract_termination/models/contract_contract.py:0
msgid "You are not allowed to terminate contracts."
msgstr ""

#. module: contract_termination
#: model_terms:ir.ui.view,arch_db:contract_termination.contract_contract_form_view
msgid "on"
msgstr ""
Loading
Loading