mirror of
https://github.com/bringout/oca-ocb-crm.git
synced 2026-04-25 22:32:03 +02:00
19.0 vanilla
This commit is contained in:
parent
dc68f80d3f
commit
7221b9ac46
610 changed files with 135477 additions and 161677 deletions
|
|
@ -6,7 +6,7 @@ from odoo.exceptions import UserError
|
|||
from odoo.tools.translate import _
|
||||
|
||||
|
||||
class Lead2OpportunityPartner(models.TransientModel):
|
||||
class CrmLead2opportunityPartner(models.TransientModel):
|
||||
_name = 'crm.lead2opportunity.partner'
|
||||
_description = 'Convert Lead to Opportunity (not in mass)'
|
||||
|
||||
|
|
@ -14,9 +14,9 @@ class Lead2OpportunityPartner(models.TransientModel):
|
|||
def default_get(self, fields):
|
||||
""" Allow support of active_id / active_model instead of jut default_lead_id
|
||||
to ease window action definitions, and be backward compatible. """
|
||||
result = super(Lead2OpportunityPartner, self).default_get(fields)
|
||||
result = super().default_get(fields)
|
||||
|
||||
if not result.get('lead_id') and self.env.context.get('active_id'):
|
||||
if 'lead_id' in fields and not result.get('lead_id') and self.env.context.get('active_id'):
|
||||
result['lead_id'] = self.env.context.get('active_id')
|
||||
|
||||
if result.get('lead_id'):
|
||||
|
|
@ -32,12 +32,17 @@ class Lead2OpportunityPartner(models.TransientModel):
|
|||
action = fields.Selection([
|
||||
('create', 'Create a new customer'),
|
||||
('exist', 'Link to an existing customer'),
|
||||
('nothing', 'Do not link to a customer')
|
||||
], string='Related Customer', compute='_compute_action', readonly=False, store=True, compute_sudo=False)
|
||||
], string='Related Customer', compute='_compute_action',
|
||||
precompute=True, readonly=False, required=True, store=True, compute_sudo=False)
|
||||
lead_id = fields.Many2one('crm.lead', 'Associated Lead', required=True)
|
||||
lead_partner_name = fields.Char(related='lead_id.partner_name', help=False)
|
||||
lead_contact_name = fields.Char(related='lead_id.contact_name', help=False)
|
||||
duplicated_lead_ids = fields.Many2many(
|
||||
'crm.lead', string='Opportunities', context={'active_test': False},
|
||||
compute='_compute_duplicated_lead_ids', readonly=False, store=True, compute_sudo=False)
|
||||
commercial_partner_id = fields.Many2one(
|
||||
'res.partner', 'Company', domain=[('is_company', '=', True)],
|
||||
compute='_compute_commercial_partner_id', readonly=False, store=True, compute_sudo=False)
|
||||
partner_id = fields.Many2one(
|
||||
'res.partner', 'Customer',
|
||||
compute='_compute_partner_id', readonly=False, store=True, compute_sudo=False)
|
||||
|
|
@ -60,16 +65,8 @@ class Lead2OpportunityPartner(models.TransientModel):
|
|||
@api.depends('lead_id')
|
||||
def _compute_action(self):
|
||||
for convert in self:
|
||||
if not convert.lead_id:
|
||||
convert.action = 'nothing'
|
||||
else:
|
||||
partner = convert.lead_id._find_matching_partner()
|
||||
if partner:
|
||||
convert.action = 'exist'
|
||||
elif convert.lead_id.contact_name:
|
||||
convert.action = 'create'
|
||||
else:
|
||||
convert.action = 'nothing'
|
||||
partner = convert.lead_id and convert.lead_id._find_matching_partner()
|
||||
convert.action = 'exist' if partner else 'create'
|
||||
|
||||
@api.depends('lead_id', 'partner_id')
|
||||
def _compute_duplicated_lead_ids(self):
|
||||
|
|
@ -82,6 +79,18 @@ class Lead2OpportunityPartner(models.TransientModel):
|
|||
convert.lead_id.partner_id.email if convert.lead_id.partner_id.email else convert.lead_id.email_from,
|
||||
include_lost=True).ids
|
||||
|
||||
@api.depends('partner_id')
|
||||
def _compute_commercial_partner_id(self):
|
||||
for convert in self.filtered('partner_id'):
|
||||
if (
|
||||
not convert.commercial_partner_id
|
||||
or (
|
||||
convert.commercial_partner_id
|
||||
and not convert.commercial_partner_id.filtered_domain([('id', 'parent_of', convert.commercial_partner_id)])
|
||||
)
|
||||
) and convert.partner_id.parent_id:
|
||||
convert.commercial_partner_id = convert.partner_id.parent_id
|
||||
|
||||
@api.depends('action', 'lead_id')
|
||||
def _compute_partner_id(self):
|
||||
for convert in self:
|
||||
|
|
@ -118,7 +127,7 @@ class Lead2OpportunityPartner(models.TransientModel):
|
|||
return result_opportunity.redirect_lead_opportunity_view()
|
||||
|
||||
def _action_merge(self):
|
||||
to_merge = self.duplicated_lead_ids
|
||||
to_merge = (self.duplicated_lead_ids | self.lead_id)
|
||||
result_opportunity = to_merge.merge_opportunity(auto_unlink=False)
|
||||
result_opportunity.action_unarchive()
|
||||
|
||||
|
|
@ -138,7 +147,7 @@ class Lead2OpportunityPartner(models.TransientModel):
|
|||
|
||||
def _action_convert(self):
|
||||
""" """
|
||||
result_opportunities = self.env['crm.lead'].browse(self._context.get('active_ids', []))
|
||||
result_opportunities = self.env['crm.lead'].browse(self.env.context.get('active_ids', []))
|
||||
self._convert_and_allocate(result_opportunities, [self.user_id.id], team_id=self.team_id.id)
|
||||
return result_opportunities[0]
|
||||
|
||||
|
|
@ -146,7 +155,7 @@ class Lead2OpportunityPartner(models.TransientModel):
|
|||
self.ensure_one()
|
||||
|
||||
for lead in leads:
|
||||
if lead.active and self.action != 'nothing':
|
||||
if lead.active:
|
||||
self._convert_handle_partner(
|
||||
lead, self.action, self.partner_id.id or lead.partner_id.id)
|
||||
|
||||
|
|
@ -163,5 +172,6 @@ class Lead2OpportunityPartner(models.TransientModel):
|
|||
# used to propagate user_id (salesman) on created partners during conversion
|
||||
lead.with_context(default_user_id=self.user_id.id)._handle_partner_assignment(
|
||||
force_partner_id=partner_id,
|
||||
create_missing=(action == 'create')
|
||||
create_missing=action == 'create',
|
||||
with_parent=self.commercial_partner_id,
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue