From 5e7a41fa3baf7ae353c0525483e42d107ac8dacb Mon Sep 17 00:00:00 2001
From: camilogs <camilo.gonzalez.col@gmail.com>
Date: Fri, 28 Jul 2023 00:28:30 +0000
Subject: [PATCH 01/17] =?UTF-8?q?Se=20hace=20prueba=20de=20creaci=C3=B3n?=
 =?UTF-8?q?=20de=20prospecto?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 tests/scenario_sale_opportunity_management.rst | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/tests/scenario_sale_opportunity_management.rst b/tests/scenario_sale_opportunity_management.rst
index 6669776..5528010 100644
--- a/tests/scenario_sale_opportunity_management.rst
+++ b/tests/scenario_sale_opportunity_management.rst
@@ -10,3 +10,13 @@ Imports::
 Activate modules::
 
     >>> config = activate_modules('sale_opportunity_management')
+
+---------------------------------------------------------------------------------------------
+Como administrador quiero poder registrar un prospecto para lugo poder hacerle un seguimiento
+---------------------------------------------------------------------------------------------
+
+Crear prospecto::
+    >>> Prospect = Model.get('call.prospect')
+    >>> prospect = Prospect()
+    >>> prospect.name = 'guchito S.A.S'
+    >>> prospect.save()
\ No newline at end of file

From 3d5c3e17e096b05c037efa1792a8f6ec2e8bebd7 Mon Sep 17 00:00:00 2001
From: camilogs <camilo.gonzalez.col@gmail.com>
Date: Fri, 28 Jul 2023 00:30:32 +0000
Subject: [PATCH 02/17] Se crea modelo inicial de prospecto

---
 prospect.py | 9 +++++++++
 1 file changed, 9 insertions(+)
 create mode 100644 prospect.py

diff --git a/prospect.py b/prospect.py
new file mode 100644
index 0000000..cf1237e
--- /dev/null
+++ b/prospect.py
@@ -0,0 +1,9 @@
+# This file is part of Tryton.  The COPYRIGHT file at the top level of
+# this repository contains the full copyright notices and license terms.
+from trytond.model import ModelSQL, ModelView, fields 
+
+class Prospect(ModelSQL, ModelView):
+    'Prospecto'
+    __name__ = 'call.prospect'
+
+    name = fields.Char('Name')
\ No newline at end of file

From 76b4485c22bcd744fe67b9759c2dda9214d64041 Mon Sep 17 00:00:00 2001
From: camilogs <camilo.gonzalez.col@gmail.com>
Date: Fri, 28 Jul 2023 01:09:31 +0000
Subject: [PATCH 03/17] Se crea modelo inicial de prospecto

---
 __init__.py                                    | 2 ++
 prospect.py                                    | 3 ++-
 tests/scenario_sale_opportunity_management.rst | 2 +-
 3 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/__init__.py b/__init__.py
index 2759f8e..eb2cb48 100644
--- a/__init__.py
+++ b/__init__.py
@@ -1,10 +1,12 @@
 from trytond.pool import Pool
+from . import prospect
 
 __all__ = ['register']
 
 
 def register():
     Pool.register(
+        prospect.Prospect,
         module='sale_opportunity_management', type_='model')
     Pool.register(
         module='sale_opportunity_management', type_='wizard')
diff --git a/prospect.py b/prospect.py
index cf1237e..2cee49e 100644
--- a/prospect.py
+++ b/prospect.py
@@ -4,6 +4,7 @@ from trytond.model import ModelSQL, ModelView, fields
 
 class Prospect(ModelSQL, ModelView):
     'Prospecto'
-    __name__ = 'call.prospect'
+    
+    __name__ = 'sale.prospect'
 
     name = fields.Char('Name')
\ No newline at end of file
diff --git a/tests/scenario_sale_opportunity_management.rst b/tests/scenario_sale_opportunity_management.rst
index 5528010..7124b87 100644
--- a/tests/scenario_sale_opportunity_management.rst
+++ b/tests/scenario_sale_opportunity_management.rst
@@ -16,7 +16,7 @@ Como administrador quiero poder registrar un prospecto para lugo poder hacerle u
 ---------------------------------------------------------------------------------------------
 
 Crear prospecto::
-    >>> Prospect = Model.get('call.prospect')
+    >>> Prospect = Model.get('sale.prospect')
     >>> prospect = Prospect()
     >>> prospect.name = 'guchito S.A.S'
     >>> prospect.save()
\ No newline at end of file

From f9f929ae1e86b030229f5e4fb5b45f6ea85ca51d Mon Sep 17 00:00:00 2001
From: camilogs <camilo.gonzalez.col@gmail.com>
Date: Fri, 28 Jul 2023 02:09:17 +0000
Subject: [PATCH 04/17] =?UTF-8?q?Se=20agrega=20seguimiento=20de=20prospect?=
 =?UTF-8?q?o=20y=20se=20hace=20relaci=C3=B3n=20con=20prospecto?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 __init__.py                                   |  2 ++
 prospect.py                                   |  3 ++-
 prospect_trace.py                             | 19 +++++++++++++++++++
 .../scenario_sale_opportunity_management.rst  | 18 +++++++++++++++++-
 4 files changed, 40 insertions(+), 2 deletions(-)
 create mode 100644 prospect_trace.py

diff --git a/__init__.py b/__init__.py
index eb2cb48..387eb22 100644
--- a/__init__.py
+++ b/__init__.py
@@ -1,5 +1,6 @@
 from trytond.pool import Pool
 from . import prospect
