From 27dcca74bc1a513f2092d81cf641a81e1fcf5a4f Mon Sep 17 00:00:00 2001 From: camilogs Date: Sat, 26 Aug 2023 20:38:40 -0500 Subject: [PATCH] =?UTF-8?q?feat:=20Se=20crea=20bot=C3=B3n=20para=20iniciar?= =?UTF-8?q?=20seguimiento=20de=20prospecto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- prospect.py | 32 +++++++++++++++++++ prospect.xml | 6 ++++ prospect_trace.py | 3 +- .../scenario_sale_opportunity_management.rst | 3 +- view/pending_call_form.xml | 8 ----- view/pending_call_tree.xml | 7 ---- view/prospect_tree.xml | 2 +- 7 files changed, 43 insertions(+), 18 deletions(-) delete mode 100644 view/pending_call_form.xml delete mode 100644 view/pending_call_tree.xml diff --git a/prospect.py b/prospect.py index 33dbd4c..9be2056 100644 --- a/prospect.py +++ b/prospect.py @@ -36,6 +36,38 @@ class Prospect(ModelSQL, ModelView): ('unassigned', 'Unsassigned'), ('assigned', 'Assigned')], "State", readonly=True) + prospect_trace = fields.Many2One('sale.prospect_trace', 'Prospect trace') + + @classmethod + def __setup__(cls): + super(Prospect, cls).__setup__() + cls._buttons.update({ + 'start_trace': { + 'invisible': Eval('state') == 'unassigned' + } + }) + + @classmethod + @ModelView.button + def start_trace(cls, prospects): + pool = Pool() + ProspectTrace = pool.get('sale.prospect_trace') + for prospect in prospects: + if prospect.prospect_trace: + return + + prospect_trace = ProspectTrace( + prospect=prospect, + prospect_city=prospect.city, + prospect_business_unit=prospect.business_unit, + prospect_assigned_operator=prospect.assigned_operator, + prospect_contacts=prospect.contact_methods + ) + prospect_trace.save() + + prospect.prospect_trace = prospect_trace + prospect.save() + @classmethod def default_state(cls): return 'unassigned' diff --git a/prospect.xml b/prospect.xml index aa923ff..f5ec215 100644 --- a/prospect.xml +++ b/prospect.xml @@ -142,5 +142,11 @@ this repository contains the full copyright notices and license terms. --> sequence="40" id="menu_prospects_assigned_wizard" action="assign_operator_wizard"/> + + + start_trace + Start trace + + diff --git a/prospect_trace.py b/prospect_trace.py index fa96252..19b61b3 100644 --- a/prospect_trace.py +++ b/prospect_trace.py @@ -15,7 +15,8 @@ class ProspectTrace(DeactivableMixin, ModelSQL, ModelView): _states = {'readonly': True} - prospect = fields.Many2One('sale.prospect', 'Prospect', required=True) + prospect = fields.Many2One( + 'sale.prospect', 'Prospect', required=True, states=_states) prospect_business_unit = fields.Selection( [('brigade', 'Brigade'), ('optics', 'Optics'), diff --git a/tests/scenario_sale_opportunity_management.rst b/tests/scenario_sale_opportunity_management.rst index c6ef3a7..63b59b0 100644 --- a/tests/scenario_sale_opportunity_management.rst +++ b/tests/scenario_sale_opportunity_management.rst @@ -179,8 +179,9 @@ Seguimiento de prospecto 2 Crear seguimiento de prospecto:: >>> ProspectTrace = Model.get('sale.prospect_trace') - >>> prospect_trace = ProspectTrace() + >>> prospect1.click('start_trace') + >>> prospect_trace = ProspectTrace() >>> prospect_trace.prospect = prospect1 >>> prospect_trace.save() diff --git a/view/pending_call_form.xml b/view/pending_call_form.xml deleted file mode 100644 index b7309c7..0000000 --- a/view/pending_call_form.xml +++ /dev/null @@ -1,8 +0,0 @@ - - -
-