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 <!-- CRM Lead Form View -->
58 <record model="ir.ui.view" id="crm_case_form_view_leads">
59 <field name="name">CRM - Leads Form</field>
60 <field name="model">crm.lead</field>
61 <field name="type">form</field>
62 <field name="arch" type="xml">
63 <form string="Leads Form" layout="manual">
65 <button name="%(crm.action_crm_lead2opportunity_partner)d" string="Convert to Opportunity" type="action"
66 states="draft,open,pending" help="Convert to Opportunity"/>
67 <button name="case_escalate" string="Escalate" type="object"
68 states="draft,open,pending"/>
69 <button name="case_reset" string="Reset" type="object"
71 <button name="case_cancel" string="Cancel" type="object"
72 states="draft,open,pending"/>
73 <field name="stage_id" widget="statusbar"
74 on_change="onchange_stage_id(stage_id)"/>
77 <group colspan="4" col="7">
79 <field name="priority"/>
80 <field name="categ_id"
82 domain="[('object_id.model','=','crm.lead')]"/>
84 <field name="user_id" />
85 <field name="section_id" widget="selection" />
86 <field name="type" invisible="1"/>
88 <notebook colspan="4">
90 <group colspan="4" col="2">
91 <field name="partner_name" string="Company Name" />
93 <group colspan="2" col="4">
94 <separator string="Contact" colspan="4" col="4"/>
95 <field name="contact_name" colspan="4"/>
97 <field domain="[('domain', '=', 'contact')]" name="title" widget="selection"/>
98 <field name="function" />
99 <field name="street" colspan="4"/>
100 <field name="street2" colspan="4"/>
103 <field name="country_id"/>
104 <field name="state_id"/>
106 <group colspan="2" col="3">
107 <separator string="Communication" colspan="4" col="3"/>
108 <field name="email_from" widget="email"/>
109 <button string="Mail"
110 name="%(mail.action_email_compose_message_wizard)d"
111 icon="terp-mail-message-new" type="action" colspan="1"/>
113 <field name="phone"/>
117 <field name="mobile"/>
119 <separator string="Links" colspan="4" col="3"/>
120 <field name="partner_id" string="Customer"/>
122 name="%(action_crm_lead2partner)d"
123 icon="terp-partner" type="action"
125 attrs="{'invisible':[('partner_id','!=',False)]}"/>
127 <separator colspan="4" string="Notes"/>
128 <field name="description" nolabel="1" colspan="4"/>
130 <page string="Extra Info">
131 <group colspan="2" col="2">
132 <separator string="Categorization" colspan="2" col="2"/>
133 <field name="company_id"
134 groups="base.group_multi_company"
135 widget="selection" colspan="2" />
136 <field name="type_id" select="1" widget="selection"/>
137 <field name="channel_id" select="1" widget="selection"/>
138 <field name="referred"/>
139 <field name="state" groups="base.group_no_one"/>
141 <group colspan="2" col="2">
142 <separator string="Mailings" colspan="2" col="2"/>
143 <field name="opt_in" on_change="on_change_opt_in(opt_in)"/>
144 <field name="opt_out" on_change="on_change_opt_out(opt_out)"/>
146 <group colspan="2" col="2" groups="base.group_no_one">
147 <separator string="Statistics" colspan="2" col="2"/>
148 <field name="day_open"/>
149 <field name="day_close"/>
154 <div class="oe_form_bottom">
155 <field name="message_ids" colspan="4" widget="ThreadView" nolabel="1"/>
161 <!-- CRM Lead Tree View -->
162 <record model="ir.ui.view" id="crm_case_tree_view_leads">
163 <field name="name">Leads</field>
164 <field name="model">crm.lead</field>
165 <field name="type">tree</field>
166 <field name="arch" type="xml">
167 <tree string="Leads" fonts="bold:needaction_pending==True" colors="blue:state=='pending';grey:state in ('cancel', 'done')">
168 <field name="needaction_pending" invisible="1"/>
169 <field name="date_deadline" invisible="1"/>
170 <field name="create_date" groups="base.group_no_one"/>
172 <field name="contact_name"/>
173 <field name="country_id" invisible="context.get('invisible_country', True)" />
174 <field name="email_from"/>
175 <field name="phone"/>
176 <field name="stage_id"/>
177 <field name="categ_id" invisible="1"/>
178 <field name="section_id" invisible="context.get('invisible_section', True)" />
179 <field name="state" groups="base.group_no_one"/>
180 <field name="type_id" invisible="1"/>
181 <field name="referred" invisible="1"/>
182 <field name="channel_id" invisible="1"/>
183 <field name="subjects" invisible="1"/>
188 <!-- CRM Lead Calendar View -->
189 <record model="ir.ui.view" id="crm_case_calendar_view_leads">
190 <field name="name">CRM - Leads Calendar</field>
191 <field name="model">crm.lead</field>
192 <field name="type">calendar</field>
193 <field name="priority" eval="2"/>
194 <field name="arch" type="xml">
195 <calendar string="Leads Generation"
196 date_start="date_action" color="user_id">
197 <field name="name" />
198 <field name="partner_name" />
203 <!-- CRM Lead Kanban View -->
204 <record model="ir.ui.view" id="crm_case_kanban_view_leads">
205 <field name="name">CRM - Leads Kanban</field>
206 <field name="model">crm.lead</field>
207 <field name="type">kanban</field>
208 <field name="arch" type="xml">
209 <kanban default_group_by="stage_id">
210 <field name="state" groups="base.group_no_one"/>
211 <field name="color"/>
212 <field name="priority"/>
213 <field name="planned_revenue" sum="Expected Revenues"/>
214 <field name="user_email"/>
215 <field name="user_id"/>
216 <field name="partner_address_email"/>
218 <t t-name="lead_details">
219 <ul class="oe_kanban_tooltip">
220 <li t-if="record.phone.raw_value"><b>Phone:</b> <field name="phone"/></li>
221 <li><b>Probability:</b> <field name="probability"/>%%</li>
222 <li><b>Creation date:</b> <field name="create_date"/></li>
223 <li t-if="record.date_deadline.raw_value"><b>Date Deadline:</b> <field name="date_deadline"/></li>
226 <t t-name="kanban-box">
227 <div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card">
228 <a class="oe_kanban_menuaction oe_i">B</a>
229 <ul class="oe_kanban_menu">
230 <li><a type="edit" >Edit...</a></li>
231 <li><a type="delete">Delete</a></li>
232 <li><a name="%(mail.action_email_compose_message_wizard)d" type="action">Send New Email</a></li>
233 <li><a name="%(opportunity2phonecall_act)d" type="action">Log Call</a></li>
234 <li><a name="action_makeMeeting" type="object">Schedule Meeting</a></li>
235 <li><a name="%(crm.action_crm_add_note)d" context="{'model': 'crm.lead' }" type="action">Add Internal Note</a></li>
236 <li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
238 <div class="oe_kanban_content">
240 <b><field name="name"/></b>
241 <t t-if="record.planned_revenue.raw_value">
242 - <b><t t-esc="Math.round(record.planned_revenue.value)"/>
243 <field name="company_currency"/></b>
247 <field name="partner_id"/>
249 <div style="padding-left: 0.5em">
251 <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>
252 <span t-attf-class="#{red || ''}">
253 <field name="date_action"/>
255 <t t-if="record.date_action.raw_value"> : </t>
256 <field name="title_action"/>
259 <div class="oe_right">
260 <a t-if="record.priority.raw_value == 1" icon="star-on" type="object" name="set_normal_priority"/>
261 <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);"/>
263 <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>
264 <span t-attf-class="oe_kanban_status #{red}"> </span>
266 <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"/>
268 <div class="oe_kanban_footer_left">
271 <div class="oe_clear"></div>
274 <div class="oe_kanban_right">
275 <a name="case_mark_lost" string="Mark Lost" states="open,pending" type="object" icon="kanban-stop" />
276 <a name="case_pending" string="Pending" states="draft,open" type="object" icon="kanban-pause" />
277 <a name="case_open" string="Open" states="pending" type="object" icon="gtk-media-play" />
278 <a name="case_mark_won" string="Mark Won" states="open,pending" type="object" icon="kanban-apply" />
287 <!-- CRM Lead Search View -->
288 <record id="view_crm_case_leads_filter" model="ir.ui.view">
289 <field name="name">CRM - Leads Search</field>
290 <field name="model">crm.lead</field>
291 <field name="type">search</field>
292 <field name="arch" type="xml">
293 <search string="Search Leads">
294 <filter icon="terp-check"
296 name="new" help="New Leads"
297 domain="[('state','=','draft')]"/>
298 <filter icon="terp-camera_test"
301 domain="[('state','=','open')]"/>
302 <filter icon="terp-gtk-media-pause"
305 domain="[('state','=','pending')]"/>
307 <separator orientation="vertical"/>
308 <field name="name" string="Lead / Customer"
309 filter_domain="['|','|',('partner_name','ilike',self),('email_from','ilike',self),('name','ilike',self)]"/>
310 <field name="user_id">
311 <filter string="Unassigned Leads"
312 icon="terp-personal-"
313 domain="[('user_id','=', False)]"
314 help="Unassigned Leads" />
316 <field name="subjects"/>
317 <field name="section_id" widget="selection"
318 context="{'invisible_section': False}">
319 <filter string="My Sales Team(s)"
320 icon="terp-personal+"
321 context="{'invisible_section': False}"
322 domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
323 help="My Sales Team(s)"/>
324 <filter string="Show Sales Team"
325 icon="terp-personal+"
326 context="{'invisible_section': False}"
328 help="Show Sales Team"/>
330 <separator orientation="vertical"/>
331 <field name="country_id" context="{'invisible_country': False}">
332 <filter string="Show Countries" icon="terp-personal+" context="{'invisible_country': False}" help="Show Countries"/>
334 <field name="create_date"/>
336 <group expand="0" string="Group By...">
337 <filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
338 <filter string="Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}"/>
339 <filter string="Referrer" icon="terp-personal" domain="[]" context="{'group_by':'referred'}"/>
340 <separator orientation="vertical"/>
341 <filter string="Category" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'categ_id'}"/>
342 <filter string="Campaign" icon="terp-gtk-jump-to-rtl"
343 domain="[]" context="{'group_by':'type_id'}" />
344 <filter string="Channel" icon="terp-call-start"
345 domain="[]" context="{'group_by':'channel_id'}" />
346 <separator orientation="vertical"/>
347 <filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/>
348 <filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
349 <separator orientation="vertical" groups="base.group_no_one"/>
350 <filter string="Creation" help="Create date" icon="terp-go-month"
351 domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
362 <!-- Opportunities Form View -->
363 <record model="ir.ui.view" id="crm_case_form_view_oppor">
364 <field name="name">Opportunities</field>
365 <field name="model">crm.lead</field>
366 <field name="type">form</field>
367 <field name="priority">20</field>
368 <field name="arch" type="xml">
369 <form string="Opportunities" validate="0">
371 <button name="case_mark_won" string="Mark Won" states="open,pending" type="object" />
372 <button name="case_open" string="Open" states="draft,pending" type="object" />
373 <button name="case_pending" string="Pending" states="draft,open" type="object" />
374 <button name="case_escalate" string="Escalate" states="open,pending" type="object" />
375 <button name="case_mark_lost" string="Mark Lost" states="open,pending" type="object" />
376 <button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" />
377 <button name="case_cancel" string="Cancel" states="draft" type="object" />
378 <field name="state" nolabel="1" widget="statusbar" statusbar_visible="draft,open,done" statusbar_colors='{"pending":"blue"}'/>
381 <div class="oe_right oe_form_button_box">
382 <button string="Schedule/Log Call"
383 name="%(opportunity2phonecall_act)d"
385 <button string="Schedule Meeting"
386 name="action_makeMeeting"
389 <div class="oe_form_title">
390 <label for="name" class="oe_form_readonly_hidden"/>
391 <h1><field name="name"/></h1>
393 <label for="planned_revenue" class="oe_form_readonly_hidden"/>
395 <field name="planned_revenue" class="oe_form_inline"/>
396 <field name="company_currency" class="oe_form_readonly_hidden oe_form_inline"/> at
397 <field name="probability" class="oe_form_inline"/> %% success rate
402 <field name="partner_id"
403 on_change="onchange_partner_id(partner_id, email_from)"
405 context="{'default_name': partner_name, 'default_email': email_from, 'default_phone': phone}"/>
406 <field name="email_from" string="Email"/>
407 <field name="phone"/>
411 <label for="title_action"/>
413 <field name="date_action" nolabel="1"/> -
414 <field name="title_action" class="oe_form_inline" nolabel="1" placeholder="Call for proposal"/>
416 <field name="date_deadline"/>
417 <field name="priority"/>
421 <field name="user_id"/>
422 <field name="section_id" colspan="1" widget="selection"/>
425 <field name="categ_id" select="1"
426 string="Category" widget="selection"
427 domain="[('object_id.model', '=', 'crm.lead')]" />
432 <!--<button string="Mail"
433 name="%(mail.action_email_compose_message_wizard)d"
434 context="{'mail':'new', 'model': 'crm.lead'}"
435 icon="terp-mail-message-new" type="action" />-->
437 <notebook colspan="4">
438 <page string="Internal Notes">
439 <field name="description"/>
444 <field name="partner_name"/>
445 <label for="street" string="Address"/>
447 <field name="street" placeholder="Street..."/>
448 <field name="street2"/>
450 <field name="zip" class="oe_form_inline" placeholder="ZIP"/>
451 <field name="city" class="oe_form_inline" placeholder="City"/>
453 <field name="state_id" placeholder="State"/>
454 <field name="country_id" placeholder="Country"/>
459 <field name="contact_name" />
460 <field name="function" />
461 <field domain="[('domain', '=', 'contact')]" name="title"/>
462 <field name="mobile"/>
466 <group string="Categorization">
467 <field name="type_id" widget="selection"/>
468 <field name="channel_id" widget="selection"/>
470 <group string="Mailings">
471 <field name="opt_in" on_change="on_change_opt_in(opt_in)"/>
472 <field name="opt_out" on_change="on_change_opt_out(opt_out)"/>
474 <group string="Misc">
475 <field name="active"/>
476 <field name="day_open" groups="base.group_no_one"/>
477 <field name="day_close" groups="base.group_no_one"/>
478 <field name="referred"/>
480 <group string="References">
489 <field name="message_ids" widget="ThreadView"/>
495 <!-- Opportunities Tree View -->
496 <record model="ir.ui.view" id="crm_case_tree_view_oppor">
497 <field name="name">Opportunities Tree</field>
498 <field name="model">crm.lead</field>
499 <field name="type">tree</field>
500 <field name="arch" type="xml">
501 <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)">
502 <field name="needaction_pending" invisible="1"/>
503 <field name="date_deadline" invisible="1"/>
504 <field name="create_date" groups="base.group_no_one"/>
505 <field name="name" string="Opportunity"/>
506 <field name="partner_id" string="Customer"/>
507 <field name="country_id" invisible="context.get('invisible_country', True)" />
508 <field name="date_action"/>
509 <field name="title_action" />
510 <field name="channel_id" invisible="1"/>
511 <field name="type_id" invisible="1"/>
512 <field name="subjects" invisible="1"/>
513 <field name="stage_id"/>
514 <field name="planned_revenue" sum="Expected Revenues"/>
515 <field name="probability" widget="progressbar" avg="Avg. of Probability"/>
516 <field name="section_id" invisible="context.get('invisible_section', True)" />
517 <field name="user_id"/>
518 <field name="priority" invisible="1"/>
519 <field name="categ_id" invisible="1"/>
520 <field name="state" groups="base.group_no_one"/>
526 <!-- Opportunities Search View -->
527 <record id="view_crm_case_opportunities_filter" model="ir.ui.view">
528 <field name="name">CRM - Opportunities Search</field>
529 <field name="model">crm.lead</field>
530 <field name="type">search</field>
531 <field name="arch" type="xml">
532 <search string="Search Opportunities">
533 <filter icon="terp-check"
534 string="New" help="New Opportunities"
535 domain="[('state','=','draft')]"/>
536 <filter icon="terp-camera_test"
537 string="Open" help="Open Opportunities"
538 domain="[('state','=','open')]"/>
539 <filter icon="terp-gtk-media-pause"
540 string="Pending" help="Pending Opportunities"
541 domain="[('state','=','pending')]"/>
542 <separator orientation="vertical"/>
543 <field name="name" string="Opportunity / Customer"
544 filter_domain="['|','|','|',('partner_id','ilike',self),('partner_name','ilike',self),('email_from','ilike',self),('name', 'ilike', self)]"/>
545 <field name="user_id">
546 <filter string="Unassigned Opportunities"
547 icon="terp-personal-"
548 domain="[('user_id','=', False)]"
549 help="Unassigned Opportunities" />
551 <field name="country"/>
552 <field name="partner_id"/>
553 <field name="section_id"
554 context="{'invisible_section': False, 'default_section_id': self}">
555 <filter string="My Sales Team(s)" icon="terp-personal+"
556 domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
557 context="{'invisible_section': False}"
558 help="My Sales Team(s)" />
559 <filter string="Show Sales Team"
560 icon="terp-personal+"
561 context="{'invisible_section': False}"
563 help="Show Sales Team"/>
566 <group expand="0" string="Group By..." colspan="16">
567 <filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}" />
568 <filter string="Team" help="Sales Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}"/>
569 <filter string="Customer" help="Partner" icon="terp-personal+" domain="[]" context="{'group_by':'partner_id'}"/>
570 <separator orientation="vertical" />
571 <filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}" />
572 <filter string="Priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}" />
573 <filter string="Category" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'categ_id'}" />
574 <filter string="Campaign" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'type_id'}"/>
575 <filter string="Channel" icon="terp-call-start" domain="[]" context="{'group_by':'channel_id'}" />
576 <filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
577 <separator orientation="vertical" />
578 <filter string="Creation" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
579 <filter string="Exp.Closing" icon="terp-go-month" help="Expected Closing" domain="[]" context="{'group_by':'date_deadline'}" />
585 <!-- crm.lead Opportunities Graph View -->
586 <record model="ir.ui.view" id="crm_case_graph_view_opportunity">
587 <field name="name">CRM - Opportunity Graph</field>
588 <field name="model">crm.lead</field>
589 <field name="type">graph</field>
590 <field name="arch" type="xml">
591 <graph string="Opportunity by Categories" type="bar" orientation="horizontal">
592 <field name="categ_id"/>
593 <field name="planned_revenue" operator="+"/>
594 <field name="state" group="True"/>