+from . import prospect_trace
 
 __all__ = ['register']
 
@@ -7,6 +8,7 @@ __all__ = ['register']
 def register():
     Pool.register(
         prospect.Prospect,
+        prospect_trace.ProspectTrace,
         module='sale_opportunity_management', type_='model')
     Pool.register(
         module='sale_opportunity_management', type_='wizard')
diff --git a/prospect.py b/prospect.py
index 2cee49e..d6c7523 100644
--- a/prospect.py
+++ b/prospect.py
@@ -7,4 +7,5 @@ class Prospect(ModelSQL, ModelView):
     
     __name__ = 'sale.prospect'
 
-    name = fields.Char('Name')
\ No newline at end of file
+    name = fields.Char('Name')
+    tel = fields.Integer('Tel')
\ No newline at end of file
diff --git a/prospect_trace.py b/prospect_trace.py
new file mode 100644
index 0000000..a71de0d
--- /dev/null
+++ b/prospect_trace.py
@@ -0,0 +1,19 @@
+# This file is part of Tryton.  The COPYRIGHT file at the top level of
+# this repository contains the full copyright notices and license terms.
+from trytond.model import ModelSQL, ModelView, fields 
+
+class ProspectTrace(ModelSQL, ModelView):
+    'Seguimiento de un prospecto'
+    
+    __name__ = 'sale.prospect_trace'
+
+    prospect = fields.Many2One('sale.prospect', 'Prospect')
+
+    @fields.depends('prospect')
+    def on_change_prospect(self):
+        if self.prospect:
+            self.prospect_name = self.prospect.name
+            self.prospect_tel = self.prospect.tel
+
+    prospect_name = fields.Char('Name')
+    prospect_tel = fields.Integer('Tel')
\ No newline at end of file
diff --git a/tests/scenario_sale_opportunity_management.rst b/tests/scenario_sale_opportunity_management.rst
index 7124b87..9336afa 100644
--- a/tests/scenario_sale_opportunity_management.rst
+++ b/tests/scenario_sale_opportunity_management.rst
@@ -19,4 +19,20 @@ Crear prospecto::
     >>> Prospect = Model.get('sale.prospect')
     >>> prospect = Prospect()
     >>> prospect.name = 'guchito S.A.S'
-    >>> prospect.save()
\ No newline at end of file
+    >>> prospect.tel = 3123423422
+    >>> prospect.save()
+
+
+-----------------------------------------------------------------------------------------
+Como operador quiero poder crear un seguimiento de prospecto para luego hacer una llamada
+-----------------------------------------------------------------------------------------
+
+Crear seguimiento de prospecto::
+    >>> ProspectTrace = Model.get('sale.prospect_trace')
+    >>> prospect_trace = ProspectTrace()
+    >>> prospect_trace.prospect = prospect
+
+    >>> prospect_trace.prospect_name
+    'guchito S.A.S'
+    >>> prospect_trace.prospect_tel 
+    3123423422
\ No newline at end of file

From d1def24dd63ec1d51574312a403c3441835f5c19 Mon Sep 17 00:00:00 2001
From: camilogs <camilo.gonzalez.col@gmail.com>
Date: Fri, 28 Jul 2023 03:00:30 +0000
Subject: [PATCH 05/17] Se crea modelo de llamada y se hace valida fecha por
 defecto = hoy

---
 __init__.py                                    |  2 ++
 call.py                                        | 13 +++++++++++++
 tests/scenario_sale_opportunity_management.rst | 14 +++++++++++++-
 3 files changed, 28 insertions(+), 1 deletion(-)
 create mode 100644 call.py

diff --git a/__init__.py b/__init__.py
index 387eb22..0563194 100644
--- a/__init__.py
+++ b/__init__.py
@@ -1,12 +1,14 @@
 from trytond.pool import Pool
 from . import prospect
 from . import prospect_trace
+from . import call
 
 __all__ = ['register']
 
 
 def register():
     Pool.register(
+        call.Call,
         prospect.Prospect,
         prospect_trace.ProspectTrace,
         module='sale_opportunity_management', type_='model')
diff --git a/call.py b/call.py
new file mode 100644
index 0000000..d185354
--- /dev/null
+++ b/call.py
@@ -0,0 +1,13 @@
+from trytond.model import ModelSQL, ModelView, fields 
+from datetime import date
+
+class Call(ModelSQL, ModelView):
+    'Llamada'
+    
+    __name__ = 'sale.call'
+
+    date = fields.Date('Fecha', )
+
+    @classmethod
+    def default_date(cls):
+        return date.today()
\ No newline at end of file
diff --git a/tests/scenario_sale_opportunity_management.rst b/tests/scenario_sale_opportunity_management.rst
index 9336afa..cd2cd2d 100644
--- a/tests/scenario_sale_opportunity_management.rst
+++ b/tests/scenario_sale_opportunity_management.rst
@@ -6,6 +6,7 @@ Imports::
 
     >>> from proteus import Model, Wizard
     >>> from trytond.tests.tools import activate_modules
+    >>> from datetime import date
 
 Activate modules::
 
@@ -35,4 +36,15 @@ Crear seguimiento de prospecto::
     >>> prospect_trace.prospect_name
     'guchito S.A.S'
     >>> prospect_trace.prospect_tel 
-    3123423422
\ No newline at end of file
+    3123423422
+
+----------------------------------------------------------------------------
+Como operador quiero poder registrar una llamada para luego generar reportes
+----------------------------------------------------------------------------
+
+Crear llamada a un seguimiento de prospecto::
+    >>> Call = Model.get('sale.call')
+    >>> call = Call()
+
+    >>> call.date == date.today()
+    True

