9 <!-- Stage Search view -->
10 <record id="crm_lead_stage_search" model="ir.ui.view">
11 <field name="name">Stage - Search</field>
12 <field name="model">crm.case.stage</field>
13 <field name="arch" type="xml">
14 <search string="Stage Search">
17 <field name="sequence"/>
18 <field name="probability"/>
23 <!-- Stage Form view -->
24 <record id="crm_lead_stage_act" model="ir.actions.act_window">
25 <field name="name">Stages</field>
26 <field name="res_model">crm.case.stage</field>
27 <field name="view_type">form</field>
28 <field name="view_id" ref="crm.crm_case_stage_tree"/>
29 <field name="help" type="html">
30 <p class="oe_view_nocontent_create">
31 Click to set a new stage in your lead/opportunity pipeline.
33 Stages will allow salespersons to easily track how a specific
34 lead or opportunity is positioned in the sales cycle.
39 <menuitem action="crm_lead_stage_act" id="menu_crm_lead_stage_act" name="Stages" sequence="0" parent="base.menu_crm_config_lead" groups="base.group_no_one"/>
42 LEADS/OPPORTUNITIES CATEGORIES
45 <!-- Categories Form View -->
46 <record id="crm_lead_categ_action" model="ir.actions.act_window">
47 <field name="name">Sales Tags</field>
48 <field name="res_model">crm.case.categ</field>
49 <field name="view_type">form</field>
50 <field name="view_id" ref="crm_case_categ_tree-view"/>
51 <field name="context" eval="{'object_id': ref('model_crm_lead')}"/>
52 <field name="domain">[('object_id.model', '=', 'crm.lead')]</field>
53 <field name="help" type="html">
54 <p class="oe_view_nocontent_create">
55 Click to define a new sales tag.
57 Create specific tags that fit your company's activities
58 to better classify and analyse your leads and opportunities.
59 Such categories could for instance reflect your product
60 structure or the different types of sales you do.
65 <menuitem action="crm_lead_categ_action"
66 id="menu_crm_lead_categ" name="Sales Tags"
67 parent="base.menu_crm_config_lead" sequence="1" groups="base.group_no_one"/>
73 id="act_crm_opportunity_crm_phonecall_new"
75 groups="base.group_sale_salesman"
76 res_model="crm.phonecall"
77 view_mode="tree,calendar,form"
78 context="{'default_duration': 1.0 ,'default_opportunity_id': active_id}"
82 id="act_crm_opportunity_crm_meeting_new"
84 res_model="crm.meeting"
85 view_mode="tree,form,calendar"
86 context="{'default_duration': 4.0, 'default_opportunity_id': active_id}"
90 <!-- CRM Lead Form View -->
91 <record model="ir.ui.view" id="crm_case_form_view_leads">
92 <field name="name">CRM - Leads Form</field>
93 <field name="model">crm.lead</field>
94 <field name="arch" type="xml">
95 <form string="Leads Form" version="7.0">
97 <button name="%(crm.action_crm_lead2opportunity_partner)d" string="Convert to Opportunity" type="action"
98 attrs="{'invisible': [('probability', '=', 100)]}"
99 help="Convert to Opportunity" class="oe_highlight"/>
100 <field name="stage_id" widget="statusbar" clickable="True"
101 domain="['&', '|', ('case_default', '=', True), ('section_ids', '=', section_id), '|', ('type', '=', type), ('type', '=', 'both')]"
102 on_change="onchange_stage_id(stage_id)"/>
105 <div class="oe_right oe_button_box" name="buttons">
106 <button string="Schedule/Log Call"
107 name="%(opportunity2phonecall_act)d"
110 <div class="oe_title">
111 <label for="name" class="oe_edit_only"/>
112 <h1><field name="name" placeholder="Describe the lead..."/></h1>
116 <field name="partner_name" string="Company Name"/>
117 <!-- Preload all the partner's information -->
118 <field name="partner_id" string="Customer"
119 on_change="on_change_partner_id(partner_id)"
120 options='{"create_name_field": "name"}'
121 context="{'default_name': contact_name, 'default_street': street, 'default_city': city, 'default_state_id': state_id, 'default_zip': zip, 'default_country_id': country_id, 'default_function': function, 'default_phone': phone, 'default_mobile': mobile, 'default_fax': fax, 'default_email': email_from, 'default_user_id': user_id, 'default_section_id': section_id}"/>
122 <label for="street" string="Address"/>
124 <field name="street" placeholder="Street..."/>
125 <field name="street2"/>
126 <div class="address_format">
127 <field name="city" placeholder="City" style="width: 40%%"/>
128 <field name="state_id" on_change="onchange_state(state_id)" options='{"no_open": True}' placeholder="State" style="width: 24%%"/>
129 <field name="zip" placeholder="ZIP" style="width: 34%%"/>
131 <field name="country_id" placeholder="Country" options='{"no_open": True}'/>
135 <label for="contact_name"/>
137 <field name="contact_name" class="oe_inline"/><span attrs="{'invisible': [('title', '=', '')]}">, </span>
138 <field name="title" placeholder="Title" domain="[('domain', '=', 'contact')]" class="oe_inline" options='{"no_open": True}'/>
140 <field name="email_from" widget="email"/>
141 <field name="function"/>
142 <field name="phone"/>
143 <field name="mobile"/>
147 <field name="user_id" on_change="on_change_user(user_id, context)"
148 context="{'default_groups_ref': ['base.group_user', 'base.group_sale_salesman_all_leads'] }"/>
149 <label for="section_id" groups="base.group_multi_salesteams"/>
150 <div groups="base.group_multi_salesteams">
151 <field name="section_id"/>
152 <button name="case_escalate" string="Escalate"
153 type="object" class="oe_link"
154 attrs="{'invisible': ['|', ('section_id','=',False), ('probability', '=', 100)]}"/>
156 <field name="type" invisible="1"/>
159 <field name="priority"/>
160 <field name="categ_ids"
161 widget="many2many_tags"
162 domain="[('object_id.model','=','crm.lead')]"
163 context="{'object_name': 'crm.lead'}"
167 <notebook colspan="4">
168 <page string="Internal Notes">
169 <field name="description"/>
171 <page string="Extra Info">
173 <group string="Categorization" groups="base.group_multi_company,base.group_no_one" name="categorization">
174 <field name="company_id"
175 groups="base.group_multi_company"
176 widget="selection" colspan="2"/>
177 <field name="state" groups="base.group_no_one"/>
179 <group string="Mailings">
180 <field name="opt_out"/>
181 <field name="message_bounce"/>
183 <group string="Misc">
184 <field name="probability" groups="base.group_no_one"/>
185 <field name="active"/>
186 <field name="referred"/>
189 <field name="date_open" groups="base.group_no_one"/>
190 <field name="date_closed" groups="base.group_no_one"/>
196 <div class="oe_chatter">
197 <field name="message_follower_ids" widget="mail_followers"/>
198 <field name="message_ids" widget="mail_thread"/>
204 <!-- CRM Lead Graph View -->
205 <record model="ir.ui.view" id="crm_case_graph_view_leads">
206 <field name="name">Opportunities</field>
207 <field name="model">crm.lead</field>
208 <field name="arch" type="xml">
209 <graph string="Opportunities" type="bar">
210 <field name="stage_id"/>
211 <field name="planned_revenue" operator="+"/>
216 <!-- CRM Lead Tree View -->
217 <record model="ir.ui.view" id="crm_case_tree_view_leads">
218 <field name="name">Leads</field>
219 <field name="model">crm.lead</field>
220 <field name="arch" type="xml">
221 <tree string="Leads" fonts="bold:message_unread==True" colors="grey:probability == 100">
222 <field name="date_deadline" invisible="1"/>
223 <field name="create_date"/>
225 <field name="contact_name"/>
226 <field name="country_id" invisible="context.get('invisible_country', True)"/>
227 <field name="email_from"/>
228 <field name="phone"/>
229 <field name="stage_id"/>
230 <field name="user_id" invisible="1"/>
231 <field name="partner_id" invisible="1"/>
232 <field name="section_id" invisible="context.get('invisible_section', True)" groups="base.group_multi_salesteams"/>
233 <field name="probability" invisible="1"/>
234 <field name="type_id" invisible="1"/>
235 <field name="referred" invisible="1"/>
236 <field name="channel_id" invisible="1"/>
237 <field name="message_unread" invisible="1"/>
243 <!-- CRM Lead Calendar View -->
244 <record model="ir.ui.view" id="crm_case_calendar_view_leads">
245 <field name="name">CRM - Leads Calendar</field>
246 <field name="model">crm.lead</field>
247 <field name="priority" eval="2"/>
248 <field name="arch" type="xml">
249 <calendar string="Leads Generation"
250 date_start="date_action" color="user_id">
252 <field name="partner_name"/>
257 <!-- CRM Lead Kanban View -->
258 <record model="ir.ui.view" id="crm_case_kanban_view_leads">
259 <field name="name">CRM - Leads Kanban</field>
260 <field name="model">crm.lead</field>
261 <field name="arch" type="xml">
262 <kanban default_group_by="stage_id">
263 <field name="stage_id"/>
264 <field name="color"/>
265 <field name="priority"/>
266 <field name="planned_revenue" sum="Expected Revenues"/>
267 <field name="user_email"/>
268 <field name="user_id"/>
269 <field name="partner_address_email"/>
270 <field name="message_summary"/>
271 <field name="message_unread"/>
273 <field name="date_deadline"/>
274 <t t-name="kanban-box">
275 <div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click">
276 <div class="oe_dropdown_toggle oe_dropdown_kanban">
277 <span class="oe_e">Ã</span>
278 <ul class="oe_dropdown_menu">
279 <t t-if="widget.view.is_action_enabled('edit')"><li><a type="edit">Edit...</a></li></t>
280 <t t-if="widget.view.is_action_enabled('delete')"><li><a type="delete">Delete</a></li></t>
281 <li><a name="%(mail.action_email_compose_message_wizard)d" type="action">Send Email</a></li>
282 <li><a name="%(opportunity2phonecall_act)d" type="action">Schedule/Log Call</a></li>
283 <li><a name="action_makeMeeting" type="object">Schedule Meeting</a></li>
284 <li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
287 <div class="oe_kanban_content">
289 <b><field name="name"/></b>
290 <t t-if="record.planned_revenue.raw_value">
291 - <b><t t-esc="record.planned_revenue.value"/>
292 <field name="company_currency"/></b>
296 <field name="partner_id"/>
298 <div style="padding-left: 0.5em">
299 <t t-if="record.date_deadline.raw_value and record.date_deadline.raw_value lt (new Date())" t-set="red">oe_kanban_text_red</t>
300 <span t-attf-class="#{red || ''}"><field name="date_action"/></span>
301 <t t-if="record.date_action.raw_value"> : </t>
302 <field name="title_action"/>
304 <div class="oe_kanban_bottom_right">
305 <a t-if="record.priority.raw_value == 1" type="object" name="set_normal_priority" class="oe_e oe_star_on">7</a>
306 <a t-if="record.priority.raw_value != 1" type="object" name="set_high_priority" class="oe_e oe_star_off">7</a>
307 <img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar" t-if="record.user_id.value"/>
309 <div class="oe_kanban_footer_left">
310 <t t-raw="record.message_summary.raw_value"/>
313 <div class="oe_clear"></div>
321 <!-- CRM Lead Search View -->
322 <record id="view_crm_case_leads_filter" model="ir.ui.view">
323 <field name="name">CRM - Leads Search</field>
324 <field name="model">crm.lead</field>
325 <field name="arch" type="xml">
326 <search string="Search Leads">
327 <field name="name" string="Lead / Customer" filter_domain="['|','|',('partner_name','ilike',self),('email_from','ilike',self),('name','ilike',self)]"/>
328 <field name="categ_ids" string="Category" filter_domain="[('categ_ids','ilike',self)]"/>
329 <field name="section_id" context="{'invisible_section': False}" groups="base.group_multi_salesteams"/>
330 <field name="user_id"/>
331 <field name="partner_id" filter_domain="[('partner_id','child_of',self)]"/>
332 <field name="create_date"/>
333 <field name="country_id" context="{'invisible_country': False}"/>
335 <filter string="Unassigned" name="unassigned"
336 domain="[('user_id','=', False)]"
337 help="No salesperson"/>
338 <filter string="Assigned to Me"
339 domain="[('user_id','=',uid)]" context="{'invisible_section': False}"
340 help="Leads that are assigned to me"/>
341 <filter string="Assigned to My Team(s)" groups="base.group_multi_salesteams"
342 domain="[('section_id.member_ids', 'in', [uid])]" context="{'invisible_section': False}"
343 help="Leads that are assigned to any sales teams I am member of"/>
344 <filter string="Dead" name="dead"
345 domain="[('probability', '=', '0'), ('stage_id.sequence', '!=', 1)]"/>
347 <filter string="Available for mass mailing"
348 name='not_opt_out' domain="[('opt_out', '=', False)]"
349 help="Leads that did not ask not to be included in mass mailing campaigns"/>
351 <group expand="0" string="Group By...">
352 <filter string="Salesperson" domain="[]" context="{'group_by':'user_id'}"/>
353 <filter string="Team" domain="[]" context="{'group_by':'section_id'}" groups="base.group_multi_salesteams"/>
354 <filter string="Stage" domain="[]" context="{'group_by':'stage_id'}"/>
355 <filter string="Customer" help="Partner" domain="[]" context="{'group_by':'partner_id'}"/>
356 <filter string="Country" domain="[]" context="{'group_by':'country_id'}"/>
357 <filter string="Referrer" domain="[]" context="{'group_by':'referred'}"/>
358 <filter string="Campaign" domain="[]" context="{'group_by':'type_id'}"/>
359 <filter string="Channel" domain="[]" context="{'group_by':'channel_id'}"/>
360 <filter string="Creation" domain="[]" context="{'group_by':'create_date'}"/>
362 <group string="Display">
363 <filter string="Show Countries" context="{'invisible_country': False}" help="Show Countries"/>
364 <filter string="Show Sales Team" context="{'invisible_section': False}" domain="[]" help="Show Sales Team" groups="base.group_multi_salesteams"/>
375 <!-- Opportunities Form View -->
376 <record model="ir.ui.view" id="crm_case_form_view_oppor">
377 <field name="name">Opportunities</field>
378 <field name="model">crm.lead</field>
379 <field name="priority">20</field>
380 <field name="arch" type="xml">
381 <form string="Opportunities" version="7.0">
383 <button name="case_mark_won" string="Mark Won" type="object" class="oe_highlight"
384 attrs="{'invisible': [('probability', '=', 100)]}"/>
385 <button name="case_mark_lost" string="Mark Lost" type="object" class="oe_highlight"
386 attrs="{'invisible': ['|', ('probability', '=', 0), ('probability', '=', 100)]}"/>
387 <field name="stage_id" widget="statusbar" clickable="True"
388 domain="['&', ('section_ids', '=', section_id), '|', ('type', '=', type), ('type', '=', 'both')]"/>
391 <div class="oe_right oe_button_box">
392 <button string="Schedule/Log Call" type="action"
393 name="%(opportunity2phonecall_act)d"/>
394 <button string="Meeting" type="object"
395 name="action_makeMeeting"
396 context="{'search_default_attendee_id': active_id, 'default_attendee_id' : active_id}"/>
398 <div class="oe_title">
399 <label for="name" class="oe_edit_only"/>
400 <h1><field name="name"/></h1>
401 <label for="planned_revenue" class="oe_edit_only"/>
403 <field name="company_currency" invisible="1"/>
404 <field name="planned_revenue" class="oe_inline" widget='monetary' options="{'currency_field': 'company_currency'}"/>
405 <span class="oe_grey"> at </span>
406 <field name="probability" class="oe_inline" widget="integer"/>%%
411 <field name="partner_id"
412 on_change="on_change_partner_id(partner_id)"
414 context="{'default_name': partner_name, 'default_email': email_from, 'default_phone': phone}"/>
415 <field name="email_from" string="Email"/>
416 <field name="phone"/>
420 <label for="title_action"/>
422 <field name="date_action" nolabel="1"/> <label string="-" attrs="{'invisible': ['|', ('date_action', '=', False), ('title_action', '=', False)]}"/>
423 <field name="title_action" class="oe_inline" nolabel="1" placeholder="e.g. Call for proposal"/>
425 <field name="date_deadline"/>
426 <field name="priority"/>
430 <field name="user_id" on_change="on_change_user(user_id, context)" context="{'default_groups_ref': ['base.group_user', 'base.group_sale_salesman_all_leads']}"/>
431 <label for="section_id" groups="base.group_multi_salesteams"/>
432 <div groups="base.group_multi_salesteams">
433 <field name="section_id" widget="selection"/>
434 <button name="case_escalate" string="Escalate" type="object" class="oe_link"
435 attrs="{'invisible': ['|', ('section_id','=',False), ('probability', '=', 100)]}"/>
439 <field name="categ_ids"
440 string="Categories" widget="many2many_tags"
441 context="{'object_name': 'crm.lead'}"
442 domain="[('object_id.model', '=', 'crm.lead')]"/>
447 <notebook colspan="4">
448 <page string="Internal Notes">
449 <field name="description"/>
454 <field name="partner_name"/>
455 <label for="street" string="Address"/>
457 <field name="street" placeholder="Street..."/>
458 <field name="street2"/>
459 <div class="address_format">
460 <field name="city" placeholder="City" style="width: 40%%"/>
461 <field name="state_id" options='{"no_open": True}' on_change="onchange_state(state_id)" placeholder="State" style="width: 24%%"/>
462 <field name="zip" placeholder="ZIP" style="width: 34%%"/>
464 <field name="country_id" placeholder="Country" options='{"no_open": True}'/>
469 <label for="contact_name"/>
471 <field name="contact_name" class="oe_inline"/>
472 <field name="title" placeholder="Title" domain="[('domain', '=', 'contact')]" options='{"no_open": True}' class="oe_inline"/>
474 <field name="function"/>
475 <field name="mobile"/>
478 <group string="Mailings" name="mailings">
479 <field name="opt_out"/>
481 <group string="Misc">
482 <field name="active"/>
483 <field name="day_open" groups="base.group_no_one"/>
484 <field name="day_close" groups="base.group_no_one"/>
485 <field name="referred"/>
486 <field name="type" invisible="1"/>
488 <group string="References">
494 <page string="Fund Raising" groups="crm.group_fund_raising">
496 <field name="payment_mode" widget="selection"/>
497 <field name="planned_cost"/>
502 <div class="oe_chatter">
503 <field name="message_follower_ids" widget="mail_followers"/>
504 <field name="message_ids" widget="mail_thread"/>
510 <!-- Opportunities Tree View -->
511 <record model="ir.ui.view" id="crm_case_tree_view_oppor">
512 <field name="name">Opportunities Tree</field>
513 <field name="model">crm.lead</field>
514 <field name="arch" type="xml">
515 <tree string="Opportunities" fonts="bold:message_unread==True" colors="gray:probability == 100;red:date_deadline and (date_deadline < current_date)">
516 <field name="date_deadline" invisible="1"/>
517 <field name="create_date"/>
518 <field name="name" string="Opportunity"/>
519 <field name="partner_id" string="Customer"/>
520 <field name="country_id" invisible="context.get('invisible_country', True)"/>
521 <field name="date_action"/>
522 <field name="title_action"/>
523 <field name="channel_id" invisible="1"/>
524 <field name="type_id" invisible="1"/>
525 <field name="stage_id"/>
526 <field name="planned_revenue" sum="Expected Revenues"/>
527 <field name="probability" avg="Avg. of Probability"/>
528 <field name="section_id" invisible="context.get('invisible_section', True)" groups="base.group_multi_salesteams"/>
529 <field name="user_id"/>
530 <field name="referred" invisible="1"/>
531 <field name="priority" invisible="1"/>
532 <field name="message_unread" invisible="1"/>
533 <field name="probability" invisible="1"/>
534 <field name="write_date" invisible="1"/>
540 <!-- Opportunities Search View -->
541 <record id="view_crm_case_opportunities_filter" model="ir.ui.view">
542 <field name="name">CRM - Opportunities Search</field>
543 <field name="model">crm.lead</field>
544 <field name="arch" type="xml">
545 <search string="Search Opportunities">
546 <field name="name" string="Opportunity" filter_domain="['|','|','|',('partner_id','ilike',self),('partner_name','ilike',self),('email_from','ilike',self),('name', 'ilike', self)]"/>
547 <field name="categ_ids" string="Category" filter_domain="[('categ_ids','ilike', self)]"/>
548 <field name="section_id" context="{'invisible_section': False}" groups="base.group_multi_salesteams"/>
549 <field name="user_id"/>
550 <field name="partner_id" filter_domain="[('partner_id','child_of',self)]"/>
551 <field name="stage_id" domain="[]"/>
552 <field name="probability"/>
554 <filter string="New" name="new"
555 domain="[('probability', '=', 0), ('stage_id.sequence', '=', 1)]"/>
556 <filter string="Won" name="won"
557 domain="[('probability', '=', 100), ('stage_id.on_change', '=', 1)]"/>
558 <filter string="Lost" name="lost"
559 domain="[('probability', '=', 0), ('stage_id.sequence', '!=', 1)]"/>
560 <filter string="Unassigned" name="unassigned"
561 domain="[('user_id','=', False)]" help="No salesperson"/>
562 <filter string="My Opportunities" name="assigned_to_me"
563 domain="[('user_id', '=', uid)]" context="{'invisible_section': False}"
564 help="Opportunities that are assigned to me"/>
565 <filter string="Assigned to My Team(s)"
566 domain="[('section_id.member_ids', 'in', [uid])]" context="{'invisible_section': False}"
567 help="Opportunities that are assigned to any sales teams I am member of"/>
569 <group expand="0" string="Group By..." colspan="16">
570 <filter string="Salesperson" domain="[]" context="{'group_by':'user_id'}"/>
571 <filter string="Team" domain="[]" context="{'group_by':'section_id'}"/>
572 <filter string="Stage" domain="[]" context="{'group_by':'stage_id'}"/>
573 <filter string="Customer" help="Partner" domain="[]" context="{'group_by':'partner_id'}"/>
574 <filter string="Country" domain="[]" context="{'group_by':'country_id'}"/>
575 <filter string="Priority" domain="[]" context="{'group_by':'priority'}"/>
576 <filter string="Expected Closing" domain="[]" context="{'group_by':'date_deadline'}"/>
577 <filter string="Referrer" domain="[]" context="{'group_by':'referred'}"/>
578 <filter string="Campaign" domain="[]" context="{'group_by':'type_id'}"/>
579 <filter string="Channel" domain="[]" context="{'group_by':'channel_id'}"/>
580 <filter string="Creation" domain="[]" context="{'group_by':'create_date'}"/>
581 <filter string="Last Update Month" domain="[]" context="{'group_by':'write_date'}"/>
583 <group string="Display">
584 <filter string="Show Sales Team" context="{'invisible_section': False}" domain="[]" help="Show Sales Team" groups="base.group_multi_salesteams"/>
585 <filter string="Show Countries" context="{'invisible_country': False}" help="Show Countries"/>
594 <act_window name="Lead/Opportunity Mass Mail"
595 res_model="mail.compose.message"
600 key2="client_action_multi"
601 id="crm.action_lead_mass_mail"
603 'default_composition_mode': 'mass_mail',
604 'default_email_to':'{$object.email or \'\'}',
605 'default_use_template': True,
606 'default_template_id': ref('crm.email_template_opportunity_mail'),
608 groups="base.group_sale_salesman"
611 <!--Update of email_template defined in crm_lead_data, to add ref_ir_act_window
612 allowing to have a well formed email template (context action considered as set). -->
613 <record id="email_template_opportunity_mail" model="email.template">
614 <field name="ref_ir_act_window" ref="crm.action_lead_mass_mail"/>
617 <record id="action_mark_as_lost" model="ir.actions.server">
618 <field name="name">Mark As Lost</field>
619 <field name="model_id" ref="model_crm_lead"/>
620 <field name="state">code</field>
622 if context.get('active_model') == 'crm.lead' and context.get('active_ids'):
623 self.case_mark_lost(cr, uid, context['active_ids'], context=context)
625 <field name="groups_id" eval="[(4,ref('base.group_sale_salesman'))]"/>
628 <record id="ir_mark_as_lost" model="ir.values">
629 <field eval="'client_action_multi'" name="key2"/>
630 <field eval="'crm.lead'" name="model"/>
631 <field name="name">Mark As Lost</field>
632 <field eval="'ir.actions.server,%d'%action_mark_as_lost" name="value"/>