feat(Asignación de prospectos): Auto-asignar prospectos al operador que lo creó
This commit is contained in:
parent
99de45dd32
commit
b1c3b21a9c
@ -3,6 +3,9 @@
|
|||||||
|
|
||||||
from trytond.model import ModelSQL, ModelView, fields, DeactivableMixin
|
from trytond.model import ModelSQL, ModelView, fields, DeactivableMixin
|
||||||
from trytond.pyson import Eval, If
|
from trytond.pyson import Eval, If
|
||||||
|
from trytond.transaction import Transaction
|
||||||
|
from trytond.pool import Pool
|
||||||
|
from core.Prospect.wizards.assign_operator import GenericAssign
|
||||||
|
|
||||||
|
|
||||||
class Prospect(ModelSQL, ModelView, DeactivableMixin):
|
class Prospect(ModelSQL, ModelView, DeactivableMixin):
|
||||||
@ -60,12 +63,20 @@ class Prospect(ModelSQL, ModelView, DeactivableMixin):
|
|||||||
if self.city:
|
if self.city:
|
||||||
self.department = self.city.parent
|
self.department = self.city.parent
|
||||||
|
|
||||||
# TODO assign to current user if is operator
|
@classmethod
|
||||||
# @classmethod
|
def create(cls, values):
|
||||||
# def create(cls, values):
|
user_id = Transaction().user
|
||||||
# records = super().create(values)
|
records = super().create(values)
|
||||||
# Transaction.atexit(
|
|
||||||
# lambda: cls.try_assign_to_current_operator(records))
|
|
||||||
|
|
||||||
# @classmethod
|
cls.try_assign_to_current_operator(records, user_id)
|
||||||
# def try_assign_to_current_operator(cls, prospect, user)
|
# Transaction().atexit(
|
||||||
|
# lambda: cls.try_assign_to_current_operator(prospects, user_id))
|
||||||
|
return records
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def try_assign_to_current_operator(cls, prospects, user_id):
|
||||||
|
User = Pool().get('res.user')
|
||||||
|
user, = User.search([('id', '=', user_id)])
|
||||||
|
|
||||||
|
if user.is_operator:
|
||||||
|
GenericAssign.assign_prospects_to_operator(prospects, user)
|
||||||
|
@ -10,6 +10,7 @@ class User(metaclass=PoolMeta):
|
|||||||
__name__ = 'res.user'
|
__name__ = 'res.user'
|
||||||
|
|
||||||
user_admin = fields.Boolean('Is Admin')
|
user_admin = fields.Boolean('Is Admin')
|
||||||
|
is_operator = fields.Boolean('Is Operator')
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def __setup__(cls):
|
def __setup__(cls):
|
||||||
|
@ -1,39 +1,35 @@
|
|||||||
.. Importaciones::
|
Importaciones::
|
||||||
|
|
||||||
.. >>> from proteus import Model, Wizard
|
>>> from proteus import Model, Wizard
|
||||||
.. >>> from trytond.tests.tools import activate_modules
|
>>> from trytond.transaction import Transaction
|
||||||
|
>>> from trytond.tests.tools import activate_modules, set_user
|
||||||
|
|
||||||
.. Activar módulos::
|
Activar módulos::
|
||||||
|
|
||||||
.. >>> config = activate_modules('sale_opportunity_management')
|
>>> config = activate_modules('sale_opportunity_management')
|
||||||
|
|
||||||
|
|
||||||
.. Crear operario::
|
Crear operario::
|
||||||
.. >>> User = Model.get('res.user')
|
>>> User = Model.get('res.user')
|
||||||
.. >>> operator = User(name="Operario", login="operario")
|
>>> operator, = User.find([('name', '=', 'Administrator')])
|
||||||
|
>>> operator.is_operator = True
|
||||||
|
>>> operator.save()
|
||||||
|
>>> set_user(operator.id)
|
||||||
|
|
||||||
.. Crear prospecto::
|
Crear prospecto::
|
||||||
|
|
||||||
.. >>> Prospect = Model.get('sale.prospect')
|
>>> Prospect = Model.get('sale.prospect')
|
||||||
.. >>> prospect = Prospect()
|
>>> prospect = Prospect()
|
||||||
|
|
||||||
.. >>> prospect.name = 'Assignable To Me S.A.S'
|
>>> prospect.name = 'Assignable To Me S.A.S'
|
||||||
.. >>> contact_method = prospect.contact_methods.new(value='123123123', name='Ricardo', job='Infraestructura')
|
>>> contact_method = prospect.contact_methods.new(value='123123123', name='Ricardo', job='Infraestructura')
|
||||||
.. >>> prospect.business_unit = 'brigade'
|
>>> prospect.business_unit = 'brigade'
|
||||||
.. >>> prospect.save()
|
>>> prospect.save()
|
||||||
|
|
||||||
.. .. Opción 1:
|
|
||||||
.. .. [ Se abre una ventana preguntandole al usuario si quiere asignarse a sí mismo el prospecto recién creado ]
|
|
||||||
.. .. >>> assign_to_me_wizard = Wizard('sale.prospect.assign_to_me', [prospect])
|
|
||||||
.. .. >>> assign_to_me_wizard.form.assign_to_me = True
|
|
||||||
.. .. >>> assign_to_me_wizard.execute('assign_to_me')
|
|
||||||
|
|
||||||
|
|
||||||
.. ..Opcion2:
|
[ Se inició seguimiento, asignado al operador que lo creó ]
|
||||||
.. .. [Se evalua si el usuario actual es operador, de ser el caso se le asigna este prospecto]
|
>>> ProspectTrace = Model.get('sale.prospect_trace')
|
||||||
.. [ Se inició seguimiento, asignado al operador que lo creó ]
|
>>> prospect_trace, = ProspectTrace.find([('prospect', '=', prospect)])
|
||||||
.. >>> ProspectTrace = Model.get('sale.prospect_trace')
|
>>> assigned_operator_id = prospect_trace.prospect_assigned_operator.id
|
||||||
.. >>> prospect_trace, = ProspectTrace.find([('prospect', '=', prospect)])
|
>>> assert operator.id == assigned_operator_id
|
||||||
.. >>> prospect_trace.prospect_assigned_operator.id
|
|
||||||
.. operator.id
|
|
||||||
|
|
||||||
|
@ -3,7 +3,9 @@
|
|||||||
this repository contains the full copyright notices and license terms. -->
|
this repository contains the full copyright notices and license terms. -->
|
||||||
<data>
|
<data>
|
||||||
<xpath expr="//field[@name='name']" position="after">
|
<xpath expr="//field[@name='name']" position="after">
|
||||||
<label name="user_admin"/>
|
<label name="user_admin" />
|
||||||
<field name="user_admin"/>
|
<field name="user_admin" />
|
||||||
|
<label name="is_operator" />
|
||||||
|
<field name="is_operator" />
|
||||||
</xpath>
|
</xpath>
|
||||||
</data>
|
</data>
|
Loading…
Reference in New Issue
Block a user