From 6985b5300f2d4283173c609684246c3a525bf15c Mon Sep 17 00:00:00 2001
From: camilogs <camilo.gonzalez.col@gmail.com>
Date: Fri, 28 Jul 2023 03:26:38 +0000
Subject: [PATCH 06/17] Se crean relaciones entre llamadas y seguimiento de
 prospecto

---
 call.py                                       |  5 +++-
 prospect_trace.py                             |  7 +++--
 .../scenario_sale_opportunity_management.rst  | 28 +++++++++++++++++++
 3 files changed, 36 insertions(+), 4 deletions(-)

diff --git a/call.py b/call.py
index d185354..708fb94 100644
--- a/call.py
+++ b/call.py
@@ -6,7 +6,10 @@ class Call(ModelSQL, ModelView):
     
     __name__ = 'sale.call'
 
-    date = fields.Date('Fecha', )
+    date = fields.Date('Date')
+    description = fields.Char('Description')
+
+    prospect_trace = fields.Many2One('sale.prospect_trace', 'Prospect trace')
 
     @classmethod
     def default_date(cls):
diff --git a/prospect_trace.py b/prospect_trace.py
index a71de0d..d203c63 100644
--- a/prospect_trace.py
+++ b/prospect_trace.py
@@ -8,12 +8,13 @@ class ProspectTrace(ModelSQL, ModelView):
     __name__ = 'sale.prospect_trace'
 
     prospect = fields.Many2One('sale.prospect', 'Prospect')
+    prospect_name = fields.Char('Name')
+    prospect_tel = fields.Integer('Tel')
+
+    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
-
-    prospect_name = fields.Char('Name')
-    prospect_tel = fields.Integer('Tel')
\ No newline at end of file
diff --git a/tests/scenario_sale_opportunity_management.rst b/tests/scenario_sale_opportunity_management.rst
index cd2cd2d..3e14a95 100644
--- a/tests/scenario_sale_opportunity_management.rst
+++ b/tests/scenario_sale_opportunity_management.rst
@@ -19,6 +19,7 @@ Como administrador quiero poder registrar un prospecto para lugo poder hacerle u
 Crear prospecto::
     >>> Prospect = Model.get('sale.prospect')
     >>> prospect = Prospect()
+
     >>> prospect.name = 'guchito S.A.S'
     >>> prospect.tel = 3123423422
     >>> prospect.save()
@@ -31,7 +32,9 @@ Como operador quiero poder crear un seguimiento de prospecto para luego hacer un
 Crear seguimiento de prospecto::
     >>> ProspectTrace = Model.get('sale.prospect_trace')
     >>> prospect_trace = ProspectTrace()
+
     >>> prospect_trace.prospect = prospect
+    >>> prospect_trace.save()
 
     >>> prospect_trace.prospect_name
     'guchito S.A.S'
@@ -46,5 +49,30 @@ Crear llamada a un seguimiento de prospecto::
     >>> Call = Model.get('sale.call')
     >>> call = Call()
 
+    >>> call.description = 'Descripción u observaciones de la llamada'
+    >>> call.prospect_trace = prospect_trace
+    >>> call.save()
+
+    >>> call.prospect_trace.prospect_name
+    'guchito S.A.S'
+    >>> call.prospect_trace.prospect_tel 
+    3123423422
     >>> call.date == date.today()
     True
+
+Crear otra llamada al mismo seguimiento de prospecto::
+    >>> Call = Model.get('sale.call')
+    >>> call = Call()
+
+    >>> call.description = 'Segunda llamada al mismo seguimiento'
+    >>> call.prospect_trace = prospect_trace
+    >>> call.save()
+
+    >>> call.prospect_trace.prospect_name
+    'guchito S.A.S'
+    >>> call.prospect_trace.prospect_tel 
+    3123423422
+    >>> call.date == date.today()
+    True
+    >>> len(prospect_trace.calls) == 2
+    True
\ No newline at end of file

From 4c6db3959f72b8d026947447f8212127a18043ae Mon Sep 17 00:00:00 2001
From: camilogs <camilo.gonzalez.col@gmail.com>
Date: Fri, 28 Jul 2023 22:50:24 +0000
Subject: [PATCH 07/17] Refactor: rename models

---
 __init__.py                                   |  4 +--
 call.py                                       |  2 +-
 prospect_trace.py                             |  8 ++++--
 .../scenario_sale_opportunity_management.rst  | 28 ++++++++++---------
 4 files changed, 23 insertions(+), 19 deletions(-)

diff --git a/__init__.py b/__init__.py
index 0563194..f3fc54d 100644
--- a/__init__.py
+++ b/__init__.py
@@ -1,6 +1,6 @@
 from trytond.pool import Pool
 from . import prospect
-from . import prospect_trace
+from . import prospect_tracker
 from . import call
 
 __all__ = ['register']
@@ -10,7 +10,7 @@ def register():
     Pool.register(
         call.Call,
         prospect.Prospect,
-        prospect_trace.ProspectTrace,
+        prospect_tracker.ProspectTracker,
         module='sale_opportunity_management', type_='model')
     Pool.register(
         module='sale_opportunity_management', type_='wizard')
diff --git a/call.py b/call.py
index 708fb94..ea1dcb9 100644
--- a/call.py
+++ b/call.py
@@ -9,7 +9,7 @@ class Call(ModelSQL, ModelView):
     date = fields.Date('Date')
     description = fields.Char('Description')
 
