Refactor(Asignación de prospectos): Se generaliza método para implementarlo en reassign_by_operator

This commit is contained in:
Camilo Gonzalez 2024-01-28 15:01:16 -05:00
parent 950b9350cc
commit 99de45dd32
2 changed files with 26 additions and 26 deletions

View File

@ -6,7 +6,6 @@ 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
@ -27,7 +26,7 @@ class AssignOperator(Wizard):
_prospects = self.start.prospects
_operator = self.start.operator
Assign.assign_operator(_prospects, _operator)
GenericAssign.assign_prospects_to_operator(_prospects, _operator)
return 'end'
@ -71,30 +70,39 @@ class AssignOperatorStart(ModelView):
limit=self.prospects_chunk)
class Assign():
class GenericAssign():
@classmethod
def assign_operator(cls, prospects, operator):
def assign_prospects_to_operator(cls, prospects, operator):
for prospect in prospects:
prospect.assigned_operator = operator
prospect.state = 'assigned'
prospect_trace = cls._create_trace_to_prospect(prospect)
prospect.prospect_trace = prospect_trace
prospect.prospect_trace = cls._get_prosp_trace(prospect, operator)
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
def _create_trace_to_prospect(prospect: Prospect) -> ProspectTrace:
pool = Pool()
ProspectTrace = pool.get('sale.prospect_trace')
def _create_base_prospect_trace(prospect, operator) -> ProspectTrace:
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

View File

@ -6,6 +6,8 @@ from trytond.wizard import Wizard, StateView, Button, StateTransition
from trytond.model import ModelView, fields
from trytond.pool import Pool
from core.Prospect.wizards.assign_operator import GenericAssign
class ReassignProspectByOperatorStart(ModelView):
'Inicio de reasignación de prospecto por operario'
@ -43,19 +45,9 @@ class ReassignProspectByOperator(Wizard):
reassign_by_operator = StateTransition()
def transition_reassign_by_operator(self):
pool = Pool()
ProspectTrace = pool.get('sale.prospect_trace')
_prospects = self.start.prospects
_operator = self.start.new_operator
for prospect in self.start.prospects:
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()
GenericAssign.assign_prospects_to_operator(_prospects, _operator)
return 'end'