Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
43e69d6
[9.0][ADD] purchase_order_approved
LoisRForgeFlow Apr 20, 2017
e44ad19
[10.0][MIG] purcahse_order_approved
LoisRForgeFlow Jan 22, 2018
31ea135
improve performance
LoisRForgeFlow Feb 8, 2018
7303f8e
[11.0][MIG] purchase_order_approved
LoisRForgeFlow Jun 6, 2018
f8112f5
[11.0] purchase_order_approved: fix image link in readme
LoisRForgeFlow Jan 11, 2019
a918850
[MIG] purchase_order_approved: Migration to 12.0
MiquelRForgeFlow Jun 13, 2019
994731f
[12.0][FIX] purchase_order_approved
AdriaGForgeFlow Sep 10, 2019
790a8c1
purchase_order_approved 12.0.1.0.1
OCA-git-bot Sep 12, 2019
e189e63
[IMP] purchase_order_approved: black, isort
kongrattapong Dec 18, 2019
a66bac3
[MIG] purchase_order_approved: Migration to 13.0
kongrattapong Dec 19, 2019
a8b189f
[UPD] Eficent -> ForgeFlow
MiquelRForgeFlow Sep 30, 2020
9c4f1af
[MIG] purchase_order_approved: Migration to 14.0
SurachetS Nov 27, 2020
3d7357e
[14.0][IMP] purchase_order_approved: add approved orders filter
JordiMForgeFlow Aug 5, 2021
b4541e0
[14.0][IMP] purchase_order_approved: allow purchase cancel on approve…
JordiMForgeFlow Aug 5, 2021
238d538
purchase_order_approved 14.0.1.1.0
OCA-git-bot Sep 1, 2021
5e3458d
[IMP] purchase_order_approved: Allows to activate the two-step approv…
lmignon Feb 3, 2020
11f2c18
purchase_order_approved 14.0.1.2.0
OCA-git-bot Aug 29, 2022
04c3ca2
[FIX] purchase_order_approved: Allow to receive products when in 'Pur…
rousseldenis Oct 28, 2022
8e58a30
purchase_order_approved 14.0.1.2.1
OCA-git-bot Nov 14, 2022
a2479ad
[IMP] purchase_order_approved: black, isort, prettier
moaadbourhim Dec 5, 2021
a4d6782
[MIG] purchase_order_approved: Migration to 15.0
moaadbourhim Dec 5, 2021
6b775c9
[MIG] purchase_order_approved: Migration to 16.0
rolandojduartem Feb 28, 2023
75e4645
[IMP] purchase_order_approved: pre-commit auto fixes
May 10, 2024
895e98d
[MIG] purchase_order_approved: Migration to 17.0
May 10, 2024
9bcd1b9
[IMP] purchase_order_approved: pre-commit auto fixes
quoc-pn Jan 24, 2026
e7e61a0
[MIG] purchase_order_approved: Migration to 19.0
quoc-pn Jan 24, 2026
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
172 changes: 172 additions & 0 deletions purchase_order_approved/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

=======================
Purchase Order Approved
=======================

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

.. |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%2Fpurchase--workflow-lightgray.png?logo=github
:target: https://github.com/OCA/purchase-workflow/tree/19.0/purchase_order_approved
:alt: OCA/purchase-workflow
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/purchase-workflow-19-0/purchase-workflow-19-0-purchase_order_approved
: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/purchase-workflow&target_branch=19.0
:alt: Try me on Runboat

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

This module extends the functionality of purchases adding a new state
*Approved* in purchase orders before the *Purchase Order* state.
Additionally add the possibility to set back to draft a purchase order
in all the states previous to *Purchase Order*. From a user point of
view, this change introduces a two-step validation process of the
purchase order.

In this new *Approved* state:

- You cannot modify the purchase order.
- However, you can go back to draft and pass through the workflow again.
- The incoming shipments are not created. You can create them by
clicking the *Convert to Purchase Order* button, also moving to state
*Purchase Order*.

The new state diagram is depicted below:

|New states diagram|

.. |New states diagram| image:: https://raw.githubusercontent.com/OCA/purchase-workflow/12.0/purchase_order_approved/static/description/schema.png

**Table of contents**

.. contents::
:local:

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

This new workflow can be activated by company and by supplier.

To activate the new workflow by company:

1. Go to 'Purchase > Configuration > Settings'.
2. In the *Orders* section you can set the *State 'Approved' in Purchase
Orders*.

To activate the new workflow by supplier:

