[IMP] website_sale_aplicoop: propagate consumer_group_id directly from group_order
- Add consumer_group_id to sale.order for tracking the consumer group - Fix stock.picking consumer_group_id to use sale_id.consumer_group_id - Add group_ids inverse relation in res.partner for bidirectional access - Remove auto-calculation of consumer_group_id, data comes directly from group_order.group_ids[0] - Add debug logging for consumer_group propagation - commitment_date propagates directly from group_order (no recalculation)
This commit is contained in:
parent
4141fc5ab1
commit
80539f3e36
8 changed files with 163 additions and 56 deletions
|
|
@ -929,6 +929,26 @@ class AplicoopWebsiteSale(WebsiteSale):
|
|||
|
||||
Returns the sale.order record.
|
||||
"""
|
||||
# consumer_group_id comes directly from group_order (first/only group)
|
||||
# No calculations - data propagates directly from the order context
|
||||
consumer_group_id = (
|
||||
group_order.group_ids[0].id if group_order.group_ids else False
|
||||
)
|
||||
|
||||
_logger.info(
|
||||
"[CONSUMER_GROUP DEBUG] _create_or_update_sale_order: "
|
||||
"group_order=%s, group_order.group_ids=%s, consumer_group_id=%s",
|
||||
group_order.id,
|
||||
group_order.group_ids.ids,
|
||||
consumer_group_id,
|
||||
)
|
||||
|
||||
# commitment_date: use provided or calculate from group_order
|
||||
if not commitment_date:
|
||||
commitment_date = (
|
||||
group_order.delivery_date if is_delivery else group_order.pickup_date
|
||||
)
|
||||
|
||||
if existing_order:
|
||||
# Update existing order with new lines and propagate fields
|
||||
# Use sudo() to avoid permission issues with portal users
|
||||
|
|
@ -939,13 +959,15 @@ class AplicoopWebsiteSale(WebsiteSale):
|
|||
existing_order_sudo.pickup_day = group_order.pickup_day
|
||||
existing_order_sudo.pickup_date = group_order.pickup_date
|
||||
existing_order_sudo.home_delivery = is_delivery
|
||||
existing_order_sudo.consumer_group_id = consumer_group_id
|
||||
if commitment_date:
|
||||
existing_order_sudo.commitment_date = commitment_date
|
||||
_logger.info(
|
||||
"Updated existing sale.order %d: commitment_date=%s, home_delivery=%s",
|
||||
"Updated existing sale.order %d: commitment_date=%s, home_delivery=%s, consumer_group_id=%s",
|
||||
existing_order.id,
|
||||
commitment_date,
|
||||
is_delivery,
|
||||
consumer_group_id,
|
||||
)
|
||||
return existing_order
|
||||
|
||||
|
|
@ -957,6 +979,7 @@ class AplicoopWebsiteSale(WebsiteSale):
|
|||
"pickup_day": group_order.pickup_day,
|
||||
"pickup_date": group_order.pickup_date,
|
||||
"home_delivery": is_delivery,
|
||||
"consumer_group_id": consumer_group_id,
|
||||
}
|
||||
if commitment_date:
|
||||
order_vals["commitment_date"] = commitment_date
|
||||
|
|
@ -974,11 +997,12 @@ class AplicoopWebsiteSale(WebsiteSale):
|
|||
# Create order with sudo to avoid permission issues with portal users
|
||||
sale_order = request.env["sale.order"].sudo().create(order_vals)
|
||||
_logger.info(
|
||||
"sale.order created successfully: %d with group_order_id=%d, pickup_day=%s, home_delivery=%s",
|
||||
"sale.order created successfully: %d with group_order_id=%d, pickup_day=%s, home_delivery=%s, consumer_group_id=%s",
|
||||
sale_order.id,
|
||||
group_order.id,
|
||||
group_order.pickup_day,
|
||||
group_order.home_delivery,
|
||||
consumer_group_id,
|
||||
)
|
||||
return sale_order
|
||||
|
||||
|
|
@ -989,27 +1013,39 @@ class AplicoopWebsiteSale(WebsiteSale):
|
|||
|
||||
Returns created sale.order record.
|
||||
"""
|
||||
# consumer_group_id comes directly from group_order (first/only group)
|
||||
# No calculations - data propagates directly from the order context
|
||||
consumer_group_id = (
|
||||
group_order.group_ids[0].id if group_order.group_ids else False
|
||||
)
|
||||
|
||||
_logger.info(
|
||||
"[CONSUMER_GROUP DEBUG] _create_draft_sale_order: "
|
||||
"group_order=%s, group_order.group_ids=%s, consumer_group_id=%s",
|
||||
group_order.id,
|
||||
group_order.group_ids.ids,
|
||||
consumer_group_id,
|
||||
)
|
||||
|
||||
# commitment_date comes from group_order (delivery_date or pickup_date)
|
||||
commitment_date = (
|
||||
group_order.delivery_date
|
||||
if group_order.home_delivery
|
||||
else group_order.pickup_date
|
||||
)
|
||||
|
||||
order_vals = {
|
||||
"partner_id": current_user.partner_id.id,
|
||||
"order_line": sale_order_lines,
|
||||
"state": "draft",
|
||||
"group_order_id": order_id,
|
||||
"pickup_day": group_order.pickup_day,
|
||||
"pickup_date": group_order.pickup_date,
|
||||
"home_delivery": group_order.home_delivery,
|
||||
"consumer_group_id": consumer_group_id,
|
||||
"commitment_date": commitment_date,
|
||||
}
|
||||
|
||||
# Propagate fields from group order
|
||||
if group_order.pickup_day:
|
||||
order_vals["pickup_day"] = group_order.pickup_day
|
||||
if group_order.pickup_date:
|
||||
order_vals["pickup_date"] = group_order.pickup_date
|
||||
if group_order.home_delivery:
|
||||
order_vals["home_delivery"] = group_order.home_delivery
|
||||
|
||||
# Add commitment/commitment_date if provided
|
||||
if pickup_date:
|
||||
order_vals["commitment_date"] = pickup_date
|
||||
elif group_order.pickup_date:
|
||||
order_vals["commitment_date"] = group_order.pickup_date
|
||||
|
||||
# Get salesperson for order creation (portal users need this)
|
||||
salesperson = self._get_salesperson_for_order(current_user.partner_id)
|
||||
if salesperson:
|
||||
|
|
@ -1233,7 +1269,30 @@ class AplicoopWebsiteSale(WebsiteSale):
|
|||
existing_drafts,
|
||||
order_id,
|
||||
):
|
||||
"""Replace existing draft (if any) with new lines, else create it."""
|
||||
"""Replace existing draft (if any) with new lines, else create it.
|
||||
|
||||
All fields (commitment_date, consumer_group_id, etc.) come from group_order.
|
||||
"""
|
||||
# consumer_group_id comes directly from group_order (first/only group)
|
||||
# No calculations - data propagates directly from the order context
|
||||
consumer_group_id = (
|
||||
group_order.group_ids[0].id if group_order.group_ids else False
|
||||
)
|
||||
|
||||
_logger.info(
|
||||
"[CONSUMER_GROUP DEBUG] _merge_or_replace_draft: "
|
||||
"group_order=%s, group_order.group_ids=%s, consumer_group_id=%s",
|
||||
group_order.id,
|
||||
group_order.group_ids.ids,
|
||||
consumer_group_id,
|
||||
)
|
||||
|
||||
# commitment_date comes directly from group_order
|
||||
commitment_date = (
|
||||
group_order.delivery_date
|
||||
if group_order.home_delivery
|
||||
else group_order.pickup_date
|
||||
)
|
||||
|
||||
if existing_drafts:
|
||||
draft = existing_drafts[0].sudo()
|
||||
|
|
@ -1249,6 +1308,8 @@ class AplicoopWebsiteSale(WebsiteSale):
|
|||
"pickup_day": group_order.pickup_day,
|
||||
"pickup_date": group_order.pickup_date,
|
||||
"home_delivery": group_order.home_delivery,
|
||||
"consumer_group_id": consumer_group_id,
|
||||
"commitment_date": commitment_date,
|
||||
}
|
||||
)
|
||||
return draft
|
||||
|
|
@ -1261,6 +1322,8 @@ class AplicoopWebsiteSale(WebsiteSale):
|
|||
"pickup_day": group_order.pickup_day,
|
||||
"pickup_date": group_order.pickup_date,
|
||||
"home_delivery": group_order.home_delivery,
|
||||
"consumer_group_id": consumer_group_id,
|
||||
"commitment_date": commitment_date,
|
||||
}
|
||||
# Get salesperson for order creation (portal users need this)
|
||||
salesperson = self._get_salesperson_for_order(current_user.partner_id)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue