From 2eb52e9dcef2476e27d06ab1fa1c01115acf2973 Mon Sep 17 00:00:00 2001 From: camilogs Date: Sun, 27 Aug 2023 18:48:30 -0500 Subject: [PATCH] =?UTF-8?q?feat:=20Se=20implementa=20reasignaci=C3=B3n=20d?= =?UTF-8?q?e=20prospecto=20espec=C3=ADfico=20en=20las=20pruebas,=20#53?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __init__.py | 2 + prospect.py | 42 ++++++++++++++++++- prospect.xml | 6 +++ .../scenario_sale_opportunity_management.rst | 16 +++++++ view/reassign_by_prospect_form.xml | 6 +++ 5 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 view/reassign_by_prospect_form.xml diff --git a/__init__.py b/__init__.py index 2d75d81..088e8f8 100644 --- a/__init__.py +++ b/__init__.py @@ -22,12 +22,14 @@ def register(): prospect_trace.ScheduleCallStart, prospect_trace.MakeCallStart, prospect.ReassignProspectByOperatorStart, + prospect.ReassignProspectByProspectStart, module='sale_opportunity_management', type_='model') Pool.register( prospect_trace.ScheduleCall, prospect.AssignOperator, prospect_trace.MakeCall, prospect.ReassignProspectByOperator, + prospect.ReasignProspectByProspect, module='sale_opportunity_management', type_='wizard') Pool.register( module='sale_opportunity_management', type_='report') diff --git a/prospect.py b/prospect.py index 02ae412..14070be 100644 --- a/prospect.py +++ b/prospect.py @@ -199,8 +199,8 @@ class ReassignProspectByOperator(Wizard): 'sale.prospect.reassign_by_operator.start', 'sale_opportunity_management.reassign_by_operator_start_view_form', [Button("Cancel", 'end', 'tryton-cancel'), - Button( - "Reassign", 'reassign_by_operator', 'tryton-ok', default=True)]) + Button("Reassign", 'reassign_by_operator', 'tryton-ok', default=True) + ]) reassign_by_operator = StateTransition() @@ -221,3 +221,41 @@ class ReassignProspectByOperator(Wizard): prospect.save() return 'end' + + +class ReassignProspectByProspectStart(ModelView): + 'Inicio de reasignación de un prospecto en específico' + __name__ = 'sale.prospect.reassign_by_prospect.start' + + prospect = fields.Many2One('sale.prospect', 'Prospect', required=True) + new_operator = fields.Many2One('res.user', "New operator", required=True) + + +class ReasignProspectByProspect(Wizard): + 'Reasignar un prospecto en específico a un nuevo operario' + __name__ = 'sale.prospect.reassign_by_prospect' + + start = StateView( + 'sale.prospect.reassign_by_prospect.start', + 'sale_opportunity_management.reassign_by_prospect_start_view_form', + [Button("Cancel", 'end', 'tryton-cancel'), + Button("Reassign", 'reassign_by_prospect', 'tryton-ok', default=True) + ]) + + reassign_by_prospect = StateTransition() + + def transition_reassign_by_prospect(self): + pool = Pool() + ProspectTrace = pool.get('sale.prospect_trace') + + self.start.prospect.assigned_operator = self.start.new_operator + + if self.start.prospect.prospect_trace: + prospect_trace, = ProspectTrace.search( + [('prospect', '=', self.start.prospect)]) + prospect_trace.prospect_assigned_operator =\ + self.start.new_operator + prospect_trace.save() + + self.start.prospect.save() + return 'end' diff --git a/prospect.xml b/prospect.xml index 33b6303..c104baf 100644 --- a/prospect.xml +++ b/prospect.xml @@ -164,5 +164,11 @@ this repository contains the full copyright notices and license terms. --> sequence="50" id="menu_reassign_by_operator_wizard" action="reassign_by_operator_wizard"/> + + + sale.prospect.reassign_by_prospect.start + form + reassign_by_prospect_form + diff --git a/tests/scenario_sale_opportunity_management.rst b/tests/scenario_sale_opportunity_management.rst index 1ba28e2..54814b8 100644 --- a/tests/scenario_sale_opportunity_management.rst +++ b/tests/scenario_sale_opportunity_management.rst @@ -283,6 +283,22 @@ Reasignar prospectos por operador:: >>> prospect_trace.calls[0].call_assigned_operator.name 'Administrator' +Reasignar prospectos por prospecto:: + >>> reassign_by_prospect = Wizard('sale.prospect.reassign_by_prospect', []) + >>> reassign_by_prospect.form.prospect = prospect1 + >>> reassign_by_prospect.form.new_operator = user + >>> reassign_by_prospect.execute('reassign_by_prospect') + + + >>> prospect1.reload() + >>> prospect1.assigned_operator.name + 'Administrator' + >>> prospect_trace.reload() + >>> prospect_trace.prospect_assigned_operator.name + 'Administrator' + >>> prospect_trace.calls[0].call_assigned_operator.name + 'Administrator' + -------- Reportes -------- diff --git a/view/reassign_by_prospect_form.xml b/view/reassign_by_prospect_form.xml new file mode 100644 index 0000000..f70e785 --- /dev/null +++ b/view/reassign_by_prospect_form.xml @@ -0,0 +1,6 @@ + + +
+ +
\ No newline at end of file