-    prospect_trace = fields.Many2One('sale.prospect_trace', 'Prospect trace')
+    prospect_tracker = fields.Many2One('sale.prospect_tracker', 'Prospect trace')
 
     @classmethod
     def default_date(cls):
diff --git a/prospect_trace.py b/prospect_trace.py
index d203c63..95d5a68 100644
--- a/prospect_trace.py
+++ b/prospect_trace.py
@@ -2,19 +2,21 @@
 # this repository contains the full copyright notices and license terms.
 from trytond.model import ModelSQL, ModelView, fields 
 
-class ProspectTrace(ModelSQL, ModelView):
+class ProspectTracker(ModelSQL, ModelView):
     'Seguimiento de un prospecto'
     
-    __name__ = 'sale.prospect_trace'
+    __name__ = 'sale.prospect_tracker'
 
     prospect = fields.Many2One('sale.prospect', 'Prospect')
     prospect_name = fields.Char('Name')
     prospect_tel = fields.Integer('Tel')
+    prospect_city = fields.Char('City') 
 
-    calls = fields.One2Many('sale.call', 'prospect_trace', "Calls")
+    calls = fields.One2Many('sale.call', 'prospect_tracker', "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_city = self.prospect.city
diff --git a/tests/scenario_sale_opportunity_management.rst b/tests/scenario_sale_opportunity_management.rst
index 3e14a95..2759591 100644
--- a/tests/scenario_sale_opportunity_management.rst
+++ b/tests/scenario_sale_opportunity_management.rst
@@ -22,6 +22,7 @@ Crear prospecto::
 
     >>> prospect.name = 'guchito S.A.S'
     >>> prospect.tel = 3123423422
+    >>> prospect.city = 'Bogotá'
     >>> prospect.save()
 
 
@@ -30,16 +31,17 @@ Como operador quiero poder crear un seguimiento de prospecto para luego hacer un
 -----------------------------------------------------------------------------------------
 
 Crear seguimiento de prospecto::
-    >>> ProspectTrace = Model.get('sale.prospect_trace')
-    >>> prospect_trace = ProspectTrace()
+    >>> ProspectTracker = Model.get('sale.prospect_tracker')
+    >>> prospect_tracker = ProspectTracker()
 
-    >>> prospect_trace.prospect = prospect
-    >>> prospect_trace.save()
+    >>> prospect_tracker.prospect = prospect
+    >>> prospect_tracker.save()
 
-    >>> prospect_trace.prospect_name
+    >>> prospect_tracker.prospect_name
     'guchito S.A.S'
-    >>> prospect_trace.prospect_tel 
+    >>> prospect_tracker.prospect_tel 
     3123423422
+    >>> prospect_tracker.prospect_city
 
 ----------------------------------------------------------------------------
 Como operador quiero poder registrar una llamada para luego generar reportes
@@ -50,12 +52,12 @@ Crear llamada a un seguimiento de prospecto::
     >>> call = Call()
 
     >>> call.description = 'Descripción u observaciones de la llamada'
-    >>> call.prospect_trace = prospect_trace
+    >>> call.prospect_tracker = prospect_tracker
     >>> call.save()
 
-    >>> call.prospect_trace.prospect_name
+    >>> call.prospect_tracker.prospect_name
     'guchito S.A.S'
-    >>> call.prospect_trace.prospect_tel 
+    >>> call.prospect_tracker.prospect_tel 
     3123423422
     >>> call.date == date.today()
     True
@@ -65,14 +67,14 @@ Crear otra llamada al mismo seguimiento de prospecto::
     >>> call = Call()
 
     >>> call.description = 'Segunda llamada al mismo seguimiento'
-    >>> call.prospect_trace = prospect_trace
+    >>> call.prospect_tracker = prospect_tracker
     >>> call.save()
 
-    >>> call.prospect_trace.prospect_name
+    >>> call.prospect_tracker.prospect_name
     'guchito S.A.S'
-    >>> call.prospect_trace.prospect_tel 
+    >>> call.prospect_tracker.prospect_tel 
     3123423422
     >>> call.date == date.today()
     True
-    >>> len(prospect_trace.calls) == 2
+    >>> len(prospect_tracker.calls) == 2
     True
\ No newline at end of file

From 5bcfc87c376e9f82834e6085e2a1755d23c5918d Mon Sep 17 00:00:00 2001
From: camilogs <camilo.gonzalez.col@gmail.com>
Date: Sun, 30 Jul 2023 00:55:44 +0000
Subject: [PATCH 08/17] Feat(Vista principal): Se crea vista principal

---
 call.xml           | 67 ++++++++++++++++++++++++++++++++++++++++++++++
 tryton.cfg         |  1 +
 view/call_form.xml | 13 +++++++++
 view/call_tree.xml |  8 ++++++
 4 files changed, 89 insertions(+)
 create mode 100644 call.xml
 create mode 100644 view/call_form.xml
 create mode 100644 view/call_tree.xml

diff --git a/call.xml b/call.xml
new file mode 100644
index 0000000..8b99699
--- /dev/null
+++ b/call.xml
@@ -0,0 +1,67 @@
+<?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. -->
+<tryton>
+    <data>
+        <!-- Creamos una acción de ventana -->
+        <!-- En el id va el [id de la acción del menuitem] que va a disparar la acción -->
+        <record model="ir.action.act_window" id="act_call_tree">
+            <!-- El nombre que se le va a ver al usuario en la acción-->
+            <field name="name">Calls</field> 
+
+            <field name="res_model">sale.call</field> 
+        </record>
+
+        <!-- Agregamos la vista de arbol -->
+        <record model="ir.ui.view" id="call_view_tree">
+            <field name="model">sale.call</field> 
+            <field name="type">tree</field>
+            
+            <!-- Nombre del archivo de la vista -->
+            <field name="name">call_tree</field>
+        </record>
+        <!-- Agregamos la vista de formulario -->
+        <record model="ir.ui.view" id="call_view_form">
+            <field name="model">sale.call</field> 
+            <field name="type">form</field>
+            <field name="name">call_form</field>
+        </record>
+
+        <!-- Indicar que vista va a ser usada en la acción-->
+        <!-- En "view" -> Indicar cual de las vistas va a tomar esta acción -->
+        <!-- En "act_window"enlazamos con la acción -->
+        <record model="ir.action.act_window.view" id="act_call_tree_view1">
+            <field name="sequence" eval="10"/>
+
+            <field name="view" ref="call_view_tree"/>
+
+            <field name="act_window" ref="act_call_tree"/>
+        </record>
+
+        <record model="ir.action.act_window.view" id="act_call_form_view1">
+            <field name="sequence" eval="20"/>
+
+            <!-- Indicar cual de las vistas va a tomar esta acción -->
+            <field name="view" ref="call_view_form"/>
+
+            <!-- enlazamos con la acción -->
+            <field name="act_window" ref="act_call_tree"/>
+        </record>
+
+        <!-- Menú principal -->
+        <!-- Sequence: Orden en el que se va a ver en el menú principal -->
+        <menuitem
+            name="Calls"
+            sequence="10"
+            id="menu_calls"/>
+        <!-- Hijo del menú principal -> Menú de arbol-->
+        <!-- action: Identificación de accion que hace el menú  -->
+        <menuitem
+            parent="menu_calls"
+            sequence="10"
+            id="menu_calls_tree"
+            action="act_call_tree"
+        />
+            
+    </data>
+</tryton>
\ No newline at end of file
diff --git a/tryton.cfg b/tryton.cfg
index f6aeab7..826e9c0 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -3,3 +3,4 @@ version=6.8.0
 depends:
     ir
 xml:
+    call.xml
diff --git a/view/call_form.xml b/view/call_form.xml
new file mode 100644
index 0000000..e458297
--- /dev/null
+++ b/view/call_form.xml
@@ -0,0 +1,13 @@
+<?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>
+    <label name="date"/>
+    <field name="date"/>
+
+    <label name="prospect_tracker"/>
+    <field name="prospect_tracker"/>
+
+    <label name="description"/>
+    <field name="description"/>
+</form>
\ No newline at end of file
diff --git a/view/call_tree.xml b/view/call_tree.xml
new file mode 100644
index 0000000..3227f70
--- /dev/null
+++ b/view/call_tree.xml
@@ -0,0 +1,8 @@
+<?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. -->
+<tree>
+    <field name="date"/>
+    <field name="description"/>
+    <field name="prospect_tracker"/>
+</tree>
\ No newline at end of file

From 9d33b48a5d4ab05cce8b53f9c85309a795b756ef Mon Sep 17 00:00:00 2001
From: camilogs <camilo.gonzalez.col@gmail.com>
Date: Sun, 30 Jul 2023 01:08:24 +0000
Subject: [PATCH 09/17] chore: remove dead code

---
 call.xml | 26 +-------------------------
 1 file changed, 1 insertion(+), 25 deletions(-)

diff --git a/call.xml b/call.xml
index 8b99699..92617b3 100644
--- a/call.xml
+++ b/call.xml
@@ -3,65 +3,41 @@
 this repository contains the full copyright notices and license terms. -->
 <tryton>
     <data>
-        <!-- Creamos una acción de ventana -->
-        <!-- En el id va el [id de la acción del menuitem] que va a disparar la acción -->
         <record model="ir.action.act_window" id="act_call_tree">
-            <!-- El nombre que se le va a ver al usuario en la acción-->
             <field name="name">Calls</field> 
-
             <field name="res_model">sale.call</field> 
         </record>
 
-        <!-- Agregamos la vista de arbol -->
         <record model="ir.ui.view" id="call_view_tree">
             <field name="model">sale.call</field> 
             <field name="type">tree</field>
-            
-            <!-- Nombre del archivo de la vista -->
             <field name="name">call_tree</field>
         </record>
-        <!-- Agregamos la vista de formulario -->
         <record model="ir.ui.view" id="call_view_form">
             <field name="model">sale.call</field> 
             <field name="type">form</field>
             <field name="name">call_form</field>
         </record>
 
-        <!-- Indicar que vista va a ser usada en la acción-->
-        <!-- En "view" -> Indicar cual de las vistas va a tomar esta acción -->
-        <!-- En "act_window"enlazamos con la acción -->
         <record model="ir.action.act_window.view" id="act_call_tree_view1">
             <field name="sequence" eval="10"/>
-
             <field name="view" ref="call_view_tree"/>
-
             <field name="act_window" ref="act_call_tree"/>
         </record>
-
         <record model="ir.action.act_window.view" id="act_call_form_view1">
             <field name="sequence" eval="20"/>
-
-            <!-- Indicar cual de las vistas va a tomar esta acción -->
             <field name="view" ref="call_view_form"/>
-
-            <!-- enlazamos con la acción -->
             <field name="act_window" ref="act_call_tree"/>
         </record>
 
-        <!-- Menú principal -->
-        <!-- Sequence: Orden en el que se va a ver en el menú principal -->
         <menuitem
             name="Calls"
             sequence="10"
             id="menu_calls"/>
-        <!-- Hijo del menú principal -> Menú de arbol-->
-        <!-- action: Identificación de accion que hace el menú  -->
         <menuitem
             parent="menu_calls"
             sequence="10"
             id="menu_calls_tree"
-            action="act_call_tree"
-        />
-            
+            action="act_call_tree"/>
     </data>
 </tryton>
\ No newline at end of file

From b4b5da7e2defd8f2a5e327d212ca9fdd10d18c7e Mon Sep 17 00:00:00 2001
From: camilogs <camilo.gonzalez.col@gmail.com>
Date: Sun, 30 Jul 2023 01:40:37 +0000
Subject: [PATCH 10/17] feat(Vista de seguimiento): Se crea vista de
 seguimiento a prospecto

---
 prospect_trace.xml           | 39 ++++++++++++++++++++++++++++++++++++
 tryton.cfg                   |  1 +
 view/prospect_trace_form.xml | 19 ++++++++++++++++++
 view/prospect_trace_tree.xml |  9 +++++++++
 4 files changed, 68 insertions(+)
 create mode 100644 prospect_trace.xml
 create mode 100644 view/prospect_trace_form.xml
 create mode 100644 view/prospect_trace_tree.xml

diff --git a/prospect_trace.xml b/prospect_trace.xml
new file mode 100644
index 0000000..87997b3
--- /dev/null
+++ b/prospect_trace.xml
@@ -0,0 +1,39 @@
+<?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. -->
+<tryton>
+    <data>
+        <record model="ir.action.act_window" id="act_prospect_trace_tree">
+            <field name="name">Prospect Trace</field> 
+            <field name="res_model">sale.prospect_trace</field> 
+        </record>
+
+        <record model="ir.ui.view" id="prospect_trace_view_tree">
+            <field name="model">sale.prospect_trace</field> 
+            <field name="type">tree</field>
+            <field name="name">prospect_trace_tree</field>
+        </record>
+        <record model="ir.ui.view" id="prospect_trace_view_form">
+            <field name="model">sale.prospect_trace</field> 
+            <field name="type">form</field>
+            <field name="name">prospect_trace_form</field>
+        </record>
+
+        <record model="ir.action.act_window.view" id="act_prospect_trace_tree_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="prospect_trace_view_tree"/>
+            <field name="act_window" ref="act_prospect_trace_tree"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_prospect_trace_form_view1">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="prospect_trace_view_form"/>
+            <field name="act_window" ref="act_prospect_trace_tree"/>
+        </record>
+
+        <menuitem
+            parent="menu_calls"
+            sequence="10"
+            id="menu_prospect_trace_tree"
+            action="act_prospect_trace_tree"/>
+    </data>
+</tryton>
\ No newline at end of file
diff --git a/tryton.cfg b/tryton.cfg
index 826e9c0..29ee8c3 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -4,3 +4,4 @@ depends:
     ir
 xml:
     call.xml
+    prospect_trace.xml
\ No newline at end of file
diff --git a/view/prospect_trace_form.xml b/view/prospect_trace_form.xml
new file mode 100644
index 0000000..5346e07
--- /dev/null
+++ b/view/prospect_trace_form.xml
@@ -0,0 +1,19 @@
+<?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>
+    <label name="prospect"/>
+    <field name="prospect"/>
+
+    <label name="prospect_name"/>
+    <field name="prospect_name"/>
+
+    <label name="prospect_contact"/>
+    <field name="prospect_contact"/>
+
+    <label name="prospect_city"/>
+    <field name="prospect_city"/>
+
+    <label name="calls"/>
+    <field name="calls"/>
+</form>
\ No newline at end of file
diff --git a/view/prospect_trace_tree.xml b/view/prospect_trace_tree.xml
new file mode 100644
index 0000000..5457511
--- /dev/null
+++ b/view/prospect_trace_tree.xml
@@ -0,0 +1,9 @@
+<?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. -->
+<tree>
+    <field name="prospect"/>
+    <field name="prospect_name"/>
+    <field name="prospect_contact"/>
+    <field name="prospect_city"/>
+</tree>
\ No newline at end of file

From 63fa2b7ebb951ffd1c667fb8ef1ddf2a6948f263 Mon Sep 17 00:00:00 2001
From: camilogs <camilo.gonzalez.col@gmail.com>
Date: Sun, 30 Jul 2023 01:41:18 +0000
Subject: [PATCH 11/17] Chore: se actualiza .gitignore

---
 .gitignore | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.gitignore b/.gitignore
index 98f5b2d..fa62fc5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,8 @@ __pycache__/
 *$py.class
 *.bk
 
+/.vscode
+
 # C extensions
 *.so
 

From a40164d386a108141c7b2800388f29566da21981 Mon Sep 17 00:00:00 2001
From: camilogs <camilo.gonzalez.col@gmail.com>
Date: Sun, 30 Jul 2023 01:42:28 +0000
Subject: [PATCH 12/17] fix(call.xml): Se arregla orden de sequencia de items

---
 call.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/call.xml b/call.xml
index 92617b3..6ed94e4 100644
--- a/call.xml
+++ b/call.xml
@@ -36,7 +36,7 @@ this repository contains the full copyright notices and license terms. -->
             id="menu_calls"/>
         <menuitem
             parent="menu_calls"
-            sequence="10"
+            sequence="20"
             id="menu_calls_tree"
             action="act_call_tree"/>
     </data>

From 8dc10a78653e1286b172aef2adff7aac9f6bd30a Mon Sep 17 00:00:00 2001
From: camilogs <camilo.gonzalez.col@gmail.com>
Date: Sun, 30 Jul 2023 01:44:46 +0000
Subject: [PATCH 13/17] chore: rename model

---
 __init__.py                                   |  5 ++-
 call.py                                       |  2 +-
 doc/es/calls.rst                              |  3 +-
 prospect.py                                   | 24 ++++++++++-
 prospect_trace.py                             | 10 ++---
 .../scenario_sale_opportunity_management.rst  | 43 ++++++++++---------
 view/call_form.xml                            |  4 +-
 view/call_tree.xml                            |  2 +-
 8 files changed, 58 insertions(+), 35 deletions(-)

diff --git a/__init__.py b/__init__.py
index f3fc54d..79203eb 100644
--- a/__init__.py
+++ b/__init__.py
@@ -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')
diff --git a/call.py b/call.py
index ea1dcb9..57e2d0a 100644
--- a/call.py
+++ b/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):
diff --git a/doc/es/calls.rst b/doc/es/calls.rst
index e8901e7..0ff7fa2 100644
--- a/doc/es/calls.rst
+++ b/doc/es/calls.rst
@@ -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
 
 --------
