.. image:: https://odoo-community.org/readme-banner-image
   :target: https://odoo-community.org/get-involved?utm_source=readme
   :alt: Odoo Community Association

====================
Base Tier Validation
====================

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

.. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
    :target: https://odoo-community.org/page/development-status
    :alt: Mature
.. |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%2Fserver--ux-lightgray.png?logo=github
    :target: https://github.com/OCA/server-ux/tree/16.0/base_tier_validation
    :alt: OCA/server-ux
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
    :target: https://translation.odoo-community.org/projects/server-ux-16-0/server-ux-16-0-base_tier_validation
    :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/server-ux&target_branch=16.0
    :alt: Try me on Runboat

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

Validating some operations is a common need across different areas in a company
and sometimes it also involves several people and stages in the process. With
this module you will be able to define your custom validation workflows for
any Odoo document.

This module does not provide a functionality by itself but an abstract model
to implement a validation process based on tiers on other models (e.g.
purchase orders, sales orders, budgets, expenses...).

**Note:** To be able to use this module in a new model you will need some
development.

See `purchase_tier_validation <https://github.com/OCA/purchase-workflow>`_ as an example of implementation.

**Table of contents**

.. contents::
   :local:

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

To configure Tier Validations, you need to:

#. Go to *Settings > Technical > Tier Validations > Tier Definition*.
#. Create as many tiers as you want for any model having tier validation
   functionality.

**Note:**

* If check *Notify Reviewers on Creation*, all possible reviewers will be notified by email when this definition is triggered.
* If check *Comment*, reviewers can comment after click Validate or Reject.
* If check *Approve by sequence*, reviewers is forced to review by specified sequence.


To configure Tier Validation Exceptions, you need to:

#. Go to *Settings > Technical > Tier Validations > Tier Validation Exceptions*.
#. Create as many tiers validation exceptions as you want for any model
   having tier validation functionality.
#. Add desired fields to be checked in *Fields*.
#. Add desired groups that can use this Exception in *Groups*.
#. You must check *Write under Validation*, *Write after Validation* or both.

**Note:**

* If you don't create any exception, the Validated record will be readonly and cannot be modified.
* If check *Write under Validation*, records will be able to be modified only in the defined fields when the Validation process is ongoing.
* If check *Write after Validation*, records will be able to be modified only in the defined fields when the Validation process is finished.
* If check *Write after Validation* and *Write under Validation*, records will be able to be modified defined fields always.

Known issues / Roadmap
======================

This is the list of known issues for this module. Any proposal for improvement will
be very valuable.

* **Issue:**

  When using `approve_sequence` option in any tier.definition there can be inconsistencies
  in the systray notifications.

  **Description:**

  Field `can_review` in tier.review is used to filter out, in the systray notifications,
  the reviews a user can approve. This `can_review` field is updated **in the database**
  in method `review_user_count`, this can make it very inconsistent for databases
  with a lot of users and recurring updates that can change the expected behavior.

* **Migration to 15.0:**

  The parameter _tier_validation_manual_config will become False, on 14.0, the default
  value is True, as the change is applied after the migration. In order to use the new
  behavior we need to modify the value on our expected model.

Changelog
=========

14.0.1.0.0 (2020-11-19)
~~~~~~~~~~~~~~~~~~~~~~~

Migrated to Odoo 14.

13.0.1.2.2 (2020-08-30)
~~~~~~~~~~~~~~~~~~~~~~~

Fixes:

- When using approve_sequence option in any tier.definition there can be inconsistencies in the systray notifications
- When using approve_sequence, still not approve only the needed sequence, but also other sequence for the same approver

12.0.3.3.1 (2019-12-02)
~~~~~~~~~~~~~~~~~~~~~~~

Fixes:

- Show comment on Reviews Table.
- Edit notification with approve_sequence.

12.0.3.3.0 (2019-11-27)
~~~~~~~~~~~~~~~~~~~~~~~

New features:

- Add comment on Reviews Table.
- Approve by sequence.

12.0.3.2.1 (2019-11-26)
~~~~~~~~~~~~~~~~~~~~~~~

Fixes:

- Remove message_subscribe_users

12.0.3.2.0 (2019-11-25)
~~~~~~~~~~~~~~~~~~~~~~~

New features:

- Notify reviewers

12.0.3.1.0 (2019-07-08)
~~~~~~~~~~~~~~~~~~~~~~~

Fixes:

- Singleton error

12.0.3.0.0 (2019-12-02)
~~~~~~~~~~~~~~~~~~~~~~~

Fixes:

- Edit Reviews Table

12.0.2.1.0 (2019-05-29)
~~~~~~~~~~~~~~~~~~~~~~~

Fixes:

- Edit drop-down style width and position

12.0.2.0.0 (2019-05-28)
~~~~~~~~~~~~~~~~~~~~~~~

New features:

- Pass parameters as functions.
- Add Systray.

12.0.1.0.0 (2019-02-18)
~~~~~~~~~~~~~~~~~~~~~~~

Migrated to Odoo 12.

11.0.1.0.0 (2018-05-09)
~~~~~~~~~~~~~~~~~~~~~~~

Migrated to Odoo 11.

10.0.1.0.0 (2018-03-26)
~~~~~~~~~~~~~~~~~~~~~~~

Migrated to Odoo 10.

9.0.1.0.0 (2017-12-02)
~~~~~~~~~~~~~~~~~~~~~~~

First version.

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

Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-ux/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/server-ux/issues/new?body=module:%20base_tier_validation%0Aversion:%2016.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
~~~~~~~

* ForgeFlow

Contributors
~~~~~~~~~~~~

* Lois Rilo <lois.rilo@forgeflow.com>
* Naglis Jonaitis <naglis@versada.eu>
* Adrià Gil Sorribes <adria.gil@forgeflow.com>
* Pimolnat Suntian <pimolnats@ecosoft.co.th>
* Pedro Gonzalez <pedro.gonzalez@pesol.es>
* Kitti U. <kittiu@ecosoft.co.th>
* Saran Lim. <saranl@ecosoft.co.th>
* Evan Soh <evan.soh@omnisoftsolution.com>
* Manuel Regidor <manuel.regidor@sygel.es>
* Eduardo de Miguel <edu@moduon.team>
* `XCG Consulting <https://xcg-consulting.fr>`_:

  * Houzéfa Abbasbhay

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.

.. |maintainer-LoisRForgeFlow| image:: https://github.com/LoisRForgeFlow.png?size=40px
    :target: https://github.com/LoisRForgeFlow
    :alt: LoisRForgeFlow

Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-LoisRForgeFlow| 

This module is part of the `OCA/server-ux <https://github.com/OCA/server-ux/tree/16.0/base_tier_validation>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
