From a1d1e019ecf922aa14e2369b2c536ecc7b202927 Mon Sep 17 00:00:00 2001 From: camilogs Date: Fri, 20 Oct 2023 17:50:44 -0500 Subject: [PATCH] fix: al crear segunda tarea al mismo seguimiento se pierden los contact_methods de la anterior --- __init__.py | 1 + call.py | 15 ++++++- prospect.py | 6 ++- .../scenario_sale_opportunity_management.rst | 40 +++++++++++++++---- 4 files changed, 51 insertions(+), 11 deletions(-) diff --git a/__init__.py b/__init__.py index f5066d6..d6b1a60 100644 --- a/__init__.py +++ b/__init__.py @@ -28,6 +28,7 @@ def register(): prospect_trace.MakeCallAskTask, prospect.ReassignProspectByOperatorStart, prospect.ReassignProspectByProspectStart, + call.PendingTask_ContactMethod, module='sale_opportunity_management', type_='model') Pool.register( prospect_trace.ScheduleCall, diff --git a/call.py b/call.py index cfedbf8..fb4eb5f 100644 --- a/call.py +++ b/call.py @@ -67,8 +67,10 @@ class PendingTask(ModelSQL, ModelView): 'sale.prospect_trace', 'Prospect trace', required=True, readonly=True) - contacts = fields.One2Many( - 'prospect.contact_method', 'task', 'Contacts', readonly=True) + contacts = fields.Many2Many( + 'sale.pendingtask_contactmethod', + 'pending_task_id', 'contact_method_id', + 'Contact Methods') @classmethod def __setup__(cls): @@ -89,3 +91,12 @@ class PendingTask(ModelSQL, ModelView): @classmethod def default_state(cls): return 'pending' + + +class PendingTask_ContactMethod(ModelSQL): + 'Relacion muchos a muchos entre tareas pendientes y mecanismos de contacto' + __name__ = "sale.pendingtask_contactmethod" + + pending_task_id = fields.Many2One('sale.pending_task', 'Pending task id') + contact_method_id = fields.Many2One( + 'prospect.contact_method', 'Contact method id') diff --git a/prospect.py b/prospect.py index 761b9ee..5f01ceb 100644 --- a/prospect.py +++ b/prospect.py @@ -79,7 +79,11 @@ class ContactMethod(ModelSQL, ModelView): prospect = fields.Many2One('sale.prospect', 'Prospect', required=True) prospect_trace = fields.Many2One( 'sale.prospect_trace', 'Prospect Trace', required=False) - task = fields.Many2One('sale.pending_task', 'task ', required=False) + + tasks = fields.Many2Many( + 'sale.pendingtask_contactmethod', + 'contact_method_id', 'pending_task_id', + 'Contact Methods') @classmethod def default_contact_type(cls): diff --git a/tests/scenario_sale_opportunity_management.rst b/tests/scenario_sale_opportunity_management.rst index c71b1fc..9f3faac 100644 --- a/tests/scenario_sale_opportunity_management.rst +++ b/tests/scenario_sale_opportunity_management.rst @@ -287,18 +287,42 @@ Hacer llamada y programar tarea:: >>> make_call.execute('schedule_task') >>> Task = Model.get('sale.pending_task') - >>> task, = Task.find([('description', '=', 'I have to send a mail to prospect offering him this services...')]) - >>> task - proteus.Model.get('sale.pending_task')(1) + >>> task1, = Task.find([('description', '=', 'I have to send a mail to prospect offering him this services...')]) - >>> task.state + >>> task1 + proteus.Model.get('sale.pending_task')(1) + >>> task1.state 'pending' - >>> task.click('close_task') - >>> task.state + >>> task1.click('close_task') + + >>> task1.state 'done' - >>> task.contacts[0].value == prospect_trace.prospect_contacts[0].value - True + >>> task1.contacts[0].value + '12345678910' + +Programar segunda tarea al mismo seguimiento:: + >>> make_call = Wizard('sale.prospect_trace.make_call', [prospect_trace]) + >>> make_call.form.description = 'Prospect told me to send him an SMS' + >>> make_call.form.interest = '3' + >>> make_call.form.schedule_call = 'no' + >>> make_call.form.schedule_task = 'yes' + >>> make_call.execute('make_call') + >>> make_call.form.task_description = 'I have to send a SMS to prospect offering him this services...' + >>> make_call.execute('schedule_task') + + >>> task1.save() + >>> Task = Model.get('sale.pending_task') + >>> task2, = Task.find([('description', '=', 'I have to send a SMS to prospect offering him this services...')]) + >>> task2 + proteus.Model.get('sale.pending_task')(2) + + >>> task2.state + 'pending' + >>> task2.contacts[0].value + '12345678910' + >>> task1.contacts[0].value + '12345678910' Hacer llamada y cerrar venta (Seguimiento de prospecto):: >>> make_call = Wizard('sale.prospect_trace.make_call', [prospect_trace])