diff --git a/prospect.py b/prospect.py
index d6c7523..820d8cc 100644
--- a/prospect.py
+++ b/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')
\ No newline at end of file
+    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')
+    
diff --git a/prospect_trace.py b/prospect_trace.py
index 95d5a68..4506e41 100644
--- a/prospect_trace.py
+++ b/prospect_trace.py
@@ -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
diff --git a/tests/scenario_sale_opportunity_management.rst b/tests/scenario_sale_opportunity_management.rst
index 2759591..32f0888 100644
--- a/tests/scenario_sale_opportunity_management.rst
+++ b/tests/scenario_sale_opportunity_management.rst
@@ -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
\ No newline at end of file
diff --git a/view/call_form.xml b/view/call_form.xml
index e458297..76a00ab 100644
--- a/view/call_form.xml
+++ b/view/call_form.xml
@@ -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"/>
diff --git a/view/call_tree.xml b/view/call_tree.xml
index 3227f70..270b568 100644
--- a/view/call_tree.xml
+++ b/view/call_tree.xml
@@ -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>
\ No newline at end of file

From 4d8c520bb0db9b3e63bf7e7113f21eb7b87f2d22 Mon Sep 17 00:00:00 2001
From: camilogs <camilo.gonzalez.col@gmail.com>
Date: Sun, 30 Jul 2023 01:47:09 +0000
Subject: [PATCH 14/17] chore: remove dead code

