From 8ec3e4b9838cf74c164fe91b7624cfae11632e32 Mon Sep 17 00:00:00 2001 From: camilogs Date: Mon, 28 Aug 2023 19:59:52 -0500 Subject: [PATCH] =?UTF-8?q?feat:=20Se=20inicia=20seguimiento=20autom=C3=A1?= =?UTF-8?q?ticamente=20luego=20de=20asignar=20operario,=20closed=20#61?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- prospect.py | 45 +++++++------------ .../scenario_sale_opportunity_management.rst | 4 +- view/prospect_tree.xml | 1 - 3 files changed, 17 insertions(+), 33 deletions(-) diff --git a/prospect.py b/prospect.py index 14070be..ea777f0 100644 --- a/prospect.py +++ b/prospect.py @@ -38,36 +38,6 @@ class Prospect(ModelSQL, ModelView): prospect_trace = fields.Many2One('sale.prospect_trace', 'Prospect trace') - @classmethod - def __setup__(cls): - super(Prospect, cls).__setup__() - cls._buttons.update({ - 'start_trace': { - 'invisible': Eval('state') == 'unassigned' - } - }) - - @classmethod - @ModelView.button - def start_trace(cls, prospects): - pool = Pool() - ProspectTrace = pool.get('sale.prospect_trace') - for prospect in prospects: - if prospect.prospect_trace: - return - - 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() - @classmethod def default_state(cls): return 'unassigned' @@ -161,11 +131,26 @@ class AssignOperator(Wizard): 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' diff --git a/tests/scenario_sale_opportunity_management.rst b/tests/scenario_sale_opportunity_management.rst index 7451845..da358ad 100644 --- a/tests/scenario_sale_opportunity_management.rst +++ b/tests/scenario_sale_opportunity_management.rst @@ -177,9 +177,8 @@ Seguimiento de prospecto 2 * Seguimiento de prospecto al que pertence -Crear seguimiento de prospecto:: +Verificar creación de seguimiento de prospecto:: >>> ProspectTrace = Model.get('sale.prospect_trace') - >>> prospect1.click('start_trace') >>> prospect_trace, = ProspectTrace.find([('prospect', '=', prospect1)]) >>> prospect_trace.prospect.name @@ -280,6 +279,7 @@ Reasignar prospectos por operador:: >>> reassign_by_operator.form.new_operator = operator2 >>> reassign_by_operator.execute('reassign_by_operator') + >>> prospect1.reload() >>> prospect1.assigned_operator.name 'Operatus' diff --git a/view/prospect_tree.xml b/view/prospect_tree.xml index bd36f14..b868fc9 100644 --- a/view/prospect_tree.xml +++ b/view/prospect_tree.xml @@ -7,5 +7,4 @@ this repository contains the full copyright notices and license terms. --> -