diff --git a/__init__.py b/__init__.py
index d14612d..fc774be 100644
--- a/__init__.py
+++ b/__init__.py
@@ -9,6 +9,7 @@ from core.Prospect.wizards.reassign_prospect_by_prospect \
import ReasignProspectByProspect, ReassignProspectByProspectStart
from core.Prospect.wizards.reassign_prospect_by_operator \
import ReassignProspectByOperator, ReassignProspectByOperatorStart
+from core.Prospect.wizards.assign_to_me import AssignToMe, AssignToMeStart
# Prospect Trace Core
from core.ProspectTrace.wizards.make_call \
@@ -50,6 +51,7 @@ def register():
MakeCallAskTask,
ReassignProspectByOperatorStart,
ReassignProspectByProspectStart,
+ AssignToMeStart,
module='sale_opportunity_management', type_='model')
Pool.register(
ScheduleCall,
@@ -57,6 +59,7 @@ def register():
MakeCall,
ReassignProspectByOperator,
ReasignProspectByProspect,
+ AssignToMe,
module='sale_opportunity_management', type_='wizard')
Pool.register(
module='sale_opportunity_management', type_='report')
diff --git a/core/Prospect/models/prospect.py b/core/Prospect/models/prospect.py
index d08095b..c1f5eb6 100644
--- a/core/Prospect/models/prospect.py
+++ b/core/Prospect/models/prospect.py
@@ -59,3 +59,13 @@ class Prospect(ModelSQL, ModelView, DeactivableMixin):
def on_change_city(self):
if self.city:
self.department = self.city.parent
+
+ # TODO assign to current user if is operator
+ # @classmethod
+ # def create(cls, values):
+ # records = super().create(values)
+ # Transaction.atexit(
+ # lambda: cls.try_assign_to_current_operator(records))
+
+ # @classmethod
+ # def try_assign_to_current_operator(cls, prospect, user)
diff --git a/core/Prospect/wizards/assign_operator.py b/core/Prospect/wizards/assign_operator.py
index 1789cb4..a3492bd 100644
--- a/core/Prospect/wizards/assign_operator.py
+++ b/core/Prospect/wizards/assign_operator.py
@@ -6,6 +6,56 @@ 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
+
+
+class AssignOperator(Wizard):
+ 'Asignar operador a prospecto'
+ __name__ = 'sale.prospect.assign'
+
+ start = StateView(
+ 'sale.prospect.assign.start',
+ 'sale_opportunity_management.assign_start_view_form', [
+ Button("Cancel", 'end', 'tryton-cancel'),
+ Button("Assign", 'assign', 'tryton-ok', default=True)])
+
+ assign = StateTransition()
+
+ def transition_assign(self):
+ _prospects = self.start.prospects
+ _operator = self.start.operator
+
+ self._assign_operator(_prospects, _operator)
+
+ return 'end'
+
+ def _assign_operator(self, prospects, operator):
+
+ for prospect in prospects:
+ prospect.assigned_operator = operator
+ prospect.state = 'assigned'
+
+ prospect_trace = self._create_prospect_trace(prospect)
+
+ prospect.prospect_trace = prospect_trace
+ prospect.save()
+
+ def _create_prospect_trace(self, prospect: Prospect) -> ProspectTrace:
+ pool = Pool()
+ 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
class AssignOperatorStart(ModelView):
@@ -45,39 +95,3 @@ class AssignOperatorStart(ModelView):
[('state', '=', 'unassigned'),
('business_unit', '=', self.business_unit)],
limit=self.prospects_chunk)
-
-
-class AssignOperator(Wizard):
- 'Asignar operador a prospecto'
- __name__ = 'sale.prospect.assign'
-
- start = StateView(
- 'sale.prospect.assign.start',
- 'sale_opportunity_management.assign_start_view_form', [
- Button("Cancel", 'end', 'tryton-cancel'),
- Button("Assign", 'assign', 'tryton-ok', default=True)])
-
- 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/core/Prospect/wizards/assign_to_me.py b/core/Prospect/wizards/assign_to_me.py
new file mode 100644
index 0000000..5e0fe6a
--- /dev/null
+++ b/core/Prospect/wizards/assign_to_me.py
@@ -0,0 +1,28 @@
+# This file is part of Tryton. The COPYRIGHT file at the top level of
+# this repository contains the full copyright notices and license terms.
+
+from trytond.wizard import Wizard, StateView, Button, StateTransition
+from trytond.model import ModelView, fields
+
+
+class AssignToMe(Wizard):
+ 'Asignar un prospecto al usuario actual'
+ __name__ = 'sale.prospect.assign_to_me'
+
+ start = StateView(
+ model_name='sale.prospect.assign_to_me.start',
+ view='sale_opportunity_management.assign_to_me_start_view_form',
+ buttons=[
+ Button("Cancel", 'end', 'tryton-cancel'),
+ Button("Confirm", 'confirm', 'tryton-ok', default=True)
+ ]
+ )
+
+ start = StateTransition()
+
+
+class AssignToMeStart(ModelView):
+ 'Inicio de asignación de un prospecto al usuario actual'
+ __name__ = 'sale.prospect.assign_to_me.start'
+
+ assign_to_me = fields.Boolean("Assign to me?")
diff --git a/prospect.xml b/prospect.xml
index ebfebe1..76d08ae 100644
--- a/prospect.xml
+++ b/prospect.xml
@@ -3,183 +3,194 @@
this repository contains the full copyright notices and license terms. -->