diff --git a/addons/crm/data/crm_lead_demo.xml b/addons/crm/data/crm_lead_demo.xml index 10f47973e20..e1b3c7edf1d 100644 --- a/addons/crm/data/crm_lead_demo.xml +++ b/addons/crm/data/crm_lead_demo.xml @@ -1,41 +1,6 @@ - - - - Product - - - - Software - - - - Services - - - - Information - - - - Design - - - - Training - - - - Consulting - - - - Other - - - @@ -50,7 +15,7 @@ 93190 Rue Léon Dierx 73 +33 1 25 54 45 69 - + 1 @@ -86,7 +51,7 @@ 33000 Rue Ignasse Blanchoux 214/32 +33 1 25 54 45 69 - + 1 @@ -119,7 +84,7 @@ 10001 Lafayette Ave 450/12 +1 555 754 3010 - + 2 @@ -141,7 +106,7 @@ Manchester 03101 United Street 68 - + 2 @@ -165,7 +130,7 @@ 1909 West Allegheny Ave 800 +1 813 494 5005 - + 2 @@ -204,7 +169,7 @@ Contact: +1 813 494 5005

]]>
Roma 00118 - + 2 @@ -226,7 +191,7 @@ Contact: +1 813 494 5005

]]>
29000 R. Sen. Pompeu +11 55 21 5555 5555 - + 0 @@ -247,7 +212,7 @@ Contact: +1 813 494 5005

]]>
London E1AB - + 1 @@ -282,7 +247,7 @@ ESM Expert
]]>
Oxford OX1 1RQ - + 2 @@ -303,7 +268,7 @@ ESM Expert
]]>
Madrid 28001 - + 2 @@ -338,7 +303,7 @@ Andrew

]]>
Wavre 1300 - + 2 @@ -358,7 +323,7 @@ Andrew

]]>
Shenzhen - + 2 @@ -386,7 +351,7 @@ Andrew

]]>
Melbourne Kensington Road 189 - + 1 @@ -412,7 +377,7 @@ Andrew

]]>
1300 Rue de Namur 69 +32 10 588 558 - + 2 @@ -435,7 +400,7 @@ Andrew

]]>
Wavre Rue de Namur 69 +32 10 588 558 - + 1 @@ -528,7 +493,7 @@ Andrew

]]>
Liverpool L25 4RL Union Road - + 2 @@ -553,7 +518,7 @@ Andrew

]]>
Brussels 1100 Rue des Palais 51, bte 33 - + 1 @@ -586,7 +551,7 @@ Andrew

]]>
3661 Station Street - + 1 @@ -636,7 +601,7 @@ Andrew

]]>
3rd Floor, Room 3-C, Carretera Panamericana, Km 1, Urb. Delgado Chalbaud +58 212 681 0538 - + 1 @@ -661,7 +626,7 @@ Andrew

]]>
60610 Chicago +1 312 349 2324 - + 2 @@ -681,7 +646,7 @@ Andrew

]]>
Birmingham B46 3AG Cannon Hill Park - + 2 @@ -700,7 +665,7 @@ Andrew

]]>
Benjamin Flores Nebula Business - + 1 @@ -718,7 +683,7 @@ Andrew

]]>
80.0 0 - + @@ -737,7 +702,7 @@ Andrew

]]>
Lima 0 - + @@ -761,7 +726,7 @@ Andrew

]]>
Palermo, Capital Federal C1414CMS Capital Federal 2 - + @@ -784,7 +749,7 @@ Andrew

]]>
Wavre 1300 2 - + @@ -808,7 +773,7 @@ Andrew

]]>
1300 Rue de Namur 69 2 - + @@ -832,7 +797,7 @@ Andrew

]]>
1300 Rue de Namur 69 0 - + @@ -852,7 +817,7 @@ Andrew

]]>
93190 Rue Léon Dierx 73 +33 1 25 54 45 69 - + 1 @@ -874,7 +839,7 @@ Andrew

]]>
1080 Rue du Commerce 93 +32 22 33 54 07 - + 1 @@ -894,7 +859,7 @@ Andrew

]]>
Chevy Chase 1920 Del Dew Drive - + 1 @@ -916,7 +881,7 @@ Andrew

]]>
Chevy Chase 1920 Del Dew Drive - + 1 @@ -937,7 +902,7 @@ Andrew

]]>
max123@itconsult.com Milan - + 1 @@ -957,7 +922,7 @@ Andrew

]]>
London 1 Russel square - + 1 @@ -977,7 +942,7 @@ Andrew

]]>
roxshott9@trellian.com Canguaretama - + 1 @@ -996,7 +961,7 @@ Andrew

]]>
mlimprecht8@fastcompany.com Valejas - + 1 @@ -1016,7 +981,7 @@ Andrew

]]>
akalinovich7@tinypic.com Boafeo - + 1 @@ -1036,7 +1001,7 @@ Andrew

]]>
jjobbins6@simplemachines.org Gvardeysk - + 1 @@ -1056,7 +1021,7 @@ Andrew

]]>
eespinazo5@reuters.com Amsterdam - + 1 @@ -1076,7 +1041,7 @@ Andrew

]]>
credford4@salon.com Odoyev - + 1 @@ -1098,7 +1063,7 @@ Andrew

]]>
ikirvell3@gnu.org Dahu Satu - + 1 @@ -1118,7 +1083,7 @@ Andrew

]]>
ngrabert2@dailymail.co.uk Tokyo - + 1 @@ -1138,7 +1103,7 @@ Andrew

]]>
fseiller1@theglobeandmail.com Wurigelebur - + 1 @@ -1159,7 +1124,7 @@ Andrew

]]>
tbrockhouse0@google.pl Brussels - + 1 diff --git a/addons/crm/models/__init__.py b/addons/crm/models/__init__.py index dcc76fd80f9..ebd90b6419b 100644 --- a/addons/crm/models/__init__.py +++ b/addons/crm/models/__init__.py @@ -4,7 +4,6 @@ from . import res_users from . import calendar from . import crm_lead -from . import crm_lead_tag from . import crm_lost_reason from . import crm_stage from . import crm_team diff --git a/addons/crm/models/crm_lead.py b/addons/crm/models/crm_lead.py index 58fc27f7eca..d8fce1f43c8 100644 --- a/addons/crm/models/crm_lead.py +++ b/addons/crm/models/crm_lead.py @@ -98,7 +98,7 @@ class Lead(models.Model): ('grey', 'No next activity planned'), ('red', 'Next activity late'), ('green', 'Next activity is planned')], string='Kanban State', compute='_compute_kanban_state') tag_ids = fields.Many2many( - 'crm.lead.tag', 'crm_lead_tag_rel', 'lead_id', 'tag_id', string='Tags', + 'crm.tag', 'crm_tag_rel', 'lead_id', 'tag_id', string='Tags', help="Classify and analyze your lead/opportunity categories like: Training, Service") color = fields.Integer('Color Index', default=0) # Opportunity specific @@ -1526,8 +1526,8 @@ class Lead(models.Model): # get all tag_ids won / lost count self.flush(['probability', 'active']) query = """select l.probability, l.active, t.id, count(l.probability) as count - from crm_lead_tag_rel rel - inner join crm_lead_tag t on rel.tag_id = t.id + from crm_tag_rel rel + inner join crm_tag t on rel.tag_id = t.id inner join crm_lead l on l.id = rel.lead_id where (l.probability = 0 or l.probability >= 100) and l.create_date > %%s @@ -1590,8 +1590,8 @@ class Lead(models.Model): query = """SELECT l.id as lead_id, t.id as tag_id FROM crm_lead l - LEFT JOIN crm_lead_tag_rel rel ON l.id = rel.lead_id - LEFT JOIN crm_lead_tag t ON rel.tag_id = t.id + LEFT JOIN crm_tag_rel rel ON l.id = rel.lead_id + LEFT JOIN crm_tag t ON rel.tag_id = t.id WHERE ((l.probability > 0 AND l.probability < 100) OR l.probability is null) AND l.active = True AND l.id in %s order by l.team_id asc""" self._cr.execute(query, [tuple(self.ids)]) tag_results = self._cr.dictfetchall() diff --git a/addons/crm/security/ir.model.access.csv b/addons/crm/security/ir.model.access.csv index 6930fe946b8..a5c66314e71 100644 --- a/addons/crm/security/ir.model.access.csv +++ b/addons/crm/security/ir.model.access.csv @@ -8,9 +8,6 @@ access_res_partner_category_manager,res.partner.category.crm.manager,base.model_ access_res_partner,res.partner.crm.user,base.model_res_partner,sales_team.group_sale_salesman,1,1,1,0 access_res_partner_category,res.partner.category.crm.user,base.model_res_partner_category,sales_team.group_sale_salesman,1,1,1,0 access_crm_lead_partner_manager,crm.lead.partner.manager,model_crm_lead,base.group_partner_manager,1,0,0,0 -access_crm_lead_tag,crm_lead_tag,model_crm_lead_tag,base.group_user,1,0,0,0 -access_crm_lead_tag_salesman,crm_lead_tag salesman,model_crm_lead_tag,sales_team.group_sale_salesman,1,1,1,0 -access_crm_lead_tag_manager,crm_lead_tag manager,model_crm_lead_tag,sales_team.group_sale_manager,1,1,1,1 access_crm_lost_reason_manager,crm.lost.reason.manager,model_crm_lost_reason,sales_team.group_sale_manager,1,1,1,1 access_crm_lost_reason_salesman,crm.lost.reason.salesman,model_crm_lost_reason,sales_team.group_sale_salesman,1,0,0,0 access_crm_lost_reason_user,crm.lost.reason.user,model_crm_lost_reason,base.group_user,1,0,0,0 diff --git a/addons/crm/views/crm_lead_views.xml b/addons/crm/views/crm_lead_views.xml index 8fcb9d30be1..c3d618f7cc9 100644 --- a/addons/crm/views/crm_lead_views.xml +++ b/addons/crm/views/crm_lead_views.xml @@ -1,43 +1,5 @@ - - - crm.lead.tag.form - crm.lead.tag - -
- -
-
-
-