---
 prospect.py | 2 --
 1 file changed, 2 deletions(-)

diff --git a/prospect.py b/prospect.py
index 820d8cc..c605a2a 100644
--- a/prospect.py
+++ b/prospect.py
@@ -9,7 +9,6 @@ class Prospect(ModelSQL, ModelView):
     name = fields.Char('Name')
     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') 
 
 
@@ -26,6 +25,5 @@ class ContactMethod(ModelSQL, ModelView):
 
     value = fields.Char('Value')
 
-    # Muchos mecanismos de contacto (clase actual) se vinculan a un prospecto (propiedad actual)
     prospect = fields.Many2One('sale.prospect', 'Prospect')
     

From 60e0096c061479dd48e328425be5479fba61a189 Mon Sep 17 00:00:00 2001
From: camilogs <camilo.gonzalez.col@gmail.com>
Date: Sun, 30 Jul 2023 01:55:56 +0000
Subject: [PATCH 15/17] feat(vista de prospectos): Se crea vista de prospectos

---
 call.xml               |  2 +-
 prospect.xml           | 43 ++++++++++++++++++++++++++++++++++++++++++
 prospect_trace.xml     |  2 +-
 tryton.cfg             |  3 ++-
 view/prospect_form.xml | 13 +++++++++++++
 view/prospect_tree.xml |  8 ++++++++
 6 files changed, 68 insertions(+), 3 deletions(-)
 create mode 100644 prospect.xml
 create mode 100644 view/prospect_form.xml
 create mode 100644 view/prospect_tree.xml

