diff --git a/__init__.py b/__init__.py
index 211e110..2d75d81 100644
--- a/__init__.py
+++ b/__init__.py
@@ -21,11 +21,13 @@ def register():
prospect.AssignOperatorStart,
prospect_trace.ScheduleCallStart,
prospect_trace.MakeCallStart,
+ prospect.ReassignProspectByOperatorStart,
module='sale_opportunity_management', type_='model')
Pool.register(
prospect_trace.ScheduleCall,
prospect.AssignOperator,
prospect_trace.MakeCall,
+ prospect.ReassignProspectByOperator,
module='sale_opportunity_management', type_='wizard')
Pool.register(
module='sale_opportunity_management', type_='report')
diff --git a/prospect.py b/prospect.py
index 9be2056..ed69b18 100644
--- a/prospect.py
+++ b/prospect.py
@@ -122,7 +122,7 @@ class AssignOperatorStart(ModelView):
operator = fields.Many2One('res.user', 'Operator', required=True)
prospects = fields.One2Many(
- 'sale.prospect', None, 'Prospects')
+ 'sale.prospect', None, 'Prospects', readonly=True)
business_unit = fields.Selection(
[('brigade', 'Brigade'),
@@ -167,3 +167,45 @@ class AssignOperator(Wizard):
prospect.save()
return 'end'
+
+
+class ReassignProspectByOperatorStart(ModelView):
+ 'Inicio de reasignación de prospecto por operario'
+ __name__ = 'sale.prospect.reassign_by_operator.start'
+
+ current_operator = fields.Many2One('res.user', "Current operator")
+ new_operator = fields.Many2One('res.user', "New operator")
+ prospects = fields.One2Many(
+ 'sale.prospect', None, 'Prospects', readonly=True)
+
+ @fields.depends('current_operator', 'prospects')
+ def on_change_current_operator(self):
+ pool = Pool()
+ Prospect = pool.get('sale.prospect')
+
+ self.prospects = []
+ self.prospects = Prospect.search(
+ [('state', '=', 'assigned'),
+ ('assigned_operator', '=', self.current_operator)])
+
+
+class ReassignProspectByOperator(Wizard):
+ 'Reasignar todos los prospectos de un operario, a otro operario'
+ __name__ = 'sale.prospect.reassign_by_operator'
+
+ start = StateView(
+ '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)])
+
+ reassign_by_operator = StateTransition()
+
+ def transition_reassign_by_operator(self):
+ for prospect in self.start.prospects:
+ prospect.assigned_operator = self.start.new_operator
+ prospect.save()
+
+ raise Exception(self.start.prospects[1].assigned_operator.name)
+ return 'end'
diff --git a/prospect.xml b/prospect.xml
index f5ec215..2306f8b 100644
--- a/prospect.xml
+++ b/prospect.xml
@@ -148,5 +148,21 @@ this repository contains the full copyright notices and license terms. -->