- -

-
- - - - - -
-
-
-
- - - crm.lead.tag.tree - crm.lead.tag - - - - - - - - crm.lead.form crm.lead @@ -954,24 +916,10 @@ if record: name="CRM" action="action_your_pipeline"/> - - - Tags - crm.lead.tag - - -

- Create new tags for your opportunities -

- Create tags that fit your business (product structure, sales type, etc.) to better manage and track your opportunities. -

-
-
-
diff --git a/addons/crm_iap_lead/models/crm_iap_lead_mining_request.py b/addons/crm_iap_lead/models/crm_iap_lead_mining_request.py index 8c996e2fdc6..7ab2477f014 100644 --- a/addons/crm_iap_lead/models/crm_iap_lead_mining_request.py +++ b/addons/crm_iap_lead/models/crm_iap_lead_mining_request.py @@ -40,7 +40,7 @@ class CRMLeadMiningRequest(models.Model): lead_type = fields.Selection([('lead', 'Lead'), ('opportunity', 'Opportunity')], string='Type', required=True, default=_default_lead_type) team_id = fields.Many2one('crm.team', string='Sales Team', domain="[('use_opportunities', '=', True)]") user_id = fields.Many2one('res.users', string='Salesperson') - tag_ids = fields.Many2many('crm.lead.tag', string='Tags') + tag_ids = fields.Many2many('crm.tag', string='Tags') lead_ids = fields.One2many('crm.lead', 'lead_mining_request_id', string='Generated Lead / Opportunity') leads_count = fields.Integer(compute='_compute_leads_count', string='Number of Generated Leads') diff --git a/addons/crm_iap_lead_website/models/crm_reveal_rule.py b/addons/crm_iap_lead_website/models/crm_reveal_rule.py index 36f8cc7e5b5..671aa6be16a 100644 --- a/addons/crm_iap_lead_website/models/crm_reveal_rule.py +++ b/addons/crm_iap_lead_website/models/crm_reveal_rule.py @@ -53,7 +53,7 @@ class CRMRevealRule(models.Model): lead_type = fields.Selection([('lead', 'Lead'), ('opportunity', 'Opportunity')], string='Type', required=True, default='opportunity') suffix = fields.Char(string='Suffix', help='This will be appended in name of generated lead so you can identify lead/opportunity is generated with this rule') team_id = fields.Many2one('crm.team', string='Sales Team') - tag_ids = fields.Many2many('crm.lead.tag', string='Tags') + tag_ids = fields.Many2many('crm.tag', string='Tags') user_id = fields.Many2one('res.users', string='Salesperson') priority = fields.Selection(crm_stage.AVAILABLE_PRIORITIES, string='Priority') lead_ids = fields.One2many('crm.lead', 'reveal_rule_id', string='Generated Lead / Opportunity') diff --git a/addons/sale/models/sale.py b/addons/sale/models/sale.py index 65d5fda54c7..ca0b98ef8e0 100644 --- a/addons/sale/models/sale.py +++ b/addons/sale/models/sale.py @@ -251,6 +251,7 @@ class SaleOrder(models.Model): show_update_pricelist = fields.Boolean(string='Has Pricelist Changed', help="Technical Field, True if the pricelist was changed;\n" " this will then display a recomputation button") + tag_ids = fields.Many2many('crm.tag', 'sale_order_tag_rel', 'order_id', 'tag_id', string='Tags') _sql_constraints = [ ('date_order_conditional_required', "CHECK( (state IN ('sale', 'done') AND date_order IS NOT NULL) OR state NOT IN ('sale', 'done') )", "A confirmed sales order requires a confirmation date."), diff --git a/addons/sale/views/sale_views.xml b/addons/sale/views/sale_views.xml index 5d08a7c03c3..87f5052b561 100644 --- a/addons/sale/views/sale_views.xml +++ b/addons/sale/views/sale_views.xml @@ -51,9 +51,16 @@ + + Products ir.actions.act_window @@ -202,6 +209,7 @@ + @@ -229,6 +237,7 @@ + @@ -653,6 +662,7 @@ + diff --git a/addons/sale_crm/models/crm_lead.py b/addons/sale_crm/models/crm_lead.py index 56ca8677d3f..1a2d8374318 100644 --- a/addons/sale_crm/models/crm_lead.py +++ b/addons/sale_crm/models/crm_lead.py @@ -81,6 +81,7 @@ class CrmLead(models.Model): 'default_origin': self.name, 'default_source_id': self.source_id.id, 'default_company_id': self.company_id.id or self.env.company.id, + 'default_tag_ids': [(6, 0, self.tag_ids.ids)] } return action diff --git a/addons/sale_crm/models/sale_order.py b/addons/sale_crm/models/sale_order.py index 6d5f4fe265e..81ce2154f4a 100644 --- a/addons/sale_crm/models/sale_order.py +++ b/addons/sale_crm/models/sale_order.py @@ -7,7 +7,6 @@ from odoo import fields, models class SaleOrder(models.Model): _inherit = 'sale.order' - tag_ids = fields.Many2many('crm.lead.tag', 'sale_order_tag_rel', 'order_id', 'tag_id', string='Tags') opportunity_id = fields.Many2one( 'crm.lead', string='Opportunity', check_company=True, domain="[('type', '=', 'opportunity'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]") diff --git a/addons/sale_crm/views/sale_order_views.xml b/addons/sale_crm/views/sale_order_views.xml index 9ecfa1897c0..2cacb40bd73 100644 --- a/addons/sale_crm/views/sale_order_views.xml +++ b/addons/sale_crm/views/sale_order_views.xml @@ -20,28 +20,6 @@ - - sale.order.tree.inherit.sale.crm - sale.order - - - - - - - - - - sale.order.tree.inherit.sale.crm - sale.order - - - - - - - - + + + + + + Product + + + + Software + + + + Services + + + + Information + + + + Design + + + + Training + + + + Consulting + + + + Other + + + + diff --git a/addons/sales_team/models/__init__.py b/addons/sales_team/models/__init__.py index 96b35e08a86..2fa2d9bcbd2 100644 --- a/addons/sales_team/models/__init__.py +++ b/addons/sales_team/models/__init__.py @@ -2,5 +2,6 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from . import crm_team +from . import crm_tag from . import res_partner from . import res_users diff --git a/addons/crm/models/crm_lead_tag.py b/addons/sales_team/models/crm_tag.py similarity index 86% rename from addons/crm/models/crm_lead_tag.py rename to addons/sales_team/models/crm_tag.py index 7335c0950df..a0db292a292 100644 --- a/addons/crm/models/crm_lead_tag.py +++ b/addons/sales_team/models/crm_tag.py @@ -6,8 +6,8 @@ from odoo import fields, models class Tag(models.Model): - _name = "crm.lead.tag" - _description = "Lead Tag" + _name = "crm.tag" + _description = "CRM Tag" name = fields.Char('Tag Name', required=True, translate=True) color = fields.Integer('Color Index') diff --git a/addons/sales_team/security/ir.model.access.csv b/addons/sales_team/security/ir.model.access.csv index 238d6611813..20ad54105d8 100644 --- a/addons/sales_team/security/ir.model.access.csv +++ b/addons/sales_team/security/ir.model.access.csv @@ -2,3 +2,6 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_crm_team,crm.team,model_crm_team,base.group_user,1,0,0,0 access_crm_team_user,crm.team.user,model_crm_team,sales_team.group_sale_salesman,1,0,0,0 access_crm_team_manager,crm.team.manager,model_crm_team,sales_team.group_sale_manager,1,1,1,1 +access_crm_tag,crm_tag,model_crm_tag,base.group_user,1,0,0,0 +access_crm_tag_salesman,crm_tag salesman,model_crm_tag,sales_team.group_sale_salesman,1,1,1,0 +access_crm_tag_manager,crm_tag manager,model_crm_tag,sales_team.group_sale_manager,1,1,1,1 diff --git a/addons/sales_team/views/crm_tag_views.xml b/addons/sales_team/views/crm_tag_views.xml new file mode 100644 index 00000000000..9862f7637da --- /dev/null +++ b/addons/sales_team/views/crm_tag_views.xml @@ -0,0 +1,54 @@ + + + + + sales.team.crm.tag.view.form + crm.tag + +
+ +
+
+
+

+ +

+
+ + + + + +
+
+
+
+ + + sales.team.crm.tag.view.tree + crm.tag + + + + + + + + + + + Tags + crm.tag + + +

+ Create new tags for your opportunities +

+ Create tags that fit your business (product structure, sales type, etc.) to better manage and track your opportunities. +

+
+
+
diff --git a/addons/website_crm_partner_assign/data/crm_lead_demo.xml b/addons/website_crm_partner_assign/data/crm_lead_demo.xml index 59d296d3368..468b90fae3a 100644 --- a/addons/website_crm_partner_assign/data/crm_lead_demo.xml +++ b/addons/website_crm_partner_assign/data/crm_lead_demo.xml @@ -12,7 +12,7 @@ Reseller Edinburgh - + 2 diff --git a/addons/website_crm_partner_assign/data/crm_partner_assign_data.xml b/addons/website_crm_partner_assign/data/crm_partner_assign_data.xml index 0461884d845..f88fc4a7231 100644 --- a/addons/website_crm_partner_assign/data/crm_partner_assign_data.xml +++ b/addons/website_crm_partner_assign/data/crm_partner_assign_data.xml @@ -1,15 +1,15 @@ - + No more partner available 3 - + Spam 3 - + Created by Partner 4