diff --git a/call.xml b/call.xml
index 6ed94e4..d3ba877 100644
--- a/call.xml
+++ b/call.xml
@@ -4,7 +4,7 @@ this repository contains the full copyright notices and license terms. -->
 <tryton>
     <data>
         <record model="ir.action.act_window" id="act_call_tree">
-            <field name="name">Calls</field> 
+            <field name="name">Prospect</field> 
             <field name="res_model">sale.call</field> 
         </record>
 
diff --git a/prospect.xml b/prospect.xml
new file mode 100644
index 0000000..cdd107a
--- /dev/null
+++ b/prospect.xml
@@ -0,0 +1,43 @@
+<?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. -->
+<tryton>
+    <data>
+        <record model="ir.action.act_window" id="act_prospect_tree">
+            <field name="name">prospect</field> 
+            <field name="res_model">sale.prospect</field> 
+        </record>
+
+        <record model="ir.ui.view" id="prospect_view_tree">
+            <field name="model">sale.prospect</field> 
+            <field name="type">tree</field>
+            <field name="name">prospect_tree</field>
+        </record>
+        <record model="ir.ui.view" id="prospect_view_form">
+            <field name="model">sale.prospect</field> 
+            <field name="type">form</field>
+            <field name="name">prospect_form</field>
+        </record>
+
+        <record model="ir.action.act_window.view" id="act_prospect_tree_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="prospect_view_tree"/>
+            <field name="act_window" ref="act_prospect_tree"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_prospect_form_view1">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="prospect_view_form"/>
+            <field name="act_window" ref="act_prospect_tree"/>
+        </record>
+
+        <menuitem
+            name="prospects"
+            sequence="10"
+            id="menu_prospects"/>
+        <menuitem
+            parent="menu_prospects"
+            sequence="20"
+            id="menu_prospects_tree"
+            action="act_prospect_tree"/>
+    </data>
+</tryton>
\ No newline at end of file
diff --git a/prospect_trace.xml b/prospect_trace.xml
index 87997b3..b534a16 100644
--- a/prospect_trace.xml
+++ b/prospect_trace.xml
@@ -4,7 +4,7 @@ this repository contains the full copyright notices and license terms. -->
 <tryton>
     <data>
         <record model="ir.action.act_window" id="act_prospect_trace_tree">
