refactor(Asignación de prospectos): se extrae método
This commit is contained in:
parent
cd0564c95f
commit
6f69709823
@ -9,6 +9,7 @@ from core.Prospect.wizards.reassign_prospect_by_prospect \
|
||||
import ReasignProspectByProspect, ReassignProspectByProspectStart
|
||||
from core.Prospect.wizards.reassign_prospect_by_operator \
|
||||
import ReassignProspectByOperator, ReassignProspectByOperatorStart
|
||||
from core.Prospect.wizards.assign_to_me import AssignToMe, AssignToMeStart
|
||||
|
||||
# Prospect Trace Core
|
||||
from core.ProspectTrace.wizards.make_call \
|
||||
@ -50,6 +51,7 @@ def register():
|
||||
MakeCallAskTask,
|
||||
ReassignProspectByOperatorStart,
|
||||
ReassignProspectByProspectStart,
|
||||
AssignToMeStart,
|
||||
module='sale_opportunity_management', type_='model')
|
||||
Pool.register(
|
||||
ScheduleCall,
|
||||
@ -57,6 +59,7 @@ def register():
|
||||
MakeCall,
|
||||
ReassignProspectByOperator,
|
||||
ReasignProspectByProspect,
|
||||
AssignToMe,
|
||||
module='sale_opportunity_management', type_='wizard')
|
||||
Pool.register(
|
||||
module='sale_opportunity_management', type_='report')
|
||||
|
@ -59,3 +59,13 @@ class Prospect(ModelSQL, ModelView, DeactivableMixin):
|
||||
def on_change_city(self):
|
||||
if self.city:
|
||||
self.department = self.city.parent
|
||||
|
||||
# TODO assign to current user if is operator
|
||||
# @classmethod
|
||||
# def create(cls, values):
|
||||
# records = super().create(values)
|
||||
# Transaction.atexit(
|
||||
# lambda: cls.try_assign_to_current_operator(records))
|
||||
|
||||
# @classmethod
|
||||
# def try_assign_to_current_operator(cls, prospect, user)
|
||||
|
@ -6,6 +6,56 @@ from trytond.wizard import Wizard, StateView, Button, StateTransition
|
||||
from trytond.model import ModelView, fields
|
||||
from trytond.pyson import Eval
|
||||
from trytond.pool import Pool
|
||||
from core.Prospect.models.prospect import Prospect
|
||||
|
||||
from core.ProspectTrace.models.prospect_trace import ProspectTrace
|
||||
|
||||
|
||||
class AssignOperator(Wizard):
|
||||
'Asignar operador a prospecto'
|
||||
__name__ = 'sale.prospect.assign'
|
||||
|
||||
start = StateView(
|
||||
'sale.prospect.assign.start',
|
||||
'sale_opportunity_management.assign_start_view_form', [
|
||||
Button("Cancel", 'end', 'tryton-cancel'),
|
||||
Button("Assign", 'assign', 'tryton-ok', default=True)])
|
||||
|
||||
assign = StateTransition()
|
||||
|
||||
def transition_assign(self):
|
||||
_prospects = self.start.prospects
|
||||
_operator = self.start.operator
|
||||
|
||||
self._assign_operator(_prospects, _operator)
|
||||
|
||||
return 'end'
|
||||
|
||||
def _assign_operator(self, prospects, operator):
|
||||
|
||||
for prospect in prospects:
|
||||
prospect.assigned_operator = operator
|
||||
prospect.state = 'assigned'
|
||||
|
||||
prospect_trace = self._create_prospect_trace(prospect)
|
||||
|
||||
prospect.prospect_trace = prospect_trace
|
||||
prospect.save()
|
||||
|
||||
def _create_prospect_trace(self, prospect: Prospect) -> ProspectTrace:
|
||||
pool = Pool()
|
||||
ProspectTrace = pool.get('sale.prospect_trace')
|
||||
|
||||
prospect_trace = ProspectTrace(
|
||||
prospect=prospect,
|
||||
prospect_city=prospect.city,
|
||||
prospect_business_unit=prospect.business_unit,
|
||||
prospect_assigned_operator=prospect.assigned_operator,
|
||||
prospect_contacts=prospect.contact_methods
|
||||
)
|
||||
|
||||
prospect_trace.save()
|
||||
return prospect_trace
|
||||
|
||||
|
||||
class AssignOperatorStart(ModelView):
|
||||
@ -45,39 +95,3 @@ class AssignOperatorStart(ModelView):
|
||||
[('state', '=', 'unassigned'),
|
||||
('business_unit', '=', self.business_unit)],
|
||||
limit=self.prospects_chunk)
|
||||
|
||||
|
||||
class AssignOperator(Wizard):
|
||||
'Asignar operador a prospecto'
|
||||
__name__ = 'sale.prospect.assign'
|
||||
|
||||
start = StateView(
|
||||
'sale.prospect.assign.start',
|
||||
'sale_opportunity_management.assign_start_view_form', [
|
||||
Button("Cancel", 'end', 'tryton-cancel'),
|
||||
Button("Assign", 'assign', 'tryton-ok', default=True)])
|
||||
|
||||
assign = StateTransition()
|
||||
|
||||
def transition_assign(self):
|
||||
pool = Pool()
|
||||
ProspectTrace = pool.get('sale.prospect_trace')
|
||||
|
||||
for prospect in self.start.prospects:
|
||||
prospect.assigned_operator = self.start.operator
|
||||
prospect.state = 'assigned'
|
||||
prospect.save()
|
||||
|
||||
prospect_trace = ProspectTrace(
|
||||
prospect=prospect,
|
||||
prospect_city=prospect.city,
|
||||
prospect_business_unit=prospect.business_unit,
|
||||
prospect_assigned_operator=prospect.assigned_operator,
|
||||
prospect_contacts=prospect.contact_methods
|
||||
)
|
||||
prospect_trace.save()
|
||||
|
||||
prospect.prospect_trace = prospect_trace
|
||||
prospect.save()
|
||||
|
||||
return 'end'
|
||||
|
28
core/Prospect/wizards/assign_to_me.py
Normal file
28
core/Prospect/wizards/assign_to_me.py
Normal file
@ -0,0 +1,28 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
from trytond.wizard import Wizard, StateView, Button, StateTransition
|
||||
from trytond.model import ModelView, fields
|
||||
|
||||
|
||||
class AssignToMe(Wizard):
|
||||
'Asignar un prospecto al usuario actual'
|
||||
__name__ = 'sale.prospect.assign_to_me'
|
||||
|
||||
start = StateView(
|
||||
model_name='sale.prospect.assign_to_me.start',
|
||||
view='sale_opportunity_management.assign_to_me_start_view_form',
|
||||
buttons=[
|
||||
Button("Cancel", 'end', 'tryton-cancel'),
|
||||
Button("Confirm", 'confirm', 'tryton-ok', default=True)
|
||||
]
|
||||
)
|
||||
|
||||
start = StateTransition()
|
||||
|
||||
|
||||
class AssignToMeStart(ModelView):
|
||||
'Inicio de asignación de un prospecto al usuario actual'
|
||||
__name__ = 'sale.prospect.assign_to_me.start'
|
||||
|
||||
assign_to_me = fields.Boolean("Assign to me?")
|
13
prospect.xml
13
prospect.xml
@ -164,6 +164,18 @@ this repository contains the full copyright notices and license terms. -->
|
||||
id="menu_reassign_by_prospect_wizard"
|
||||
action="reassign_by_prospect_wizard" />
|
||||
|
||||
|
||||
<record model="ir.action.wizard" id="assign_to_me_wizard">
|
||||
<field name="name">Assign to me</field>
|
||||
<field name="wiz_name">sale.prospect.assign_to_me</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="assign_to_me_start_view_form">
|
||||
<field name="model">sale.prospect.assign_to_me.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">assign_to_me_form</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="ir.model.access" id="access_sale">
|
||||
<field name="model" search="[('model', '=', 'sale.prospect')]" />
|
||||
<field name="perm_read" eval="False" />
|
||||
@ -181,5 +193,4 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<field name="perm_delete" eval="True" />
|
||||
</record>
|
||||
</data>
|
||||
|
||||
</tryton>
|
@ -22,11 +22,15 @@
|
||||
.. >>> prospect.business_unit = 'brigade'
|
||||
.. >>> prospect.save()
|
||||
|
||||
.. [ Se abre una ventana preguntandole al usuario si quiere asignarse a sí mismo el prospecto recién creado ]
|
||||
.. >>> assign_to_me_wizard = Wizard('sale.prospect.assign_to_me', [prospect])
|
||||
.. >>> assign_to_me_wizard.form.assign_to_me = true
|
||||
.. >>> assign_to_me_wizard.execute('assign_to_me')
|
||||
.. .. Opción 1:
|
||||
.. .. [ Se abre una ventana preguntandole al usuario si quiere asignarse a sí mismo el prospecto recién creado ]
|
||||
.. .. >>> assign_to_me_wizard = Wizard('sale.prospect.assign_to_me', [prospect])
|
||||
.. .. >>> assign_to_me_wizard.form.assign_to_me = True
|
||||
.. .. >>> assign_to_me_wizard.execute('assign_to_me')
|
||||
|
||||
|
||||
.. ..Opcion2:
|
||||
.. .. [Se evalua si el usuario actual es operador, de ser el caso se le asigna este prospecto]
|
||||
.. [ Se inició seguimiento, asignado al operador que lo creó ]
|
||||
.. >>> ProspectTrace = Model.get('sale.prospect_trace')
|
||||
.. >>> prospect_trace, = ProspectTrace.find([('prospect', '=', prospect)])
|
||||
|
5
view/assign_to_me_form.xml
Normal file
5
view/assign_to_me_form.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<form>
|
||||
</form>
|
Loading…
Reference in New Issue
Block a user