diff --git a/prospect.py b/prospect.py index 5c33752..33dbd4c 100644 --- a/prospect.py +++ b/prospect.py @@ -61,6 +61,8 @@ class ContactMethod(ModelSQL, ModelView): job = fields.Char('job') prospect = fields.Many2One('sale.prospect', 'Prospect', required=True) + prospect_trace = fields.Many2One( + 'sale.prospect_trace', 'Prospect Trace', required=False) @classmethod def default_contact_type(cls): diff --git a/prospect_trace.py b/prospect_trace.py index af66260..aa65dfe 100644 --- a/prospect_trace.py +++ b/prospect_trace.py @@ -16,13 +16,17 @@ class ProspectTrace(DeactivableMixin, ModelSQL, ModelView): _states = {'readonly': True} prospect = fields.Many2One('sale.prospect', 'Prospect', required=True) - prospect_business_unit = fields.Selection( [('brigade', 'Brigade'), ('optics', 'Optics'), ('equipment', 'Equipment')], 'Business unit', states=_states ) + + prospect_contacts = fields.One2Many( + 'prospect.contact_method', 'prospect_trace', 'Prospect contacts', + states=_states) + prospect_contact = fields.Many2One( 'prospect.contact_method', 'Contact method', domain=[('prospect', '=', Eval('prospect'))]) @@ -72,7 +76,8 @@ class ProspectTrace(DeactivableMixin, ModelSQL, ModelView): def wizard_make_call(cls, prospect_traces): pass - @fields.depends('prospect', 'prospect_city', 'prospect_contact') + @fields.depends( + 'prospect', 'prospect_city', 'prospect_contact', 'prospect_contacts') def on_change_prospect(self): if not self.prospect: self.prospect_city = None @@ -82,6 +87,8 @@ class ProspectTrace(DeactivableMixin, ModelSQL, ModelView): self.prospect_city = self.prospect.city self.prospect_business_unit = self.prospect.business_unit + self.prospect_contacts = tuple(self._get_prospect_contacts()) + mobile_contact = self._get_prospect_mobile_contact() if mobile_contact: self.prospect_contact = mobile_contact @@ -106,6 +113,15 @@ class ProspectTrace(DeactivableMixin, ModelSQL, ModelView): if contact_mobile: return contact_mobile[0] + def _get_prospect_contacts(self): + pool = Pool() + ContactMethod = pool.get('prospect.contact_method') + + contacts = ContactMethod.search( + [('prospect', '=', self.prospect.id)] + ) + return contacts + class ScheduleCallStart(ModelView): 'Inicio agendar llamada a seguimiento de prospecto' diff --git a/tests/scenario_sale_opportunity_management.rst b/tests/scenario_sale_opportunity_management.rst index 7365d16..b2c434f 100644 --- a/tests/scenario_sale_opportunity_management.rst +++ b/tests/scenario_sale_opportunity_management.rst @@ -190,6 +190,8 @@ Crear seguimiento de prospecto:: 'brigade' >>> prospect_trace.prospect_city.name 'MedellĂ­n' + >>> prospect_trace.prospect_contacts + [proteus.Model.get('prospect.contact_method')(1), proteus.Model.get('prospect.contact_method')(2), proteus.Model.get('prospect.contact_method')(3)] >>> prospect_trace.prospect_contact.value '31223425234' >>> prospect_trace.prospect_contact.contact_type