feat: Se crean estados autollenados al seguimiento de prospecto (open, with_pending_calls)
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
Camilo Gonzalez 2023-08-08 15:56:01 -05:00
parent e16e1c6d90
commit ce71b0c932
3 changed files with 33 additions and 4 deletions

View File

@ -4,6 +4,7 @@ from trytond.model import ModelSQL, ModelView, fields
from .selections.call_types import CallTypes
from .selections.interest import Interest
from .selections.prospect_trace_states import ProspectTraceStates
class ProspectTrace(ModelSQL, ModelView):
@ -22,6 +23,10 @@ class ProspectTrace(ModelSQL, ModelView):
current_interest = fields.Selection(
Interest.get_interest_levels(), 'Current interest')
_state_type_field = fields.Selection(
ProspectTraceStates.get_prospect_trace_states(), 'State')
state = fields.Function(_state_type_field, '_get_state')
@fields.depends('calls', 'current_interest')
def on_change_calls(self):
if self.calls:
@ -33,15 +38,23 @@ class ProspectTrace(ModelSQL, ModelView):
else:
last_call.call_type = CallTypes.get_call_types()[0][0]
def get_rec_name(self, name):
if self.prospect:
return '[' + str(self.id) + '] ' + self.prospect.name
@fields.depends('prospect')
def on_change_prospect(self):
if self.prospect:
self.prospect_city = self.prospect.city
def get_rec_name(self, name):
if self.prospect:
return '[' + str(self.id) + '] ' + self.prospect.name
def _get_state(self, name):
has_pending_calls = len(self.pending_calls) > 0
if has_pending_calls:
return ProspectTraceStates.get_prospect_trace_states()[2][0]
else:
return ProspectTraceStates.get_prospect_trace_states()[1][0]
def _get_current_interest(self, name):
if self.calls:
return self.calls[-1].interest

View File

@ -0,0 +1,10 @@
class ProspectTraceStates():
@staticmethod
def get_prospect_trace_states():
states = [
('unassigned', 'Unassigned'),
('open', 'Open'),
('with_pending_calls', 'With pending calls'),
('closed', 'Closed')
]
return states

View File

@ -170,6 +170,8 @@ Verificar estado final del seguimiento del prospecto y sus llamadas
[proteus.Model.get('sale.call')(1), proteus.Model.get('sale.call')(2), proteus.Model.get('sale.call')(3)]
>>> prospect_trace.current_interest
'3'
>>> prospect_trace.state
'open'
Programar una próxima llamada pendiente al seguimiento de prospecto::
>>> pending_call1 = prospect_trace.pending_calls.new(date = date.today() + timedelta(days=7))
@ -178,6 +180,10 @@ Programar una próxima llamada pendiente al seguimiento de prospecto::
>>> prospect_trace.pending_calls
[proteus.Model.get('sale.pending_call')(1)]
>>> prospect_trace.state
'with_pending_calls'
--------
Reportes
--------