mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-23 12:32:04 +02:00
70 lines
2.6 KiB
Python
70 lines
2.6 KiB
Python
# Copyright 2015 Antiun Ingenieria S.L. - Javier Iniesta
|
|
# Copyright 2018 ForgeFlow, S.L.
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
|
from odoo import _, api, exceptions, fields, models
|
|
|
|
|
|
class CrmLead(models.Model):
|
|
_inherit = "crm.lead"
|
|
|
|
industry_id = fields.Many2one(
|
|
comodel_name="res.partner.industry", string="Main Industry"
|
|
)
|
|
|
|
secondary_industry_ids = fields.Many2many(
|
|
comodel_name="res.partner.industry",
|
|
string="Secondary Industries",
|
|
domain="[('id', '!=', industry_id)]",
|
|
)
|
|
|
|
@api.constrains("industry_id", "secondary_industry_ids")
|
|
def _check_industries(self):
|
|
for lead in self:
|
|
if lead.industry_id in lead.secondary_industry_ids:
|
|
raise exceptions.UserError(
|
|
_(
|
|
"The secondary industries must be different from the"
|
|
" main industry."
|
|
)
|
|
)
|
|
|
|
def _prepare_customer_values(self, partner_name, is_company=False, parent_id=False):
|
|
"""Propagate industries in the creation of partner."""
|
|
values = super()._prepare_customer_values(
|
|
partner_name, is_company=is_company, parent_id=parent_id
|
|
)
|
|
main, secondary = self.industry_id, self.secondary_industry_ids
|
|
values.update(
|
|
{
|
|
"industry_id": main.id,
|
|
"secondary_industry_ids": [(6, 0, secondary.ids)],
|
|
}
|
|
)
|
|
return values
|
|
|
|
@api.onchange("partner_id")
|
|
def _onchange_partner_id(self):
|
|
if self.partner_id:
|
|
if self.partner_id.industry_id:
|
|
self.industry_id = self.partner_id.industry_id
|
|
if self.partner_id.secondary_industry_ids:
|
|
self.secondary_industry_ids = self.partner_id.secondary_industry_ids
|
|
|
|
@api.model_create_multi
|
|
def create(self, vals_list):
|
|
for vals in vals_list:
|
|
if vals.get("partner_id"):
|
|
customer = self.env["res.partner"].browse(vals["partner_id"])
|
|
if customer.industry_id and not vals.get("industry_id"):
|
|
vals.update({"industry_id": customer.industry_id.id})
|
|
if customer.secondary_industry_ids and not vals.get(
|
|
"secondary_industry_ids"
|
|
):
|
|
vals.update(
|
|
{
|
|
"secondary_industry_ids": [
|
|
(6, 0, customer.secondary_industry_ids.ids)
|
|
]
|
|
}
|
|
)
|
|
return super().create(vals_list)
|