[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:
snt 2026-03-06 13:49:13 +01:00
parent 4141fc5ab1
commit 80539f3e36
8 changed files with 163 additions and 56 deletions

View file

@ -18,14 +18,26 @@ class ResPartner(models.Model):
)
# Relación para los miembros de un grupo (si is_group es True)
# Este campo se usa en el GRUPO para listar sus MIEMBROS
member_ids = fields.Many2many(
"res.partner",
"res_partner_group_members_rel",
"group_id",
"member_id",
string="Members",
help="Members that belong to this consumer group",
)
# Relación inversa: grupos a los que pertenece un MIEMBRO
# Este campo se usa en el MIEMBRO para listar sus GRUPOS
group_ids = fields.Many2many(
"res.partner",
"res_partner_group_members_rel",
"member_id",
"group_id",
domain=[("is_group", "=", True)],
string="Consumer Groups",
help="Consumer Groups this partner belongs to",
help="Consumer groups this partner belongs to",
)
# Inverse relation: group orders this group participates in

View file

@ -22,7 +22,7 @@ class SaleOrder(models.Model):
pickup_day = fields.Selection(
selection=_get_pickup_day_selection,
help="Day of week when this order will be picked up (inherited from group order)",
help="Day of week when this order will be picked up",
)
group_order_id = fields.Many2one(
@ -30,13 +30,19 @@ class SaleOrder(models.Model):
help="Reference to the consumer group order that originated this sale order",
)
consumer_group_id = fields.Many2one(
"res.partner",
domain="[('is_group', '=', True)]",
help="Consumer group for this order",
)
pickup_date = fields.Date(
help="Calculated pickup/delivery date (inherited from consumer group order)",
help="Pickup/delivery date",
)
home_delivery = fields.Boolean(
default=False,
help="Whether this order includes home delivery (inherited from consumer group order)",
help="Whether this order includes home delivery",
)
def _get_name_portal_content_view(self):

View file

@ -35,10 +35,10 @@ class StockPicking(models.Model):
consumer_group_id = fields.Many2one(
"res.partner",
related="sale_id.partner_id",
related="sale_id.consumer_group_id",
string="Consumer Group",
store=True,
readonly=True,
domain=[("is_group", "=", True)],
help="Consumer group (partner) from sale order for warehouse grouping",
help="Consumer group (res.partner with is_group=True) from sale order",
)