Se implementa wizard para crear llamada pendiente en las pruebas, #35
This commit is contained in:
parent
3c4e8f5a26
commit
93c2f10040
@ -19,8 +19,10 @@ def register():
|
|||||||
prospect.Prospect,
|
prospect.Prospect,
|
||||||
prospect_trace.ProspectTrace,
|
prospect_trace.ProspectTrace,
|
||||||
prospect.AssignOperatorStart,
|
prospect.AssignOperatorStart,
|
||||||
|
prospect_trace.ScheduleCallStart,
|
||||||
module='sale_opportunity_management', type_='model')
|
module='sale_opportunity_management', type_='model')
|
||||||
Pool.register(
|
Pool.register(
|
||||||
|
prospect_trace.ScheduleCall,
|
||||||
prospect.AssignOperator,
|
prospect.AssignOperator,
|
||||||
module='sale_opportunity_management', type_='wizard')
|
module='sale_opportunity_management', type_='wizard')
|
||||||
Pool.register(
|
Pool.register(
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||||
# this repository contains the full copyright notices and license terms.
|
# this repository contains the full copyright notices and license terms.
|
||||||
|
from trytond.wizard import Wizard, StateView, Button, StateTransition
|
||||||
from trytond.model import ModelSQL, ModelView, fields, DeactivableMixin
|
from trytond.model import ModelSQL, ModelView, fields, DeactivableMixin
|
||||||
from trytond.pool import Pool
|
from trytond.pool import Pool
|
||||||
|
|
||||||
@ -58,11 +59,6 @@ class ProspectTrace(DeactivableMixin, ModelSQL, ModelView):
|
|||||||
self.pending_call = None
|
self.pending_call = None
|
||||||
self.state = 'open'
|
self.state = 'open'
|
||||||
|
|
||||||
@fields.depends('pending_call', 'state')
|
|
||||||
def on_change_pending_call(self):
|
|
||||||
if self.pending_call:
|
|
||||||
self.state = 'with_pending_calls'
|
|
||||||
|
|
||||||
@fields.depends('prospect', 'prospect_city', 'prospect_contact')
|
@fields.depends('prospect', 'prospect_city', 'prospect_contact')
|
||||||
def on_change_prospect(self):
|
def on_change_prospect(self):
|
||||||
if not self.prospect:
|
if not self.prospect:
|
||||||
@ -95,3 +91,37 @@ class ProspectTrace(DeactivableMixin, ModelSQL, ModelView):
|
|||||||
|
|
||||||
if contact_mobile:
|
if contact_mobile:
|
||||||
return contact_mobile[0]
|
return contact_mobile[0]
|
||||||
|
|
||||||
|
|
||||||
|
class ScheduleCallStart(ModelView):
|
||||||
|
'Inicio agendar llamada a seguimiento de prospecto'
|
||||||
|
__name__ = 'sale.prospect_trace.schedule.start'
|
||||||
|
|
||||||
|
date_time = fields.DateTime('Date time')
|
||||||
|
|
||||||
|
|
||||||
|
class ScheduleCall(Wizard):
|
||||||
|
'Agendar llamada a seguimiento de prospecto'
|
||||||
|
__name__ = 'sale.prospect_trace.schedule'
|
||||||
|
|
||||||
|
start = StateView(
|
||||||
|
'sale.prospect_trace.schedule.start',
|
||||||
|
'sale_opportunity_management.schedule_start_view_form', [
|
||||||
|
Button("Cancel", 'end', 'tryton-cancel'),
|
||||||
|
Button("Schedule", 'schedule', 'tryton-ok', default=True)])
|
||||||
|
|
||||||
|
schedule = StateTransition()
|
||||||
|
|
||||||
|
def transition_schedule(self):
|
||||||
|
pool = Pool()
|
||||||
|
PendingCall = pool.get('sale.pending_call')
|
||||||
|
pending_call = PendingCall()
|
||||||
|
pending_call.date = self.start.date_time
|
||||||
|
pending_call.save()
|
||||||
|
|
||||||
|
prospect_trace = self.record
|
||||||
|
prospect_trace.pending_call = pending_call
|
||||||
|
prospect_trace.state = 'with_pending_calls'
|
||||||
|
prospect_trace.save()
|
||||||
|
|
||||||
|
return 'end'
|
||||||
|
@ -48,11 +48,18 @@ this repository contains the full copyright notices and license terms. -->
|
|||||||
<field name="count" eval="True"/>
|
<field name="count" eval="True"/>
|
||||||
<field name="act_window" ref="act_prospect_trace_tree"/>
|
<field name="act_window" ref="act_prospect_trace_tree"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<menuitem
|
<menuitem
|
||||||
parent="menu_calls"
|
parent="menu_calls"
|
||||||
sequence="20"
|
sequence="20"
|
||||||
id="menu_prospect_trace_tree"
|
id="menu_prospect_trace_tree"
|
||||||
action="act_prospect_trace_tree"/>
|
action="act_prospect_trace_tree"/>
|
||||||
|
|
||||||
|
<!-- <record model="ir.action.wizard" id="schedule_call_wizard"> -->
|
||||||
|
|
||||||
|
<record model="ir.ui.view" id="schedule_start_view_form">
|
||||||
|
<field name="model">sale.prospect_trace.schedule.start</field>
|
||||||
|
<field name="type">form</field>
|
||||||
|
<field name="name">schedule_start_form</field>
|
||||||
|
</record>
|
||||||
</data>
|
</data>
|
||||||
</tryton>
|
</tryton>
|
@ -218,9 +218,15 @@ Verificar estado final del seguimiento del prospecto y sus llamadas
|
|||||||
|
|
||||||
Programar una próxima llamada pendiente al seguimiento de prospecto::
|
Programar una próxima llamada pendiente al seguimiento de prospecto::
|
||||||
>>> PendingCall = Model.get('sale.pending_call')
|
>>> PendingCall = Model.get('sale.pending_call')
|
||||||
>>> pending_call = PendingCall()
|
|
||||||
>>> pending_call.date = datetime(2023, 8, 14, 15, 30, 30)
|
.. >>> pending_call = PendingCall()
|
||||||
>>> prospect_trace.pending_call = pending_call
|
|
||||||
|
>>> schedule = Wizard('sale.prospect_trace.schedule', [prospect_trace])
|
||||||
|
>>> schedule.form.date_time = datetime(2023, 8, 14, 15, 30, 30)
|
||||||
|
>>> schedule.execute('schedule')
|
||||||
|
|
||||||
|
.. >>> pending_call.date = datetime(2023, 8, 14, 15, 30, 30)
|
||||||
|
.. >>> prospect_trace.pending_call = pending_call
|
||||||
|
|
||||||
>>> prospect_trace.pending_call.date
|
>>> prospect_trace.pending_call.date
|
||||||
datetime.datetime(2023, 8, 14, 15, 30, 30)
|
datetime.datetime(2023, 8, 14, 15, 30, 30)
|
||||||
|
6
view/schedule_start_form.xml
Normal file
6
view/schedule_start_form.xml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||||
|
this repository contains the full copyright notices and license terms. -->
|
||||||
|
<form>
|
||||||
|
|
||||||
|
</form>
|
Loading…
Reference in New Issue
Block a user