walking_skeleton/views #6
@ -1,6 +1,6 @@
|
||||
from trytond.pool import Pool
|
||||
from . import prospect
|
||||
from . import prospect_tracker
|
||||
from . import prospect_trace
|
||||
from . import call
|
||||
|
||||
__all__ = ['register']
|
||||
@ -10,7 +10,8 @@ def register():
|
||||
Pool.register(
|
||||
call.Call,
|
||||
prospect.Prospect,
|
||||
prospect_tracker.ProspectTracker,
|
||||
prospect.ContactMethod,
|
||||
prospect_trace.ProspectTrace,
|
||||
module='sale_opportunity_management', type_='model')
|
||||
Pool.register(
|
||||
module='sale_opportunity_management', type_='wizard')
|
||||
|
2
call.py
2
call.py
@ -9,7 +9,7 @@ class Call(ModelSQL, ModelView):
|
||||
date = fields.Date('Date')
|
||||
description = fields.Char('Description')
|
||||
|
||||
prospect_tracker = fields.Many2One('sale.prospect_tracker', 'Prospect trace')
|
||||
prospect_trace = fields.Many2One('sale.prospect_trace', 'Prospect track')
|
||||
|
||||
@classmethod
|
||||
def default_date(cls):
|
||||
|
@ -57,8 +57,7 @@ Seguimiento de prospecto 2
|
||||
* 1 - total desinterés
|
||||
* 2 - Interés intermedio, brindar mas información
|
||||
* 3 - Interés alto, generar venta
|
||||
|
||||
* Estado (realizada - pendiente)
|
||||
|
||||
* Seguimiento de prospecto al que pertence
|
||||
|
||||
--------
|
||||
|
24
prospect.py
24
prospect.py
@ -4,8 +4,28 @@ from trytond.model import ModelSQL, ModelView, fields
|
||||
|
||||
class Prospect(ModelSQL, ModelView):
|
||||
'Prospecto'
|
||||
|
||||
__name__ = 'sale.prospect'
|
||||
|
||||
name = fields.Char('Name')
|
||||
tel = fields.Integer('Tel')
|
||||
city = fields.Char('City')
|
||||
|
||||
# Un prospecto (clase actual) se vincula a Muchos mecanismos de contacto (propiedad actual)
|
||||
contact_methods = fields.One2Many('prospect.contact_method', 'prospect', 'Contact methods')
|
||||
|
||||
|
||||
class ContactMethod(ModelSQL, ModelView):
|
||||
'Mecanismo de contacto'
|
||||
__name__ = 'prospect.contact_method'
|
||||
|
||||
_type = [
|
||||
('phone', 'Phone'),
|
||||
('mobile', 'Mobile'),
|
||||
('email', 'Email')
|
||||
]
|
||||
contact_type = fields.Selection(_type, 'Contact type')
|
||||
|
||||
value = fields.Char('Value')
|
||||
|
||||
# Muchos mecanismos de contacto (clase actual) se vinculan a un prospecto (propiedad actual)
|
||||
prospect = fields.Many2One('sale.prospect', 'Prospect')
|
||||
|
||||
|
@ -2,21 +2,21 @@
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
from trytond.model import ModelSQL, ModelView, fields
|
||||
|
||||
class ProspectTracker(ModelSQL, ModelView):
|
||||
class ProspectTrace(ModelSQL, ModelView):
|
||||
'Seguimiento de un prospecto'
|
||||
|
||||
__name__ = 'sale.prospect_tracker'
|
||||
__name__ = 'sale.prospect_trace'
|
||||
|
||||
prospect = fields.Many2One('sale.prospect', 'Prospect')
|
||||
prospect_name = fields.Char('Name')
|
||||
prospect_tel = fields.Integer('Tel')
|
||||
prospect_contact = fields.Char('Contact')
|
||||
prospect_city = fields.Char('City')
|
||||
|
||||
calls = fields.One2Many('sale.call', 'prospect_tracker', "Calls")
|
||||
calls = fields.One2Many('sale.call', 'prospect_trace', "Calls")
|
||||
|
||||
@fields.depends('prospect')
|
||||
def on_change_prospect(self):
|
||||
if self.prospect:
|
||||
self.prospect_name = self.prospect.name
|
||||
self.prospect_tel = self.prospect.tel
|
||||
# self.prospect_contact = self.prospect.contact_methods.index('contact_type 'mobile')
|
||||
self.prospect_city = self.prospect.city
|
||||
|
@ -13,38 +13,43 @@ Activate modules::
|
||||
>>> config = activate_modules('sale_opportunity_management')
|
||||
|
||||
---------------------------------------------------------------------------------------------
|
||||
Como administrador quiero poder registrar un prospecto para lugo poder hacerle un seguimiento
|
||||
Como administrador quiero registrar un prospecto para lugo poder hacerle un seguimiento
|
||||
---------------------------------------------------------------------------------------------
|
||||
|
||||
Crear mecanismos de contacto::
|
||||
|
||||
|
||||
Crear prospecto::
|
||||
>>> Prospect = Model.get('sale.prospect')
|
||||
>>> prospect = Prospect()
|
||||
|
||||
>>> prospect.name = 'guchito S.A.S'
|
||||
>>> prospect.tel = 3123423422
|
||||
>>> prospect.city = 'Bogotá'
|
||||
>>> phone = prospect.contact_methods.new()
|
||||
>>> phone.contact_type = 'mobile'
|
||||
>>> phone.value = '3132923938'
|
||||
>>> prospect.save()
|
||||
|
||||
|
||||
|
||||
-----------------------------------------------------------------------------------------
|
||||
Como operador quiero poder crear un seguimiento de prospecto para luego hacer una llamada
|
||||
-----------------------------------------------------------------------------------------
|
||||
|
||||
Crear seguimiento de prospecto::
|
||||
>>> ProspectTracker = Model.get('sale.prospect_tracker')
|
||||
>>> prospect_tracker = ProspectTracker()
|
||||
>>> ProspectTrace = Model.get('sale.prospect_trace')
|
||||
>>> prospect_trace = ProspectTrace()
|
||||
|
||||
>>> prospect_tracker.prospect = prospect
|
||||
>>> prospect_tracker.save()
|
||||
>>> prospect_trace.prospect = prospect
|
||||
>>> prospect_trace.save()
|
||||
|
||||
>>> prospect_tracker.prospect_name
|
||||
>>> prospect_trace.prospect_name
|
||||
'guchito S.A.S'
|
||||
>>> prospect_tracker.prospect_tel
|
||||
3123423422
|
||||
>>> prospect_tracker.prospect_city
|
||||
>>> prospect_trace.prospect_city
|
||||
'Bogotá'
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
Como operador quiero poder registrar una llamada para luego generar reportes
|
||||
Como operador quiero registrar una llamada para luego generar reportes
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Crear llamada a un seguimiento de prospecto::
|
||||
@ -52,13 +57,11 @@ Crear llamada a un seguimiento de prospecto::
|
||||
>>> call = Call()
|
||||
|
||||
>>> call.description = 'Descripción u observaciones de la llamada'
|
||||
>>> call.prospect_tracker = prospect_tracker
|
||||
>>> call.prospect_trace = prospect_trace
|
||||
>>> call.save()
|
||||
|
||||
>>> call.prospect_tracker.prospect_name
|
||||
>>> call.prospect_trace.prospect_name
|
||||
'guchito S.A.S'
|
||||
>>> call.prospect_tracker.prospect_tel
|
||||
3123423422
|
||||
>>> call.date == date.today()
|
||||
True
|
||||
|
||||
@ -67,14 +70,14 @@ Crear otra llamada al mismo seguimiento de prospecto::
|
||||
>>> call = Call()
|
||||
|
||||
>>> call.description = 'Segunda llamada al mismo seguimiento'
|
||||
>>> call.prospect_tracker = prospect_tracker
|
||||
>>> call.prospect_trace = prospect_trace
|
||||
>>> call.save()
|
||||
|
||||
>>> call.prospect_tracker.prospect_name
|
||||
>>> call.prospect_trace.prospect_name
|
||||
'guchito S.A.S'
|
||||
>>> call.prospect_tracker.prospect_tel
|
||||
3123423422
|
||||
>>> call.prospect_trace.prospect_city
|
||||
'Bogotá'
|
||||
>>> call.date == date.today()
|
||||
True
|
||||
>>> len(prospect_tracker.calls) == 2
|
||||
>>> len(prospect_trace.calls) == 2
|
||||
True
|
@ -5,8 +5,8 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<label name="date"/>
|
||||
<field name="date"/>
|
||||
|
||||
<label name="prospect_tracker"/>
|
||||
<field name="prospect_tracker"/>
|
||||
<label name="prospect_trace"/>
|
||||
<field name="prospect_trace"/>
|
||||
|
||||
<label name="description"/>
|
||||
<field name="description"/>
|
||||
|
@ -4,5 +4,5 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<tree>
|
||||
<field name="date"/>
|
||||
<field name="description"/>
|
||||
<field name="prospect_tracker"/>
|
||||
<field name="prospect_trace"/>
|
||||
</tree>
|
Loading…
Reference in New Issue
Block a user