[IMP] partner_profiles: refactoring of position profile creation
This commit is contained in:
committed by
Stéphan Sainléger
parent
379b598754
commit
a4c1c467c5
66
partner_profiles/wizard/create_position_profile.py
Normal file
66
partner_profiles/wizard/create_position_profile.py
Normal file
@@ -0,0 +1,66 @@
|
||||
# Copyright 2022 Elabore (https://elabore.coop)
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import api, fields, models
|
||||
|
||||
class CreatePositionProfile(models.TransientModel):
|
||||
_name = "create.position.profile"
|
||||
_description = "create Position Profile"
|
||||
|
||||
@api.model
|
||||
def _default_is_company(self):
|
||||
return self.env['res.partner'].browse(self._context.get('active_ids')).is_company
|
||||
|
||||
@api.model
|
||||
def _default_structure_id(self):
|
||||
current_partner_id = self.env['res.partner'].browse(self._context.get('active_ids'))
|
||||
if current_partner_id.is_company:
|
||||
return current_partner_id.id
|
||||
else:
|
||||
return None
|
||||
|
||||
@api.model
|
||||
def _default_partner_id(self):
|
||||
current_partner_id = self.env['res.partner'].browse(self._context.get('active_ids'))
|
||||
if not current_partner_id.is_company:
|
||||
return current_partner_id.id
|
||||
else:
|
||||
return None
|
||||
|
||||
is_company = fields.Boolean('Is Company', default=_default_is_company)
|
||||
structure_id = fields.Many2one('res.partner', string='Structure', domain="[('is_company', '=', True), ('is_main_profile', '=', True)]", default=_default_structure_id )
|
||||
partner_id = fields.Many2one('res.partner', string='Person', domain="[('is_company', '=', False), ('is_main_profile', '=', True)]", default=_default_partner_id)
|
||||
function = fields.Char('Function')
|
||||
phone = fields.Char('Phone')
|
||||
email = fields.Char('Email')
|
||||
comment = fields.Text('Notes')
|
||||
|
||||
def _compute_position_profile_values(self):
|
||||
values= {
|
||||
"contact_id": self.partner_id.id,
|
||||
"parent_id": self.structure_id.id,
|
||||
"function": self.function,
|
||||
"name": self.partner_id.name,
|
||||
"phone": self.phone,
|
||||
"email": self.email,
|
||||
"comment" : self.comment,
|
||||
"partner_profile": self.env.ref("partner_profiles.partner_profile_position").id
|
||||
}
|
||||
return values
|
||||
|
||||
|
||||
@api.multi
|
||||
def create_position_profile(self):
|
||||
values = self._compute_position_profile_values()
|
||||
position_partner_id = self.env["res.partner"].create(values)
|
||||
view = self.env.ref("base.view_partner_form")
|
||||
return {
|
||||
"name": "Position Partner created",
|
||||
"view_type": "form",
|
||||
"view_mode": "form",
|
||||
"view_id": view.id,
|
||||
"res_model": "res.partner",
|
||||
"type": "ir.actions.act_window",
|
||||
"res_id": position_partner_id.id,
|
||||
"context": self.env.context,
|
||||
}
|
Reference in New Issue
Block a user