Refactor(Asignación de prospectos): Se generaliza método para implementarlo en reassign_by_operator
This commit is contained in:
parent
950b9350cc
commit
99de45dd32
@ -6,7 +6,6 @@ from trytond.wizard import Wizard, StateView, Button, StateTransition
|
|||||||
from trytond.model import ModelView, fields
|
from trytond.model import ModelView, fields
|
||||||
from trytond.pyson import Eval
|
from trytond.pyson import Eval
|
||||||
from trytond.pool import Pool
|
from trytond.pool import Pool
|
||||||
from core.Prospect.models.prospect import Prospect
|
|
||||||
|
|
||||||
from core.ProspectTrace.models.prospect_trace import ProspectTrace
|
from core.ProspectTrace.models.prospect_trace import ProspectTrace
|
||||||
|
|
||||||
@ -27,7 +26,7 @@ class AssignOperator(Wizard):
|
|||||||
_prospects = self.start.prospects
|
_prospects = self.start.prospects
|
||||||
_operator = self.start.operator
|
_operator = self.start.operator
|
||||||
|
|
||||||
Assign.assign_operator(_prospects, _operator)
|
GenericAssign.assign_prospects_to_operator(_prospects, _operator)
|
||||||
|
|
||||||
return 'end'
|
return 'end'
|
||||||
|
|
||||||
@ -71,30 +70,39 @@ class AssignOperatorStart(ModelView):
|
|||||||
limit=self.prospects_chunk)
|
limit=self.prospects_chunk)
|
||||||
|
|
||||||
|
|
||||||
class Assign():
|
class GenericAssign():
|
||||||
@classmethod
|
@classmethod
|
||||||
def assign_operator(cls, prospects, operator):
|
def assign_prospects_to_operator(cls, prospects, operator):
|
||||||
for prospect in prospects:
|
for prospect in prospects:
|
||||||
prospect.assigned_operator = operator
|
prospect.assigned_operator = operator
|
||||||
prospect.state = 'assigned'
|
prospect.state = 'assigned'
|
||||||
|
prospect.prospect_trace = cls._get_prosp_trace(prospect, operator)
|
||||||
prospect_trace = cls._create_trace_to_prospect(prospect)
|
|
||||||
|
|
||||||
prospect.prospect_trace = prospect_trace
|
|
||||||
prospect.save()
|
prospect.save()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _get_prosp_trace(cls, prospect, operator):
|
||||||
|
ProspectTrace = Pool().get('sale.prospect_trace')
|
||||||
|
|
||||||
|
prospect_trace = ProspectTrace.search([('prospect', '=', prospect)])
|
||||||
|
|
||||||
|
if not prospect_trace:
|
||||||
|
created_trace = cls._create_base_prospect_trace(prospect, operator)
|
||||||
|
prospect_trace.append(created_trace)
|
||||||
|
|
||||||
|
prospect_trace, = prospect_trace
|
||||||
|
prospect_trace.prospect_assigned_operator = operator
|
||||||
|
prospect_trace.save()
|
||||||
|
return prospect_trace
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _create_trace_to_prospect(prospect: Prospect) -> ProspectTrace:
|
def _create_base_prospect_trace(prospect, operator) -> ProspectTrace:
|
||||||
pool = Pool()
|
ProspectTrace = Pool().get('sale.prospect_trace')
|
||||||
ProspectTrace = pool.get('sale.prospect_trace')
|
|
||||||
|
|
||||||
prospect_trace = ProspectTrace(
|
prospect_trace = ProspectTrace(
|
||||||
prospect=prospect,
|
prospect=prospect,
|
||||||
prospect_city=prospect.city,
|
prospect_city=prospect.city,
|
||||||
prospect_business_unit=prospect.business_unit,
|
prospect_business_unit=prospect.business_unit,
|
||||||
prospect_assigned_operator=prospect.assigned_operator,
|
|
||||||
prospect_contacts=prospect.contact_methods
|
prospect_contacts=prospect.contact_methods
|
||||||
)
|
)
|
||||||
|
|
||||||
prospect_trace.save()
|
|
||||||
return prospect_trace
|
return prospect_trace
|
||||||
|
@ -6,6 +6,8 @@ from trytond.wizard import Wizard, StateView, Button, StateTransition
|
|||||||
from trytond.model import ModelView, fields
|
from trytond.model import ModelView, fields
|
||||||
from trytond.pool import Pool
|
from trytond.pool import Pool
|
||||||
|
|
||||||
|
from core.Prospect.wizards.assign_operator import GenericAssign
|
||||||
|
|
||||||
|
|
||||||
class ReassignProspectByOperatorStart(ModelView):
|
class ReassignProspectByOperatorStart(ModelView):
|
||||||
'Inicio de reasignación de prospecto por operario'
|
'Inicio de reasignación de prospecto por operario'
|
||||||
@ -43,19 +45,9 @@ class ReassignProspectByOperator(Wizard):
|
|||||||
reassign_by_operator = StateTransition()
|
reassign_by_operator = StateTransition()
|
||||||
|
|
||||||
def transition_reassign_by_operator(self):
|
def transition_reassign_by_operator(self):
|
||||||
pool = Pool()
|
_prospects = self.start.prospects
|
||||||
ProspectTrace = pool.get('sale.prospect_trace')
|
_operator = self.start.new_operator
|
||||||
|
|
||||||
for prospect in self.start.prospects:
|
GenericAssign.assign_prospects_to_operator(_prospects, _operator)
|
||||||
prospect.assigned_operator = self.start.new_operator
|
|
||||||
|
|
||||||
if prospect.prospect_trace:
|
|
||||||
prospect_trace, = ProspectTrace.search(
|
|
||||||
[('prospect', '=', prospect)])
|
|
||||||
prospect_trace.prospect_assigned_operator =\
|
|
||||||
self.start.new_operator
|
|
||||||
prospect_trace.save()
|
|
||||||
|
|
||||||
prospect.save()
|
|
||||||
|
|
||||||
return 'end'
|
return 'end'
|
||||||
|
Loading…
Reference in New Issue
Block a user