addons-cm/website_sale_aplicoop/models/res_partner_extension.py
snt 80539f3e36 [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)
2026-03-06 13:49:13 +01:00

52 lines
1.6 KiB
Python

# Copyright 2025-Today Criptomart
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
from odoo import fields
from odoo import models
# Note: translation function _ is not used in this module (removed to satisfy flake8)
class ResPartner(models.Model):
_inherit = "res.partner"
# Campo para identificar si un partner es un grupo
is_group = fields.Boolean(
string="Is a Consumer Group?",
help="Check this box if the partner represents a group of users",
default=False,
)
# 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",
)
# Inverse relation: group orders this group participates in
group_order_ids = fields.Many2many(
"group.order",
"group_order_group_rel",
"group_id",
"order_id",
string="Consumer Group Orders",
help="Group orders this consumer group participates in",
readonly=True,
)