1. Open the supplier form view.
2. In the *Purchase* section in the *Sales & Purchases* tab the field
*Purchase requires second approval* allows you to select the policy
to apply for the current supplier. 'Never' \| 'Always' \| 'Based on
company policy'

Usage
=====

To use this module, you need to:

1. Go to a Request for Quotation.
2. Click *Confirm Order*. The state is now *Approved* (if no order
approval is not set).
3. To move forward to the state *Purchase Order* and release the
creation of the deliveries, click on *Convert to Purchase Order*.

Changelog
=========

11.0.1.0.0 (2018-06-06)
-----------------------

- [MIG] Migrated to v11.

12.0.1.0.0 (2019-06-13)
-----------------------

- [MIG] Migrated to v12.

12.0.1.0.0 (2020-07-16)
-----------------------

- [MIG] Migrated to v13.

15.0.1.0.0 (2021-12-05)
-----------------------

- [MIG] Migrated to v15.

16.0.1.0.0 (2023-02-28)
-----------------------

- [MIG] Migrated to v16.

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

Bugs are tracked on `GitHub Issues <https://github.com/OCA/purchase-workflow/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/purchase-workflow/issues/new?body=module:%20purchase_order_approved%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
-------

* ForgeFlow
* ACSONE SA/NV

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

- Lois Rilo <lois.rilo@forgeflow.com>

- Rattapong Chokmasermkul <rattapongc@ecosoft.co.th>

- Laurent Mignon <laurent.mignon@acsone.eu>

- Moaad Bourhim <moaad.bourhim@gmail.com>

- Rolando Duarte <rolando@vauxoo.com>

- Elliott Bristow <elliott@glo.systems>

- `Komit <https://komit-consulting.com>`__:

- Quoc Pham Ngoc <quoc-pn@komit-consulting.com>

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/purchase-workflow <https://github.com/OCA/purchase-workflow/tree/19.0/purchase_order_approved>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
3 changes: 3 additions & 0 deletions purchase_order_approved/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from . import models
19 changes: 19 additions & 0 deletions purchase_order_approved/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Copyright 2017 ForgeFlow S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Purchase Order Approved",
"summary": "Add a new state 'Approved' in purchase orders.",
"version": "19.0.1.0.0",
"category": "Purchases",
"website": "https://github.com/OCA/purchase-workflow",
"author": "ForgeFlow, ACSONE SA/NV, Odoo Community Association (OCA)",
"license": "AGPL-3",
"application": False,
"installable": True,
"depends": ["purchase_stock"],
"data": [
"views/res_partner.xml",
"views/purchase_order_view.xml",
"views/res_config_view.xml",
],
}
186 changes: 186 additions & 0 deletions purchase_order_approved/i18n/am.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_order_approved
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-06-10 05:30+0000\n"
"PO-Revision-Date: 2017-06-10 05:30+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Amharic (https://www.transifex.com/oca/teams/23907/am/)\n"
"Language: am\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

#. module: purchase_order_approved
#: model_terms:ir.ui.view,arch_db:purchase_order_approved.view_purchase_configuration
msgid ""
"<span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-"
"specific.\" groups=\"base.group_multi_company\"/>"
msgstr ""

#. module: purchase_order_approved
#: model_terms:ir.ui.view,arch_db:purchase_order_approved.view_purchase_configuration
msgid ""
"Adds an extra state in purchase orders previous to 'Purchase Order' state."
msgstr ""

#. module: purchase_order_approved
#: model:ir.model.fields,help:purchase_order_approved.field_res_company__purchase_approve_active
#: model:ir.model.fields,help:purchase_order_approved.field_res_config_settings__purchase_approve_active
msgid ""
"Adds an extra state in purchase orders previous to 'Purchase Order'. After "
"confirming and approving a purchase order it will go to state 'Approved'. In "
"this state the incoming shipments are not created yet and you still can go "
"back to draft. You can release the creation of the incoming shipments moving "
"the purchase order to state 'Purchase Order'."
msgstr ""

#. module: purchase_order_approved
#: model:ir.model.fields.selection,name:purchase_order_approved.selection__res_partner__purchase_requires_second_approval__always
msgid "Always"
msgstr ""

#. module: purchase_order_approved
#: model:ir.model.fields.selection,name:purchase_order_approved.selection__purchase_order__state__approved
msgid "Approved"
msgstr ""

#. module: purchase_order_approved
#: model_terms:ir.ui.view,arch_db:purchase_order_approved.view_purchase_order_filter
msgid "Approved Orders"
msgstr ""

#. module: purchase_order_approved
#: model:ir.model.fields.selection,name:purchase_order_approved.selection__res_partner__purchase_requires_second_approval__based_on_company
msgid "Based on company policy"
msgstr ""

