[IMP] crm, sales: add crm tags on sale orders

As the crm.lead.tags model shall be used in CRM and/or Sales apps,
it has been moved to the sales_team module, which is a depedency
of the CRM and Sales apps.

As these tags becomes more generic than just "lead tags", the model
has been renamed from crm.lead.tags to crm.tags.

Tags on sale orders were already present but not visible. They are
now visible in the "Other Info" section, and optionally in sale order
tree views.

When a quotation is created from an opportunity (CRM app), existing tags
are populated from the opportunity to the sale order (Sales app).

Views and demo data of several modules have been updated accordingly.

Task ID 2191276
This commit is contained in:
Rémy Baranx (bar)
2020-03-23 09:08:47 +00:00
committed by Thibault Delavallée
parent 32ec8a974d
commit fd4798195d
20 changed files with 172 additions and 174 deletions
+44 -79
View File
@@ -1,41 +1,6 @@
<?xml version="1.0"?>
<odoo>
<data noupdate="1">
<!-- crm categories -->
<record id="categ_oppor1" model="crm.lead.tag">
<field name="name">Product</field>
<field name="color" eval="1"/>
</record>
<record id="categ_oppor2" model="crm.lead.tag">
<field name="name">Software</field>
<field name="color" eval="2"/>
</record>
<record id="categ_oppor3" model="crm.lead.tag">
<field name="name">Services</field>
<field name="color" eval="3"/>
</record>
<record id="categ_oppor4" model="crm.lead.tag">
<field name="name">Information</field>
<field name="color" eval="4"/>
</record>
<record id="categ_oppor5" model="crm.lead.tag">
<field name="name">Design</field>
<field name="color" eval="5"/>
</record>
<record id="categ_oppor6" model="crm.lead.tag">
<field name="name">Training</field>
<field name="color" eval="6"/>
</record>
<record id="categ_oppor7" model="crm.lead.tag">
<field name="name">Consulting</field>
<field name="color" eval="7"/>
</record>
<record id="categ_oppor8" model="crm.lead.tag">
<field name="name">Other</field>
<field name="color" eval="8"/>
</record>
<!-- Demo Leads -->
<record id="crm_case_1" model="crm.lead">
<field name="create_date" eval="DateTime.now() - relativedelta(days=8)"/>
@@ -50,7 +15,7 @@
<field name="zip">93190</field>
<field name="street">Rue Léon Dierx 73</field>
<field name="phone">+33 1 25 54 45 69</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor6])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor6')])]"/>
<field name="priority">1</field>
<field name="team_id" ref="sales_team.team_sales_department"/>
<field name="user_id" ref="base.user_admin"/>
@@ -86,7 +51,7 @@
<field name="zip">33000</field>
<field name="street">Rue Ignasse Blanchoux 214/32</field>
<field name="phone">+33 1 25 54 45 69</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor2])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor2')])]"/>
<field name="priority">1</field>
<field name="team_id" ref="sales_team.team_sales_department"/>
<field name="user_id" ref="base.user_admin"/>
@@ -119,7 +84,7 @@
<field name="zip">10001</field>
<field name="street">Lafayette Ave 450/12</field>
<field name="phone">+1 555 754 3010</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor4, categ_oppor5])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor4'), ref('sales_team.categ_oppor5')])]"/>
<field name="priority">2</field>
<field name="team_id" ref="sales_team.crm_team_1"/>
<field name="user_id" ref="base.user_admin"/>
@@ -141,7 +106,7 @@
<field name="city">Manchester</field>
<field name="zip">03101</field>
<field name="street">United Street 68</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor5])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor5')])]"/>
<field name="priority">2</field>
<field name="team_id" ref="sales_team.crm_team_1"/>
<field name="user_id" ref="base.user_admin"/>
@@ -165,7 +130,7 @@
<field name="zip">1909</field>
<field name="street">West Allegheny Ave 800</field>
<field name="phone">+1 813 494 5005</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor1])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor1')])]"/>
<field name="priority">2</field>
<field name="team_id" ref="sales_team.crm_team_1"/>
<field name="user_id" ref="base.user_admin"/>
@@ -204,7 +169,7 @@ Contact: +1 813 494 5005</p>]]></field>
<field name="country_id" ref="base.it"/>
<field name="city">Roma</field>
<field name="zip">00118</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor3, categ_oppor4])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor3'), ref('sales_team.categ_oppor4')])]"/>
<field name="priority">2</field>
<field name="team_id" ref="sales_team.crm_team_1"/>
<field name="user_id" ref="base.user_admin"/>
@@ -226,7 +191,7 @@ Contact: +1 813 494 5005</p>]]></field>
<field name="zip">29000</field>
<field name="street">R. Sen. Pompeu</field>
<field name="phone">+11 55 21 5555 5555</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor4])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor4')])]"/>
<field name="priority">0</field>
<field name="team_id" ref="sales_team.team_sales_department"/>
<field name="user_id" ref="base.user_admin"/>
@@ -247,7 +212,7 @@ Contact: +1 813 494 5005</p>]]></field>
<field name="country_id" ref="base.uk"/>
<field name="city">London</field>
<field name="zip">E1AB</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor4, categ_oppor8])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor4'), ref('sales_team.categ_oppor8')])]"/>
<field name="priority">1</field>
<field name="team_id" ref="sales_team.team_sales_department"/>
<field name="user_id" ref="base.user_admin"/>
@@ -282,7 +247,7 @@ ESM Expert<br />]]></field>
<field name="country_id" ref="base.uk"/>
<field name="city">Oxford</field>
<field name="zip">OX1 1RQ</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor4, categ_oppor7])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor4'), ref('sales_team.categ_oppor7')])]"/>
<field name="priority">2</field>
<field name="team_id" ref="sales_team.team_sales_department"/>
<field name="user_id" ref="base.user_demo"/>
@@ -303,7 +268,7 @@ ESM Expert<br />]]></field>
<field name="country_id" ref="base.es"/>
<field name="city">Madrid</field>
<field name="zip">28001</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor1])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor1')])]"/>
<field name="priority">2</field>
<field name="team_id" ref="sales_team.crm_team_1"/>
<field name="user_id" ref="base.user_demo"/>
@@ -338,7 +303,7 @@ Andrew</p>]]></field>
<field name="country_id" ref="base.be"/>
<field name="city">Wavre</field>
<field name="zip">1300</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor7])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor7')])]"/>
<field name="priority">2</field>
<field name="team_id" ref="sales_team.crm_team_1"/>
<field name="user_id" ref="base.user_admin"/>
@@ -358,7 +323,7 @@ Andrew</p>]]></field>
<field name="partner_id" ref="base.res_partner_1"/>
<field name="country_id" ref="base.cn"/>
<field name="city">Shenzhen</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor1])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor1')])]"/>
<field name="priority">2</field>
<field name="team_id" ref="sales_team.team_sales_department"/>
<field name="user_id" ref="base.user_admin"/>
@@ -386,7 +351,7 @@ Andrew</p>]]></field>
<field name="country_id" ref="base.au"/>
<field name="city">Melbourne</field>
<field name="street">Kensington Road 189</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor1])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor1')])]"/>
<field name="priority">1</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(weeks=2)).strftime('%Y-%m-%d %H:%M')"/>
<field name="team_id" ref="sales_team.team_sales_department"/>
@@ -412,7 +377,7 @@ Andrew</p>]]></field>
<field name="zip">1300</field>
<field name="street">Rue de Namur 69</field>
<field name="phone">+32 10 588 558</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor2])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor2')])]"/>
<field name="priority">2</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(weeks=2)).strftime('%Y-%m-%d %H:%M')"/>
<field name="team_id" ref="sales_team.crm_team_1"/>
@@ -435,7 +400,7 @@ Andrew</p>]]></field>
<field name="city">Wavre</field>
<field name="street">Rue de Namur 69</field>
<field name="phone">+32 10 588 558</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor1])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor1')])]"/>
<field name="priority">1</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(weeks=1)).strftime('%Y-%m-%d %H:%M')"/>
<field name="team_id" ref="sales_team.team_sales_department"/>
@@ -528,7 +493,7 @@ Andrew</p>]]></field>
<field name="city">Liverpool</field>
<field name="zip">L25 4RL</field>
<field name="street">Union Road</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor5])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor5')])]"/>
<field name="priority">2</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(weeks=1)).strftime('%Y-%m-%d %H:%M')"/>
<field name="team_id" ref="sales_team.team_sales_department"/>
@@ -553,7 +518,7 @@ Andrew</p>]]></field>
<field name="city">Brussels</field>
<field name="zip">1100</field>
<field name="street">Rue des Palais 51, bte 33</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor3,categ_oppor4])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor3'),ref('sales_team.categ_oppor4')])]"/>
<field name="priority">1</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(days=3)).strftime('%Y-%m-%d %H:%M')"/>
<field name="team_id" ref="sales_team.crm_team_1"/>
@@ -586,7 +551,7 @@ Andrew</p>]]></field>
<field name="street">3661 Station Street</field>
<field name="country_id" ref="base.uk"/>
<field name="partner_id" ref="base.res_partner_4"/>
<field name="tag_ids" eval="[(6, 0, [categ_oppor4,categ_oppor6])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor4'),ref('sales_team.categ_oppor6')])]"/>
<field name="priority">1</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(weeks=3)).strftime('%Y-%m-%d %H:%M')"/>
<field name="team_id" ref="sales_team.crm_team_1"/>
@@ -636,7 +601,7 @@ Andrew</p>]]></field>
<field name="street">3rd Floor, Room 3-C,</field>
<field name="street2">Carretera Panamericana, Km 1, Urb. Delgado Chalbaud</field>
<field name="phone">+58 212 681 0538</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor1])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor1')])]"/>
<field name="priority">1</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(weeks=1)).strftime('%Y-%m-%d %H:%M')"/>
<field name="team_id" ref="sales_team.team_sales_department"/>
@@ -661,7 +626,7 @@ Andrew</p>]]></field>
<field name="zip">60610</field>
<field name="city">Chicago</field>
<field name="phone">+1 312 349 2324</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor4,categ_oppor8])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor4'),ref('sales_team.categ_oppor8')])]"/>
<field name="priority">2</field>
<field name="team_id" ref="sales_team.team_sales_department"/>
<field name="user_id" ref="base.user_admin"/>
@@ -681,7 +646,7 @@ Andrew</p>]]></field>
<field name="city">Birmingham</field>
<field name="zip">B46 3AG</field>
<field name="street">Cannon Hill Park</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor7])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor7')])]"/>
<field name="priority">2</field>
<field name="team_id" ref="sales_team.team_sales_department"/>
<field name="user_id" ref="base.user_admin"/>
@@ -700,7 +665,7 @@ Andrew</p>]]></field>
<field name="contact_name">Benjamin Flores</field>
<field name="partner_name">Nebula Business</field>
<field name="partner_id" ref="base.res_partner_12"/>
<field name="tag_ids" eval="[(6, 0, [categ_oppor3])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor3')])]"/>
<field name="priority">1</field>
<field name="team_id" ref="sales_team.crm_team_1"/>
<field name="user_id" ref="base.user_admin"/>
@@ -718,7 +683,7 @@ Andrew</p>]]></field>
<field name="probability">80.0</field>
<field name="partner_id" ref="base.res_partner_18"/>
<field name="priority">0</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor3])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor3')])]"/>
<field name="team_id" ref="sales_team.crm_team_1"/>
<field name="user_id" ref="base.user_demo"/>
<field name="stage_id" ref="crm.stage_lead3"/>
@@ -737,7 +702,7 @@ Andrew</p>]]></field>
<field name="country_id" ref="base.pe"/>
<field name="city">Lima</field>
<field name="priority">0</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor7])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor7')])]"/>
<field name="team_id" ref="sales_team.crm_team_1"/>
<field name="user_id" ref="base.user_admin"/>
<field name="stage_id" ref="crm.stage_lead3"/>
@@ -761,7 +726,7 @@ Andrew</p>]]></field>
<field name="street">Palermo, Capital Federal</field>
<field name="street2">C1414CMS Capital Federal</field>
<field name="priority">2</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor4])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor4')])]"/>
<field name="team_id" ref="sales_team.team_sales_department"/>
<field name="user_id" ref="base.user_admin"/>
<field name="stage_id" ref="crm.stage_lead3"/>
@@ -784,7 +749,7 @@ Andrew</p>]]></field>
<field name="city">Wavre</field>
<field name="zip">1300</field>
<field name="priority">2</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor2])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor2')])]"/>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(days=6)).strftime('%Y-%m-%d %H:%M')"/>
<field name="team_id" ref="sales_team.crm_team_1"/>
<field name="user_id" ref="base.user_demo"/>
@@ -808,7 +773,7 @@ Andrew</p>]]></field>
<field name="zip">1300</field>
<field name="street">Rue de Namur 69</field>
<field name="priority">2</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor2])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor2')])]"/>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(days=6)).strftime('%Y-%m-%d %H:%M')"/>
<field name="team_id" ref="sales_team.team_sales_department"/>
<field name="user_id" ref="base.user_demo"/>
@@ -832,7 +797,7 @@ Andrew</p>]]></field>
<field name="zip">1300</field>
<field name="street">Rue de Namur 69</field>
<field name="priority">0</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor1, categ_oppor5])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor1'), ref('sales_team.categ_oppor5')])]"/>
<field name="date_deadline" eval="DateTime.today() + relativedelta(days=12)"/>
<field name="team_id" ref="sales_team.team_sales_department"/>
<field name="user_id" ref="base.user_demo"/>
@@ -852,7 +817,7 @@ Andrew</p>]]></field>
<field name="zip">93190</field>
<field name="street">Rue Léon Dierx 73</field>
<field name="phone">+33 1 25 54 45 69</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor6])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor6')])]"/>
<field name="priority">1</field>
<field name="date_open" eval="(DateTime.today() - relativedelta(months=2)).strftime('%Y-%m-%d %H:%M')"/>
<field name="stage_id" ref="stage_lead2"/>
@@ -874,7 +839,7 @@ Andrew</p>]]></field>
<field name="zip">1080</field>
<field name="street">Rue du Commerce 93</field>
<field name="phone">+32 22 33 54 07</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor6])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor6')])]"/>
<field name="priority">1</field>
<field name="date_open" eval="(DateTime.today() - relativedelta(months=2)).strftime('%Y-%m-%d %H:%M')"/>
<field name="stage_id" ref="stage_lead1"/>
@@ -894,7 +859,7 @@ Andrew</p>]]></field>
<field name="country_id" ref="base.au"/>
<field name="city">Chevy Chase</field>
<field name="street">1920 Del Dew Drive</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor1])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor1')])]"/>
<field name="priority">1</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(weeks=2)).strftime('%Y-%m-%d %H:%M')"/>
<field name="team_id" ref="sales_team.team_sales_department"/>
@@ -916,7 +881,7 @@ Andrew</p>]]></field>
<field name="country_id" ref="base.au"/>
<field name="city">Chevy Chase</field>
<field name="street">1920 Del Dew Drive</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor1])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor1')])]"/>
<field name="priority">1</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(weeks=2)).strftime('%Y-%m-%d %H:%M')"/>
<field name="team_id" ref="sales_team.team_sales_department"/>
@@ -937,7 +902,7 @@ Andrew</p>]]></field>
<field name="email_from">max123@itconsult.com</field>
<field name="country_id" ref="base.it"/>
<field name="city">Milan</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor1])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor1')])]"/>
<field name="priority">1</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(weeks=2)).strftime('%Y-%m-%d %H:%M')"/>
<field name="stage_id" ref="crm.stage_lead2"/>
@@ -957,7 +922,7 @@ Andrew</p>]]></field>
<field name="country_id" ref="base.gr"/>
<field name="city">London</field>
<field name="street">1 Russel square</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor1])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor1')])]"/>
<field name="priority">1</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(weeks=2)).strftime('%Y-%m-%d %H:%M')"/>
<field name="stage_id" ref="crm.stage_lead3"/>
@@ -977,7 +942,7 @@ Andrew</p>]]></field>
<field name="email_from">roxshott9@trellian.com</field>
<field name="country_id" ref="base.br"/>
<field name="city">Canguaretama</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor1])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor1')])]"/>
<field name="priority">1</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(weeks=2)).strftime('%Y-%m-%d %H:%M')"/>
<field name="stage_id" ref="crm.stage_lead2"/>
@@ -996,7 +961,7 @@ Andrew</p>]]></field>
<field name="email_from">mlimprecht8@fastcompany.com</field>
<field name="country_id" ref="base.pt"/>
<field name="city">Valejas</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor1])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor1')])]"/>
<field name="priority">1</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(weeks=2)).strftime('%Y-%m-%d %H:%M')"/>
<field name="stage_id" ref="crm.stage_lead2"/>
@@ -1016,7 +981,7 @@ Andrew</p>]]></field>
<field name="email_from">akalinovich7@tinypic.com</field>
<field name="country_id" ref="base.id"/>
<field name="city">Boafeo</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor1])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor1')])]"/>
<field name="priority">1</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(weeks=2)).strftime('%Y-%m-%d %H:%M')"/>
<field name="stage_id" ref="crm.stage_lead2"/>
@@ -1036,7 +1001,7 @@ Andrew</p>]]></field>
<field name="email_from">jjobbins6@simplemachines.org</field>
<field name="country_id" ref="base.ru"/>
<field name="city">Gvardeysk</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor1])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor1')])]"/>
<field name="priority">1</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(weeks=2)).strftime('%Y-%m-%d %H:%M')"/>
<field name="stage_id" ref="crm.stage_lead2"/>
@@ -1056,7 +1021,7 @@ Andrew</p>]]></field>
<field name="email_from">eespinazo5@reuters.com</field>
<field name="country_id" ref="base.nl"/>
<field name="city">Amsterdam</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor3])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor3')])]"/>
<field name="priority">1</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(weeks=2)).strftime('%Y-%m-%d %H:%M')"/>
<field name="stage_id" ref="crm.stage_lead1"/>
@@ -1076,7 +1041,7 @@ Andrew</p>]]></field>
<field name="email_from">credford4@salon.com</field>
<field name="country_id" ref="base.ru"/>
<field name="city">Odoyev</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor1])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor1')])]"/>
<field name="priority">1</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(weeks=2)).strftime('%Y-%m-%d %H:%M')"/>
<field name="team_id" ref="sales_team.crm_team_1"/>
@@ -1098,7 +1063,7 @@ Andrew</p>]]></field>
<field name="email_from">ikirvell3@gnu.org</field>
<field name="country_id" ref="base.id"/>
<field name="city">Dahu Satu</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor1])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor1')])]"/>
<field name="priority">1</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(weeks=2)).strftime('%Y-%m-%d %H:%M')"/>
<field name="stage_id" ref="crm.stage_lead3"/>
@@ -1118,7 +1083,7 @@ Andrew</p>]]></field>
<field name="email_from">ngrabert2@dailymail.co.uk</field>
<field name="country_id" ref="base.jp"/>
<field name="city">Tokyo</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor1])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor1')])]"/>
<field name="priority">1</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(weeks=2)).strftime('%Y-%m-%d %H:%M')"/>
<field name="stage_id" ref="crm.stage_lead2"/>
@@ -1138,7 +1103,7 @@ Andrew</p>]]></field>
<field name="email_from">fseiller1@theglobeandmail.com</field>
<field name="country_id" ref="base.id"/>
<field name="city">Wurigelebur</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor1])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor1')])]"/>
<field name="priority">1</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(weeks=2)).strftime('%Y-%m-%d %H:%M')"/>
<field name="stage_id" ref="crm.stage_lead3"/>
@@ -1159,7 +1124,7 @@ Andrew</p>]]></field>
<field name="email_from">tbrockhouse0@google.pl</field>
<field name="country_id" ref="base.be"/>
<field name="city">Brussels</field>
<field name="tag_ids" eval="[(6, 0, [categ_oppor1])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor1')])]"/>
<field name="priority">1</field>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(weeks=2)).strftime('%Y-%m-%d %H:%M')"/>
<field name="stage_id" ref="crm.stage_lead3"/>
-1
View File
@@ -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
+5 -5
View File
@@ -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()
-3
View File
@@ -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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
8 access_res_partner res.partner.crm.user base.model_res_partner sales_team.group_sale_salesman 1 1 1 0
9 access_res_partner_category res.partner.category.crm.user base.model_res_partner_category sales_team.group_sale_salesman 1 1 1 0
10 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
11 access_crm_lost_reason_manager crm.lost.reason.manager model_crm_lost_reason sales_team.group_sale_manager 1 1 1 1
12 access_crm_lost_reason_salesman crm.lost.reason.salesman model_crm_lost_reason sales_team.group_sale_salesman 1 0 0 0
13 access_crm_lost_reason_user crm.lost.reason.user model_crm_lost_reason base.group_user 1 0 0 0
+1 -53
View File
@@ -1,43 +1,5 @@
<?xml version="1.0"?>
<odoo>
<!--
crm.lead.tag views
-->
<record id="crm_lead_tag_form" model="ir.ui.view">
<field name="name">crm.lead.tag.form</field>
<field name="model">crm.lead.tag</field>
<field name="arch" type="xml">
<form string="Lead Tags">
<sheet>
<div class="oe_title">
<div class="oe_edit_only">
<label for="name"/>
</div>
<h1>
<field name="name"/>
</h1>
</div>
<group>
<group>
<field name="color" required="True"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="crm_lead_tag_tree" model="ir.ui.view">
<field name="name">crm.lead.tag.tree</field>
<field name="model">crm.lead.tag</field>
<field name="arch" type="xml">
<tree string="Lead Tags" editable="bottom">
<field name="name"/>
<field name="color" groups="base.group_no_one"/>
</tree>
</field>
</record>
<record id="crm_lead_view_form" model="ir.ui.view">
<field name="name">crm.lead.form</field>
<field name="model">crm.lead</field>
@@ -954,24 +916,10 @@ if record:
name="CRM"
action="action_your_pipeline"/>
<!-- Configuration/Lead & Opporotunities/Lead Tags Menu -->
<record id="crm_lead_tag_action" model="ir.actions.act_window">
<field name="name">Tags</field>
<field name="res_model">crm.lead.tag</field>
<field name="view_id" ref="crm_lead_tag_tree"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create new tags for your opportunities
</p><p>
Create tags that fit your business (product structure, sales type, etc.) to better manage and track your opportunities.
</p>
</field>
</record>
<menuitem
id="menu_crm_lead_categ"
name="Tags"
action="crm_lead_tag_action"
action="sales_team.sales_team_crm_tag_action"
parent="menu_crm_config_lead"
sequence="1"/>
</odoo>
@@ -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')
@@ -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')
+1
View File
@@ -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."),
+11 -1
View File
@@ -51,9 +51,16 @@
<menuitem id="menu_sales_config"
parent="menu_sale_config"
sequence="3"
sequence="4"
name="Sales Orders"/>
<menuitem
id="menu_tag_config"
name="Tags"
parent="sale.menu_sales_config"
action="sales_team.sales_team_crm_tag_action"
sequence="2"/>
<record id="product_template_action" model="ir.actions.act_window">
<field name="name">Products</field>
<field name="type">ir.actions.act_window</field>
@@ -202,6 +209,7 @@
<field name="amount_total" sum="Total Tax Included" widget="monetary" optional="show"/>
<field name="currency_id" invisible="1"/>
<field name="invoice_status" optional="show"/>
<field name="tag_ids" optional="hide" widget="many2many_tags" options="{'color_field': 'color'}"/>
<field name="state" invisible="1"/>
<field name="activity_exception_decoration" widget="activity_exception"/>
</tree>
@@ -229,6 +237,7 @@
<field name="currency_id" invisible="1"/>
<field name="state" optional="show"/>
<field name="invoice_status" optional="hide"/>
<field name="tag_ids" optional="hide" widget="many2many_tags" options="{'color_field': 'color'}"/>
<field name="activity_exception_decoration" widget="activity_exception"/>
</tree>
</field>
@@ -653,6 +662,7 @@
<field name="require_payment"/>
<field name="reference" readonly="1" attrs="{'invisible': [('reference', '=', False)]}"/>
<field name="client_order_ref"/>
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color', 'no_create_edit': True}"/>
</group>
<group name="sale_info" string="Invoicing">
<field name="fiscal_position_id" options="{'no_create': True}"/>
+1
View File
@@ -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
-1
View File
@@ -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)]")
@@ -20,28 +20,6 @@
</field>
</record>
<record id="view_quotation_tree" model="ir.ui.view">
<field name="name">sale.order.tree.inherit.sale.crm</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_quotation_tree"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='invoice_status']" position="after">
<field name="tag_ids" optional="hide" widget="many2many_tags"/>
</xpath>
</field>
</record>
<record id="view_order_tree" model="ir.ui.view">
<field name="name">sale.order.tree.inherit.sale.crm</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_tree"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='invoice_status']" position="after">
<field name="tag_ids" optional="hide" widget="many2many_tags"/>
</xpath>
</field>
</record>
<!-- This menu is display in CRM app when sale is installed-->
<menuitem
id="sale_order_menu_quotations_crm"
+4 -1
View File
@@ -16,8 +16,11 @@ Using this application you can manage Sales Teams with CRM and/or Sales
'data/sales_team_data.xml',
'views/crm_team_views.xml',
'views/sales_team_dashboard.xml',
'views/crm_tag_views.xml',
],
'demo': ['data/sales_team_demo.xml',
'data/crm_tag_demo.xml',
],
'demo': ['data/sales_team_demo.xml'],
'installable': True,
'auto_install': False,
}
+39
View File
@@ -0,0 +1,39 @@
<?xml version="1.0"?>
<odoo>
<data noupdate="1">
<!-- crm categories -->
<record id="categ_oppor1" model="crm.tag">
<field name="name">Product</field>
<field name="color" eval="1"/>
</record>
<record id="categ_oppor2" model="crm.tag">
<field name="name">Software</field>
<field name="color" eval="2"/>
</record>
<record id="categ_oppor3" model="crm.tag">
<field name="name">Services</field>
<field name="color" eval="3"/>
</record>
<record id="categ_oppor4" model="crm.tag">
<field name="name">Information</field>
<field name="color" eval="4"/>
</record>
<record id="categ_oppor5" model="crm.tag">
<field name="name">Design</field>
<field name="color" eval="5"/>
</record>
<record id="categ_oppor6" model="crm.tag">
<field name="name">Training</field>
<field name="color" eval="6"/>
</record>
<record id="categ_oppor7" model="crm.tag">
<field name="name">Consulting</field>
<field name="color" eval="7"/>
</record>
<record id="categ_oppor8" model="crm.tag">
<field name="name">Other</field>
<field name="color" eval="8"/>
</record>
</data>
</odoo>
+1
View File
@@ -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
@@ -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')
@@ -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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_crm_team crm.team model_crm_team base.group_user 1 0 0 0
3 access_crm_team_user crm.team.user model_crm_team sales_team.group_sale_salesman 1 0 0 0
4 access_crm_team_manager crm.team.manager model_crm_team sales_team.group_sale_manager 1 1 1 1
5 access_crm_tag crm_tag model_crm_tag base.group_user 1 0 0 0
6 access_crm_tag_salesman crm_tag salesman model_crm_tag sales_team.group_sale_salesman 1 1 1 0
7 access_crm_tag_manager crm_tag manager model_crm_tag sales_team.group_sale_manager 1 1 1 1
+54
View File
@@ -0,0 +1,54 @@
<?xml version="1.0"?>
<odoo>
<!--
crm.tag views
-->
<record id="sales_team_crm_tag_view_form" model="ir.ui.view">
<field name="name">sales.team.crm.tag.view.form</field>
<field name="model">crm.tag</field>
<field name="arch" type="xml">
<form string="Tags">
<sheet>
<div class="oe_title">
<div class="oe_edit_only">
<label for="name"/>
</div>
<h1>
<field name="name"/>
</h1>
</div>
<group>
<group>
<field name="color" required="True"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="sales_team_crm_tag_view_tree" model="ir.ui.view">
<field name="name">sales.team.crm.tag.view.tree</field>
<field name="model">crm.tag</field>
<field name="arch" type="xml">
<tree string="Tags" editable="bottom">
<field name="name"/>
<field name="color" groups="base.group_no_one"/>
</tree>
</field>
</record>
<!-- Tags Configuration -->
<record id="sales_team_crm_tag_action" model="ir.actions.act_window">
<field name="name">Tags</field>
<field name="res_model">crm.tag</field>
<field name="view_id" ref="sales_team_crm_tag_view_tree"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create new tags for your opportunities
</p><p>
Create tags that fit your business (product structure, sales type, etc.) to better manage and track your opportunities.
</p>
</field>
</record>
</odoo>
@@ -12,7 +12,7 @@
<field name="function">Reseller</field>
<field name="country_id" ref="base.uk"/>
<field name="city">Edinburgh</field>
<field name="tag_ids" eval="[(6, 0, [ref('crm.categ_oppor1')])]"/>
<field name="tag_ids" eval="[(6, 0, [ref('sales_team.categ_oppor1')])]"/>
<field name="priority">2</field>
<field name="team_id" ref="sales_team.crm_team_1"/>
<field name="user_id" ref=""/>
@@ -1,15 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record model="crm.lead.tag" id="tag_portal_lead_partner_unavailable">
<record model="crm.tag" id="tag_portal_lead_partner_unavailable">
<field name="name">No more partner available</field>
<field name="color">3</field>
</record>
<record model="crm.lead.tag" id="tag_portal_lead_is_spam">
<record model="crm.tag" id="tag_portal_lead_is_spam">
<field name="name">Spam</field>
<field name="color">3</field>
</record>
<record model="crm.lead.tag" id="tag_portal_lead_own_opp">
<record model="crm.tag" id="tag_portal_lead_own_opp">
<field name="name">Created by Partner</field>
<field name="color">4</field>
</record>