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">
16 <field name="name" string="Stage Name"/>
17 <separator orientation="vertical"/>
24 <!-- Stage Form view -->
25 <record id="crm_lead_stage_act" model="ir.actions.act_window">
26 <field name="name">Stages</field>
27 <field name="res_model">crm.case.stage</field>
28 <field name="view_type">form</field>
29 <field name="view_id" ref="crm.crm_case_stage_tree"/>
30 <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>
33 <menuitem action="crm_lead_stage_act" id="menu_crm_lead_stage_act" name="Stages" sequence="0" parent="base.menu_crm_config_lead" />
36 LEADS/OPPORTUNITIES CATEGORIES
39 <!-- Categories Form View -->
40 <record id="crm_lead_categ_action" model="ir.actions.act_window">
41 <field name="name">Categories</field>
42 <field name="res_model">crm.case.categ</field>
43 <field name="view_type">form</field>
44 <field name="view_id" ref="crm_case_categ_tree-view"/>
45 <field name="context" eval="{'object_id': ref('model_crm_lead')}"/>
46 <field name="domain">[('object_id.model', '=', 'crm.lead')]</field>
47 <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>
50 <menuitem action="crm_lead_categ_action"
51 id="menu_crm_lead_categ" name="Categories"
52 parent="base.menu_crm_config_lead" sequence="1" groups="base.group_no_one"/>
58 id="act_crm_opportunity_crm_phonecall_new"
60 groups="base.group_sale_salesman"
61 res_model="crm.phonecall"
62 view_mode="tree,calendar,form"
63 context="{'default_duration': 1.0 ,'default_opportunity_id': active_id,'default_partner_phone':phone}"
64 domain="[('opportunity_id', '=', active_id)]"
68 id="act_crm_opportunity_crm_meeting_new"
70 res_model="crm.meeting"
71 view_mode="tree,form,calendar"
72 context="{'default_duration': 4.0, 'default_opportunity_id': active_id}"
73 domain="[('opportunity_id', '=', active_id)]"
77 <!-- CRM Lead Form View -->
78 <record model="ir.ui.view" id="crm_case_form_view_leads">
79 <field name="name">CRM - Leads Form</field>
80 <field name="model">crm.lead</field>
81 <field name="type">form</field>
82 <field name="arch" type="xml">
83 <form string="Leads Form" version="7.0">
85 <button name="%(crm.action_crm_lead2opportunity_partner)d" string="Convert to Opportunity" type="action"
86 states="draft,open,pending" help="Convert to Opportunity"/>
87 <button name="case_escalate" string="Escalate" type="object"
88 states="draft,open,pending"/>
89 <button name="case_reset" string="Reset" type="object"
91 <button name="case_cancel" string="Cancel" type="object"
92 states="draft,open,pending"/>
93 <field name="stage_id" widget="statusbar"
94 on_change="onchange_stage_id(stage_id)"/>
97 <div class="oe_right oe_button_box" name="buttons">
99 name="%(act_crm_opportunity_crm_meeting_new)d"
102 <button type="action"
103 name="%(act_crm_opportunity_crm_phonecall_new)d"
104 string="Phone Calls" />
107 <label for="name" class="oe_edit_only" string="Lead Description"/>
108 <h1><field name="name" placeholder="Describe the lead..."/></h1>
111 <field name="user_id" />
112 <field name="section_id" widget="selection" />
113 <field name="type" invisible="1"/>
116 <field name="priority"/>
117 <field name="categ_id"
119 domain="[('object_id.model','=','crm.lead')]"/>
122 <field name="partner_name" string="Company Name"/>
123 <field name="partner_id" string="Customer"/>
124 <label for="street" string="Address"/>
126 <field name="street" placeholder="Street..."/>
127 <field name="street2"/>
129 <field name="zip" class="oe_inline" placeholder="ZIP"/>
130 <field name="city" class="oe_inline" placeholder="City"/>
132 <field name="state_id" placeholder="State"/>
133 <field name="country_id" placeholder="Country"/>
137 <field name="contact_name" />
138 <field name="email_from" widget="email"/>
139 <field name="function" />
140 <field domain="[('domain', '=', 'contact')]" name="title"/>
141 <field name="phone"/>
142 <field name="mobile"/>
145 This should be integrated in Open Chatter
146 <button string="Mail"
147 name="%(mail.action_email_compose_message_wizard)d"
148 icon="terp-mail-message-new" type="action" colspan="1"/>
152 <notebook colspan="4">
153 <page string="Notes">
154 <field name="description"/>
156 <page string="Extra Info">
158 <group string="Categorization">
159 <field name="company_id"
160 groups="base.group_multi_company"
161 widget="selection" colspan="2" />
162 <field name="type_id" widget="selection"/>
163 <field name="channel_id" widget="selection"/>
164 <field name="referred"/>
165 <field name="state" groups="base.group_no_one"/>
167 <group string="Mailings">
168 <field name="opt_in" on_change="on_change_opt_in(opt_in)"/>
169 <field name="opt_out" on_change="on_change_opt_out(opt_out)"/>
175 <div class="oe_bottom">
176 <field name="message_ids" widget="ThreadView"/>
182 <!-- CRM Lead Tree View -->
183 <record model="ir.ui.view" id="crm_case_tree_view_leads">
184 <field name="name">Leads</field>
185 <field name="model">crm.lead</field>
186 <field name="type">tree</field>
187 <field name="arch" type="xml">
188 <tree string="Leads" fonts="bold:needaction_pending==True" colors="blue:state=='pending';grey:state in ('cancel', 'done')">
189 <field name="needaction_pending" invisible="1"/>
190 <field name="date_deadline" invisible="1"/>
191 <field name="create_date" groups="base.group_no_one"/>
193 <field name="contact_name"/>
194 <field name="country_id" invisible="context.get('invisible_country', True)" />
195 <field name="email_from"/>
196 <field name="phone"/>
197 <field name="stage_id"/>
198 <field name="categ_id" invisible="1"/>
199 <field name="section_id" invisible="context.get('invisible_section', True)" />
200 <field name="state" groups="base.group_no_one"/>
201 <field name="type_id" invisible="1"/>
202 <field name="referred" invisible="1"/>
203 <field name="channel_id" invisible="1"/>
204 <field name="subjects" invisible="1"/>
209 <!-- CRM Lead Calendar View -->
210 <record model="ir.ui.view" id="crm_case_calendar_view_leads">
211 <field name="name">CRM - Leads Calendar</field>
212 <field name="model">crm.lead</field>
213 <field name="type">calendar</field>
214 <field name="priority" eval="2"/>
215 <field name="arch" type="xml">
216 <calendar string="Leads Generation"
217 date_start="date_action" color="user_id">
218 <field name="name" />
219 <field name="partner_name" />
224 <!-- CRM Lead Kanban View -->
225 <record model="ir.ui.view" id="crm_case_kanban_view_leads">
226 <field name="name">CRM - Leads Kanban</field>
227 <field name="model">crm.lead</field>
228 <field name="type">kanban</field>
229 <field name="arch" type="xml">
230 <kanban default_group_by="stage_id">
231 <field name="state" groups="base.group_no_one"/>
232 <field name="color"/>
233 <field name="priority"/>
234 <field name="planned_revenue" sum="Expected Revenues"/>
235 <field name="user_email"/>
236 <field name="user_id"/>
237 <field name="partner_address_email"/>
239 <t t-name="lead_details">
240 <ul class="oe_kanban_tooltip">
241 <li t-if="record.phone.raw_value"><b>Phone:</b> <field name="phone"/></li>
242 <li><b>Probability:</b> <field name="probability"/>%%</li>
243 <li><b>Creation date:</b> <field name="create_date"/></li>
244 <li t-if="record.date_deadline.raw_value"><b>Date Deadline:</b> <field name="date_deadline"/></li>
247 <t t-name="kanban-box">
248 <div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card">
249 <div class="oe_dropdown_toggle oe_dropdown_kanban">
250 <span class="oe_e">Ã</span>
251 <ul class="oe_dropdown_menu">
252 <li><a type="edit" >Edit...</a></li>
253 <li><a type="delete">Delete</a></li>
254 <li><a name="%(mail.action_email_compose_message_wizard)d" type="action">Send Email</a></li>
255 <li><a name="%(opportunity2phonecall_act)d" type="action">Log Call</a></li>
256 <li><a name="action_makeMeeting" type="object">Schedule Meeting</a></li>
257 <li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
260 <div class="oe_kanban_content">
262 <b><field name="name"/></b>
263 <t t-if="record.planned_revenue.raw_value">
264 - <b><t t-esc="Math.round(record.planned_revenue.value)"/>
265 <field name="company_currency"/></b>
269 <field name="partner_id"/>
271 <div style="padding-left: 0.5em">
272 <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>
273 <span t-attf-class="#{red || ''}"><field name="date_action"/></span>
274 <t t-if="record.date_action.raw_value"> : </t>
275 <field name="title_action"/>
277 <div class="oe_right">
278 <a t-if="record.priority.raw_value == 1" type="object" name="set_normal_priority" class="oe_e oe_star_on">7</a>
279 <a t-if="record.priority.raw_value != 1" type="object" name="set_high_priority" class="oe_e oe_star_off">7</a>
281 <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>
282 <span t-attf-class="oe_kanban_status #{red}"> </span>
284 <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"/>
286 <div class="oe_kanban_footer_left">
289 <div class="oe_clear"></div>
292 <div class="oe_kanban_right">
293 <a name="case_mark_lost" string="Mark Lost" states="open,pending" type="object" icon="kanban-stop" />
294 <a name="case_pending" string="Pending" states="draft,open" type="object" icon="kanban-pause" />
295 <a name="case_open" string="Open" states="pending" type="object" icon="gtk-media-play" />
296 <a name="case_mark_won" string="Mark Won" states="open,pending" type="object" icon="kanban-apply" />
305 <!-- CRM Lead Search View -->
306 <record id="view_crm_case_leads_filter" model="ir.ui.view">
307 <field name="name">CRM - Leads Search</field>
308 <field name="model">crm.lead</field>
309 <field name="type">search</field>
310 <field name="arch" type="xml">
311 <search string="Search Leads">
312 <field name="name" string="Lead / Customer" filter_domain="['|','|',('partner_name','ilike',self),('email_from','ilike',self),('name','ilike',self)]"/>
313 <!-- subjects is not set as store=True so, it is placed outside filter_domain-->
314 <field name="subjects"/>
315 <separator orientation="vertical"/>
316 <field name="create_date"/>
317 <separator orientation="vertical"/>
318 <filter icon="terp-check"
320 name="new" help="New Leads"
321 domain="[('state','=','draft')]"/>
322 <filter icon="terp-camera_test"
325 domain="[('state','=','open')]"/>
326 <filter icon="terp-gtk-media-pause"
329 domain="[('state','=','pending')]"/>
330 <filter string="Unassigned Leads"
331 icon="terp-personal-"
332 domain="[('user_id','=', False)]"
333 help="Unassigned Leads" />
334 <filter string="Leads Assigned to Me or My Team(s)"
335 icon="terp-personal+"
336 context="{'invisible_section': False}"
337 domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
338 help="Leads that are assigned to one of the sale teams I manage, or to me"/>
339 <separator orientation="vertical"/>
340 <field name="user_id"/>
341 <field name="section_id" widget="selection"
342 context="{'invisible_section': False}"/>
343 <field name="country_id" context="{'invisible_country': False}"/>
344 <separator orientation="vertical"/>
346 <group expand="0" string="Group By...">
347 <filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
348 <filter string="Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}"/>
349 <filter string="Referrer" icon="terp-personal" domain="[]" context="{'group_by':'referred'}"/>
350 <separator orientation="vertical"/>
351 <filter string="Category" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'categ_id'}"/>
352 <filter string="Campaign" icon="terp-gtk-jump-to-rtl"
353 domain="[]" context="{'group_by':'type_id'}" />
354 <filter string="Channel" icon="terp-call-start"
355 domain="[]" context="{'group_by':'channel_id'}" />
356 <separator orientation="vertical"/>
357 <filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/>
358 <filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
359 <separator orientation="vertical" groups="base.group_no_one"/>
360 <filter string="Creation" help="Create date" icon="terp-go-month"
361 domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
363 <separator orientation="vertical"/>
364 <group string="Display">
365 <filter string="Show Countries" icon="terp-personal+" context="{'invisible_country': False}" help="Show Countries"/>
366 <filter string="Show Sales Team"
367 icon="terp-personal+"
368 context="{'invisible_section': False}"
370 help="Show Sales Team"/>
381 <!-- Opportunities Form View -->
382 <record model="ir.ui.view" id="crm_case_form_view_oppor">
383 <field name="name">Opportunities</field>
384 <field name="model">crm.lead</field>
385 <field name="type">form</field>
386 <field name="priority">20</field>
387 <field name="arch" type="xml">
388 <form string="Opportunities" version="7.0">
390 <button name="stage_previous" string="Previous" type="object"
391 states="open" icon="gtk-go-back" context="{'stage_type': 'opportunity'}"/>
392 <button name="stage_next" string="Next" type="object"
393 states="open" icon="gtk-go-forward" context="{'stage_type': 'opportunity'}"/>
394 <button name="case_mark_won" string="Mark Won" type="object"
395 states="draft,open,pending"/>
396 <button name="case_open" string="Open" type="object"
397 states="draft,pending"/>
398 <button name="case_escalate" string="Escalate" type="object"
400 <button name="case_mark_lost" string="Mark Lost" type="object"
401 states="draft,open"/>
402 <button name="case_reset" string="Reset to Draft" type="object"
403 states="done,cancel"/>
404 <button name="case_cancel" string="Cancel" type="object"
406 <field name="stage_id" widget="statusbar"
407 on_change="onchange_stage_id(stage_id)"/>
410 <div class="oe_right oe_button_box">
411 <button string="Schedule/Log Call"
412 name="%(opportunity2phonecall_act)d"
414 <button string="Schedule Meeting"
415 name="action_makeMeeting"
418 <div class="oe_title">
419 <label for="name" class="oe_edit_only"/>
420 <h1><field name="name"/></h1>
422 <label for="planned_revenue" class="oe_edit_only"/>
424 <field name="planned_revenue" class="oe_inline"/>
425 <field name="company_currency" class="oe_edit_only oe_inline"/> at
426 <field name="probability" class="oe_inline"/> %% success rate
431 <field name="partner_id"
432 on_change="onchange_partner_id(partner_id, email_from)"
434 context="{'default_name': partner_name, 'default_email': email_from, 'default_phone': phone}"/>
435 <field name="email_from" string="Email"/>
436 <field name="phone"/>
440 <label for="title_action"/>
442 <field name="date_action" nolabel="1"/> -
443 <field name="title_action" class="oe_inline" nolabel="1" placeholder="Call for proposal"/>
445 <field name="date_deadline"/>
446 <field name="priority"/>
450 <field name="user_id"/>
451 <field name="section_id" colspan="1" widget="selection"/>
454 <field name="categ_id"
455 string="Category" widget="selection"
456 domain="[('object_id.model', '=', 'crm.lead')]" />
461 <!--<button string="Mail"
462 name="%(mail.action_email_compose_message_wizard)d"
463 context="{'mail':'new', 'model': 'crm.lead'}"
464 icon="terp-mail-message-new" type="action" />-->
466 <notebook colspan="4">
467 <page string="Internal Notes">
468 <field name="description"/>
473 <field name="partner_name"/>
474 <label for="street" string="Address"/>
476 <field name="street" placeholder="Street..."/>
477 <field name="street2"/>
479 <field name="zip" class="oe_inline" placeholder="ZIP"/>
480 <field name="city" class="oe_inline" placeholder="City"/>
482 <field name="state_id" placeholder="State"/>
483 <field name="country_id" placeholder="Country"/>
488 <field name="contact_name" />
489 <field name="function" />
490 <field domain="[('domain', '=', 'contact')]" name="title"/>
491 <field name="mobile"/>
495 <group string="Categorization">
496 <field name="type_id" widget="selection"/>
497 <field name="channel_id" widget="selection"/>
499 <group string="Mailings">
500 <field name="opt_in" on_change="on_change_opt_in(opt_in)"/>
501 <field name="opt_out" on_change="on_change_opt_out(opt_out)"/>
503 <group string="Misc">
504 <field name="active"/>
505 <field name="day_open" groups="base.group_no_one"/>
506 <field name="day_close" groups="base.group_no_one"/>
507 <field name="referred"/>
508 <field name="state" groups="base.group_no_one"/>
509 <field name="type" invisible="1"/>
511 <group string="References">
520 <field name="message_ids" widget="ThreadView"/>
526 <!-- Opportunities Tree View -->
527 <record model="ir.ui.view" id="crm_case_tree_view_oppor">
528 <field name="name">Opportunities Tree</field>
529 <field name="model">crm.lead</field>
530 <field name="type">tree</field>
531 <field name="arch" type="xml">
532 <tree string="Opportunities" fonts="bold:needaction_pending==True" colors="blue:state=='pending' and not(date_deadline and (date_deadline < current_date));gray:state in ('cancel', 'done');red:date_deadline and (date_deadline < current_date)">
533 <field name="needaction_pending" invisible="1"/>
534 <field name="date_deadline" invisible="1"/>
535 <field name="create_date" groups="base.group_no_one"/>
536 <field name="name" string="Opportunity"/>
537 <field name="partner_id" string="Customer"/>
538 <field name="country_id" invisible="context.get('invisible_country', True)" />
539 <field name="date_action"/>
540 <field name="title_action" />
541 <field name="channel_id" invisible="1"/>
542 <field name="type_id" invisible="1"/>
543 <field name="subjects" invisible="1"/>
544 <field name="stage_id"/>
545 <field name="planned_revenue" sum="Expected Revenues"/>
546 <field name="probability" widget="progressbar" avg="Avg. of Probability"/>
547 <field name="section_id" invisible="context.get('invisible_section', True)" />
548 <field name="user_id"/>
549 <field name="priority" invisible="1"/>
550 <field name="categ_id" invisible="1"/>
551 <field name="state" groups="base.group_no_one"/>
557 <!-- Opportunities Search View -->
558 <record id="view_crm_case_opportunities_filter" model="ir.ui.view">
559 <field name="name">CRM - Opportunities Search</field>
560 <field name="model">crm.lead</field>
561 <field name="type">search</field>
562 <field name="arch" type="xml">
563 <search string="Search Opportunities">
564 <field name="name" string="Opportunity / Customer"
565 filter_domain="['|','|','|',('partner_id','ilike',self),('partner_name','ilike',self),('email_from','ilike',self),('name', 'ilike', self)]"/>
566 <separator orientation="vertical"/>
567 <filter icon="terp-check"
568 string="New" help="New Opportunities"
570 domain="[('state','=','draft')]"/>
571 <filter icon="terp-camera_test"
572 string="Open" help="Open Opportunities"
574 domain="[('state','=','open')]"/>
575 <filter icon="terp-gtk-media-pause"
576 string="Pending" help="Pending Opportunities"
578 domain="[('state','=','pending')]"/>
579 <filter string="Unassigned Opportunities"
580 icon="terp-personal-"
581 domain="[('user_id','=', False)]"
582 help="Unassigned Opportunities" />
583 <filter string="Opportunities Assigned to Me or My Team(s)" icon="terp-personal+"
584 domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
585 context="{'invisible_section': False}"
586 help="Opportunities that are assigned to either me or one of the sale teams I manage" />
587 <separator orientation="vertical"/>
588 <field name="user_id"/>
589 <field name="country"/>
590 <field name="partner_id"/>
591 <field name="section_id"
592 context="{'invisible_section': False, 'default_section_id': self}"/>
594 <group expand="0" string="Group By..." colspan="16">
595 <filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}" />
596 <filter string="Team" help="Sales Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}"/>
597 <filter string="Customer" help="Partner" icon="terp-personal+" domain="[]" context="{'group_by':'partner_id'}"/>
598 <separator orientation="vertical" />
599 <filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}" />
600 <filter string="Priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}" />
601 <filter string="Category" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'categ_id'}" />
602 <filter string="Campaign" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'type_id'}"/>
603 <filter string="Channel" icon="terp-call-start" domain="[]" context="{'group_by':'channel_id'}" />
604 <filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
605 <separator orientation="vertical" />
606 <filter string="Creation" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
607 <filter string="Exp.Closing" icon="terp-go-month" help="Expected Closing" domain="[]" context="{'group_by':'date_deadline'}" />
609 <group string="Display">
610 <filter string="Show Sales Team"
611 icon="terp-personal+"
612 context="{'invisible_section': False}"
614 help="Show Sales Team"/>
620 <!-- crm.lead Opportunities Graph View -->
621 <record model="ir.ui.view" id="crm_case_graph_view_opportunity">
622 <field name="name">CRM - Opportunity Graph</field>
623 <field name="model">crm.lead</field>
624 <field name="type">graph</field>
625 <field name="arch" type="xml">
626 <graph string="Opportunity by Categories" type="bar" orientation="horizontal">
627 <field name="categ_id"/>
628 <field name="planned_revenue" operator="+"/>
629 <field name="state" group="True"/>