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"/>
54 <separator orientation="vertical"/>
61 <!-- Stage Form view -->
62 <record id="crm_lead_stage_act" model="ir.actions.act_window">
63 <field name="name">Stages</field>
64 <field name="res_model">crm.case.stage</field>
65 <field name="view_type">form</field>
66 <field name="view_id" ref="crm.crm_case_stage_tree"/>
67 <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>
70 <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"/>
73 LEADS/OPPORTUNITIES CATEGORIES
76 <!-- Categories Form View -->
77 <record id="crm_lead_categ_action" model="ir.actions.act_window">
78 <field name="name">Categories</field>
79 <field name="res_model">crm.case.categ</field>
80 <field name="view_type">form</field>
81 <field name="view_id" ref="crm_case_categ_tree-view"/>
82 <field name="context" eval="{'object_id': ref('model_crm_lead')}"/>
83 <field name="domain">[('object_id.model', '=', 'crm.lead')]</field>
84 <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>
87 <menuitem action="crm_lead_categ_action"
88 id="menu_crm_lead_categ" name="Categories"
89 parent="base.menu_crm_config_lead" sequence="1" groups="base.group_no_one"/>
95 id="act_crm_opportunity_crm_phonecall_new"
97 groups="base.group_sale_salesman"
98 res_model="crm.phonecall"
99 view_mode="tree,calendar,form"
100 context="{'default_duration': 1.0 ,'default_opportunity_id': active_id}"
104 id="act_crm_opportunity_crm_meeting_new"
106 res_model="crm.meeting"
107 view_mode="tree,form,calendar"
108 context="{'default_duration': 4.0, 'default_opportunity_id': active_id}"
112 <!-- CRM Lead Form View -->
113 <record model="ir.ui.view" id="crm_case_form_view_leads">
114 <field name="name">CRM - Leads Form</field>
115 <field name="model">crm.lead</field>
116 <field name="type">form</field>
117 <field name="arch" type="xml">
118 <form string="Leads Form" version="7.0">
120 <button name="%(crm.action_crm_lead2opportunity_partner)d" string="Convert to Opportunity" type="action"
121 states="draft,open,pending" help="Convert to Opportunity" class="oe_highlight"/>
122 <button name="case_escalate" string="Escalate" type="object"
123 states="draft,open,pending"/>
124 <button name="case_reset" string="Reset" type="object"
126 <button name="case_cancel" string="Cancel" type="object"
127 states="draft,open,pending"/>
128 <field name="stage_id" widget="statusbar"
129 on_change="onchange_stage_id(stage_id)"/>
132 <div class="oe_right oe_button_box" name="buttons">
133 <button type="action"
134 name="%(act_crm_opportunity_crm_meeting_new)d"
137 <button type="action"
138 name="%(act_crm_opportunity_crm_phonecall_new)d"
139 string="Phone Calls" />
141 <div class="oe_title">
142 <label for="name" class="oe_edit_only" string="Lead Description"/>
143 <h1><field name="name" placeholder="Describe the lead..."/></h1>
147 <field name="user_id" />
148 <field name="section_id"/>
149 <field name="type" invisible="1"/>
152 <field name="priority"/>
153 <field name="categ_ids"
154 widget="many2many_tags"
155 domain="[('object_id.model','=','crm.lead')]"/>
158 <field name="partner_name" string="Company Name"/>
159 <field name="partner_id" string="Customer"/>
160 <label for="street" string="Address"/>
162 <field name="street" placeholder="Street..."/>
163 <field name="street2"/>
165 <field name="zip" class="oe_inline" placeholder="ZIP"/>
166 <field name="city" class="oe_inline" placeholder="City"/>
168 <field name="state_id" placeholder="State"/>
169 <field name="country_id" placeholder="Country"/>
173 <label for="contact_name" />
175 <field name="contact_name" class="oe_inline"/>,
176 <field name="title" placeholder="Title" domain="[('domain', '=', 'contact')]" class="oe_inline"/>
178 <field name="email_from" widget="email"/>
179 <field name="function" />
180 <field name="phone"/>
181 <field name="mobile"/>
184 This should be integrated in Open Chatter
185 <button string="Mail"
186 name="%(mail.action_email_compose_message_wizard)d"
187 icon="terp-mail-message-new" type="action" colspan="1"/>
191 <notebook colspan="4">
192 <page string="Notes">
193 <field name="description"/>
195 <page string="Extra Info">
197 <group string="Categorization">
198 <field name="company_id"
199 groups="base.group_multi_company"
200 widget="selection" colspan="2" />
201 <field name="type_id" widget="selection"/>
202 <field name="channel_id" widget="selection"/>
203 <field name="referred"/>
204 <field name="state" groups="base.group_no_one"/>
206 <group string="Mailings">
207 <field name="opt_out" />
213 <div class="oe_chatter">
214 <field name="message_ids" widget="mail_thread"/>
220 <!-- CRM Lead Tree View -->
221 <record model="ir.ui.view" id="crm_case_tree_view_leads">
222 <field name="name">Leads</field>
223 <field name="model">crm.lead</field>
224 <field name="type">tree</field>
225 <field name="arch" type="xml">
226 <tree string="Leads" fonts="bold:needaction_pending==True" colors="grey:state in ('cancel', 'done')">
227 <field name="date_deadline" invisible="1"/>
228 <field name="create_date" groups="base.group_no_one"/>
230 <field name="contact_name"/>
231 <field name="country_id" invisible="context.get('invisible_country', True)" />
232 <field name="email_from"/>
233 <field name="phone"/>
234 <field name="stage_id"/>
235 <field name="user_id" invisible="1"/>
236 <field name="section_id" invisible="context.get('invisible_section', True)" />
237 <field name="state" groups="base.group_no_one"/>
238 <field name="type_id" invisible="1"/>
239 <field name="referred" invisible="1"/>
240 <field name="channel_id" invisible="1"/>
241 <field name="subjects" invisible="1"/>
242 <field name="needaction_pending" invisible="1"/>
247 <!-- CRM Lead Calendar View -->
248 <record model="ir.ui.view" id="crm_case_calendar_view_leads">
249 <field name="name">CRM - Leads Calendar</field>
250 <field name="model">crm.lead</field>
251 <field name="type">calendar</field>
252 <field name="priority" eval="2"/>
253 <field name="arch" type="xml">
254 <calendar string="Leads Generation"
255 date_start="date_action" color="user_id">
256 <field name="name" />
257 <field name="partner_name" />
262 <!-- CRM Lead Kanban View -->
263 <record model="ir.ui.view" id="crm_case_kanban_view_leads">
264 <field name="name">CRM - Leads Kanban</field>
265 <field name="model">crm.lead</field>
266 <field name="type">kanban</field>
267 <field name="arch" type="xml">
268 <kanban default_group_by="stage_id">
269 <field name="state" groups="base.group_no_one"/>
270 <field name="color"/>
271 <field name="priority"/>
272 <field name="planned_revenue" sum="Expected Revenues"/>
273 <field name="user_email"/>
274 <field name="user_id"/>
275 <field name="partner_address_email"/>
276 <field name="message_summary"/>
277 <field name="needaction_pending"/>
279 <t t-name="lead_details">
280 <ul class="oe_kanban_tooltip">
281 <li t-if="record.phone.raw_value"><b>Phone:</b> <field name="phone"/></li>
282 <li><b>Probability:</b> <field name="probability"/>%%</li>
283 <li><b>Creation date:</b> <field name="create_date"/></li>
284 <li t-if="record.date_deadline.raw_value"><b>Date Deadline:</b> <field name="date_deadline"/></li>
287 <t t-name="kanban-box">
288 <div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click">
289 <div class="oe_dropdown_toggle oe_dropdown_kanban">
290 <span class="oe_e">Ã</span>
291 <ul class="oe_dropdown_menu">
292 <li><a type="edit" >Edit...</a></li>
293 <li><a type="delete">Delete</a></li>
294 <li><a name="%(mail.action_email_compose_message_wizard)d" type="action">Send Email</a></li>
295 <li><a name="%(opportunity2phonecall_act)d" type="action">Log Call</a></li>
296 <li><a name="action_makeMeeting" type="object">Schedule Meeting</a></li>
297 <li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
300 <div class="oe_kanban_content">
302 <b><field name="name"/></b>
303 <t t-if="record.planned_revenue.raw_value">
304 - <b><t t-esc="Math.round(record.planned_revenue.value)"/>
305 <field name="company_currency"/></b>
309 <field name="partner_id"/>
311 <div style="padding-left: 0.5em">
312 <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>
313 <span t-attf-class="#{red || ''}"><field name="date_action"/></span>
314 <t t-if="record.date_action.raw_value"> : </t>
315 <field name="title_action"/>
317 <div class="oe_kanban_bottom_right">
318 <a t-if="record.priority.raw_value == 1" type="object" name="set_normal_priority" class="oe_e oe_star_on">7</a>
319 <a t-if="record.priority.raw_value != 1" type="object" name="set_high_priority" class="oe_e oe_star_off">7</a>
321 <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>
322 <span t-attf-class="oe_kanban_status #{red}"> </span>
324 <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"/>
326 <div class="oe_kanban_footer_left">
327 <t t-if="record.needaction_pending.raw_value"><span class="oe_kanban_mail_new">New</span></t>
328 <t t-raw="record.message_summary.raw_value"/>
331 <div class="oe_clear"></div>
334 <div class="oe_kanban_right">
335 <a name="case_mark_lost" string="Mark Lost" states="open,pending" type="object" icon="kanban-stop" />
336 <a name="case_pending" string="Pending" states="draft,open" type="object" icon="kanban-pause" />
337 <a name="case_open" string="Open" states="pending" type="object" icon="gtk-media-play" />
338 <a name="case_mark_won" string="Mark Won" states="open,pending" type="object" icon="kanban-apply" />
347 <!-- CRM Lead Search View -->
348 <record id="view_crm_case_leads_filter" model="ir.ui.view">
349 <field name="name">CRM - Leads Search</field>
350 <field name="model">crm.lead</field>
351 <field name="type">search</field>
352 <field name="arch" type="xml">
353 <search string="Search Leads">
354 <filter icon="terp-mail-message-new"
355 string="Inbox" help="Unread messages"
356 name="needaction_pending"
357 domain="[('needaction_pending','=',True)]"/>
358 <field name="name" string="Lead / Customer" filter_domain="['|','|',('partner_name','ilike',self),('email_from','ilike',self),('name','ilike',self)]"/>
359 <!-- subjects is not set as store=True so, it is placed outside filter_domain-->
360 <field name="subjects"/>
361 <separator orientation="vertical"/>
362 <field name="create_date"/>
363 <separator orientation="vertical"/>
364 <filter icon="terp-check"
366 name="new" help="New Leads"
367 domain="[('state','=','draft')]"/>
368 <filter icon="terp-camera_test"
371 domain="[('state','=','open')]"/>
372 <filter string="Unassigned Leads"
373 icon="terp-personal-"
374 domain="[('user_id','=', False)]"
375 help="Unassigned Leads" />
376 <filter string="Leads Assigned to Me or My Team(s)"
377 icon="terp-personal+"
378 context="{'invisible_section': False}"
379 domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
380 help="Leads that are assigned to one of the sale teams I manage, or to me"/>
381 <separator orientation="vertical"/>
382 <field name="user_id"/>
383 <field name="section_id" widget="selection"
384 context="{'invisible_section': False}"/>
385 <field name="country_id" context="{'invisible_country': False}"/>
386 <separator orientation="vertical"/>
388 <group expand="0" string="Group By...">
389 <filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
390 <filter string="Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}"/>
391 <filter string="Referrer" icon="terp-personal" domain="[]" context="{'group_by':'referred'}"/>
392 <separator orientation="vertical"/>
393 <filter string="Campaign" icon="terp-gtk-jump-to-rtl"
394 domain="[]" context="{'group_by':'type_id'}" />
395 <filter string="Channel" icon="terp-call-start"
396 domain="[]" context="{'group_by':'channel_id'}" />
397 <separator orientation="vertical"/>
398 <filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/>
399 <filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
400 <separator orientation="vertical" groups="base.group_no_one"/>
401 <filter string="Creation" help="Create date" icon="terp-go-month"
402 domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
404 <separator orientation="vertical"/>
405 <group string="Display">
406 <filter string="Show Countries" icon="terp-personal+" context="{'invisible_country': False}" help="Show Countries"/>
407 <filter string="Show Sales Team"
408 icon="terp-personal+"
409 context="{'invisible_section': False}"
411 help="Show Sales Team"/>
422 <!-- Opportunities Form View -->
423 <record model="ir.ui.view" id="crm_case_form_view_oppor">
424 <field name="name">Opportunities</field>
425 <field name="model">crm.lead</field>
426 <field name="type">form</field>
427 <field name="priority">20</field>
428 <field name="arch" type="xml">
429 <form string="Opportunities" version="7.0">
431 <button name="case_mark_won" string="Mark Won" type="object"
432 states="open" class="oe_highlight"/>
433 <button name="case_mark_won" string="Mark Won" type="object"
434 states="draft,pending"/>
435 <button name="case_escalate" string="Escalate" type="object"
437 <button name="case_mark_lost" string="Mark Lost" type="object"
438 states="draft,open"/>
439 <button name="case_cancel" string="Cancel" type="object"
441 <field name="stage_id" widget="statusbar"
442 on_change="onchange_stage_id(stage_id)" clickable="1"/>
445 <div class="oe_right oe_button_box">
446 <button string="Schedule/Log Call"
447 name="%(opportunity2phonecall_act)d"
449 <button string="Schedule Meeting"
450 name="action_makeMeeting"
453 <div class="oe_title">
454 <label for="name" class="oe_edit_only"/>
455 <h1><field name="name"/></h1>
456 <label for="planned_revenue" class="oe_edit_only"/>
458 <field name="planned_revenue" class="oe_inline"/>
459 <field name="company_currency" class="oe_inline"/> at
460 <field name="probability" class="oe_inline"/>%% success rate
465 <field name="partner_id"
466 on_change="onchange_partner_id(partner_id, email_from)"
468 context="{'default_name': partner_name, 'default_email': email_from, 'default_phone': phone}"/>
469 <field name="email_from" string="Email"/>
470 <field name="phone"/>
474 <label for="title_action"/>
476 <field name="date_action" nolabel="1"/> <label string="-" attrs="{'invisible': ['|', ('date_action', '=', False), ('title_action', '=', False)]}"/>
477 <field name="title_action" class="oe_inline" nolabel="1" placeholder="Call for proposal"/>
479 <field name="date_deadline"/>
480 <field name="priority"/>
484 <field name="user_id"/>
485 <field name="section_id" colspan="1" widget="selection"/>
488 <field name="categ_ids"
489 string="Categories" widget="many2many_tags"
490 domain="[('object_id.model', '=', 'crm.lead')]"/>
495 <!--<button string="Mail"
496 name="%(mail.action_email_compose_message_wizard)d"
497 context="{'mail':'new', 'model': 'crm.lead'}"
498 icon="terp-mail-message-new" type="action" />-->
500 <notebook colspan="4">
501 <page string="Internal Notes">
502 <field name="description"/>
507 <field name="partner_name"/>
508 <label for="street" string="Address"/>
510 <field name="street" placeholder="Street..."/>
511 <field name="street2"/>
512 <div class="address_format">
513 <field name="city" placeholder="City" style="width: 40%%"/>
514 <field name="state_id" class="oe_no_button" placeholder="State" style="width: 24%%"/>
515 <field name="zip" placeholder="ZIP" style="width: 34%%"/>
517 <field name="country_id" placeholder="Country"/>
522 <label for="contact_name" />
524 <field name="contact_name" class="oe_inline"/>
525 <field name="title" placeholder="Title" domain="[('domain', '=', 'contact')]" class="oe_inline oe_no_button"/>
527 <field name="function" />
528 <field name="mobile"/>
532 <group string="Categorization">
533 <field name="type_id" widget="selection"/>
534 <field name="channel_id" widget="selection"/>
536 <group string="Mailings">
537 <field name="opt_out" />
539 <group string="Misc">
540 <field name="active"/>
541 <field name="day_open" groups="base.group_no_one"/>
542 <field name="day_close" groups="base.group_no_one"/>
543 <field name="referred"/>
544 <field name="state" groups="base.group_no_one"/>
545 <field name="type" invisible="1"/>
547 <group string="References">
555 <div class="oe_chatter">
556 <field name="message_ids" widget="mail_thread"/>
562 <!-- Opportunities Tree View -->
563 <record model="ir.ui.view" id="crm_case_tree_view_oppor">
564 <field name="name">Opportunities Tree</field>
565 <field name="model">crm.lead</field>
566 <field name="type">tree</field>
567 <field name="arch" type="xml">
568 <tree string="Opportunities" fonts="bold:needaction_pending==True" colors="gray:state in ('cancel', 'done');red:date_deadline and (date_deadline < current_date)">
569 <field name="date_deadline" invisible="1"/>
570 <field name="create_date" groups="base.group_no_one"/>
571 <field name="name" string="Opportunity"/>
572 <field name="partner_id" string="Customer"/>
573 <field name="country_id" invisible="context.get('invisible_country', True)" />
574 <field name="date_action"/>
575 <field name="title_action" />
576 <field name="channel_id" invisible="1"/>
577 <field name="type_id" invisible="1"/>
578 <field name="subjects" invisible="1"/>
579 <field name="stage_id"/>
580 <field name="planned_revenue" sum="Expected Revenues"/>
581 <field name="probability" widget="progressbar" avg="Avg. of Probability"/>
582 <field name="section_id" invisible="context.get('invisible_section', True)" />
583 <field name="user_id"/>
584 <field name="priority" invisible="1"/>
585 <field name="state" groups="base.group_no_one"/>
586 <field name="needaction_pending" invisible="1"/>
592 <!-- Opportunities Search View -->
593 <record id="view_crm_case_opportunities_filter" model="ir.ui.view">
594 <field name="name">CRM - Opportunities Search</field>
595 <field name="model">crm.lead</field>
596 <field name="type">search</field>
597 <field name="arch" type="xml">
598 <search string="Search Opportunities">
599 <filter icon="terp-mail-message-new"
600 string="Inbox" help="Unread messages"
601 name="needaction_pending"
602 domain="[('needaction_pending','=',True)]"/>
603 <field name="name" string="Opportunity / Customer"
604 filter_domain="['|','|','|',('partner_id','ilike',self),('partner_name','ilike',self),('email_from','ilike',self),('name', 'ilike', self)]"/>
605 <separator orientation="vertical"/>
606 <filter icon="terp-check"
607 string="New" help="New Opportunities"
609 domain="[('state','=','draft')]"/>
610 <filter icon="terp-camera_test"
611 string="Open" help="Open Opportunities"
613 domain="[('state','=','open')]"/>
614 <filter string="Unassigned Opportunities"
615 icon="terp-personal-"
616 domain="[('user_id','=', False)]"
617 help="Unassigned Opportunities" />
618 <filter string="Opportunities Assigned to Me or My Team(s)" icon="terp-personal+"
619 domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
620 context="{'invisible_section': False}"
621 help="Opportunities that are assigned to either me or one of the sale teams I manage" />
622 <separator orientation="vertical"/>
623 <field name="user_id"/>
624 <field name="country_id"/>
625 <field name="partner_id"/>
626 <field name="section_id"
627 context="{'invisible_section': False, 'default_section_id': self}"/>
629 <group expand="0" string="Group By..." colspan="16">
630 <filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}" />
631 <filter string="Team" help="Sales Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}"/>
632 <filter string="Customer" help="Partner" icon="terp-personal+" domain="[]" context="{'group_by':'partner_id'}"/>
633 <separator orientation="vertical" />
634 <filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}" />
635 <filter string="Priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}" />
636 <filter string="Campaign" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'type_id'}"/>
637 <filter string="Channel" icon="terp-call-start" domain="[]" context="{'group_by':'channel_id'}" />
638 <filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
639 <separator orientation="vertical" />
640 <filter string="Creation" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
641 <filter string="Exp.Closing" icon="terp-go-month" help="Expected Closing" domain="[]" context="{'group_by':'date_deadline'}" />
643 <group string="Display">
644 <filter string="Show Sales Team"
645 icon="terp-personal+"
646 context="{'invisible_section': False}"
648 help="Show Sales Team"/>