-            <field name="name">Prospect Trace</field> 
+            <field name="name">Prospect Traces</field> 
             <field name="res_model">sale.prospect_trace</field> 
         </record>
 
diff --git a/tryton.cfg b/tryton.cfg
index 29ee8c3..98e91c6 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -4,4 +4,5 @@ depends:
     ir
 xml:
     call.xml
-    prospect_trace.xml
\ No newline at end of file
+    prospect_trace.xml
+    prospect.xml
\ No newline at end of file
diff --git a/view/prospect_form.xml b/view/prospect_form.xml
new file mode 100644
index 0000000..84af981
--- /dev/null
+++ b/view/prospect_form.xml
@@ -0,0 +1,13 @@
+<?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>
+    <label name="name"/>
+    <field name="name"/>
+
+    <label name="city"/>
+    <field name="city"/>
+
+    <label name="contact_methods"/>
+    <field name="contact_methods"/>
+</form>
\ No newline at end of file
diff --git a/view/prospect_tree.xml b/view/prospect_tree.xml
new file mode 100644
index 0000000..00b9694
--- /dev/null
+++ b/view/prospect_tree.xml
@@ -0,0 +1,8 @@
+<?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. -->
+<tree>
+    <field name="name"/>
+    <field name="city"/>
+    <field name="contact_methods"/>
+</tree>
\ No newline at end of file

From 51dcc6ff5ed744c81a6d89c93eccf071f0be79ff Mon Sep 17 00:00:00 2001
From: camilogs <camilo.gonzalez.col@gmail.com>
Date: Sun, 30 Jul 2023 02:00:38 +0000
Subject: [PATCH 16/17] fix: Se arregla secuancia de vistas

---
 call.xml           | 2 +-
 prospect.xml       | 6 +-----
 prospect_trace.xml | 2 +-
 3 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/call.xml b/call.xml
index d3ba877..8d41162 100644
--- a/call.xml
+++ b/call.xml
@@ -36,7 +36,7 @@ this repository contains the full copyright notices and license terms. -->
             id="menu_calls"/>
         <menuitem
             parent="menu_calls"
-            sequence="20"
+            sequence="30"
             id="menu_calls_tree"
             action="act_call_tree"/>
     </data>
diff --git a/prospect.xml b/prospect.xml
index cdd107a..f254d97 100644
--- a/prospect.xml
+++ b/prospect.xml
@@ -31,12 +31,8 @@ this repository contains the full copyright notices and license terms. -->
         </record>
 
         <menuitem
-            name="prospects"
+            parent="menu_calls"
             sequence="10"
-            id="menu_prospects"/>
-        <menuitem
-            parent="menu_prospects"
-            sequence="20"
             id="menu_prospects_tree"
             action="act_prospect_tree"/>
     </data>
diff --git a/prospect_trace.xml b/prospect_trace.xml
index b534a16..e06663b 100644
--- a/prospect_trace.xml
+++ b/prospect_trace.xml
@@ -32,7 +32,7 @@ this repository contains the full copyright notices and license terms. -->
 
         <menuitem
             parent="menu_calls"
-            sequence="10"
+            sequence="20"
             id="menu_prospect_trace_tree"
             action="act_prospect_trace_tree"/>
     </data>

From 0fe8ede9fdd660a3d65dd136c1a62848297afdb8 Mon Sep 17 00:00:00 2001
From: camilogs <camilo.gonzalez.col@gmail.com>
Date: Sun, 30 Jul 2023 02:12:57 +0000
Subject: [PATCH 17/17] Chore: Se cambian nombres de vistas

---
 call.xml     | 2 +-
 prospect.xml | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/call.xml b/call.xml
index 8d41162..fbdd32a 100644
--- a/call.xml
+++ b/call.xml
@@ -4,7 +4,7 @@ this repository contains the full copyright notices and license terms. -->
 <tryton>
     <data>
         <record model="ir.action.act_window" id="act_call_tree">
-            <field name="name">Prospect</field> 
+            <field name="name">Calls</field> 
             <field name="res_model">sale.call</field> 
         </record>
 
diff --git a/prospect.xml b/prospect.xml
index f254d97..3bb663a 100644
--- a/prospect.xml
+++ b/prospect.xml
@@ -4,7 +4,7 @@ this repository contains the full copyright notices and license terms. -->
 <tryton>
     <data>
         <record model="ir.action.act_window" id="act_prospect_tree">
-            <field name="name">prospect</field> 
+            <field name="name">Prospects</field> 
             <field name="res_model">sale.prospect</field> 
         </record>