There are certain occasions in the business, where you will receive the vendor bill from a merchant prior to receiving the products that are ordered. However, the bill might not be paid until the quantity has been received. To characterize whether the vendor bill ought to be paid or not, one can utilize the feature 3-way matching. The feature helps in comparing the data that appears on the purchase order, the receipt and the vendor bill. Also, it saves the user from making inaccurate payment and fake vendor bills.
Setting up Odoo for 3-way matching operations:
To make this feature work, go to Purchase -> Configuration -> Settings, check the 3-way matching: purchases, receptions, and bills. The vendor bill control should be based on the ordered quantities.
Then click Save to mark the changes.
Soon after the activation of settings, data appears on the vendor bill, specifying whether the bill should be paid or not. By default, there are three possible values:
1. Yes: you should pay the bill and you have received the products.
2. No: you should not pay the bill and you have not received the ordered product.
3. Exception: there is a difference between ordered, billed and received quantities.
The status is automatically set by Odoo. If you want to set the status manually, check the Force status option.
Let's go through the workflow of 3-way matching,
Create a product and set the Control Policy on received quantities which means control bills based on received quantities.
Create a purchase order for the product JBL Earphone. Set the quantity and unit price, and confirm the order. Then receive the product.
Next, create the vendor bill for the particular product from the purchase order.
After creating the bill, go to Control -> Vendor bills, choose the corresponding vendor bill for the purchase order. The value of Should be paid automatically set to Yes, such that you should not pay the bill and you have received the products.
Create another purchase order, set the quantity as 10 and unit price for the product. Later confirm the purchase order. Create a bill for the corresponding purchase order with quantity as 10.
You can see the value of Should be paid automatically changed to No, such that you should not pay the bill and you have not received the ordered product.
Again create purchase order, set the quantity as 10 and unit price.
Now receive the product, change the received quantity as 5 and later validate the quantity.
Next, you need to bill the quantity, such that you should change the billed quantity as 6. Then validate the corresponding bill and register the payment.
In the vendor bill, you can see the value of Should be paid automatically set to Exception because there is a difference between ordered, received and billed quantities.
If you want to change the value of Should be paid to manually, check the Force status option. From the drop-down list, you can change the value.
This is how 3-way matching works in odoo.