49d3e8e68dcf1c90c69ad83a89398af03c06d3aa
Steps to reproduce: - Create an invoice: select a product; set the price to 23.00$; change the currency to €; confirm the invoice. - Create a receiving payment from the same customer: select the $ currency and put 100$ - Go back to the invoice and select the payment/reconcile the invoice and the payment. Issue: The payment is partial with 0.01€ to be paid. Cause: (conversion rate: 1.5289$/1€) 1) When the currency is changed or the price assigned, we convert the price EXCL. and then we convert the tax amount. https://github.com/odoo/odoo/blob/582b43bdf46c485be8219e1cbeb60dbed033f1e7/addons/account/models/account_move.py#L3953-L3954 In our example: - price EXCL.: 23€ * 1.5289 = 35.1647$ price._convert() -> 35.16$ - Tax amount: 3.45€ * 1.5289 = 5.274705$ tax_amount._convert() -> 5.27$ Real Sum = 40,439405$ Sum returned after convertion = 40.43$ != 40.44$ 2) To compute what is left to be paid, we use the converted amount and convert it back to the currency of the invoice. Double conversion, double mistake. https://github.com/odoo/odoo/blob/582b43bdf46c485be8219e1cbeb60dbed033f1e7/addons/account/models/account_move.py#L4873-L4878 In our example: 3) We convert back the 40.43$ to know the residual: - 40.43$ / 1.5289 = 26.443848519€ => rounded = 26.44€ != 26.45 We then compute the `debit_amount_residual_currency` (26.45€) by substracting from it the `min_debit_amount_residual_currency`(26.44€). https://github.com/odoo/odoo/blob/582b43bdf46c485be8219e1cbeb60dbed033f1e7/addons/account/models/account_move.py#L4886-L4887 Which lefts us with a `debit_amount_residual_currency` 0.01€ (0.0099999..801). https://github.com/odoo/odoo/blob/582b43bdf46c485be8219e1cbeb60dbed033f1e7/addons/account/models/account_move.py#L1421-L1437 Ticket: 2765223 X-original-commit: ce1d64cdcf160e596dba97b29f970a8b9d87b348 Part-of: odoo/odoo#88265
…
…
Odoo
Odoo is a suite of web based open source business apps.
The main Odoo Apps include an Open Source CRM, Website Builder, eCommerce, Warehouse Management, Project Management, Billing & Accounting, Point of Sale, Human Resources, Marketing, Manufacturing, ...
Odoo Apps can be used as stand-alone applications, but they also integrate seamlessly so you get a full-featured Open Source ERP when you install several Apps.
Getting started with Odoo
For a standard installation please follow the Setup instructions from the documentation.
To learn the software, we recommend the Odoo eLearning, or Scale-up, the business game. Developers can start with the developer tutorials
Languages
Python
49.6%
JavaScript
47.8%
SCSS
2%
CSS
0.3%
HTML
0.2%