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="type">search</field>
14 <field name="arch" type="xml">
15 <search string="Stage Search">
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">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>
32 <menuitem action="crm_lead_stage_act" id="menu_crm_lead_stage_act" name="Stages" sequence="0" parent="base.menu_crm_config_lead" />
35 LEADS/OPPORTUNITIES CATEGORIES
38 <!-- Categories Form View -->
39 <record id="crm_lead_categ_action" model="ir.actions.act_window">
40 <field name="name">Categories</field>
41 <field name="res_model">crm.case.categ</field>
42 <field name="view_type">form</field>
43 <field name="view_id" ref="crm_case_categ_tree-view"/>
44 <field name="context" eval="{'object_id': ref('model_crm_lead')}"/>
45 <field name="domain">[('object_id.model', '=', 'crm.lead')]</field>
46 <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>
49 <menuitem action="crm_lead_categ_action"
50 id="menu_crm_lead_categ" name="Categories"
51 parent="base.menu_crm_config_lead" sequence="1" groups="base.group_no_one"/>
57 id="act_crm_opportunity_crm_phonecall_new"
59 groups="base.group_sale_salesman"
60 res_model="crm.phonecall"
61 view_mode="tree,calendar,form"
62 context="{'default_duration': 1.0 ,'default_opportunity_id': active_id,'default_partner_phone':phone}"
63 domain="[('opportunity_id', '=', active_id)]"
67 id="act_crm_opportunity_crm_meeting_new"
69 res_model="crm.meeting"
70 view_mode="tree,form,calendar"
71 context="{'default_duration': 4.0, 'default_opportunity_id': active_id}"
72 domain="[('opportunity_id', '=', active_id)]"
76 <!-- CRM Lead Form View -->
77 <record model="ir.ui.view" id="crm_case_form_view_leads">
78 <field name="name">CRM - Leads Form</field>
79 <field name="model">crm.lead</field>
80 <field name="type">form</field>
81 <field name="arch" type="xml">
82 <form string="Leads Form" version="7.0">
84 <button name="%(crm.action_crm_lead2opportunity_partner)d" string="Convert to Opportunity" type="action"
85 states="draft,open,pending" help="Convert to Opportunity"/>
86 <button name="case_escalate" string="Escalate" type="object"
87 states="draft,open,pending"/>
88 <button name="case_reset" string="Reset" type="object"
90 <button name="case_cancel" string="Cancel" type="object"
91 states="draft,open,pending"/>
92 <button name="message_mark_as_unread" string="Mark Unread" type="object"
93 attrs="{'invisible':[('message_thread_read', '==', False)]}"/>
94 <button name="message_mark_as_read" string="Mark Read" type="object"
95 attrs="{'invisible':[('message_thread_read', '==', True)]}"/>
96 <field name="stage_id" widget="statusbar"
97 on_change="onchange_stage_id(stage_id)"/>
100 <div class="oe_right oe_button_box" name="buttons">
101 <button type="action"
102 name="%(act_crm_opportunity_crm_meeting_new)d"
105 <button type="action"
106 name="%(act_crm_opportunity_crm_phonecall_new)d"
107 string="Phone Calls" />
110 <label for="name" class="oe_edit_only" string="Lead Description"/>
111 <h1><field name="name" placeholder="Describe the lead..."/></h1>
112 <field name="message_thread_read"/>
116 <field name="user_id" />
117 <field name="section_id" widget="selection" />
118 <field name="type" invisible="1"/>
121 <field name="priority"/>
122 <field name="categ_id"
124 domain="[('object_id.model','=','crm.lead')]"/>
127 <field name="partner_name" string="Company Name"/>
128 <field name="partner_id" string="Customer"/>
129 <label for="street" string="Address"/>
131 <field name="street" placeholder="Street..."/>
132 <field name="street2"/>
134 <field name="zip" class="oe_inline" placeholder="ZIP"/>
135 <field name="city" class="oe_inline" placeholder="City"/>
137 <field name="state_id" placeholder="State"/>
138 <field name="country_id" placeholder="Country"/>
142 <field name="contact_name" />
143 <field name="email_from" widget="email"/>
144 <field name="function" />
145 <field domain="[('domain', '=', 'contact')]" name="title"/>
146 <field name="phone"/>
147 <field name="mobile"/>
150 This should be integrated in Open Chatter
151 <button string="Mail"
152 name="%(mail.action_email_compose_message_wizard)d"
153 icon="terp-mail-message-new" type="action" colspan="1"/>
157 <notebook colspan="4">
158 <page string="Notes">
159 <field name="description"/>
161 <page string="Extra Info">
163 <group string="Categorization">
164 <field name="company_id"
165 groups="base.group_multi_company"
166 widget="selection" colspan="2" />
167 <field name="type_id" widget="selection"/>
168 <field name="channel_id" widget="selection"/>
169 <field name="referred"/>
170 <field name="state" groups="base.group_no_one"/>
172 <group string="Mailings">
173 <field name="opt_in" on_change="on_change_opt_in(opt_in)"/>
174 <field name="opt_out" on_change="on_change_opt_out(opt_out)"/>
181 <field name="message_ids" widget="ThreadView"/>
187 <!-- CRM Lead Tree View -->
188 <record model="ir.ui.view" id="crm_case_tree_view_leads">
189 <field name="name">Leads</field>
190 <field name="model">crm.lead</field>
191 <field name="type">tree</field>
192 <field name="arch" type="xml">
193 <tree string="Leads" fonts="bold:needaction_pending==True" colors="grey:state in ('cancel', 'done')">
194 <field name="date_deadline" invisible="1"/>
195 <field name="create_date" groups="base.group_no_one"/>
197 <field name="contact_name"/>
198 <field name="country_id" invisible="context.get('invisible_country', True)" />
199 <field name="email_from"/>
200 <field name="phone"/>
201 <field name="stage_id"/>
202 <field name="categ_id" invisible="1"/>
203 <field name="section_id" invisible="context.get('invisible_section', True)" />
204 <field name="state" groups="base.group_no_one"/>
205 <field name="type_id" invisible="1"/>
206 <field name="referred" invisible="1"/>
207 <field name="channel_id" invisible="1"/>
208 <field name="subjects" invisible="1"/>
209 <field name="needaction_pending" invisible="1"/>
214 <!-- CRM Lead Calendar View -->
215 <record model="ir.ui.view" id="crm_case_calendar_view_leads">
216 <field name="name">CRM - Leads Calendar</field>
217 <field name="model">crm.lead</field>
218 <field name="type">calendar</field>
219 <field name="priority" eval="2"/>
220 <field name="arch" type="xml">
221 <calendar string="Leads Generation"
222 date_start="date_action" color="user_id">
223 <field name="name" />
224 <field name="partner_name" />
229 <!-- CRM Lead Kanban View -->
230 <record model="ir.ui.view" id="crm_case_kanban_view_leads">
231 <field name="name">CRM - Leads Kanban</field>
232 <field name="model">crm.lead</field>
233 <field name="type">kanban</field>
234 <field name="arch" type="xml">
235 <kanban default_group_by="stage_id">
236 <field name="state" groups="base.group_no_one"/>
237 <field name="color"/>
238 <field name="priority"/>
239 <field name="planned_revenue" sum="Expected Revenues"/>
240 <field name="user_email"/>
241 <field name="user_id"/>
242 <field name="partner_address_email"/>
244 <t t-name="lead_details">
245 <ul class="oe_kanban_tooltip">
246 <li t-if="record.phone.raw_value"><b>Phone:</b> <field name="phone"/></li>
247 <li><b>Probability:</b> <field name="probability"/>%%</li>
248 <li><b>Creation date:</b> <field name="create_date"/></li>
249 <li t-if="record.date_deadline.raw_value"><b>Date Deadline:</b> <field name="date_deadline"/></li>
252 <t t-name="kanban-box">
253 <div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card">
254 <div class="oe_dropdown_toggle oe_dropdown_kanban">
255 <span class="oe_e">i</span>
256 <ul class="oe_dropdown_menu">
257 <li><a type="edit" >Edit...</a></li>
258 <li><a type="delete">Delete</a></li>
259 <li><a name="%(mail.action_email_compose_message_wizard)d" type="action">Send Email</a></li>
260 <li><a name="%(opportunity2phonecall_act)d" type="action">Log Call</a></li>
261 <li><a name="action_makeMeeting" type="object">Schedule Meeting</a></li>
262 <li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
265 <div class="oe_kanban_content">
267 <b><field name="name"/></b>
268 <t t-if="record.planned_revenue.raw_value">
269 - <b><t t-esc="Math.round(record.planned_revenue.value)"/>
270 <field name="company_currency"/></b>
274 <field name="partner_id"/>
276 <div style="padding-left: 0.5em">
278 <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>
279 <span t-attf-class="#{red || ''}">
280 <field name="date_action"/>
282 <t t-if="record.date_action.raw_value"> : </t>
283 <field name="title_action"/>
286 <div class="oe_right">
287 <a t-if="record.priority.raw_value == 1" icon="star-on" type="object" name="set_normal_priority"/>
288 <a t-if="record.priority.raw_value != 1" icon="star-off" type="object" name="set_high_priority" style="opacity:0.7; filter:alpha(opacity=70);"/>
290 <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>
291 <span t-attf-class="oe_kanban_status #{red}"> </span>
293 <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"/>
295 <div class="oe_kanban_footer_left">
298 <div class="oe_clear"></div>
301 <div class="oe_kanban_right">
302 <a name="case_mark_lost" string="Mark Lost" states="open,pending" type="object" icon="kanban-stop" />
303 <a name="case_pending" string="Pending" states="draft,open" type="object" icon="kanban-pause" />
304 <a name="case_open" string="Open" states="pending" type="object" icon="gtk-media-play" />
305 <a name="case_mark_won" string="Mark Won" states="open,pending" type="object" icon="kanban-apply" />
314 <!-- CRM Lead Search View -->
315 <record id="view_crm_case_leads_filter" model="ir.ui.view">
316 <field name="name">CRM - Leads Search</field>
317 <field name="model">crm.lead</field>
318 <field name="type">search</field>
319 <field name="arch" type="xml">
320 <search string="Search Leads">
321 <filter icon="terp-mail-message-new"
322 string="Inbox" help="Unread messages"
323 name="needaction_pending"
324 domain="[('needaction_pending','=',True)]"/>
325 <separator orientation="vertical"/>
326 <filter icon="terp-check"
328 name="new" help="New Leads"
329 domain="[('state','=','draft')]"/>
330 <filter icon="terp-camera_test"
333 domain="[('state','=','open')]"/>
334 <separator orientation="vertical"/>
335 <filter icon="terp-go-today" string="Today"
336 domain="[('create_date','<', time.strftime('%%Y-%%m-%%d 23:59:59')), ('create_date','>=', time.strftime('%%Y-%%m-%%d 00:00:00'))]"
337 help="Todays' Leads" />
338 <filter icon="terp-go-week" string="7 Days"
339 help="Leads creating during last 7 days"
340 domain="[('create_date','<', time.strftime('%%Y-%%m-%%d 23:59:59')),('create_date','>=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d 00:00:00'))]"
342 <separator orientation="vertical"/>
343 <field name="name" string="Lead / Customer"
344 filter_domain="['|','|',('partner_name','ilike',self),('email_from','ilike',self),('name','ilike',self)]"/>
345 <field name="user_id">
346 <filter icon="terp-personal-"
347 domain="[('user_id','=', False)]"
348 help="Unassigned Leads" />
350 <field name="subjects"/>
351 <field name="section_id" widget="selection"
352 context="{'invisible_section': False}">
353 <filter icon="terp-personal+"
354 context="{'invisible_section': False}"
355 domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
356 help="My Sales Team(s)"/>
357 <filter icon="terp-personal+"
358 context="{'invisible_section': False}"
360 help="Show Sales Team"/>
362 <separator orientation="vertical"/>
363 <field name="country_id" context="{'invisible_country': False}">
364 <filter icon="terp-personal+" context="{'invisible_country': False}" help="Show countries"/>
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 <separator orientation="vertical"/>
372 <filter string="Category" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'categ_id'}"/>
373 <filter string="Campaign" icon="terp-gtk-jump-to-rtl"
374 domain="[]" context="{'group_by':'type_id'}" />
375 <filter string="Channel" icon="terp-call-start"
376 domain="[]" context="{'group_by':'channel_id'}" />
377 <separator orientation="vertical"/>
378 <filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/>
379 <filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
380 <separator orientation="vertical" groups="base.group_no_one"/>
381 <filter string="Creation" help="Create date" icon="terp-go-month"
382 domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
393 <!-- Opportunities Form View -->
394 <record model="ir.ui.view" id="crm_case_form_view_oppor">
395 <field name="name">Opportunities</field>
396 <field name="model">crm.lead</field>
397 <field name="type">form</field>
398 <field name="priority">20</field>
399 <field name="arch" type="xml">
400 <form string="Opportunities" version="7.0">
402 <button name="stage_previous" string="Previous" type="object"
403 states="open" icon="gtk-go-back" context="{'stage_type': 'opportunity'}"/>
404 <button name="stage_next" string="Next" type="object"
405 states="open" icon="gtk-go-forward" context="{'stage_type': 'opportunity'}"/>
406 <button name="case_mark_won" string="Mark Won" type="object"
407 states="draft,open,pending"/>
408 <button name="case_open" string="Open" type="object"
409 states="draft,pending"/>
410 <button name="case_escalate" string="Escalate" type="object"
412 <button name="case_mark_lost" string="Mark Lost" type="object"
413 states="draft,open"/>
414 <button name="case_reset" string="Reset to Draft" type="object"
415 states="done,cancel"/>
416 <button name="case_cancel" string="Cancel" type="object"
418 <button name="message_mark_as_unread" string="Mark Unread" type="object"
419 attrs="{'invisible':[('message_thread_read', '==', False)]}"/>
420 <button name="message_mark_as_read" string="Mark Read" type="object"
421 attrs="{'invisible':[('message_thread_read', '==', True)]}"/>
422 <field name="stage_id" widget="statusbar"
423 on_change="onchange_stage_id(stage_id)"/>
426 <div class="oe_right oe_button_box">
427 <button string="Schedule/Log Call"
428 name="%(opportunity2phonecall_act)d"
430 <button string="Schedule Meeting"
431 name="action_makeMeeting"
434 <div class="oe_title">
435 <label for="name" class="oe_edit_only"/>
436 <h1><field name="name"/></h1>
438 <field name="message_thread_read"/>
441 <label for="planned_revenue" class="oe_edit_only"/>
443 <field name="planned_revenue" class="oe_inline"/>
444 <field name="company_currency" class="oe_edit_only 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"/> -
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_id"
474 string="Category" widget="selection"
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"/>
498 <field name="zip" class="oe_inline" placeholder="ZIP"/>
499 <field name="city" class="oe_inline" placeholder="City"/>
501 <field name="state_id" placeholder="State"/>
502 <field name="country_id" placeholder="Country"/>
507 <field name="contact_name" />
508 <field name="function" />
509 <field domain="[('domain', '=', 'contact')]" name="title"/>
510 <field name="mobile"/>
514 <group string="Categorization">
515 <field name="type_id" widget="selection"/>
516 <field name="channel_id" widget="selection"/>
518 <group string="Mailings">
519 <field name="opt_in" on_change="on_change_opt_in(opt_in)"/>
520 <field name="opt_out" on_change="on_change_opt_out(opt_out)"/>
522 <group string="Misc">
523 <field name="active"/>
524 <field name="day_open" groups="base.group_no_one"/>
525 <field name="day_close" groups="base.group_no_one"/>
526 <field name="referred"/>
527 <field name="state" groups="base.group_no_one"/>
528 <field name="type" invisible="1"/>
530 <group string="References">
539 <field name="message_ids" widget="ThreadView"/>
545 <!-- Opportunities Tree View -->
546 <record model="ir.ui.view" id="crm_case_tree_view_oppor">
547 <field name="name">Opportunities Tree</field>
548 <field name="model">crm.lead</field>
549 <field name="type">tree</field>
550 <field name="arch" type="xml">
551 <tree string="Opportunities" fonts="bold:needaction_pending==True" colors="gray:state in ('cancel', 'done');red:date_deadline and (date_deadline < current_date)">
552 <field name="needaction_pending" invisible="1"/>
553 <field name="date_deadline" invisible="1"/>
554 <field name="create_date" groups="base.group_no_one"/>
555 <field name="name" string="Opportunity"/>
556 <field name="partner_id" string="Customer"/>
557 <field name="country_id" invisible="context.get('invisible_country', True)" />
558 <field name="date_action"/>
559 <field name="title_action" />
560 <field name="channel_id" invisible="1"/>
561 <field name="type_id" invisible="1"/>
562 <field name="subjects" invisible="1"/>
563 <field name="stage_id"/>
564 <field name="planned_revenue" sum="Expected Revenues"/>
565 <field name="probability" widget="progressbar" avg="Avg. of Probability"/>
566 <field name="section_id" invisible="context.get('invisible_section', True)" />
567 <field name="user_id"/>
568 <field name="priority" invisible="1"/>
569 <field name="categ_id" invisible="1"/>
570 <field name="state" groups="base.group_no_one"/>
576 <!-- Opportunities Search View -->
577 <record id="view_crm_case_opportunities_filter" model="ir.ui.view">
578 <field name="name">CRM - Opportunities Search</field>
579 <field name="model">crm.lead</field>
580 <field name="type">search</field>
581 <field name="arch" type="xml">
582 <search string="Search Opportunities">
583 <filter icon="terp-mail-message-new"
584 string="Inbox" help="Unread messages"
585 name="needaction_pending"
586 domain="[('needaction_pending','=',True)]"/>
587 <separator orientation="vertical"/>
588 <filter icon="terp-check"
589 string="New" help="New Opportunities"
591 domain="[('state','=','draft')]"/>
592 <filter icon="terp-camera_test"
593 string="Open" help="Open Opportunities"
595 domain="[('state','=','open')]"/>
596 <separator orientation="vertical"/>
597 <field name="name" string="Opportunity / Customer"
598 filter_domain="['|','|','|',('partner_id','ilike',self),('partner_name','ilike',self),('email_from','ilike',self),('name', 'ilike', self)]"/>
599 <field name="user_id">
600 <filter icon="terp-personal-"
601 domain="[('user_id','=', False)]"
602 help="Unassigned Opportunities" />
604 <field name="section_id"
605 context="{'invisible_section': False, 'default_section_id': self}">
606 <filter icon="terp-personal+"
607 domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
608 context="{'invisible_section': False}"
609 help="My Sales Team(s)" />
610 <filter icon="terp-personal+"
611 context="{'invisible_section': False}"
613 help="Show Sales Team"/>
616 <group expand="0" string="Group By..." colspan="16">
617 <filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}" />
618 <filter string="Team" help="Sales Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}"/>
619 <filter string="Customer" help="Partner" icon="terp-personal+" domain="[]" context="{'group_by':'partner_id'}"/>
620 <separator orientation="vertical" />
621 <filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}" />
622 <filter string="Priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}" />
623 <filter string="Category" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'categ_id'}" />
624 <filter string="Campaign" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'type_id'}"/>
625 <filter string="Channel" icon="terp-call-start" domain="[]" context="{'group_by':'channel_id'}" />
626 <filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
627 <separator orientation="vertical" />
628 <filter string="Creation" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
629 <filter string="Exp.Closing" icon="terp-go-month" help="Expected Closing" domain="[]" context="{'group_by':'date_deadline'}" />
635 <!-- crm.lead Opportunities Graph View -->
636 <record model="ir.ui.view" id="crm_case_graph_view_opportunity">
637 <field name="name">CRM - Opportunity Graph</field>
638 <field name="model">crm.lead</field>
639 <field name="type">graph</field>
640 <field name="arch" type="xml">
641 <graph string="Opportunity by Categories" type="bar" orientation="horizontal">
642 <field name="categ_id"/>
643 <field name="planned_revenue" operator="+"/>
644 <field name="state" group="True"/>