The Problem:
When renting out products in ODOO, at the invoice stage, the COGS account is debited and the Stock Interim (Delivered) account is credited (which is normal).
However, there is no corresponding valuation entry created. Same, for when the item is returned to stock.
This is false since the stock interim (delivered) account will always be negative. It also shows no difference in valuation of the item.
If it remains like this, the stock interim delivered will always decrease, as we don’t have a counterpart item to balance it to 0, as it should.
Moreover, as it is a rented product, COGS should not be registered when leaving the stock, as it will come back in stock when returned.
Side note; as a rental asset, it needs to depreciate. In order to do so, we could have them as assets and follow the automatic depreciation schedule OR doing manual depreciation from the Inventory valuation report.
The Solution:
To make the Rental virtual location an inventory loss location from the default internal location setup and assign the correct accounts for incoming and outgoing:
Therefore, when a customer picks up an item, the following journal entry will be created in regard to the inventory valuation: (notice the stock interim is debited)
When we invoice the customer, Odoo will record a rental income against a receivable together with two extra items in stock interim and cost of sales account:
When returning the rented items:
In this case, as can be seen in the above image, the COGS is credited since the item was not actually sold and the stock is debited once again. No expense was incurred and everything is correctly balanced.
Note that with this solution, an item can be set up to be sold AND rented as well.