From 99de45dd32fc83f61f0e803f80104840f52ad6d8 Mon Sep 17 00:00:00 2001 From: camilogs Date: Sun, 28 Jan 2024 15:01:16 -0500 Subject: [PATCH] =?UTF-8?q?Refactor(Asignaci=C3=B3n=20de=20prospectos):=20?= =?UTF-8?q?Se=20generaliza=20m=C3=A9todo=20para=20implementarlo=20en=20rea?= =?UTF-8?q?ssign=5Fby=5Foperator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/Prospect/wizards/assign_operator.py | 34 ++++++++++++------- .../wizards/reassign_prospect_by_operator.py | 18 +++------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/core/Prospect/wizards/assign_operator.py b/core/Prospect/wizards/assign_operator.py index 4868ed0..b841887 100644 --- a/core/Prospect/wizards/assign_operator.py +++ b/core/Prospect/wizards/assign_operator.py @@ -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 diff --git a/core/Prospect/wizards/reassign_prospect_by_operator.py b/core/Prospect/wizards/reassign_prospect_by_operator.py index bb738e1..b2a29a5 100644 --- a/core/Prospect/wizards/reassign_prospect_by_operator.py +++ b/core/Prospect/wizards/reassign_prospect_by_operator.py @@ -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'