From ce71b0c932ba0a3c78b3de59588ca0378edd46da Mon Sep 17 00:00:00 2001 From: camilogs Date: Tue, 8 Aug 2023 15:56:01 -0500 Subject: [PATCH] feat: Se crean estados autollenados al seguimiento de prospecto (open, with_pending_calls) --- prospect_trace.py | 21 +++++++++++++++---- selections/prospect_trace_states.py | 10 +++++++++ .../scenario_sale_opportunity_management.rst | 6 ++++++ 3 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 selections/prospect_trace_states.py diff --git a/prospect_trace.py b/prospect_trace.py index 3e14c27..98f3bdc 100644 --- a/prospect_trace.py +++ b/prospect_trace.py @@ -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 diff --git a/selections/prospect_trace_states.py b/selections/prospect_trace_states.py new file mode 100644 index 0000000..c3a4d69 --- /dev/null +++ b/selections/prospect_trace_states.py @@ -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 diff --git a/tests/scenario_sale_opportunity_management.rst b/tests/scenario_sale_opportunity_management.rst index d047c5b..192b650 100644 --- a/tests/scenario_sale_opportunity_management.rst +++ b/tests/scenario_sale_opportunity_management.rst @@ -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 --------