<openerp>
<data>
+ <!-- Read/Unread actions -->
+ <record id="actions_server_crm_lead_unread" model="ir.actions.server">
+ <field name="name">Mark unread</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_crm_lead"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_unread(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_crm_lead_unread" model="ir.values">
+ <field name="name">action_crm_lead_unread</field>
+ <field name="action_id" ref="actions_server_crm_lead_unread"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_lead_unread'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_crm_lead" />
+ <field name="model">crm.lead</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
+ <record id="actions_server_crm_lead_read" model="ir.actions.server">
+ <field name="name">Mark read</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_crm_lead"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_read(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_crm_lead_read" model="ir.values">
+ <field name="name">action_crm_lead_read</field>
+ <field name="action_id" ref="actions_server_crm_lead_read"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_lead_read'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_crm_lead" />
+ <field name="model">crm.lead</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
<!--
CRM CASE STAGE
-->
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Stage Search">
- <field name="name"/>
+ <field name="name" string="Stage Name"/>
+ <separator orientation="vertical"/>
<field name="state"/>
<field name="type"/>
</search>
<!--
LEADS
-->
+ <act_window
+ id="act_crm_opportunity_crm_phonecall_new"
+ name="Phone calls"
+ groups="base.group_sale_salesman"
+ res_model="crm.phonecall"
+ view_mode="tree,calendar,form"
+ context="{'default_duration': 1.0 ,'default_opportunity_id': active_id,'default_partner_phone':phone}"
+ domain="[('opportunity_id', '=', active_id)]"
+ view_type="form"/>
+
+ <act_window
+ id="act_crm_opportunity_crm_meeting_new"
+ name="Meetings"
+ res_model="crm.meeting"
+ view_mode="tree,form,calendar"
+ context="{'default_duration': 4.0, 'default_opportunity_id': active_id}"
+ domain="[('opportunity_id', '=', active_id)]"
+ view_type="form"/>
+
<!-- CRM Lead Form View -->
<record model="ir.ui.view" id="crm_case_form_view_leads">
<form string="Leads Form" version="7.0">
<header>
<button name="%(crm.action_crm_lead2opportunity_partner)d" string="Convert to Opportunity" type="action"
- states="draft,open,pending" help="Convert to Opportunity" class="oe_form_button_active_flow"/>
- <button name="case_escalate" string="Escalate" type="object" class="oe_form_button_return_flow"
+ states="draft,open,pending" help="Convert to Opportunity" class="oe_highlight"/>
+ <button name="case_escalate" string="Escalate" type="object"
states="draft,open,pending"/>
<button name="case_reset" string="Reset" type="object"
states="cancel"/>
on_change="onchange_stage_id(stage_id)"/>
</header>
<sheet>
- <label for="name" class="oe_form_readonly_hidden" string="Lead Description"/>
- <h1><field name="name" placeholder="Describe the lead..."/></h1>
+ <div class="oe_right oe_button_box" name="buttons">
+ <button type="action"
+ name="%(act_crm_opportunity_crm_meeting_new)d"
+ string="Meetings" />
+
+ <button type="action"
+ name="%(act_crm_opportunity_crm_phonecall_new)d"
+ string="Phone Calls" />
+ </div>
+ <div class="oe_title">
+ <label for="name" class="oe_edit_only" string="Lead Description"/>
+ <h1><field name="name" placeholder="Describe the lead..."/></h1>
+ </div>
<group>
<group>
<field name="user_id" />
<field name="street" placeholder="Street..."/>
<field name="street2"/>
<div>
- <field name="zip" class="oe_form_inline" placeholder="ZIP"/>
- <field name="city" class="oe_form_inline" placeholder="City"/>
+ <field name="zip" class="oe_inline" placeholder="ZIP"/>
+ <field name="city" class="oe_inline" placeholder="City"/>
</div>
<field name="state_id" placeholder="State"/>
<field name="country_id" placeholder="Country"/>
</div>
</group>
<group>
- <field name="contact_name" />
+ <label for="contact_name" />
+ <div>
+ <field name="contact_name" class="oe_inline"/>,
+ <field name="title" placeholder="Title" domain="[('domain', '=', 'contact')]" class="oe_inline"/>
+ </div>
<field name="email_from" widget="email"/>
<field name="function" />
- <field domain="[('domain', '=', 'contact')]" name="title"/>
<field name="phone"/>
<field name="mobile"/>
<field name="fax"/>
</page>
</notebook>
</sheet>
- <div class="oe_form_bottom">
- <field name="message_ids" widget="ThreadView"/>
+ <div class="oe_chatter">
+ <field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
<field name="model">crm.lead</field>
<field name="type">tree</field>
<field name="arch" type="xml">
- <tree string="Leads" fonts="bold:needaction_pending==True" colors="blue:state=='pending';grey:state in ('cancel', 'done')">
- <field name="needaction_pending" invisible="1"/>
+ <tree string="Leads" fonts="bold:needaction_pending==True" colors="grey:state in ('cancel', 'done')">
<field name="date_deadline" invisible="1"/>
<field name="create_date" groups="base.group_no_one"/>
<field name="name"/>
<field name="referred" invisible="1"/>
<field name="channel_id" invisible="1"/>
<field name="subjects" invisible="1"/>
+ <field name="needaction_pending" invisible="1"/>
</tree>
</field>
</record>
<field name="user_email"/>
<field name="user_id"/>
<field name="partner_address_email"/>
+ <field name="message_summary"/>
+ <field name="needaction_pending"/>
<templates>
<t t-name="lead_details">
<ul class="oe_kanban_tooltip">
</ul>
</t>
<t t-name="kanban-box">
- <div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card">
- <a class="oe_kanban_menuaction oe_i">B</a>
- <ul class="oe_kanban_menu">
- <li><a type="edit" >Edit...</a></li>
- <li><a type="delete">Delete</a></li>
- <li><a name="%(mail.action_email_compose_message_wizard)d" type="action">Send New Email</a></li>
- <li><a name="%(opportunity2phonecall_act)d" type="action">Log Call</a></li>
- <li><a name="action_makeMeeting" type="object">Schedule Meeting</a></li>
- <li><a name="%(crm.action_crm_add_note)d" context="{'model': 'crm.lead' }" type="action">Add Internal Note</a></li>
- <li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
- </ul>
+ <div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click">
+ <div class="oe_dropdown_toggle oe_dropdown_kanban">
+ <span class="oe_e">í</span>
+ <ul class="oe_dropdown_menu">
+ <li><a type="edit" >Edit...</a></li>
+ <li><a type="delete">Delete</a></li>
+ <li><a name="%(mail.action_email_compose_message_wizard)d" type="action">Send Email</a></li>
+ <li><a name="%(opportunity2phonecall_act)d" type="action">Log Call</a></li>
+ <li><a name="action_makeMeeting" type="object">Schedule Meeting</a></li>
+ <li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
+ </ul>
+ </div>
<div class="oe_kanban_content">
<div>
<b><field name="name"/></b>
<field name="partner_id"/>
</div>
<div style="padding-left: 0.5em">
- <i>
- <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>
- <span t-attf-class="#{red || ''}">
- <field name="date_action"/>
- </span>
- <t t-if="record.date_action.raw_value"> : </t>
- <field name="title_action"/>
- </i>
+ <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>
+ <span t-attf-class="#{red || ''}"><field name="date_action"/></span>
+ <t t-if="record.date_action.raw_value"> : </t>
+ <field name="title_action"/>
</div>
- <div class="oe_right">
- <a t-if="record.priority.raw_value == 1" icon="star-on" type="object" name="set_normal_priority"/>
- <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);"/>
+ <div class="oe_kanban_bottom_right">
+ <a t-if="record.priority.raw_value == 1" type="object" name="set_normal_priority" class="oe_e oe_star_on">7</a>
+ <a t-if="record.priority.raw_value != 1" type="object" name="set_high_priority" class="oe_e oe_star_off">7</a>
<!--
<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>
<span t-attf-class="oe_kanban_status #{red}"> </span>
<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"/>
</div>
<div class="oe_kanban_footer_left">
+ <t t-if="record.needaction_pending.raw_value"><span class="oe_kanban_mail_new">New</span></t>
+ <t t-raw="record.message_summary.raw_value"/>
</div>
</div>
<div class="oe_clear"></div>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Leads">
+ <filter icon="terp-mail-message-new"
+ string="Inbox" help="Unread messages"
+ name="needaction_pending"
+ domain="[('needaction_pending','=',True)]"/>
+ <field name="name" string="Lead / Customer" filter_domain="['|','|',('partner_name','ilike',self),('email_from','ilike',self),('name','ilike',self)]"/>
+ <!-- subjects is not set as store=True so, it is placed outside filter_domain-->
+ <field name="subjects"/>
+ <separator orientation="vertical"/>
+ <field name="create_date"/>
+ <separator orientation="vertical"/>
<filter icon="terp-check"
string="New"
name="new" help="New Leads"
string="Open"
name="open"
domain="[('state','=','open')]"/>
- <filter icon="terp-gtk-media-pause"
- string="Pending"
- name="pending"
- domain="[('state','=','pending')]"/>
-
- <separator orientation="vertical"/>
- <filter icon="terp-go-today" string="Today"
- domain="[('create_date','<', time.strftime('%%Y-%%m-%%d 23:59:59')), ('create_date','>=', time.strftime('%%Y-%%m-%%d 00:00:00'))]"
- help="Todays' Leads" />
- <filter icon="terp-go-week" string="7 Days"
- help="Leads creating during last 7 days"
- 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'))]"
- />
- <separator orientation="vertical"/>
- <field name="name" string="Lead / Customer"
- filter_domain="['|','|',('partner_name','ilike',self),('email_from','ilike',self),('name','ilike',self)]"/>
- <field name="user_id">
- <filter icon="terp-personal-"
+ <filter string="Unassigned Leads"
+ icon="terp-personal-"
domain="[('user_id','=', False)]"
help="Unassigned Leads" />
- </field>
- <field name="subjects"/>
- <field name="section_id" widget="selection"
- context="{'invisible_section': False}">
- <filter icon="terp-personal+"
+ <filter string="Leads Assigned to Me or My Team(s)"
+ icon="terp-personal+"
context="{'invisible_section': False}"
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
- help="My Sales Team(s)"/>
- <filter icon="terp-personal+"
- context="{'invisible_section': False}"
- domain="[]"
- help="Show Sales Team"/>
- </field>
+ help="Leads that are assigned to one of the sale teams I manage, or to me"/>
+ <separator orientation="vertical"/>
+ <field name="user_id"/>
+ <field name="section_id" widget="selection"
+ context="{'invisible_section': False}"/>
+ <field name="country_id" context="{'invisible_country': False}"/>
<separator orientation="vertical"/>
- <field name="country_id" context="{'invisible_country': False}">
- <filter icon="terp-personal+" context="{'invisible_country': False}" help="Show countries"/>
- </field>
<newline/>
<group expand="0" string="Group By...">
<filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Creation" help="Create date" icon="terp-go-month"
domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
</group>
+ <separator orientation="vertical"/>
+ <group string="Display">
+ <filter string="Show Countries" icon="terp-personal+" context="{'invisible_country': False}" help="Show Countries"/>
+ <filter string="Show Sales Team"
+ icon="terp-personal+"
+ context="{'invisible_section': False}"
+ domain="[]"
+ help="Show Sales Team"/>
+ </group>
</search>
</field>
</record>
<form string="Opportunities" version="7.0">
<header>
<button name="case_mark_won" string="Mark Won" type="object"
- states="open" class="oe_form_button_active_flow"/>
+ states="open" class="oe_highlight"/>
<button name="case_mark_won" string="Mark Won" type="object"
states="draft,pending"/>
- <button name="case_open" string="Open" type="object" class="oe_form_button_active_flow"
- states="draft,pending"/>
<button name="case_escalate" string="Escalate" type="object"
- states="open" class="oe_form_button_return_flow"/>
+ states="open" />
<button name="case_mark_lost" string="Mark Lost" type="object"
states="draft,open"/>
- <button name="case_reset" string="Reset to Draft" type="object"
- states="done,cancel"/>
<button name="case_cancel" string="Cancel" type="object"
states="draft"/>
- <button name="stage_previous" string="Previous" type="object" class="oe_form_button_active_flow"
- states="open" icon="gtk-go-back" context="{'stage_type': 'opportunity'}"/>
- <button name="stage_next" string="Next" type="object" class="oe_form_button_active_flow"
- states="open" icon="gtk-go-forward" context="{'stage_type': 'opportunity'}"/>
<field name="stage_id" widget="statusbar"
- on_change="onchange_stage_id(stage_id)"/>
+ on_change="onchange_stage_id(stage_id)" clickable="1"/>
</header>
<sheet>
- <div class="oe_right oe_form_button_box">
+ <div class="oe_right oe_button_box">
<button string="Schedule/Log Call"
name="%(opportunity2phonecall_act)d"
type="action"/>
name="action_makeMeeting"
type="object"/>
</div>
- <div class="oe_form_title">
- <label for="name" class="oe_form_readonly_hidden"/>
+ <div class="oe_title">
+ <label for="name" class="oe_edit_only"/>
<h1><field name="name"/></h1>
-
- <label for="planned_revenue" class="oe_form_readonly_hidden"/>
+ <label for="planned_revenue" class="oe_edit_only"/>
<h2>
- <field name="planned_revenue" class="oe_form_inline"/>
- <field name="company_currency" class="oe_form_readonly_hidden oe_form_inline"/> at
- <field name="probability" class="oe_form_inline"/> %% success rate
+ <field name="planned_revenue" class="oe_inline"/>
+ <field name="company_currency" class="oe_inline"/> at
+ <field name="probability" class="oe_inline"/>%% success rate
</h2>
</div>
<group>
<label for="title_action"/>
<div>
<field name="date_action" nolabel="1"/> -
- <field name="title_action" class="oe_form_inline" nolabel="1" placeholder="Call for proposal"/>
+ <field name="title_action" class="oe_inline" nolabel="1" placeholder="Call for proposal"/>
</div>
<field name="date_deadline"/>
<field name="priority"/>
<div>
<field name="street" placeholder="Street..."/>
<field name="street2"/>
- <div>
- <field name="zip" class="oe_form_inline" placeholder="ZIP"/>
- <field name="city" class="oe_form_inline" placeholder="City"/>
+ <div class="address_format">
+ <field name="city" placeholder="City" style="width: 40%%"/>
+ <field name="state_id" class="oe_no_button" placeholder="State" style="width: 24%%"/>
+ <field name="zip" placeholder="ZIP" style="width: 34%%"/>
</div>
- <field name="state_id" placeholder="State"/>
<field name="country_id" placeholder="Country"/>
</div>
</group>
<group>
- <field name="contact_name" />
+ <label for="contact_name" />
+ <div>
+ <field name="contact_name" class="oe_inline"/>
+ <field name="title" placeholder="Title" domain="[('domain', '=', 'contact')]" class="oe_inline oe_no_button"/>
+ </div>
<field name="function" />
- <field domain="[('domain', '=', 'contact')]" name="title"/>
<field name="mobile"/>
<field name="fax"/>
</group>
</page>
</notebook>
</sheet>
- <footer>
- <field name="message_ids" widget="ThreadView"/>
- </footer>
+ <div class="oe_chatter">
+ <field name="message_ids" widget="mail_thread"/>
+ </div>
</form>
</field>
</record>
<field name="model">crm.lead</field>
<field name="type">tree</field>
<field name="arch" type="xml">
- <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)">
- <field name="needaction_pending" invisible="1"/>
+ <tree string="Opportunities" fonts="bold:needaction_pending==True" colors="gray:state in ('cancel', 'done');red:date_deadline and (date_deadline < current_date)">
<field name="date_deadline" invisible="1"/>
<field name="create_date" groups="base.group_no_one"/>
<field name="name" string="Opportunity"/>
<field name="priority" invisible="1"/>
<field name="categ_id" invisible="1"/>
<field name="state" groups="base.group_no_one"/>
+ <field name="needaction_pending" invisible="1"/>
</tree>
</field>
</record>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Opportunities">
+ <filter icon="terp-mail-message-new"
+ string="Inbox" help="Unread messages"
+ name="needaction_pending"
+ domain="[('needaction_pending','=',True)]"/>
+ <field name="name" string="Opportunity / Customer"
+ filter_domain="['|','|','|',('partner_id','ilike',self),('partner_name','ilike',self),('email_from','ilike',self),('name', 'ilike', self)]"/>
+ <separator orientation="vertical"/>
<filter icon="terp-check"
- string="New" help="New Opportunities"
+ string="New" help="New Opportunities"
name="new"
domain="[('state','=','draft')]"/>
<filter icon="terp-camera_test"
- string="Open" help="Open Opportunities"
+ string="Open" help="Open Opportunities"
name="open"
domain="[('state','=','open')]"/>
- <filter icon="terp-gtk-media-pause"
- string="Pending" help="Pending Opportunities"
- name="pending"
- domain="[('state','=','pending')]"/>
- <separator orientation="vertical"/>
- <field name="name" string="Opportunity / Customer"
- filter_domain="['|','|','|',('partner_id','ilike',self),('partner_name','ilike',self),('email_from','ilike',self),('name', 'ilike', self)]"/>
- <field name="user_id">
- <filter icon="terp-personal-"
+ <filter string="Unassigned Opportunities"
+ icon="terp-personal-"
domain="[('user_id','=', False)]"
help="Unassigned Opportunities" />
- </field>
- <field name="section_id"
- context="{'invisible_section': False, 'default_section_id': self}">
- <filter icon="terp-personal+"
+ <filter string="Opportunities Assigned to Me or My Team(s)" icon="terp-personal+"
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
context="{'invisible_section': False}"
- help="My Sales Team(s)" />
- <filter icon="terp-personal+"
- context="{'invisible_section': False}"
- domain="[]"
- help="Show Sales Team"/>
- </field>
+ help="Opportunities that are assigned to either me or one of the sale teams I manage" />
+ <separator orientation="vertical"/>
+ <field name="user_id"/>
+ <field name="country_id"/>
+ <field name="partner_id"/>
+ <field name="section_id"
+ context="{'invisible_section': False, 'default_section_id': self}"/>
<newline/>
<group expand="0" string="Group By..." colspan="16">
<filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}" />
<filter string="Creation" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
<filter string="Exp.Closing" icon="terp-go-month" help="Expected Closing" domain="[]" context="{'group_by':'date_deadline'}" />
</group>
+ <group string="Display">
+ <filter string="Show Sales Team"
+ icon="terp-personal+"
+ context="{'invisible_section': False}"
+ domain="[]"
+ help="Show Sales Team"/>
+ </group>
</search>
</field>
</record>