#. module: purchase_order_approved
#: model:ir.model,name:purchase_order_approved.model_res_company
msgid "Companies"
msgstr "ኩባንያዎች"

#. module: purchase_order_approved
#: model:ir.model.fields,field_description:purchase_order_approved.field_purchase_order__company_id
#, fuzzy
msgid "Company"
msgstr "ኩባንያዎች"

#. module: purchase_order_approved
#: model:ir.model,name:purchase_order_approved.model_res_partner
msgid "Contact"
msgstr ""

#. module: purchase_order_approved
#: model_terms:ir.ui.view,arch_db:purchase_order_approved.purchase_order_form
msgid "Convert to Purchase Order"
msgstr ""

#. module: purchase_order_approved
#: model:ir.model.fields,field_description:purchase_order_approved.field_purchase_order__currency_id
msgid "Currency"
msgstr ""

#. module: purchase_order_approved
#: model:ir.model.fields,field_description:purchase_order_approved.field_purchase_order__picking_type_id
msgid "Deliver To"
msgstr ""

#. module: purchase_order_approved
#: model:ir.model.fields,help:purchase_order_approved.field_purchase_order__date_order
msgid ""
"Depicts the date within which the Quotation should be confirmed and "
"converted into a purchase order."
msgstr ""

#. module: purchase_order_approved
#: model:ir.model.fields,field_description:purchase_order_approved.field_purchase_order__dest_address_id
msgid "Dropship Address"
msgstr ""

#. module: purchase_order_approved
#: model:ir.model.fields.selection,name:purchase_order_approved.selection__res_partner__purchase_requires_second_approval__never
msgid "Never"
msgstr ""

#. module: purchase_order_approved
#: model:ir.model.fields,field_description:purchase_order_approved.field_purchase_order__date_order
msgid "Order Deadline"
msgstr ""

#. module: purchase_order_approved
#: model:ir.model.fields,field_description:purchase_order_approved.field_purchase_order__order_line
msgid "Order Lines"
msgstr ""

#. module: purchase_order_approved
#: model:ir.model,name:purchase_order_approved.model_res_config_settings
msgid "Procurement purchase grouping settings"
msgstr ""

#. module: purchase_order_approved
#: model:ir.model,name:purchase_order_approved.model_purchase_order
msgid "Purchase Order"
msgstr ""

#. module: purchase_order_approved
#: model:ir.model.fields,field_description:purchase_order_approved.field_res_partner__purchase_requires_second_approval
#: model:ir.model.fields,field_description:purchase_order_approved.field_res_users__purchase_requires_second_approval
msgid "Purchase Requires Second Approval"
msgstr ""

#. module: purchase_order_approved
#: model:ir.model.fields,help:purchase_order_approved.field_purchase_order__dest_address_id
msgid ""
"Put an address if you want to deliver directly from the vendor to the "
"customer. Otherwise, keep empty to deliver to your own company."
msgstr ""

#. module: purchase_order_approved
#: model:ir.model.fields,help:purchase_order_approved.field_purchase_order__origin
msgid ""
"Reference of the document that generated this purchase order request (e.g. a "
"sales order)"
msgstr ""

#. module: purchase_order_approved
#: model:ir.model.fields,field_description:purchase_order_approved.field_purchase_order__origin
msgid "Source Document"
msgstr ""

#. module: purchase_order_approved
#: model:ir.model.fields,field_description:purchase_order_approved.field_res_config_settings__purchase_approve_active
msgid "State 'Approved' in Purchase Orders"
msgstr ""

#. module: purchase_order_approved
#: model:ir.model.fields,field_description:purchase_order_approved.field_purchase_order__state
msgid "Status"
msgstr ""

#. module: purchase_order_approved
#: model:ir.model.fields,help:purchase_order_approved.field_purchase_order__picking_type_id
msgid "This will determine operation type of incoming shipment"
msgstr ""

#. module: purchase_order_approved
#: model:ir.model.fields,field_description:purchase_order_approved.field_res_company__purchase_approve_active
msgid "Use State 'Approved' in Purchase Orders"
msgstr ""

#. module: purchase_order_approved
#: model:ir.model.fields,field_description:purchase_order_approved.field_purchase_order__partner_id
msgid "Vendor"
msgstr ""

#. module: purchase_order_approved
#: model:ir.model.fields,help:purchase_order_approved.field_purchase_order__partner_id
msgid "You can find a vendor by its Name, TIN, Email or Internal Reference."
msgstr ""
Loading