We don't recommend updating the Purchase Order - as it contains useful information about the agreement "at the time" you had with the Vendor, even if it changes because they need to increase prices, back order items, substitute products, etc.
Periodically, you may want to assess how well your Vendors are able to keep to their agreements, so having a record of what you both discussed at the time is important.
The best approach is to leverage both the Price Difference (aka PPV) feature, as well as the Landed Cost feature. Together they can work well to update the value of Inventory you have received at the PO price to ensure your COGS is accurate.
1. Setup a Purchase Price Variance expense account:
2. Link this account to each Product Category, via the Price Difference Account field:
3. Define a new Product Category for your PPV service product so you can use the same account there under the Stock Input Account:
4. Create your PPV Service Product inside this Category, with the default Split Method you prefer.
Let's say your Purchase Order looks like this:
When you receive the Widget, your Inventory Valuation report will show $25 and you will see a debit to your Inventory Account for $25.
When you receive the Bill for the Widget, Odoo will default the price for the Widget to $25. Instead of adjusting this price, you add a second line for the difference. In this case, we will assume the price increased to $31.25. Your Bill would then look like this:
Note: This is where the majority of the work is needed in this workflow. Each line will show the PO price, so for each line where your Vendors shows a different unit price, you will need to add a difference line. You can use the calculator feature of numeric fields to make this easier - simply prefix your entry with the equal sign so Odoo knows you want it to minus $25 (the PO price) from $31.25 (the Bill price) to automatically calculate for you the $6.25 difference.
Once you confirm the Bill, the following Journal Entry will be created:
To clear the debit from the PPV account and reclass it to the Inventory Account, you would click "Create Landed Costs" on the Bill and identify the Transfer for this PO (or this shipment if there were multiple) - everything else will pre-populate:
The Landed Cost, once validated and posted, will credit the PPV account and debit your Inventory account, so that your Inventory Valuation report will now show $31.25 and when you sell this product, the Cost of Goods will be accurate at $31.25 instead of the Purchase Order price of $25.
It will also reconcile the relevant debit (from the Bill) and credit (from the Landed Cost), so a periodic review of any balance(s) remaining in the PPV account will identify any Vendor Bills where the Landed Cost was not created, and will identify which Bill you need to revisit.
Note: If the products are sold between the time you receive them and the time you process the Landed Cost, the amount will instead be debited to Cost of Goods (since you can't debit the value of inventory you have already sold). If you have sold some but still have some in Inventory, you will see a debit to increase COGS for the quantity you have sold and a debit to increase Inventory for the quantity remaining.