odoo/odoo#124119

Created by Upgrade, Alvaro Fuentes Suarez (afu)
Merged at 45d19b265033aa626e110e51d8b1d01408717a3e

Statuses:

label
odoo-dev:saas-12.3-fix_mem_error-afu
head
1f223cc1ad940d9ad170db40e95c264b4c6209c5
merged
2 years ago by Upgrade, Christophe Simonis (chs)
odoo/odoo
saas-12.3 #124119
13.0 #124173
14.0 #124180
15.0 #124194
saas-15.2 #124363
16.0 #124369
saas-16.1 #124374
saas-16.2 #124375
saas-16.3 #124982
17.0
18.0
saas-18.1
saas-18.2
saas-18.3
saas-18.4
master #124990

[FIX] point_of_sale: fix memory error

When there are too many (millions) of POS order lines associated to opened POS sessions we get too many taxes, most are duplicated. This causes a MemoryError.

Example queries from a real DB:

> select count(distinct r.account_tax_id) from pos_order_line l join pos_order o on o.id = l.order_id join pos_session s on s.id = o.session_id join account_tax_pos_order_line_rel r on r.pos_order_line_id = l.id where s.state != 'closed'
+-------+
| count |
|-------|
| 24    |
+-------+
> select count(r.account_tax_id) from pos_order_line l join pos_order o on o.id = l.order_id join pos_session s on s.id = o.session_id join account_tax_pos_order_line_rel r on r.pos_order_line_id = l.id where s.state != 'closed'
+---------+
| count   |
|---------|
| 2504539 |
+---------+

opw-3295467