5 <!-- Read/Unread actions -->
6 <record id="actions_server_crm_lead_unread" model="ir.actions.server">
7 <field name="name">Mark unread</field>
8 <field name="condition">True</field>
9 <field name="type">ir.actions.server</field>
10 <field name="model_id" ref="model_crm_lead"/>
11 <field name="state">code</field>
12 <field name="code">self.message_check_and_set_unread(cr, uid, context.get('active_ids'), context=context)</field>
14 <record id="action_crm_lead_unread" model="ir.values">
15 <field name="name">action_crm_lead_unread</field>
16 <field name="action_id" ref="actions_server_crm_lead_unread"/>
17 <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_lead_unread'))" />
18 <field name="key">action</field>
19 <field name="model_id" ref="model_crm_lead" />
20 <field name="model">crm.lead</field>
21 <field name="key2">client_action_multi</field>
24 <record id="actions_server_crm_lead_read" model="ir.actions.server">
25 <field name="name">Mark read</field>
26 <field name="condition">True</field>
27 <field name="type">ir.actions.server</field>
28 <field name="model_id" ref="model_crm_lead"/>
29 <field name="state">code</field>
30 <field name="code">self.message_check_and_set_read(cr, uid, context.get('active_ids'), context=context)</field>
32 <record id="action_crm_lead_read" model="ir.values">
33 <field name="name">action_crm_lead_read</field>
34 <field name="action_id" ref="actions_server_crm_lead_read"/>
35 <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_lead_read'))" />
36 <field name="key">action</field>
37 <field name="model_id" ref="model_crm_lead" />
38 <field name="model">crm.lead</field>
39 <field name="key2">client_action_multi</field>
46 <!-- Stage Search view -->
47 <record id="crm_lead_stage_search" model="ir.ui.view">
48 <field name="name">Stage - Search</field>
49 <field name="model">crm.case.stage</field>
50 <field name="type">search</field>
51 <field name="arch" type="xml">
52 <search string="Stage Search">
53 <field name="name" string="Stage Name"/>
60 <!-- Stage Form view -->
61 <record id="crm_lead_stage_act" model="ir.actions.act_window">
62 <field name="name">Stages</field>
63 <field name="res_model">crm.case.stage</field>
64 <field name="view_type">form</field>
65 <field name="view_id" ref="crm.crm_case_stage_tree"/>
66 <field name="help">Add specific stages to leads and opportunities allowing your sales to better organise their sales pipeline. Stages will allow them to easily track how a specific lead or opportunity is positioned in the sales cycle.</field>
69 <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"/>
72 LEADS/OPPORTUNITIES CATEGORIES
75 <!-- Categories Form View -->
76 <record id="crm_lead_categ_action" model="ir.actions.act_window">
77 <field name="name">Categories</field>
78 <field name="res_model">crm.case.categ</field>
79 <field name="view_type">form</field>
80 <field name="view_id" ref="crm_case_categ_tree-view"/>
81 <field name="context" eval="{'object_id': ref('model_crm_lead')}"/>
82 <field name="domain">[('object_id.model', '=', 'crm.lead')]</field>
83 <field name="help">Create specific categories that fit your company's activities to better classify and analyse your leads and opportunities. Such categories could for instance reflect your product structure or the different types of sales you do.</field>
86 <menuitem action="crm_lead_categ_action"
87 id="menu_crm_lead_categ" name="Categories"
88 parent="base.menu_crm_config_lead" sequence="1" groups="base.group_no_one"/>
94 id="act_crm_opportunity_crm_phonecall_new"
96 groups="base.group_sale_salesman"
97 res_model="crm.phonecall"
98 view_mode="tree,calendar,form"
99 context="{'default_duration': 1.0 ,'default_opportunity_id': active_id}"
103 id="act_crm_opportunity_crm_meeting_new"
105 res_model="crm.meeting"
106 view_mode="tree,form,calendar"
107 context="{'default_duration': 4.0, 'default_opportunity_id': active_id}"
111 <!-- CRM Lead Form View -->
112 <record model="ir.ui.view" id="crm_case_form_view_leads">
113 <field name="name">CRM - Leads Form</field>
114 <field name="model">crm.lead</field>
115 <field name="type">form</field>
116 <field name="arch" type="xml">
117 <form string="Leads Form" version="7.0">
119 <button name="%(crm.action_crm_lead2opportunity_partner)d" string="Convert to Opportunity" type="action"
120 states="draft,open,pending" help="Convert to Opportunity" class="oe_highlight"/>
121 <button name="case_escalate" string="Escalate" type="object"
122 states="draft,open,pending"/>
123 <button name="case_reset" string="Reset" type="object"
125 <button name="case_cancel" string="Cancel" type="object"
126 states="draft,open,pending"/>
127 <field name="stage_id" widget="statusbar"
128 on_change="onchange_stage_id(stage_id)"/>
131 <div class="oe_right oe_button_box" name="buttons">
132 <button type="action"
133 name="%(act_crm_opportunity_crm_phonecall_new)d"
134 string="Phone Calls" />
136 <div class="oe_title">
137 <label for="name" class="oe_edit_only" string="Lead Description"/>
138 <h1><field name="name" placeholder="Describe the lead..."/></h1>
142 <field name="user_id" />
143 <field name="section_id"/>
144 <field name="type" invisible="1"/>
147 <field name="priority"/>
148 <field name="categ_ids"
149 widget="many2many_tags"
150 domain="[('object_id.model','=','crm.lead')]"/>
153 <field name="partner_name" string="Company Name"/>
154 <field name="partner_id" string="Customer"
155 on_change="on_change_partner(partner_id)" />
156 <label for="street" string="Address"/>
158 <field name="street" placeholder="Street..."/>
159 <field name="street2"/>
161 <field name="zip" class="oe_inline" placeholder="ZIP"/>
162 <field name="city" class="oe_inline" placeholder="City"/>
164 <field name="state_id" placeholder="State"/>
165 <field name="country_id" placeholder="Country"/>
169 <label for="contact_name" />
171 <field name="contact_name" class="oe_inline"/>,
172 <field name="title" placeholder="Title" domain="[('domain', '=', 'contact')]" class="oe_inline"/>
174 <field name="email_from" widget="email"/>
175 <field name="function" />
176 <field name="phone"/>
177 <field name="mobile"/>
180 This should be integrated in Open Chatter
181 <button string="Mail"
182 name="%(mail.action_email_compose_message_wizard)d"
183 icon="terp-mail-message-new" type="action" colspan="1"/>
187 <notebook colspan="4">
188 <page string="Notes">
189 <field name="description"/>
191 <page string="Extra Info">
193 <group string="Categorization">
194 <field name="company_id"
195 groups="base.group_multi_company"
196 widget="selection" colspan="2" />
197 <field name="type_id" widget="selection"/>
198 <field name="channel_id" widget="selection"/>
199 <field name="referred"/>
200 <field name="state" groups="base.group_no_one"/>
202 <group string="Mailings">
203 <field name="opt_out" />
209 <div class="oe_chatter">
210 <field name="message_ids" widget="mail_thread"/>
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="type">tree</field>
221 <field name="arch" type="xml">
222 <tree string="Leads" fonts="bold:needaction_pending==True" colors="grey:state in ('cancel', 'done')">
223 <field name="date_deadline" invisible="1"/>
224 <field name="create_date" groups="base.group_no_one"/>
226 <field name="contact_name"/>
227 <field name="country_id" invisible="context.get('invisible_country', True)" />
228 <field name="email_from"/>
229 <field name="phone"/>
230 <field name="stage_id"/>
231 <field name="user_id" invisible="1"/>
232 <field name="section_id" invisible="context.get('invisible_section', True)" />
233 <field name="state" groups="base.group_no_one"/>
234 <field name="type_id" invisible="1"/>
235 <field name="referred" invisible="1"/>
236 <field name="channel_id" invisible="1"/>
237 <field name="subjects" invisible="1"/>
238 <field name="needaction_pending" 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="type">calendar</field>
248 <field name="priority" eval="2"/>
249 <field name="arch" type="xml">
250 <calendar string="Leads Generation"
251 date_start="date_action" color="user_id">
252 <field name="name" />
253 <field name="partner_name" />
258 <!-- CRM Lead Kanban View -->
259 <record model="ir.ui.view" id="crm_case_kanban_view_leads">
260 <field name="name">CRM - Leads Kanban</field>
261 <field name="model">crm.lead</field>
262 <field name="type">kanban</field>
263 <field name="arch" type="xml">
264 <kanban default_group_by="stage_id">
265 <field name="state" groups="base.group_no_one"/>
266 <field name="color"/>
267 <field name="priority"/>
268 <field name="planned_revenue" sum="Expected Revenues"/>
269 <field name="user_email"/>
270 <field name="user_id"/>
271 <field name="partner_address_email"/>
272 <field name="message_summary"/>
273 <field name="needaction_pending"/>
275 <t t-name="lead_details">
276 <ul class="oe_kanban_tooltip">
277 <li t-if="record.phone.raw_value"><b>Phone:</b> <field name="phone"/></li>
278 <li><b>Probability:</b> <field name="probability"/>%%</li>
279 <li><b>Creation date:</b> <field name="create_date"/></li>
280 <li t-if="record.date_deadline.raw_value"><b>Date Deadline:</b> <field name="date_deadline"/></li>
283 <t t-name="kanban-box">
284 <div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click">
285 <div class="oe_dropdown_toggle oe_dropdown_kanban">
286 <span class="oe_e">Ã</span>
287 <ul class="oe_dropdown_menu">
288 <li><a type="edit" >Edit...</a></li>
289 <li><a type="delete">Delete</a></li>
290 <li><a name="%(mail.action_email_compose_message_wizard)d" type="action">Send Email</a></li>
291 <li><a name="%(opportunity2phonecall_act)d" type="action">Log Call</a></li>
292 <li><a name="action_makeMeeting" type="object">Schedule Meeting</a></li>
293 <li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
296 <div class="oe_kanban_content">
298 <b><field name="name"/></b>
299 <t t-if="record.planned_revenue.raw_value">
300 - <b><t t-esc="Math.round(record.planned_revenue.value)"/>
301 <field name="company_currency"/></b>
305 <field name="partner_id"/>
307 <div style="padding-left: 0.5em">
308 <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>
309 <span t-attf-class="#{red || ''}"><field name="date_action"/></span>
310 <t t-if="record.date_action.raw_value"> : </t>
311 <field name="title_action"/>
313 <div class="oe_kanban_bottom_right">
314 <a t-if="record.priority.raw_value == 1" type="object" name="set_normal_priority" class="oe_e oe_star_on">7</a>
315 <a t-if="record.priority.raw_value != 1" type="object" name="set_high_priority" class="oe_e oe_star_off">7</a>
317 <t t-if="record.date_deadline.raw_value and record.date_deadline.raw_value lt (new Date())" t-set="red">oe_kaban_status_red</t>
318 <span t-attf-class="oe_kanban_status #{red}"> </span>
320 <img t-att-src="kanban_image('res.users', 'avatar', record.user_id.raw_value[0])" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar"/>
322 <div class="oe_kanban_footer_left">
323 <t t-if="record.needaction_pending.raw_value"><span class="oe_kanban_mail_new">New</span></t>
324 <t t-raw="record.message_summary.raw_value"/>
327 <div class="oe_clear"></div>
330 <div class="oe_kanban_right">
331 <a name="case_mark_lost" string="Mark Lost" states="open,pending" type="object" icon="kanban-stop" />
332 <a name="case_pending" string="Pending" states="draft,open" type="object" icon="kanban-pause" />
333 <a name="case_open" string="Open" states="pending" type="object" icon="gtk-media-play" />
334 <a name="case_mark_won" string="Mark Won" states="open,pending" type="object" icon="kanban-apply" />
343 <!-- CRM Lead Search View -->
344 <record id="view_crm_case_leads_filter" model="ir.ui.view">
345 <field name="name">CRM - Leads Search</field>
346 <field name="model">crm.lead</field>
347 <field name="type">search</field>
348 <field name="arch" type="xml">
349 <search string="Search Leads">
350 <field name="name" string="Lead / Customer" filter_domain="['|','|',('partner_name','ilike',self),('email_from','ilike',self),('name','ilike',self)]"/>
351 <!-- subjects is not set as store=True so, it is placed outside filter_domain-->
352 <field name="subjects"/>
353 <field name="create_date"/>
354 <filter icon="terp-mail-message-new" string="Inbox" help="Unread messages" name="needaction_pending" domain="[('needaction_pending','=',True)]"/>
356 <filter icon="terp-check" string="New" name="new" help="New Leads" domain="[('state','=','draft')]"/>
357 <filter icon="terp-camera_test" string="Open" name="open" domain="[('state','=','open')]"/>
359 <filter string="Unassigned Leads" icon="terp-personal-" domain="[('user_id','=', False)]" help="Unassigned Leads" />
361 <filter string="Leads Assigned to Me or My Team(s)" icon="terp-personal+" context="{'invisible_section': False}"
362 domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
363 help="Leads that are assigned to one of the sale teams I manage, or to me"/>
364 <field name="user_id"/>
365 <field name="section_id" context="{'invisible_section': False}"/>
366 <field name="country_id" context="{'invisible_country': False}"/>
367 <group expand="0" string="Group By...">
368 <filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
369 <filter string="Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}"/>
370 <filter string="Referrer" icon="terp-personal" domain="[]" context="{'group_by':'referred'}"/>
371 <filter string="Category" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'categ_id'}"/>
372 <filter string="Campaign" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'type_id'}" />
373 <filter string="Channel" icon="terp-call-start" domain="[]" context="{'group_by':'channel_id'}" />
374 <separator orientation="vertical"/>
375 <filter string="Campaign" icon="terp-gtk-jump-to-rtl"
376 domain="[]" context="{'group_by':'type_id'}" />
377 <filter string="Channel" icon="terp-call-start"
378 domain="[]" context="{'group_by':'channel_id'}" />
379 <separator orientation="vertical"/>
380 <filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/>
381 <filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
382 <filter string="Creation" help="Create date" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
384 <group string="Display">
385 <filter string="Show Countries" icon="terp-personal+" context="{'invisible_country': False}" help="Show Countries"/>
386 <filter string="Show Sales Team" icon="terp-personal+" context="{'invisible_section': False}" domain="[]" help="Show Sales Team"/>
397 <!-- Opportunities Form View -->
398 <record model="ir.ui.view" id="crm_case_form_view_oppor">
399 <field name="name">Opportunities</field>
400 <field name="model">crm.lead</field>
401 <field name="type">form</field>
402 <field name="priority">20</field>
403 <field name="arch" type="xml">
404 <form string="Opportunities" version="7.0">
406 <button name="stage_previous" string="Previous" type="object"
407 states="open" context="{'stage_type': 'opportunity'}"/>
408 <button name="stage_next" string="Next" type="object"
409 states="open" context="{'stage_type': 'opportunity'}"/>
410 <button name="case_mark_won" string="Mark Won" type="object"
411 states="open" class="oe_highlight"/>
412 <button name="case_mark_won" string="Mark Won" type="object"
413 states="draft,pending"/>
414 <button name="case_open" string="Open" type="object" class="oe_highlight"
415 states="draft,pending"/>
416 <button name="case_escalate" string="Escalate" type="object"
418 <button name="case_mark_lost" string="Mark Lost" type="object"
419 states="draft,open"/>
420 <button name="case_reset" string="Reset to Draft" type="object"
421 states="done,cancel" />
422 <button name="case_cancel" string="Cancel" type="object"
424 <field name="stage_id" widget="statusbar"
425 on_change="onchange_stage_id(stage_id)"/>
428 <div class="oe_right oe_button_box">
429 <button string="Schedule/Log Call"
430 name="%(opportunity2phonecall_act)d"
432 <button string="Meeting"
433 name="action_makeMeeting"
435 context="{'search_default_attendee_id': active_id, 'default_attendee_id' : active_id}"
438 <div class="oe_title">
439 <label for="name" class="oe_edit_only"/>
440 <h1><field name="name"/></h1>
441 <label for="planned_revenue" class="oe_edit_only"/>
443 <field name="planned_revenue" class="oe_inline"/>
444 <field name="company_currency" class="oe_inline"/> at
445 <field name="probability" class="oe_inline"/>%% success rate
450 <field name="partner_id"
451 on_change="onchange_partner_id(partner_id, email_from)"
453 context="{'default_name': partner_name, 'default_email': email_from, 'default_phone': phone}"/>
454 <field name="email_from" string="Email"/>
455 <field name="phone"/>
459 <label for="title_action"/>
461 <field name="date_action" nolabel="1"/> <label string="-" attrs="{'invisible': ['|', ('date_action', '=', False), ('title_action', '=', False)]}"/>
462 <field name="title_action" class="oe_inline" nolabel="1" placeholder="Call for proposal"/>
464 <field name="date_deadline"/>
465 <field name="priority"/>
469 <field name="user_id"/>
470 <field name="section_id" colspan="1" widget="selection"/>
473 <field name="categ_ids"
474 string="Categories" widget="many2many_tags"
475 domain="[('object_id.model', '=', 'crm.lead')]"/>
480 <!--<button string="Mail"
481 name="%(mail.action_email_compose_message_wizard)d"
482 context="{'mail':'new', 'model': 'crm.lead'}"
483 icon="terp-mail-message-new" type="action" />-->
485 <notebook colspan="4">
486 <page string="Internal Notes">
487 <field name="description"/>
492 <field name="partner_name"/>
493 <label for="street" string="Address"/>
495 <field name="street" placeholder="Street..."/>
496 <field name="street2"/>
497 <div class="address_format">
498 <field name="city" placeholder="City" style="width: 40%%"/>
499 <field name="state_id" class="oe_no_button" placeholder="State" style="width: 24%%"/>
500 <field name="zip" placeholder="ZIP" style="width: 34%%"/>
502 <field name="country_id" placeholder="Country"/>
507 <label for="contact_name" />
509 <field name="contact_name" class="oe_inline"/>
510 <field name="title" placeholder="Title" domain="[('domain', '=', 'contact')]" class="oe_inline oe_no_button"/>
512 <field name="function" />
513 <field name="mobile"/>
517 <group string="Categorization">
518 <field name="type_id" widget="selection"/>
519 <field name="channel_id" widget="selection"/>
521 <group string="Mailings">
522 <field name="opt_out" />
524 <group string="Misc">
525 <field name="active"/>
526 <field name="day_open" groups="base.group_no_one"/>
527 <field name="day_close" groups="base.group_no_one"/>
528 <field name="referred"/>
529 <field name="state" groups="base.group_no_one"/>
530 <field name="type" invisible="1"/>
532 <group string="References">
540 <div class="oe_chatter">
541 <field name="message_ids" widget="mail_thread"/>
547 <!-- Opportunities Tree View -->
548 <record model="ir.ui.view" id="crm_case_tree_view_oppor">
549 <field name="name">Opportunities Tree</field>
550 <field name="model">crm.lead</field>
551 <field name="type">tree</field>
552 <field name="arch" type="xml">
553 <tree string="Opportunities" fonts="bold:needaction_pending==True" colors="gray:state in ('cancel', 'done');red:date_deadline and (date_deadline < current_date)">
554 <field name="date_deadline" invisible="1"/>
555 <field name="create_date" groups="base.group_no_one"/>
556 <field name="name" string="Opportunity"/>
557 <field name="partner_id" string="Customer"/>
558 <field name="country_id" invisible="context.get('invisible_country', True)" />
559 <field name="date_action"/>
560 <field name="title_action" />
561 <field name="channel_id" invisible="1"/>
562 <field name="type_id" invisible="1"/>
563 <field name="subjects" invisible="1"/>
564 <field name="stage_id"/>
565 <field name="planned_revenue" sum="Expected Revenues"/>
566 <field name="probability" widget="progressbar" avg="Avg. of Probability"/>
567 <field name="section_id" invisible="context.get('invisible_section', True)" />
568 <field name="user_id"/>
569 <field name="priority" invisible="1"/>
570 <field name="state" groups="base.group_no_one"/>
571 <field name="needaction_pending" invisible="1"/>
577 <!-- Opportunities Search View -->
578 <record id="view_crm_case_opportunities_filter" model="ir.ui.view">
579 <field name="name">CRM - Opportunities Search</field>
580 <field name="model">crm.lead</field>
581 <field name="type">search</field>
582 <field name="arch" type="xml">
583 <search string="Search Opportunities">
584 <field name="name" string="Opportunity / Customer"
585 filter_domain="['|','|','|',('partner_id','ilike',self),('partner_name','ilike',self),('email_from','ilike',self),('name', 'ilike', self)]"/>
586 <filter icon="terp-mail-message-new" string="Inbox" help="Unread messages" name="needaction_pending" domain="[('needaction_pending','=',True)]"/>
588 <filter icon="terp-check" string="New" help="New Opportunities" name="new" domain="[('state','=','draft')]"/>
589 <filter icon="terp-camera_test" string="Open" help="Open Opportunities" name="open" domain="[('state','=','open')]"/>
591 <filter string="Unassigned Opportunities" icon="terp-personal-" domain="[('user_id','=', False)]" help="Unassigned Opportunities" />
593 <filter string="Opportunities Assigned to Me or My Team(s)" icon="terp-personal+"
594 domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]" context="{'invisible_section': False}"
595 help="Opportunities that are assigned to either me or one of the sale teams I manage" />
596 <field name="user_id"/>
597 <field name="country_id"/>
598 <field name="partner_id"/>
599 <field name="section_id" context="{'invisible_section': False, 'default_section_id': self}"/>
600 <group expand="0" string="Group By..." colspan="16">
601 <filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}" />
602 <filter string="Team" help="Sales Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}"/>
603 <filter string="Customer" help="Partner" icon="terp-personal+" domain="[]" context="{'group_by':'partner_id'}"/>
604 <filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}" />
605 <filter string="Priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}" />
606 <filter string="Campaign" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'type_id'}"/>
607 <filter string="Channel" icon="terp-call-start" domain="[]" context="{'group_by':'channel_id'}" />
608 <filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
609 <filter string="Creation" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
610 <filter string="Exp.Closing" icon="terp-go-month" help="Expected Closing" domain="[]" context="{'group_by':'date_deadline'}" />
612 <group string="Display">
613 <filter string="Show Sales Team" icon="terp-personal+" context="{'invisible_section': False}" domain="[]" help="Show Sales Team"/>