From f9a18907d313fc25fbd26ef472a21de8afabe10c Mon Sep 17 00:00:00 2001 From: ?ngel ?lvarez Date: Tue, 19 Aug 2014 16:32:40 +0200 Subject: [PATCH] add hierarchical structure to campaigns --- locale/ca_ES.po | 87 +++++++++++++++++++--- locale/es_ES.po | 85 ++++++++++++++++++--- opportunity.py | 25 +++++++ opportunity.xml | 98 ++++++++++++++++++------- view/sale_opportunity_campaign_form.xml | 8 +- view/sale_opportunity_campaign_list.xml | 8 ++ view/sale_opportunity_campaign_tree.xml | 14 ++-- 7 files changed, 272 insertions(+), 53 deletions(-) create mode 100644 view/sale_opportunity_campaign_list.xml diff --git a/locale/ca_ES.po b/locale/ca_ES.po index 2e356e5..a9bf4c8 100644 --- a/locale/ca_ES.po +++ b/locale/ca_ES.po @@ -6,9 +6,13 @@ msgctxt "field:sale.opportunity,campaign:" msgid "Campaign" msgstr "Campanya" +msgctxt "field:sale.opportunity.campaign,childs:" +msgid "Children" +msgstr "Fills" + msgctxt "field:sale.opportunity.campaign,create_date:" msgid "Create Date" -msgstr "Data de creació" +msgstr "Data creació" msgctxt "field:sale.opportunity.campaign,create_uid:" msgid "Create User" @@ -30,6 +34,10 @@ msgctxt "field:sale.opportunity.campaign,name:" msgid "Name" msgstr "Nom" +msgctxt "field:sale.opportunity.campaign,parent:" +msgid "Parent" +msgstr "Pare" + msgctxt "field:sale.opportunity.campaign,parties:" msgid "Parties" msgstr "Tercers" @@ -54,17 +62,49 @@ msgctxt "field:sale.opportunity.campaign,write_uid:" msgid "Write User" msgstr "Usuari modificació" +msgctxt "field:sale.opportunity.campaign-party.party,campaing:" +msgid "Campaign" +msgstr "Campanya" + +msgctxt "field:sale.opportunity.campaign-party.party,create_date:" +msgid "Create Date" +msgstr "Data creació" + +msgctxt "field:sale.opportunity.campaign-party.party,create_uid:" +msgid "Create User" +msgstr "Usuari creació" + +msgctxt "field:sale.opportunity.campaign-party.party,id:" +msgid "ID" +msgstr "Identificador" + +msgctxt "field:sale.opportunity.campaign-party.party,party:" +msgid "Party" +msgstr "Tercer" + +msgctxt "field:sale.opportunity.campaign-party.party,rec_name:" +msgid "Name" +msgstr "Nom" + +msgctxt "field:sale.opportunity.campaign-party.party,write_date:" +msgid "Write Date" +msgstr "Data modificación" + +msgctxt "field:sale.opportunity.campaign-party.party,write_uid:" +msgid "Write User" +msgstr "Usuari modificació" + msgctxt "field:sale.opportunity.campaign-product.product,campaing:" msgid "Campaign" msgstr "Campanya" msgctxt "field:sale.opportunity.campaign-product.product,create_date:" msgid "Create Date" -msgstr "Data de creació" +msgstr "Data creació" msgctxt "field:sale.opportunity.campaign-product.product,create_uid:" msgid "Create User" -msgstr "Usuari de creació" +msgstr "Usuari creació" msgctxt "field:sale.opportunity.campaign-product.product,id:" msgid "ID" @@ -90,24 +130,43 @@ msgctxt "field:sale.opportunity.create_campaign.start,campaign:" msgid "Campaign" msgstr "Campanya" +msgctxt "field:sale.opportunity.create_campaign.start,create_leads:" +msgid "Create Leads" +msgstr "Crear iniciatives" + msgctxt "field:sale.opportunity.create_campaign.start,id:" msgid "ID" msgstr "Identificador" -msgctxt "model:ir.action,name:act_leads_form" -msgid "Leads and Opportunities" -msgstr "Iniciatives i oportunitats" +msgctxt "help:sale.opportunity.create_campaign.start,create_leads:" +msgid "" +"If marked a lead will be created for each party and related to the party" +msgstr "" +"Si es marca es crearà una iniciativa per cada tercer i es relacionarà amb " +"aquest." -msgctxt "model:ir.action,name:act_sale_opportunity_campaign" -msgid "Sale Opportunity Campaign" +msgctxt "model:ir.action,name:act_opportunities_by_category" +msgid "Leads and Opportunities by Campaign" +msgstr "Iniciatives i oportunitats per campanya" + +msgctxt "model:ir.action,name:act_opportunity_campaign_list" +msgid "Campaigns" +msgstr "Campanyes" + +msgctxt "model:ir.action,name:act_opportunity_campaign_tree" +msgid "Campaigns" msgstr "Campanyes" msgctxt "model:ir.action,name:wizard_create_campaign" msgid "Create Campaign" msgstr "Crea campanya" -msgctxt "model:ir.ui.menu,name:menu_sale_opportunity_campaign" -msgid "Opportunity Campaign" +msgctxt "model:ir.ui.menu,name:menu_opportunity_campaign_list" +msgid "Campaigns" +msgstr "Campanyes" + +msgctxt "model:ir.ui.menu,name:menu_opportunity_campaign_tree" +msgid "Campaigns" msgstr "Campanyes" msgctxt "model:sale.opportunity.campaign,name:" @@ -134,6 +193,10 @@ msgctxt "view:sale.opportunity.campaign:" msgid "Campaigns" msgstr "Campanyes" +msgctxt "view:sale.opportunity.campaign:" +msgid "Children" +msgstr "Fills" + msgctxt "view:sale.opportunity.campaign:" msgid "Create Leads" msgstr "Crear iniciatives" @@ -142,6 +205,10 @@ msgctxt "view:sale.opportunity.create_campaign.start:" msgid "Create Campaign" msgstr "Crea campanya" +msgctxt "wizard_button:sale.opportunity.create_campaign,start,create_:" +msgid "Create" +msgstr "Crea" + msgctxt "wizard_button:sale.opportunity.create_campaign,start,end:" msgid "Cancel" msgstr "Cancel·lat" diff --git a/locale/es_ES.po b/locale/es_ES.po index 0c0117a..e817e69 100644 --- a/locale/es_ES.po +++ b/locale/es_ES.po @@ -6,6 +6,10 @@ msgctxt "field:sale.opportunity,campaign:" msgid "Campaign" msgstr "Campaña" +msgctxt "field:sale.opportunity.campaign,childs:" +msgid "Children" +msgstr "Hijas" + msgctxt "field:sale.opportunity.campaign,create_date:" msgid "Create Date" msgstr "Fecha de creación" @@ -30,6 +34,10 @@ msgctxt "field:sale.opportunity.campaign,name:" msgid "Name" msgstr "Nombre" +msgctxt "field:sale.opportunity.campaign,parent:" +msgid "Parent" +msgstr "Padre" + msgctxt "field:sale.opportunity.campaign,parties:" msgid "Parties" msgstr "Terceros" @@ -54,6 +62,38 @@ msgctxt "field:sale.opportunity.campaign,write_uid:" msgid "Write User" msgstr "Usuario modificación" +msgctxt "field:sale.opportunity.campaign-party.party,campaing:" +msgid "Campaign" +msgstr "Campaña" + +msgctxt "field:sale.opportunity.campaign-party.party,create_date:" +msgid "Create Date" +msgstr "Fecha creación" + +msgctxt "field:sale.opportunity.campaign-party.party,create_uid:" +msgid "Create User" +msgstr "Usuario creación" + +msgctxt "field:sale.opportunity.campaign-party.party,id:" +msgid "ID" +msgstr "Identificador" + +msgctxt "field:sale.opportunity.campaign-party.party,party:" +msgid "Party" +msgstr "Terceros" + +msgctxt "field:sale.opportunity.campaign-party.party,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:sale.opportunity.campaign-party.party,write_date:" +msgid "Write Date" +msgstr "Fecha modificación" + +msgctxt "field:sale.opportunity.campaign-party.party,write_uid:" +msgid "Write User" +msgstr "Usuario modificación" + msgctxt "field:sale.opportunity.campaign-product.product,campaing:" msgid "Campaign" msgstr "Campaña" @@ -90,25 +130,44 @@ msgctxt "field:sale.opportunity.create_campaign.start,campaign:" msgid "Campaign" msgstr "Campaña" +msgctxt "field:sale.opportunity.create_campaign.start,create_leads:" +msgid "Create Leads" +msgstr "Crear iniciativas" + msgctxt "field:sale.opportunity.create_campaign.start,id:" msgid "ID" msgstr "Identificador" -msgctxt "model:ir.action,name:act_leads_form" -msgid "Leads and Opportunities" -msgstr "Iniciativas y oportunidades" +msgctxt "help:sale.opportunity.create_campaign.start,create_leads:" +msgid "" +"If marked a lead will be created for each party and related to the party" +msgstr "" +"Si se marca se creará una iniciativa por cada tercero y se relacionará con " +"éste." -msgctxt "model:ir.action,name:act_sale_opportunity_campaign" -msgid "Sale Opportunity Campaign" -msgstr "Campaña de oportunidades" +msgctxt "model:ir.action,name:act_opportunities_by_category" +msgid "Leads and Opportunities by Campaign" +msgstr "Iniciativas y oportunidades por campaña" + +msgctxt "model:ir.action,name:act_opportunity_campaign_list" +msgid "Campaigns" +msgstr "Campañas" + +msgctxt "model:ir.action,name:act_opportunity_campaign_tree" +msgid "Campaigns" +msgstr "Campañas" msgctxt "model:ir.action,name:wizard_create_campaign" msgid "Create Campaign" msgstr "Crear campaña" -msgctxt "model:ir.ui.menu,name:menu_sale_opportunity_campaign" -msgid "Opportunity Campaign" -msgstr "Campaña de oportunidades" +msgctxt "model:ir.ui.menu,name:menu_opportunity_campaign_list" +msgid "Campaigns" +msgstr "Campañas" + +msgctxt "model:ir.ui.menu,name:menu_opportunity_campaign_tree" +msgid "Campaigns" +msgstr "Campañas" msgctxt "model:sale.opportunity.campaign,name:" msgid "Campaign" @@ -134,6 +193,10 @@ msgctxt "view:sale.opportunity.campaign:" msgid "Campaigns" msgstr "Campañas" +msgctxt "view:sale.opportunity.campaign:" +msgid "Children" +msgstr "Hijas" + msgctxt "view:sale.opportunity.campaign:" msgid "Create Leads" msgstr "Crear iniciativas" @@ -142,6 +205,10 @@ msgctxt "view:sale.opportunity.create_campaign.start:" msgid "Create Campaign" msgstr "Crear campaña" +msgctxt "wizard_button:sale.opportunity.create_campaign,start,create_:" +msgid "Create" +msgstr "Crear" + msgctxt "wizard_button:sale.opportunity.create_campaign,start,end:" msgid "Cancel" msgstr "Cancel·lar" diff --git a/opportunity.py b/opportunity.py index ca6be7d..68b93ae 100644 --- a/opportunity.py +++ b/opportunity.py @@ -47,6 +47,10 @@ class Campaign(ModelSQL, ModelView): 'Campaign' __name__ = 'sale.opportunity.campaign' name = fields.Char('Name', required=True) + parent = fields.Many2One('sale.opportunity.campaign', 'Parent', + select=True) + childs = fields.One2Many('sale.opportunity.campaign', 'parent', + string='Children') description = fields.Text('Description') start_date = fields.Date('Start Date') end_date = fields.Date('End Date') @@ -65,6 +69,27 @@ class Campaign(ModelSQL, ModelView): }, }) + def get_rec_name(self, name): + if self.parent: + return self.parent.get_rec_name(name) + ' / ' + self.name + else: + return self.name + + @classmethod + def search_rec_name(cls, name, clause): + if isinstance(clause[2], basestring): + values = clause[2].split('/') + values.reverse() + domain = [] + field = 'name' + for name in values: + domain.append((field, clause[1], name.strip())) + field = 'parent.' + field + else: + domain = [('name',) + tuple(clause[1:])] + ids = [w.id for w in cls.search(domain, order=[])] + return [('parent', 'child_of', ids)] + @classmethod @ModelView.button def create_leads(cls, campaigns): diff --git a/opportunity.xml b/opportunity.xml index f3a161c..ba2083b 100644 --- a/opportunity.xml +++ b/opportunity.xml @@ -4,36 +4,88 @@ - + sale.opportunity.campaign form sale_opportunity_campaign_form - + sale.opportunity.campaign tree + + sale_opportunity_campaign_list + + + + sale.opportunity.campaign + tree + + childs sale_opportunity_campaign_tree - + + Campaigns + sale.opportunity.campaign + [('parent', '=', None)] + + + + + + + + + + + + + + Campaigns sale.opportunity.campaign - + - - + + - + - - + + - - + + Leads and Opportunities by Campaign + sale.opportunity + [('campaign', 'child_of', Eval('active_ids'), 'parent')] + + + tree_open + sale.opportunity.campaign,-1 + + + + form_relate + sale.opportunity.campaign,-1 + + + + + @@ -47,12 +99,14 @@ sale_opportunity_form + sale.opportunity sale_opportunity_tree + sale.opportunity.create_campaign.start form @@ -75,21 +129,11 @@ - - - - Leads and Opportunities - sale.opportunity - [('campaign', 'in', Eval('active_ids'))] - - - form_relate - sale.opportunity.campaign,-1 - - + + diff --git a/view/sale_opportunity_campaign_form.xml b/view/sale_opportunity_campaign_form.xml index 0cb1c3e..3f7ca3b 100644 --- a/view/sale_opportunity_campaign_form.xml +++ b/view/sale_opportunity_campaign_form.xml @@ -3,7 +3,10 @@ contains the full copyright notices and license terms. -->