Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[16.0][MIG] sale_pricelist_global_rule #3533

Open
wants to merge 10 commits into
base: 16.0
Choose a base branch
from

Conversation

LuciaMarchalFactorLibre
Copy link

@LuciaMarchalFactorLibre LuciaMarchalFactorLibre commented Jan 10, 2025

Migration of the sale_pricelist_global_rule module from version 15.0 to 16.0

FL-556-4652

carlos-lopez-tecnativa and others added 9 commits January 8, 2025 09:51
… quantities across sales order lines

- by product template
- by product category
…onstraint conflicts

The `product_variant_default_code` module adds a unique constraint, which causes test failures when installed alongside `sale_pricelist_global_rule`. This fix adjusts the tests in to avoid conflicts with this unique constraint, ensuring compatibility when both modules are installed.
If not, we get:

```
Traceback (most recent call last):
  File "/opt/odoo/custom/src/odoo/odoo/http.py", line 658, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/opt/odoo/custom/src/odoo/odoo/http.py", line 301, in _handle_exception
    raise exception.with_traceback(None) from new_cause

psycopg2.errors.DatatypeMismatch: ARRAY types integer and boolean cannot be matched

LINE 9: ...L OR item.global_product_tmpl_id = any(ARRAY[false,...
```

A little refactor for better code in the method is also done.

TT51677
@pedrobaeza
Copy link
Member

/ocabot migration sale_pricelist_global_rule

@OCA-git-bot OCA-git-bot added this to the 16.0 milestone Jan 12, 2025
@LuciaMarchalFactorLibre LuciaMarchalFactorLibre force-pushed the 16.0-mig-sale_pricelist_global_rule branch from d0c9dc5 to 423ca3c Compare January 15, 2025 15:14
@LuciaMarchalFactorLibre LuciaMarchalFactorLibre force-pushed the 16.0-mig-sale_pricelist_global_rule branch from 423ca3c to 5874049 Compare January 16, 2025 12:00
Comment on lines +24 to +48
self.env.cr.execute(
"""
SELECT
item.id
FROM
product_pricelist_item AS item
LEFT JOIN product_category AS categ ON item.categ_id = categ.id
WHERE
(item.product_tmpl_id IS NULL OR item.product_tmpl_id = any(%s))
AND (item.product_id IS NULL OR item.product_id = any(%s))
AND (item.categ_id IS NULL OR item.categ_id = any(%s))
AND (item.pricelist_id = %s)
AND (item.date_start IS NULL OR item.date_start<=%s)
AND (item.date_end IS NULL OR item.date_end>=%s)
AND (item.active = TRUE)
ORDER BY
item.applied_on, item.min_quantity desc, categ.complete_name desc, item.id desc
""",
(prod_tmpl_ids, prod_ids, categ_ids, self.id, date, date),
)
# NOTE: if you change `order by` on that query, make sure it matches
# _order from model to avoid inconstencies and undeterministic issues.

item_ids = [x[0] for x in self.env.cr.fetchall()]
items = self.env["product.pricelist.item"].browse(item_ids)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you re implementing the whole thing, and ignoring the recursion, or am I missing something?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants