Friday, April 18, 2025
1 change · 17.0
New functionality added to Odoo
Adds automated test coverage to ensure vendor bills can be auto-completed from purchase orders using foreign currency, taxes, and payment terms when inventory purchasing is enabled. This helps prevent a past error that could block users from creating bills after receiving goods.
Original PR description
The issue was introduced by: https://github.com/odoo/odoo/commit/90158f647ba610b31499555641c9db8450b49c4c The issue has been fixed by:…
The issue was introduced by: https://github.com/odoo/odoo/commit/90158f647ba610b31499555641c9db8450b49c4c The issue has been fixed by: https://github.com/odoo/odoo/commit/b1666c61bbc9d7e7b920483e168c6048ecde011c This commit is adding a test for it. **Steps to reproduce:** - Install Accounting and purchase_stock - Activate a foreign currency (e.g. Euro) - Create a PO: * Vendor: [any] * Currency: EUR * Product: [any with a Unit Price and a tax] * Payment Terms: [any] (e.g. 15 Days) - Confirm the PO - Validate the receipt order - Go to "Accounting / Vendors / Bills" - Create a new bill - In "Auto-Complete" field, select the created PO **Issue:** A traceback is raised due to a division by zero. **Cause:** The bill and its lines are created from some information coming from the PO. In the computation of the needed terms of the bill, a computation of the taxes is called on the lines (i.e. _compute_all_tax). During that computation, the rate is computed as followed: (*) rate = line.amount_currency / line.balance if line.balance else line.currency_rate and later, rate is used as followed: 'balance': tax['amount'] / rate When "purchase_stock" module is not installed, there is no issue because "_prepare_account_move_line" method from "purchase.order. line" model doesn't initialized "amount_currency" nor "balance". Therefore, the result of (*) falls back on "line.currency_rate" which is not zero. However, when "purchase_stock" module is installed, "balance" is initialized in "_prepare_account_move_line" but not "amount_currency", leading a result of 0 for (*). opw-4681735