[IMP] purchase: update bill control policy doc
closes odoo/documentation#8671
X-original-commit: d25a0d261b
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
@ -2,127 +2,157 @@
|
|||||||
Bill control policies
|
Bill control policies
|
||||||
=====================
|
=====================
|
||||||
|
|
||||||
In Odoo, the *bill control* policy determines the quantities billed by vendors on every purchase
|
.. _purchase/manage_deals/control-bills:
|
||||||
order, for ordered or received quantities. The policy selected in the settings will act as the
|
|
||||||
default value and will be applied to any new product created.
|
.. |PO| replace:: :abbr:`PO (Purchase Order)`
|
||||||
|
.. |POs| replace:: :abbr:`POs (Purchase Orders)`
|
||||||
|
|
||||||
|
In Odoo's *Purchase* app, the *bill control* policy determines the quantities billed by vendors on
|
||||||
|
every purchase order (PO), for either ordered or received quantities.
|
||||||
|
|
||||||
|
The policy selected in the *Purchase* app settings acts as the default value, and is applied to any
|
||||||
|
new product created.
|
||||||
|
|
||||||
Configuration
|
Configuration
|
||||||
=============
|
=============
|
||||||
|
|
||||||
To view the default bill control policy and make changes, go to :menuselection:`Purchase -->
|
To configure the *bill control* policy, navigate to :menuselection:`Purchase app --> Configuration
|
||||||
Configuration --> Settings`, and scroll down to the :guilabel:`Invoicing` section. Here, there are
|
--> Settings`, and scroll down to the :guilabel:`Invoicing` section. Under :guilabel:`Bill Control`,
|
||||||
the two :guilabel:`Bill Control` policy options: :guilabel:`Ordered quantities` and
|
select either :guilabel:`Ordered quantities` or :guilabel:`Received quantities`. Then, click
|
||||||
:guilabel:`Received quantities`.
|
:guilabel:`Save`.
|
||||||
|
|
||||||
The policy selected will be the default for any new product created. The definition of each policy
|
.. image:: control_bills/control-bills-selected-policy.png
|
||||||
is as follows:
|
|
||||||
|
|
||||||
- :guilabel:`Ordered quantities`: creates a vendor bill as soon as a purchase order is confirmed.
|
|
||||||
The products and quantities in the purchase order are used to generate a draft bill.
|
|
||||||
- :guilabel:`Received quantities`: a bill is created only *after* part of the total order has been
|
|
||||||
received. The products and quantities *received* are used to generate a draft bill. An error
|
|
||||||
message will appear if creation of a vendor bill is attempted without receiving anything.
|
|
||||||
|
|
||||||
.. image:: control_bills/bill-control-policy-error-message.png
|
|
||||||
:align: center
|
:align: center
|
||||||
:alt: Bill control policy draft bill error message.
|
:alt: Selected bill control policy in Purchase app settings.
|
||||||
|
|
||||||
|
- :guilabel:`Ordered quantities`: creates a vendor bill as soon as a |PO| is confirmed. The products
|
||||||
|
and quantities in the |PO| are used to generate a draft bill.
|
||||||
|
- :guilabel:`Received quantities`: a bill is created only *after* part of the total order has been
|
||||||
|
received. The products and quantities received are used to generate a draft bill. An error message
|
||||||
|
appears if creation of a vendor bill is attempted without receiving anything.
|
||||||
|
|
||||||
|
.. image:: control_bills/control-bills-error-message-popup.png
|
||||||
|
:align: center
|
||||||
|
:alt: Bill control policy draft bill error message.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
If one or two products need a different control policy, the default bill control setting can be
|
If a specific product should use a different control policy than selected in the *Purchase* app
|
||||||
overridden by going to the :guilabel:`Purchase` tab in a product's template and modifying its
|
settings, the :guilabel:`Bill Control` policy for that product can be changed from its product
|
||||||
:guilabel:`Control Policy` field.
|
form.
|
||||||
|
|
||||||
Example flow: Ordered quantities
|
To do that, navigate to :menuselection:`Purchase app --> Products --> Products`, and select a
|
||||||
--------------------------------
|
product. From the product form, click the :guilabel:`Purchase` tab. Under the :guilabel:`Vendor
|
||||||
|
Bills` section, modify the selection in the :guilabel:`Control Policy` field.
|
||||||
To complete an example workflow using the *ordered quantities* bill control policy, first go to
|
|
||||||
:menuselection:`Purchase --> Configuration --> Settings`, scroll down to the :guilabel:`Invoicing`
|
|
||||||
section, and select :guilabel:`Ordered quantities`. Then, :guilabel:`Save` changes.
|
|
||||||
|
|
||||||
In the :guilabel:`Purchase` app, create a new :abbr:`RFQ (Request for Quotation)`. Fill out the
|
|
||||||
information on the quotation form, add products to the invoice lines, and click :guilabel:`Confirm
|
|
||||||
Order`. Then, click :guilabel:`Create Bill`. Since the policy is set to *ordered quantities*, the
|
|
||||||
draft bill can be confirmed as soon as it is created, without any products actually being received.
|
|
||||||
|
|
||||||
Example flow: Received quantities
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
To complete an example workflow using the *received quantities* bill control policy, first go to
|
|
||||||
:menuselection:`Purchase --> Configuration --> Settings`, scroll down to the :guilabel:`Invoicing`
|
|
||||||
section, and select :guilabel:`Received quantities`. Then, :guilabel:`Save` changes.
|
|
||||||
|
|
||||||
In the :guilabel:`Purchase` app, create a new :abbr:`RFQ (Request for Quotation)`. Fill out the
|
|
||||||
information on the quotation form, add products to the invoice lines, and click :guilabel:`Confirm
|
|
||||||
Order`. Then, click on the :guilabel:`Receipt smart button`. Set the quantities in the
|
|
||||||
:guilabel:`Done` column to match the quantities in the :guilabel:`Demand` column, and
|
|
||||||
:guilabel:`Validate` the changes. Then, in the purchase order, click :guilabel:`Create Bill` and
|
|
||||||
:guilabel:`Confirm`. Since the policy is set to *received quantities*, the draft bill can be
|
|
||||||
confirmed *only* when at least some of the quantities are received.
|
|
||||||
|
|
||||||
3-way matching
|
3-way matching
|
||||||
==============
|
==============
|
||||||
|
|
||||||
Activating :guilabel:`3-way matching` ensures that vendor bills are only paid once some or all of
|
The *3-way matching* feature ensures vendor bills are only paid once some (or all) of the products
|
||||||
the products included in the purchase order have actually been received. To activate it, go to
|
included in the |PO| have been received.
|
||||||
:menuselection:`Purchase --> Configuration --> Settings`, and scroll down to the
|
|
||||||
:guilabel:`Invoicing` section. Then, click :guilabel:`3-way matching: purchases, receptions, and
|
|
||||||
bills`.
|
|
||||||
|
|
||||||
.. note::
|
To activate *3-way matching*, navigate to :menuselection:`Purchase app --> Configuration -->
|
||||||
3-way matching is *only* intended to work when the bill control policy is set to *received
|
Settings`, and scroll down to the :guilabel:`Invoicing` section. Then, tick the checkbox for
|
||||||
quantities*.
|
:guilabel:`3-way matching` to enable the feature, and click :guilabel:`Save`.
|
||||||
|
|
||||||
|
.. image:: control_bills/control-bills-three-way-matching.png
|
||||||
|
:align: center
|
||||||
|
:alt: Enabled 3-way matching feature in Purchase app settings.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
The :guilabel:`3-way matching` feature **only** works with the :guilabel:`Bill Control` policy
|
||||||
|
set to :guilabel:`Received quantities`.
|
||||||
|
|
||||||
Pay vendor bills with 3-way matching
|
Pay vendor bills with 3-way matching
|
||||||
------------------------------------
|
------------------------------------
|
||||||
|
|
||||||
When :guilabel:`3-way matching` is activated, vendor bills will display the :guilabel:`Should Be
|
When *3-way matching* is enabled, vendor bills display a :guilabel:`Should Be Paid` field under the
|
||||||
Paid` field under the :guilabel:`Other Info` tab. When a new vendor bill is created, the field will
|
:guilabel:`Other Info` tab. When a new vendor bill is created, the field is set to :guilabel:`Yes`,
|
||||||
be set to :guilabel:`Yes`, since a bill can't be created until at least some of the products
|
since a bill **cannot** be created until at least some of the products included in a |PO| have been
|
||||||
included in a purchase order have been received.
|
received.
|
||||||
|
|
||||||
.. image:: control_bills/vendor-bill-should-be-paid.png
|
To create a vendor bill from a |PO|, navigate to :menuselection:`Purchase app --> Orders -->
|
||||||
|
Purchase Orders`. From the :guilabel:`Purchase Orders` page, select the desired |PO| from the list.
|
||||||
|
Then, click :guilabel:`Create Bill`. Doing so opens a new draft :guilabel:`Vendor Bill` form, in the
|
||||||
|
:guilabel:`Draft` stage. Click the :guilabel:`Other Info` tab, and locate the :guilabel:`Should Be
|
||||||
|
Paid` field.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
The |PO| selected from the list **must not** be billed yet, or an :guilabel:`Invalid Operation`
|
||||||
|
pop-up window appears. This occurs for |POs| with a :guilabel:`Received quantities` policy, and a
|
||||||
|
:guilabel:`Fully Billed` :guilabel:`Billing Status`.
|
||||||
|
|
||||||
|
.. image:: control_bills/control-bills-invalid-operation.png
|
||||||
|
:align: center
|
||||||
|
:alt: Invalid Operation pop-up window for billed Purchase Order.
|
||||||
|
|
||||||
|
Click the drop-down menu next to :guilabel:`Should Be Paid` to view the available options:
|
||||||
|
:guilabel:`Yes`, :guilabel:`No`, and :guilabel:`Exception`.
|
||||||
|
|
||||||
|
.. image:: control_bills/control-bills-should-be-paid.png
|
||||||
:align: center
|
:align: center
|
||||||
:alt: Draft bill should be paid field status.
|
:alt: Should Be Paid field status on draft vendor bill.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
If the total quantity of products from a purchase order has not been received, Odoo only includes
|
If the total quantity of products from a |PO| has not been received, Odoo only includes the
|
||||||
the products that *have* been received in the draft vendor bill.
|
products that *have* been received in the draft vendor bill.
|
||||||
|
|
||||||
Draft bills can be edited to increase the billed quantity, change the price of the products in the
|
Draft vendor bills can be edited to increase the billed quantity, change the price of the products
|
||||||
bill, and add additional products to the bill. If this is done, the :guilabel:`Should Be Paid` field
|
in the bill, and add additional products to the bill.
|
||||||
status will be set to :guilabel:`Exception`. This means that Odoo notices the discrepancy, but
|
|
||||||
doesn't block the changes or display an error message, since there might be a valid reason for
|
|
||||||
making changes to the draft bill.
|
|
||||||
|
|
||||||
Once payment has been registered for a vendor bill and displays the green :guilabel:`Paid` banner,
|
If the draft bill's information is changed, the :guilabel:`Should Be Paid` field status is set to
|
||||||
the :guilabel:`Should Be Paid` field status will be set to :guilabel:`No`.
|
:guilabel:`Exception`. This means that Odoo notices the discrepancy, but does not block the changes
|
||||||
|
or display an error message, since there might be a valid reason for making changes to the draft
|
||||||
|
bill.
|
||||||
|
|
||||||
|
To process the vendor bill, select a date in the :guilabel:`Bill Date` field, and click
|
||||||
|
:guilabel:`Confirm`, followed by :guilabel:`Register Payment`.
|
||||||
|
|
||||||
|
This opens a :guilabel:`Register Payment` pop-up window. From this window, accounting information is
|
||||||
|
pre-populated based on the database's accounting settings. Click :guilabel:`Create Payment` to
|
||||||
|
process the vendor bill.
|
||||||
|
|
||||||
|
Once payment has been registered for a vendor bill, and the bill displays the green :guilabel:`Paid`
|
||||||
|
banner, the :guilabel:`Should Be Paid` field status is set to :guilabel:`No`.
|
||||||
|
|
||||||
.. tip::
|
.. tip::
|
||||||
The :guilabel:`Should Be Paid` status on bills is set automatically by Odoo. However, the status
|
The :guilabel:`Should Be Paid` status on bills is automatically set by Odoo. However, the status
|
||||||
can be changed manually by clicking the field's drop-down menu inside the :guilabel:`Other Info`
|
can be manually changed by clicking the field's drop-down menu inside the :guilabel:`Other Info`
|
||||||
tab.
|
tab.
|
||||||
|
|
||||||
View a purchase order's billing status
|
View a purchase order's billing status
|
||||||
======================================
|
======================================
|
||||||
|
|
||||||
When a purchase order is confirmed, its :guilabel:`Billing Status` can be viewed under the
|
Once a |PO| is confirmed, its :guilabel:`Billing Status` can be viewed under the :guilabel:`Other
|
||||||
:guilabel:`Other Information` tab on the purchase order form.
|
Information` tab on the |PO| form.
|
||||||
|
|
||||||
.. image:: control_bills/billing-status-nothing-to-bill.png
|
To view the :guilabel:`Billing Status` of a |PO|, navigate to :menuselection:`Purchase app -->
|
||||||
|
Orders --> Purchase Orders`, and select a |PO| to view.
|
||||||
|
|
||||||
|
Click the :guilabel:`Other Information` tab, and locate the :guilabel:`Billing Status` field.
|
||||||
|
|
||||||
|
.. image:: control_bills/control-bills-billing-status.png
|
||||||
:align: center
|
:align: center
|
||||||
:alt: Purchase order billing status.
|
:alt: Billing status field on a purchase order form.
|
||||||
|
|
||||||
Below is a list of the different statuses that a :guilabel:`Billing Status` could appear as and when
|
The table below details the different values the :guilabel:`Billing Status` field could read, and
|
||||||
they are displayed, depending on the bill control policy used.
|
when they are displayed, depending on the *Bill Control* policy used.
|
||||||
|
|
||||||
+------------------------------+--------------------------------------------------------------------------+
|
.. list-table::
|
||||||
| :guilabel:`Billing Status` | **Conditions** |
|
:header-rows: 1
|
||||||
| +------------------------------------------------+-------------------------+
|
:stub-columns: 1
|
||||||
| | *On received quantities* | *On ordered quantities* |
|
|
||||||
+------------------------------+------------------------------------------------+-------------------------+
|
* - Billing Status
|
||||||
| :guilabel:`Nothing to Bill` | PO confirmed; no products received | *Not applicable* |
|
- On received quantities
|
||||||
+------------------------------+------------------------------------------------+-------------------------+
|
- On ordered quantities
|
||||||
| :guilabel:`Waiting Bills` | All/some products received; bill not created | PO confirmed |
|
* - Nothing to Bill
|
||||||
+------------------------------+------------------------------------------------+-------------------------+
|
- PO confirmed; no products received
|
||||||
| :guilabel:`Fully Billed` | All/some products received; draft bill created | Draft bill created |
|
- *Not applicable*
|
||||||
+------------------------------+------------------------------------------------+-------------------------+
|
* - Waiting Bills
|
||||||
|
- All/some products received; bill not created
|
||||||
|
- PO confirmed
|
||||||
|
* - Fully Billed
|
||||||
|
- All/some products received; draft bill created
|
||||||
|
- Draft bill created
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
:doc:`manage`
|
||||||
|
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 29 KiB |