[FIX] website_sale_aplicoop: two draft-reuse and compute-field bugs
- group.order.home_delivery is a stored compute field with no inverse; Odoo still lets write() set it directly, so a stray direct write stuck instead of always being re-derived from delivery_product_id. create() and write() now strip it from vals, same pattern already used for slug. - _find_recent_draft_order only bounded drafts by create_date, so a freshly created draft for a stale/previous pickup_date (but created "now") was wrongly reused. Fix requires both create_date to fall in the active window AND pickup_date to match when set — the latter alone isn't enough either, per the regression already covered by test_find_recent_draft_excludes_previous_cycle (observed in production at stage.elikabilbo.eus).
This commit is contained in:
parent
e59c706ef6
commit
158933e96e
2 changed files with 34 additions and 10 deletions
|
|
@ -420,6 +420,7 @@ class GroupOrder(models.Model):
|
|||
taken = set()
|
||||
new_vals_list = []
|
||||
for vals in vals_list:
|
||||
vals = {k: v for k, v in vals.items() if k != "home_delivery"}
|
||||
slug = self._normalize_slug(vals.get("slug")) or self._generate_unique_slug(
|
||||
vals.get("name"), taken=taken
|
||||
)
|
||||
|
|
@ -428,7 +429,16 @@ class GroupOrder(models.Model):
|
|||
return super().create(new_vals_list)
|
||||
|
||||
def write(self, vals):
|
||||
"""Normalize the slug, regenerating it from the name when emptied."""
|
||||
"""Normalize the slug, regenerating it from the name when emptied.
|
||||
|
||||
`home_delivery` is derived from `delivery_product_id` and must never
|
||||
be settable directly — dropped here so a stray direct write can't
|
||||
make it stick outside `_compute_home_delivery`.
|
||||
"""
|
||||
if "home_delivery" in vals:
|
||||
vals = {k: v for k, v in vals.items() if k != "home_delivery"}
|
||||
if not vals:
|
||||
return True
|
||||
if "slug" not in vals:
|
||||
return super().write(vals)
|
||||
slug = self._normalize_slug(vals["slug"])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue