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 @@ - - -
-