summaryrefslogtreecommitdiff
path: root/addons/crm
diff options
context:
space:
mode:
authorVijaykumar Baladaniya <vba@tinyerp.com>2012-07-09 18:31:13 +0530
committerVijaykumar Baladaniya <vba@tinyerp.com>2012-07-09 18:31:13 +0530
commitbe2e95656aaa113addea2b510fcdcf2f890eaaa4 (patch)
treeabcb3dd4ef350a1b8ad0eaffdd2b9a1cb91521af /addons/crm
parentb982ea278b33132def3927417b7a854b98b5028a (diff)
parent3925f76ce85854e5d4834902a05f57bcfc5ace85 (diff)
[MERGE]merged with trunk-survey-layout-tta
bzr revid: vba@tinyerp.com-20120709130113-3lchipgil9oqpglg
Diffstat (limited to 'addons/crm')
-rw-r--r--addons/crm/crm_action_rule.py2
-rw-r--r--addons/crm/crm_action_rule_view.xml2
-rw-r--r--addons/crm/crm_data.xml2
-rw-r--r--addons/crm/crm_demo.xml8
-rw-r--r--addons/crm/crm_lead.py145
-rw-r--r--addons/crm/crm_lead_demo.xml38
-rw-r--r--addons/crm/crm_lead_view.xml108
-rw-r--r--addons/crm/crm_meeting.py10
-rw-r--r--addons/crm/crm_meeting_demo.xml170
-rw-r--r--addons/crm/crm_meeting_menu.xml11
-rw-r--r--addons/crm/crm_meeting_shortcut_data.xml12
-rw-r--r--addons/crm/crm_meeting_view.xml88
-rw-r--r--addons/crm/crm_phonecall.py8
-rw-r--r--addons/crm/crm_phonecall_demo.xml184
-rw-r--r--addons/crm/crm_phonecall_view.xml69
-rw-r--r--addons/crm/crm_report.xml4
-rw-r--r--addons/crm/crm_report_view.xml26
-rw-r--r--addons/crm/crm_segmentation.py4
-rw-r--r--addons/crm/crm_view.xml15
-rw-r--r--addons/crm/i18n/crm.pot8
-rw-r--r--addons/crm/res_config.py2
-rw-r--r--addons/crm/res_config_view.xml33
-rw-r--r--addons/crm/res_partner_view.xml90
-rw-r--r--addons/crm/wizard/crm_add_note_view.xml11
-rw-r--r--addons/crm/wizard/crm_lead_to_opportunity_view.xml123
-rw-r--r--addons/crm/wizard/crm_lead_to_partner_view.xml7
-rw-r--r--addons/crm/wizard/crm_merge_opportunities_view.xml5
-rw-r--r--addons/crm/wizard/crm_opportunity_to_phonecall_view.xml9
-rw-r--r--addons/crm/wizard/crm_partner_to_opportunity_view.xml7
-rw-r--r--addons/crm/wizard/crm_phonecall_to_meeting_view.xml8
-rw-r--r--addons/crm/wizard/crm_phonecall_to_opportunity_view.xml5
-rw-r--r--addons/crm/wizard/crm_phonecall_to_partner_view.xml13
-rw-r--r--addons/crm/wizard/crm_phonecall_to_phonecall_view.xml10
33 files changed, 702 insertions, 535 deletions
diff --git a/addons/crm/crm_action_rule.py b/addons/crm/crm_action_rule.py
index ec489ff4d14..db77719a85b 100644
--- a/addons/crm/crm_action_rule.py
+++ b/addons/crm/crm_action_rule.py
@@ -59,7 +59,7 @@ class base_action_rule(osv.osv):
else:
reply_to = emailfrom
if not emailfrom:
- raise osv.except_osv(_('Error!'), _("No E-Mail Found for your Company address!"))
+ raise osv.except_osv(_('Error!'), _("No Email Found for your Company address!"))
return mail_message.schedule_with_attach(cr, uid, emailfrom, emails, name, body, model=obj._name, reply_to=reply_to, res_id=obj.id)
def do_check(self, cr, uid, action, obj, context=None):
diff --git a/addons/crm/crm_action_rule_view.xml b/addons/crm/crm_action_rule_view.xml
index 21bbef50e50..eccfe380223 100644
--- a/addons/crm/crm_action_rule_view.xml
+++ b/addons/crm/crm_action_rule_view.xml
@@ -27,7 +27,7 @@
<group name="partner" position="after">
<group col="2" colspan="2">
<separator colspan="4" string="Condition Case Fields"/>
- <field name="trg_section_id" select="1" widget="selection"/>
+ <field name="trg_section_id" widget="selection"/>
<field name="trg_categ_id"/>
</group>
</group>
diff --git a/addons/crm/crm_data.xml b/addons/crm/crm_data.xml
index bab3e4bca5f..4ca40a691f5 100644
--- a/addons/crm/crm_data.xml
+++ b/addons/crm/crm_data.xml
@@ -11,7 +11,7 @@
<field name="name">direct</field>
</record>
<record model="crm.case.channel">
- <field name="name">e-mail</field>
+ <field name="name">email</field>
</record>
<record model="crm.case.section" id="section_sales_department">
<field name="name">Sales Department</field>
diff --git a/addons/crm/crm_demo.xml b/addons/crm/crm_demo.xml
index f345d86d030..e98b88e60fa 100644
--- a/addons/crm/crm_demo.xml
+++ b/addons/crm/crm_demo.xml
@@ -19,10 +19,10 @@
</record>
<record model="crm.segmentation" id="crm_segmentation0">
- <field name="name">OpenERP partners</field>
- <field name="exclusif">True</field>
- <field name="categ_id" ref="base.res_partner_category_2"/>
- </record>
+ <field name="name">OpenERP partners</field>
+ <field name="exclusif">True</field>
+ <field name="categ_id" ref="base.res_partner_category_2"/>
+ </record>
</data>
</openerp>
diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py
index addd26785a1..69d390ff04d 100644
--- a/addons/crm/crm_lead.py
+++ b/addons/crm/crm_lead.py
@@ -40,7 +40,7 @@ class crm_lead(base_stage, osv.osv):
_name = "crm.lead"
_description = "Lead/Opportunity"
_order = "priority,date_action,id desc"
- _inherit = ['ir.needaction_mixin', 'mail.thread','res.partner']
+ _inherit = ['ir.needaction_mixin', 'mail.thread']
def _get_default_section_id(self, cr, uid, context=None):
""" Gives default section by checking if present in the context """
@@ -193,7 +193,7 @@ class crm_lead(base_stage, osv.osv):
'active': fields.boolean('Active', required=False),
'date_action_last': fields.datetime('Last Action', readonly=1),
'date_action_next': fields.datetime('Next Action', readonly=1),
- 'email_from': fields.char('Email', size=128, help="E-mail address of the contact", select=1),
+ 'email_from': fields.char('Email', size=128, help="Email address of the contact", select=1),
'section_id': fields.many2one('crm.case.section', 'Sales Team', \
select=True, help='When sending mails, the default email address is taken from the sales team.'),
'create_date': fields.datetime('Creation Date' , readonly=True),
@@ -245,6 +245,20 @@ class crm_lead(base_stage, osv.osv):
'company_currency': fields.related('company_id', 'currency_id', 'symbol', type='char', string='Company Currency', readonly=True),
'user_email': fields.related('user_id', 'user_email', type='char', string='User Email', readonly=True),
'user_login': fields.related('user_id', 'login', type='char', string='User Login', readonly=True),
+
+ # Fields for address, due to separation from crm and res.partner
+ 'street': fields.char('Street', size=128),
+ 'street2': fields.char('Street2', size=128),
+ 'zip': fields.char('Zip', change_default=True, size=24),
+ 'city': fields.char('City', size=128),
+ 'state_id': fields.many2one("res.country.state", 'State', domain="[('country_id','=',country_id)]"),
+ 'country_id': fields.many2one('res.country', 'Country'),
+ 'phone': fields.char('Phone', size=64),
+ 'fax': fields.char('Fax', size=64),
+ 'mobile': fields.char('Mobile', size=64),
+ 'function': fields.char('Function', size=128),
+ 'title': fields.many2one('res.partner.title', 'Title'),
+ 'company_id': fields.many2one('res.company', 'Company', select=1),
}
_defaults = {
@@ -259,14 +273,6 @@ class crm_lead(base_stage, osv.osv):
'color': 0,
}
- def get_needaction_user_ids(self, cr, uid, ids, context=None):
- result = dict.fromkeys(ids, [])
- for obj in self.browse(cr, uid, ids, context=context):
- # salesman must perform an action when in draft mode
- if obj.state == 'draft' and obj.user_id:
- result[obj.id] = [obj.user_id.id]
- return result
-
def create(self, cr, uid, vals, context=None):
obj_id = super(crm_lead, self).create(cr, uid, vals, context)
self.create_send_note(cr, uid, [obj_id], context=context)
@@ -756,64 +762,6 @@ class crm_lead(base_stage, osv.osv):
'type': 'ir.actions.act_window',
}
-
- def message_new(self, cr, uid, msg, custom_values=None, context=None):
- """Automatically calls when new email message arrives"""
- res_id = super(crm_lead, self).message_new(cr, uid, msg, custom_values=custom_values, context=context)
- subject = msg.get('subject') or _("No Subject")
- body = msg.get('body_text')
-
- msg_from = msg.get('from')
- priority = msg.get('priority')
- vals = {
- 'name': subject,
- 'email_from': msg_from,
- 'email_cc': msg.get('cc'),
- 'description': body,
- 'user_id': False,
- }
- if priority:
- vals['priority'] = priority
- vals.update(self.message_partner_by_email(cr, uid, msg.get('from', False)))
- self.write(cr, uid, [res_id], vals, context)
- return res_id
-
- def message_update(self, cr, uid, ids, msg, vals=None, default_act='pending', context=None):
- if isinstance(ids, (str, int, long)):
- ids = [ids]
- if vals == None:
- vals = {}
- super(crm_lead, self).message_update(cr, uid, ids, msg, context=context)
-
- if msg.get('priority') in dict(crm.AVAILABLE_PRIORITIES):
- vals['priority'] = msg.get('priority')
- maps = {
- 'cost':'planned_cost',
- 'revenue': 'planned_revenue',
- 'probability':'probability'
- }
- vls = {}
- for line in msg['body_text'].split('\n'):
- line = line.strip()
- res = tools.misc.command_re.match(line)
- if res and maps.get(res.group(1).lower()):
- key = maps.get(res.group(1).lower())
- vls[key] = res.group(2).lower()
- vals.update(vls)
-
- # Unfortunately the API is based on lists
- # but we want to update the state based on the
- # previous state, so we have to loop:
- for case in self.browse(cr, uid, ids, context=context):
- values = dict(vals)
- if case.state in CRM_LEAD_PENDING_STATES:
- #re-open
- values.update(state=crm.AVAILABLE_STATES[1][0])
- if not case.date_open:
- values['date_open'] = time.strftime(tools.DEFAULT_SERVER_DATETIME_FORMAT)
- res = self.write(cr, uid, [case.id], values, context=context)
- return res
-
def action_makeMeeting(self, cr, uid, ids, context=None):
"""
This opens Meeting's calendar view to schedule meeting on current Opportunity
@@ -868,19 +816,66 @@ class crm_lead(base_stage, osv.osv):
if stage.on_change:
vals['probability'] = stage.probability
return super(crm_lead,self).write(cr, uid, ids, vals, context)
-
+
+ # ----------------------------------------
+ # Mail Gateway
+ # ----------------------------------------
+
+ def message_new(self, cr, uid, msg, custom_values=None, context=None):
+ """ Overrides mail_thread message_new that is called by the mailgateway
+ through message_process.
+ This override updates the document according to the email.
+ """
+ if custom_values is None: custom_values = {}
+ custom_values.update({
+ 'name': msg.get('subject') or _("No Subject"),
+ 'description': msg.get('body_text'),
+ 'email_from': msg.get('from'),
+ 'email_cc': msg.get('cc'),
+ 'user_id': False,
+ })
+ if msg.get('priority') in dict(crm.AVAILABLE_PRIORITIES):
+ custom_values['priority'] = msg.get('priority')
+ custom_values.update(self.message_partner_by_email(cr, uid, msg.get('from', False), context=context))
+ return super(crm_lead, self).message_new(cr, uid, msg, custom_values=custom_values, context=context)
+
+ def message_update(self, cr, uid, ids, msg, update_vals=None, context=None):
+ """ Overrides mail_thread message_update that is called by the mailgateway
+ through message_process.
+ This method updates the document according to the email.
+ """
+ if isinstance(ids, (str, int, long)):
+ ids = [ids]
+ if update_vals is None: update_vals = {}
+
+ if msg.get('priority') in dict(crm.AVAILABLE_PRIORITIES):
+ vals['priority'] = msg.get('priority')
+ maps = {
+ 'cost':'planned_cost',
+ 'revenue': 'planned_revenue',
+ 'probability':'probability',
+ }
+ for line in msg.get('body_text', '').split('\n'):
+ line = line.strip()
+ res = tools.misc.command_re.match(line)
+ if res and maps.get(res.group(1).lower()):
+ key = maps.get(res.group(1).lower())
+ vals[key] = res.group(2).lower()
+
+ return super(crm_lead, self).message_update(cr, uid, ids, msg, update_vals=update_vals, context=context)
+
# ----------------------------------------
# OpenChatter methods and notifications
# ----------------------------------------
def message_get_subscribers(self, cr, uid, ids, context=None):
- sub_ids = self.message_get_subscribers_ids(cr, uid, ids, context=context)
- # add salesman to the subscribers
+ """ Override to add the salesman. """
+ user_ids = super(crm_lead, self).message_get_subscribers(cr, uid, ids, context=context)
for obj in self.browse(cr, uid, ids, context=context):
- if obj.user_id:
- sub_ids.append(obj.user_id.id)
- return self.pool.get('res.users').read(cr, uid, sub_ids, context=context)
-
+ if obj.user_id and not obj.user_id.id in user_ids:
+ user_ids.append(obj.user_id.id)
+ return user_ids
+
def stage_set_send_note(self, cr, uid, ids, stage_id, context=None):
""" Override of the (void) default notification method. """
stage_name = self.pool.get('crm.case.stage').name_get(cr, uid, [stage_id], context=context)[0][1]
diff --git a/addons/crm/crm_lead_demo.xml b/addons/crm/crm_lead_demo.xml
index 8fc6beabe8b..cbb5e0d8bb9 100644
--- a/addons/crm/crm_lead_demo.xml
+++ b/addons/crm/crm_lead_demo.xml
@@ -1,7 +1,10 @@
<?xml version="1.0"?>
<openerp>
- <data>
- <!-- Demo Leads -->
+ <data noupdate="1">
+ <!--
+ Demo Leads
+ -->
+
<record id="crm_case_itisatelesalescampaign0" model="crm.lead">
<field name="type_id" ref="crm.type_lead1"/>
<field eval="'3'" name="priority"/>
@@ -21,7 +24,6 @@
<field eval="'Plan to Attend a Training'" name="name"/>
<field eval="'0033 769 703-274'" name="phone"/>
</record>
-
<record id="crm_case_electonicgoodsdealer0" model="crm.lead">
<field name="type_id" ref="crm.type_lead7"/>
<field eval="'4'" name="priority"/>
@@ -76,7 +78,6 @@
<field eval="'(514) 698-4118'" name="phone"/>
<field eval="'hmc@thgascompany.com'" name="email_from"/>
</record>
-
<record id="crm_case_itdeveloper0" model="crm.lead">
<field name="type_id" ref="crm.type_lead4"/>
<field eval="'3'" name="priority"/>
@@ -96,7 +97,6 @@
<field eval="'(855) 924-4364'" name="phone"/>
<field eval="'helle@stonageit.be'" name="email_from"/>
</record>
-
<record id="crm_case_mgroperations0" model="crm.lead">
<field eval="1" name="active"/>
<field name="type_id" ref="crm.type_lead3"/>
@@ -209,10 +209,21 @@
<!-- Call Function to Cancel the leads (set as Dead) -->
<function model="crm.lead" name="case_cancel"
- eval="[ref('crm_case_company_partnership0'), ref('crm_case_vpoperations0'), ref('crm_case_developingwebapplications0'), ref('crm_case_webvisitor0')], {'install_mode': True}"
+ eval="[ ref('crm_case_company_partnership0'), ref('crm_case_vpoperations0'),
+ ref('crm_case_developingwebapplications0'), ref('crm_case_webvisitor0')],
+ {'install_mode': True}"
+ />
+ <!-- Call Function to set the leads as Unread -->
+ <function model="crm.lead" name="message_mark_as_unread"
+ eval="[ ref('crm_case_itisatelesalescampaign0'), ref('crm_case_electonicgoodsdealer0'),
+ ref('crm_case_itdeveloper0'), ref('crm_case_employee0')], {}"
/>
- <!-- Demo Opportunities -->
+
+ <!--
+ Demo Opportunities
+ -->
+
<record id="crm_case_construstazunits0" model="crm.lead">
<field eval="60" name="probability"/>
<field eval="1" name="active"/>
@@ -263,7 +274,7 @@
<field name="categ_id" ref="crm.categ_oppor3"/>
<field name="stage_id" ref="crm.stage_lead3"/>
<field eval="'Interest in your Kitchen Design Project'" name="name"/>
- <field eval="'Send Catalogue by E-Mail'" name="title_action"/>
+ <field eval="'Send Catalogue by Email'" name="title_action"/>
<field eval="time.strftime('%Y-01-10')" name="date_action"/>
<field eval="time.strftime('%Y-02-23')" name="date_deadline"/>
<field name="partner_name">Lucie Vonck</field>
@@ -398,7 +409,7 @@
<field name="section_id" ref="crm.section_sales_department"/>
<field name="categ_id" ref="crm.categ_oppor5"/>
<field name="stage_id" ref="crm.stage_lead5"/>
- <field eval="'Need new design for my website'" name="name"/>
+ <field eval="'Need a new design for my website'" name="name"/>
<field eval="time.strftime('%Y-05-01')" name="date_action"/>
<field eval="time.strftime('%Y-06-30')" name="date_deadline"/>
<field eval="'info@opensides.be'" name="email_from"/>
@@ -469,7 +480,7 @@
<field name="section_id" ref="crm.section_sales_department"/>
<field name="categ_id" ref="crm.categ_oppor1"/>
<field name="stage_id" ref="crm.stage_lead4"/>
- <field eval="'Need customize the solution'" name="name"/>
+ <field eval="'Need to customize the solution'" name="name"/>
<field eval="'Conf call with technical service'" name="title_action"/>
<field name="partner_name">Thymbra</field>
<field name="street">Palermo, Capital Federal</field>
@@ -522,5 +533,12 @@
<field name="stage_id" ref="crm.stage_lead1"/>
<field eval="'Need more info about your pc2'" name="name"/>
</record>
+
+ <!-- Call Function to set the opportunities as Unread -->
+ <function model="crm.lead" name="message_mark_as_unread"
+ eval="[ ref('crm_case_rdroundfundingunits25'), ref('crm_case_unifliege'),
+ ref('crm_case_ericdubois4'), ref('crm_case_abcfuelcounits0')], {}"
+ />
+
</data>
</openerp>
diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml
index d9c65daaada..2579fa75cda 100644
--- a/addons/crm/crm_lead_view.xml
+++ b/addons/crm/crm_lead_view.xml
@@ -2,6 +2,43 @@
<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
-->
@@ -83,8 +120,8 @@
<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"/>
- <button name="case_escalate" string="Escalate" type="object"
+ 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"/>
@@ -134,10 +171,13 @@
</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"/>
@@ -172,9 +212,9 @@
</page>
</notebook>
</sheet>
- <div class="oe_bottom">
- <field name="message_ids" widget="ThreadView"/>
- </div>
+ <footer>
+ <field name="message_ids" widget="mail_thread"/>
+ </footer>
</form>
</field>
</record>
@@ -185,8 +225,7 @@
<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"/>
@@ -202,6 +241,7 @@
<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>
@@ -235,6 +275,8 @@
<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">
@@ -288,6 +330,8 @@
<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>
@@ -313,6 +357,10 @@
<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"/>
@@ -327,10 +375,6 @@
string="Open"
name="open"
domain="[('state','=','open')]"/>
- <filter icon="terp-gtk-media-pause"
- string="Pending"
- name="pending"
- domain="[('state','=','pending')]"/>
<filter string="Unassigned Leads"
icon="terp-personal-"
domain="[('user_id','=', False)]"
@@ -396,15 +440,17 @@
<button name="stage_next" string="Next" type="object"
states="open" icon="gtk-go-forward" context="{'stage_type': 'opportunity'}"/>
<button name="case_mark_won" string="Mark Won" type="object"
- states="draft,open,pending"/>
- <button name="case_open" string="Open" type="object"
+ 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_highlight"
states="draft,pending"/>
<button name="case_escalate" string="Escalate" type="object"
- states="open"/>
+ 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"/>
+ states="done,cancel" />
<button name="case_cancel" string="Cancel" type="object"
states="draft"/>
<field name="stage_id" widget="statusbar"
@@ -422,7 +468,6 @@
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1><field name="name"/></h1>
-
<label for="planned_revenue" class="oe_edit_only"/>
<h2>
<field name="planned_revenue" class="oe_inline"/>
@@ -489,9 +534,12 @@
</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="function" />
- <field domain="[('domain', '=', 'contact')]" name="title"/>
<field name="mobile"/>
<field name="fax"/>
</group>
@@ -521,7 +569,7 @@
</notebook>
</sheet>
<footer>
- <field name="message_ids" widget="ThreadView"/>
+ <field name="message_ids" widget="mail_thread"/>
</footer>
</form>
</field>
@@ -533,8 +581,7 @@
<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 &lt; current_date));gray:state in ('cancel', 'done');red:date_deadline and (date_deadline &lt; 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 &lt; current_date)">
<field name="date_deadline" invisible="1"/>
<field name="create_date" groups="base.group_no_one"/>
<field name="name" string="Opportunity"/>
@@ -553,6 +600,7 @@
<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>
@@ -565,21 +613,21 @@
<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')]"/>
<filter string="Unassigned Opportunities"
icon="terp-personal-"
domain="[('user_id','=', False)]"
@@ -590,7 +638,7 @@
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"/>
+ <field name="country_id"/>
<field name="partner_id"/>
<field name="section_id"
context="{'invisible_section': False, 'default_section_id': self}"/>
diff --git a/addons/crm/crm_meeting.py b/addons/crm/crm_meeting.py
index cadd813a959..37f03d80ec4 100644
--- a/addons/crm/crm_meeting.py
+++ b/addons/crm/crm_meeting.py
@@ -26,6 +26,7 @@ import logging
from osv import fields, osv
import tools
from tools.translate import _
+_logger = logging.getLogger(__name__)
class crm_lead(base_stage, osv.osv):
""" CRM Leads """
@@ -75,13 +76,6 @@ class crm_meeting(base_state, osv.Model):
self.create_send_note(cr, uid, [obj_id], context=context)
return obj_id
- def get_needaction_user_ids(self, cr, uid, ids, context=None):
- result = dict.fromkeys(ids, [])
- for obj in self.browse(cr, uid, ids, context=context):
- if (obj.state == 'draft' and obj.user_id):
- result[obj.id] = [obj.user_id.id]
- return result
-
def case_open(self, cr, uid, ids, context=None):
""" Confirms meeting """
res = super(crm_meeting, self).case_open(cr, uid, ids, context)
@@ -180,7 +174,7 @@ class res_users(osv.osv):
'user_id': user_id}, context=context)
except:
# Tolerate a missing shortcut. See product/product.py for similar code.
- logging.getLogger('orm').debug('Skipped meetings shortcut for user "%s"', data.get('name','<new'))
+ _logger.debug('Skipped meetings shortcut for user "%s"', data.get('name','<new'))
return user_id
res_users()
diff --git a/addons/crm/crm_meeting_demo.xml b/addons/crm/crm_meeting_demo.xml
index 7427afe1e58..3f209aeecd9 100644
--- a/addons/crm/crm_meeting_demo.xml
+++ b/addons/crm/crm_meeting_demo.xml
@@ -1,91 +1,91 @@
<?xml version="1.0"?>
<openerp>
- <data noupdate="1">
- <!--
- ((((((((((( Demo Cases )))))))))))
- -->
+ <data noupdate="1">
+ <!--
+ ((((((((((( Demo Cases )))))))))))
+ -->
- <!--For Meetings-->
- <record id="crm_case_followuponproposal0" model="crm.meeting">
- <field eval="1" name="active"/>
- <field name="partner_id" ref="base.res_partner_maxtor"/>
- <field name="user_id" ref="base.user_root"/>
- <field eval="&quot;Meeting to discuss project plan and hash out the details of implementation &quot;" name="description"/>
- <field eval="&quot;open&quot;" name="state"/>
- <field name="section_id" ref="crm.section_sales_department"/>
- <field eval="time.strftime('%Y-%m-03 10:20:03')" name="date"/>
- <field name="categ_id" ref="crm.categ_meet2"/>
- <field eval="&quot;Follow-up on proposal&quot;" name="name"/>
- <field eval="time.strftime('%Y-%m-03 16:38:03')" name="date_deadline"/>
- <field eval="6.3" name="duration"/>
- </record>
-
- <record id="crm_case_initialdiscussion0" model="crm.meeting">
- <field eval="1" name="active"/>
- <field eval="7.0" name="duration"/>
- <field name="partner_id" ref="base.res_partner_10"/>
- <field name="user_id" ref="base.user_root"/>
- <field eval="&quot;draft&quot;" name="state"/>
- <field name="section_id" ref="crm.section_sales_department"/>
- <field eval="time.strftime('%Y-%m-05 12:01:01')" name="date"/>
- <field name="categ_id" ref="crm.categ_meet3"/>
- <field eval="&quot;Initial discussion&quot;" name="name"/>
- <field eval="time.strftime('%Y-%m-05 19:01:01')" name="date_deadline"/>
- <field eval="&quot;contact@tecsas.fr&quot;" name="email_from"/>
- </record>
-
- <record id="crm_case_discusspricing0" model="crm.meeting">
- <field eval="1" name="active"/>
- <field eval="3.0" name="duration"/>
- <field name="partner_id" ref="base.res_partner_3"/>
- <field name="user_id" ref="base.user_root"/>
- <field eval="&quot;Meeting to discuss project plan and hash out the details of implementation &quot;" name="description"/>
- <field eval="&quot;done&quot;" name="state"/>
- <field name="section_id" ref="crm.section_sales_department"/>
- <field eval="time.strftime('%Y-%m-12 15:55:05')" name="date"/>
- <field name="categ_id" ref="crm.categ_meet1"/>
- <field eval="&quot;Discuss pricing&quot;" name="name"/>
- <field eval="time.strftime('%Y-%m-12 18:55:05')" name="date_deadline"/>
- </record>
+ <!--For Meetings-->
+ <record id="crm_case_followuponproposal0" model="crm.meeting">
+ <field eval="1" name="active"/>
+ <field name="partner_id" ref="base.res_partner_maxtor"/>
+ <field name="user_id" ref="base.user_root"/>
+ <field eval="&quot;Meeting to discuss project plan and hash out the details of implementation &quot;" name="description"/>
+ <field eval="&quot;open&quot;" name="state"/>
+ <field name="section_id" ref="crm.section_sales_department"/>
+ <field eval="time.strftime('%Y-%m-03 10:20:03')" name="date"/>
+ <field name="categ_id" ref="crm.categ_meet2"/>
+ <field eval="&quot;Follow-up on proposal&quot;" name="name"/>
+ <field eval="time.strftime('%Y-%m-03 16:38:03')" name="date_deadline"/>
+ <field eval="6.3" name="duration"/>
+ </record>
+
+ <record id="crm_case_initialdiscussion0" model="crm.meeting">
+ <field eval="1" name="active"/>
+ <field eval="7.0" name="duration"/>
+ <field name="partner_id" ref="base.res_partner_10"/>
+ <field name="user_id" ref="base.user_root"/>
+ <field eval="&quot;draft&quot;" name="state"/>
+ <field name="section_id" ref="crm.section_sales_department"/>
+ <field eval="time.strftime('%Y-%m-05 12:01:01')" name="date"/>
+ <field name="categ_id" ref="crm.categ_meet3"/>
+ <field eval="&quot;Initial discussion&quot;" name="name"/>
+ <field eval="time.strftime('%Y-%m-05 19:01:01')" name="date_deadline"/>
+ <field eval="&quot;contact@tecsas.fr&quot;" name="email_from"/>
+ </record>
+
+ <record id="crm_case_discusspricing0" model="crm.meeting">
+ <field eval="1" name="active"/>
+ <field eval="3.0" name="duration"/>
+ <field name="partner_id" ref="base.res_partner_3"/>
+ <field name="user_id" ref="base.user_root"/>
+ <field eval="&quot;Meeting to discuss project plan and hash out the details of implementation &quot;" name="description"/>
+ <field eval="&quot;done&quot;" name="state"/>
+ <field name="section_id" ref="crm.section_sales_department"/>
+ <field eval="time.strftime('%Y-%m-12 15:55:05')" name="date"/>
+ <field name="categ_id" ref="crm.categ_meet1"/>
+ <field eval="&quot;Discuss pricing&quot;" name="name"/>
+ <field eval="time.strftime('%Y-%m-12 18:55:05')" name="date_deadline"/>
+ </record>
- <record id="crm_case_reviewneeds0" model="crm.meeting">
- <field eval="1" name="active"/>
- <field eval="6.0" name="duration"/>
- <field name="partner_id" ref="base.res_partner_11"/>
- <field name="user_id" ref="base.user_demo"/>
- <field eval="&quot;draft&quot;" name="state"/>
- <field name="section_id" ref="crm.section_sales_department"/>
- <field eval="time.strftime('%Y-%m-20 10:02:02')" name="date"/>
- <field name="categ_id" ref="crm.categ_meet3"/>
- <field eval="&quot;Review needs&quot;" name="name"/>
- <field eval="time.strftime('%Y-%m-20 16:02:02')" name="date_deadline"/>
- </record>
+ <record id="crm_case_reviewneeds0" model="crm.meeting">
+ <field eval="1" name="active"/>
+ <field eval="6.0" name="duration"/>
+ <field name="partner_id" ref="base.res_partner_11"/>
+ <field name="user_id" ref="base.user_demo"/>
+ <field eval="&quot;open&quot;" name="state"/>
+ <field name="section_id" ref="crm.section_sales_department"/>
+ <field eval="time.strftime('%Y-%m-20 10:02:02')" name="date"/>
+ <field name="categ_id" ref="crm.categ_meet3"/>
+ <field eval="&quot;Review needs&quot;" name="name"/>
+ <field eval="time.strftime('%Y-%m-20 16:02:02')" name="date_deadline"/>
+ </record>
- <record id="crm_case_changesindesigning0" model="crm.meeting">
- <field eval="1" name="active"/>
- <field eval="05" name="duration"/>
- <field name="partner_id" ref="base.res_partner_9"/>
- <field name="user_id" ref="base.user_demo"/>
- <field eval="&quot;draft&quot;" name="state"/>
- <field name="section_id" ref="crm.section_sales_department"/>
- <field eval="time.strftime('%Y-%m-22 11:05:05')" name="date"/>
- <field name="categ_id" ref="crm.categ_meet2"/>
- <field eval="&quot;Changes in Designing&quot;" name="name"/>
- <field eval="time.strftime('%Y-%m-22 16:05:05')" name="date_deadline"/>
- <field eval="&quot;info@opensides.be&quot;" name="email_from"/>
- </record>
-
- <record id="crm_case_updatethedata0" model="crm.meeting">
- <field eval="1" name="active"/>
- <field name="partner_id" ref="base.res_partner_4"/>
- <field name="user_id" ref="base.user_root"/>
- <field eval="&quot;done&quot;" name="state"/>
- <field name="section_id" ref="crm.section_sales_department"/>
- <field eval="time.strftime('%Y-%m-18 13:12:49')" name="date"/>
- <field name="categ_id" ref="crm.categ_meet2"/>
- <field eval="&quot;Update the data&quot;" name="name"/>
- <field eval="13.3" name="duration"/>
- <field eval="time.strftime('%Y-%m-19 02:30:49')" name="date_deadline"/>
- </record>
- </data>
+ <record id="crm_case_changesindesigning0" model="crm.meeting">
+ <field eval="1" name="active"/>
+ <field eval="05" name="duration"/>
+ <field name="partner_id" ref="base.res_partner_9"/>
+ <field name="user_id" ref="base.user_demo"/>
+ <field eval="&quot;draft&quot;" name="state"/>
+ <field name="section_id" ref="crm.section_sales_department"/>
+ <field eval="time.strftime('%Y-%m-22 11:05:05')" name="date"/>
+ <field name="categ_id" ref="crm.categ_meet2"/>
+ <field eval="&quot;Changes in Designing&quot;" name="name"/>
+ <field eval="time.strftime('%Y-%m-22 16:05:05')" name="date_deadline"/>
+ <field eval="&quot;info@opensides.be&quot;" name="email_from"/>
+ </record>
+
+ <record id="crm_case_updatethedata0" model="crm.meeting">
+ <field eval="1" name="active"/>
+ <field name="partner_id" ref="base.res_partner_4"/>
+ <field name="user_id" ref="base.user_root"/>
+ <field eval="&quot;done&quot;" name="state"/>
+ <field name="section_id" ref="crm.section_sales_department"/>
+ <field eval="time.strftime('%Y-%m-18 13:12:49')" name="date"/>
+ <field name="categ_id" ref="crm.categ_meet2"/>
+ <field eval="&quot;Update the data&quot;" name="name"/>
+ <field eval="13.3" name="duration"/>
+ <field eval="time.strftime('%Y-%m-19 02:30:49')" name="date_deadline"/>
+ </record>
+ </data>
</openerp>
diff --git a/addons/crm/crm_meeting_menu.xml b/addons/crm/crm_meeting_menu.xml
index 5f94e3d738f..3da817e8611 100644
--- a/addons/crm/crm_meeting_menu.xml
+++ b/addons/crm/crm_meeting_menu.xml
@@ -6,16 +6,9 @@
name="Schedule a Meeting"
res_model="crm.meeting"
view_mode="calendar,tree,form,gantt"
- context="{'search_default_partner_id': active_id, 'default_duration': 4.0}"
- domain="[('partner_id', '=', active_id)]"
+ context="{'default_partner_id': active_id, 'default_duration': 4.0}"
/>
- <record model="ir.actions.act_window" id="crm_case_categ_meet_create_partner">
- <field name="name">Schedule a Meeting</field>
- <field name="context">{'default_partner_id': active_id}</field>
- </record>
-
-
<record model="ir.actions.act_window.view" id="action_crm_tag_calendar_meet_partner">
<field name="sequence" eval="1"/>
<field name="view_mode">calendar</field>
@@ -90,7 +83,7 @@
<menuitem name="Meetings" id="menu_crm_case_categ_meet"
action="crm_case_categ_meet" parent="base.menu_sales"
- sequence="7" />
+ sequence="8" />
<record id="action_view_attendee_form" model="ir.actions.act_window">
<field name="name">Meeting Invitations</field>
diff --git a/addons/crm/crm_meeting_shortcut_data.xml b/addons/crm/crm_meeting_shortcut_data.xml
index fcba36f7a61..0f75c9e91ab 100644
--- a/addons/crm/crm_meeting_shortcut_data.xml
+++ b/addons/crm/crm_meeting_shortcut_data.xml
@@ -2,12 +2,12 @@
<openerp>
<data noupdate="1">
- <record id="ir_ui_view_sc_calendar0" model="ir.ui.view_sc">
- <field name="name">Meetings</field>
- <field name="resource">ir.ui.menu</field>
- <field name="user_id" ref="base.user_root"/>
- <field name="res_id" ref="crm.menu_crm_case_categ_meet"/>
- </record>
+ <record id="ir_ui_view_sc_calendar0" model="ir.ui.view_sc">
+ <field name="name">Meetings</field>
+ <field name="resource">ir.ui.menu</field>
+ <field name="user_id" ref="base.user_root"/>
+ <field name="res_id" ref="crm.menu_crm_case_categ_meet"/>
+ </record>
</data>
</openerp>
diff --git a/addons/crm/crm_meeting_view.xml b/addons/crm/crm_meeting_view.xml
index 85e9864115a..88ef7134735 100644
--- a/addons/crm/crm_meeting_view.xml
+++ b/addons/crm/crm_meeting_view.xml
@@ -2,6 +2,43 @@
<openerp>
<data>
+ <!-- Read/Unread actions -->
+ <record id="actions_server_crm_meeting_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_meeting"/>
+ <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_meeting_unread" model="ir.values">
+ <field name="name">action_crm_meeting_unread</field>
+ <field name="action_id" ref="actions_server_crm_meeting_unread"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_meeting_unread'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_crm_meeting" />
+ <field name="model">crm.meeting</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
+ <record id="actions_server_crm_meeting_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_meeting"/>
+ <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_meeting_read" model="ir.values">
+ <field name="name">action_crm_meeting_read</field>
+ <field name="action_id" ref="actions_server_crm_meeting_read"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_meeting_read'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_crm_meeting" />
+ <field name="model">crm.meeting</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
<!-- CRM Meetings Categories Form View -->
<record id="crm_meeting_categ_action" model="ir.actions.act_window">
@@ -27,11 +64,11 @@
<field name="arch" type="xml">
<form string="Meetings" version="7.0">
<header>
- <button name="case_open" string="Confirm" type="object"
+ <button name="case_open" string="Confirm" type="object" class="oe_highlight"
states="draft"/>
- <button name="case_close" string="Done" type="object"
+ <button name="case_close" string="Done" type="object" class="oe_highlight"
states="open"/>
- <button name="case_reset" string="Reset to Unconfirmed" type="object"
+ <button name="case_reset" string="Reset to Unconfirmed" type="object"
states="cancel,done"/>
<button name="case_cancel" string="Cancel" type="object"
states="draft,open"/>
@@ -47,24 +84,26 @@
<h1>
<field name="name"/>
</h1>
+ </div>
+ <group>
<h2>
- At <field name="location" class="oe_inline" />
+ <label for="date" string="Starting at"/>
+ <field name="date" required="1" class="oe_inline"/>
+ <label string="in" class="oe_inline" attrs="{'invisible': [('location', '=', False)]}"/> <field name="location" placeholder="Specify the location here" class="oe_inline"/>
</h2>
- </div>
- <h2>
- <label for="duration" string="Duration" />
- <field name="duration" widget="float_time"
- on_change="onchange_dates(date,duration,False,allday)"
- class="oe_inline"/> from
- <field name="date"
- string="Start Date"
- required="1"
- class="oe_edit_only oe_inline"/> to
- <field name="date_deadline"
- string="End Date" required="1"
- on_change="onchange_dates(date,False,date_deadline)"
- class="oe_inline"/>
- </h2>
+ </group>
+ <group>
+ <h2>
+ <label for="duration" string="Duration" />
+ <field name="duration" widget="float_time"
+ on_change="onchange_dates(date,duration,False,allday)"
+ class="oe_inline"/> (
+ <field name="date_deadline"
+ string="End Date" required="1"
+ on_change="onchange_dates(date,False,date_deadline)"
+ class="oe_inline"/> )
+ </h2>
+ </group>
<group colspan="4" col="4">
<group colspan="2">
<field name="user_id" />
@@ -101,7 +140,7 @@
attrs="{'readonly': [('state', '=', 'done')]}"
context="{'model' : 'crm.meeting', 'attendee_field':'attendee_ids'}" colspan="2"/>
<field name="attendee_ids" colspan="4"
- nolabel="1" widget="one2many" mode="tree,form">
+ nolabel="1" widget="one2many" mode="tree">
<tree string="Invitation details" editable="top">
<field name="sent_by_uid" string="From"/>
<field name="user_id" string="To"/>
@@ -219,7 +258,7 @@
</notebook>
</sheet>
<footer>
- <field name="message_ids" widget="ThreadView"/>
+ <field name="message_ids" widget="mail_thread"/>
</footer>
</form>
</field>
@@ -234,7 +273,6 @@
<field name="arch" type="xml">
<tree string="Meetings" fonts="bold:needaction_pending==True"
colors="red:state=='open';black:state in ('draft', 'cancel','done','pending')">
- <field name="needaction_pending" invisible="1"/>
<field name="name" string="Subject" />
<field name="user_id"/>
<field name="date"/>
@@ -243,6 +281,7 @@
<field name="partner_id" string="Partner" />
<field name="location" />
<field name="categ_id"/>
+ <field name="needaction_pending" invisible="1"/>
</tree>
</field>
</record>
@@ -284,6 +323,11 @@
<field name="arch" type="xml">
<search string="Search Meetings">
<group>
+ <filter icon="terp-mail-message-new"
+ string="Inbox" help="Unread messages"
+ name="needaction_pending"
+ domain="[('needaction_pending','=',True)]"/>
+ <separator orientation="vertical"/>
<field name="name" string="Meeting / Partner"
filter_domain="['|',('name','ilike',self),('partner_id','ilike', self)]"/>
<separator orientation="vertical"/>
diff --git a/addons/crm/crm_phonecall.py b/addons/crm/crm_phonecall.py
index 9418b05b9ea..13991245eda 100644
--- a/addons/crm/crm_phonecall.py
+++ b/addons/crm/crm_phonecall.py
@@ -288,14 +288,6 @@ class crm_phonecall(base_state, osv.osv):
# ----------------------------------------
# OpenChatter
# ----------------------------------------
-
- def get_needaction_user_ids(self, cr, uid, ids, context=None):
- result = dict.fromkeys(ids)
- for obj in self.browse(cr, uid, ids, context=context):
- result[obj.id] = []
- if (obj.state == 'draft' and obj.user_id):
- result[obj.id] = [obj.user_id.id]
- return result
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
return 'Phonecall'
diff --git a/addons/crm/crm_phonecall_demo.xml b/addons/crm/crm_phonecall_demo.xml
index 614b93f2bc1..704eec2b483 100644
--- a/addons/crm/crm_phonecall_demo.xml
+++ b/addons/crm/crm_phonecall_demo.xml
@@ -1,95 +1,95 @@
<?xml version="1.0"?>
<openerp>
- <data noupdate="1">
- <!--
- ((((((((((( Demo Cases )))))))))))
- -->
- <record id="crm_case_phone01" model="crm.phonecall">
- <field eval="time.strftime('%Y-%m-04 10:45:36')" name="date"/>
- <field name="partner_id" ref="base.res_partner_11"/>
- <field eval="&quot;3&quot;" name="priority"/>
- <field name="user_id" ref="base.user_root"/>
- <field eval="&quot;Left the message&quot;" name="name"/>
- <field eval="&quot;open&quot;" name="state"/>
- <field name="section_id" ref="crm.section_sales_department"/>
- <field eval="&quot;(726) 782-0636&quot;" name="partner_mobile"/>
- <field eval="1" name="active"/>
- <field name="categ_id" ref="crm.categ_phone1"/>
- <field eval="&quot;(769) 703-274&quot;" name="partner_phone"/>
- <field eval="2.3" name="duration"/>
- <field eval="&quot;done&quot;" name="state"/>
- </record>
- <record id="crm_case_phone02" model="crm.phonecall">
- <field eval="time.strftime('%Y-%m-11 11:19:25')" name="date"/>
- <field name="partner_id" ref="base.res_partner_6"/>
- <field eval="&quot;4&quot;" name="priority"/>
- <field name="user_id" ref="base.user_root"/>
- <field eval="&quot;Get More information on the proposed deal&quot;" name="name"/>
- <field eval="&quot;open&quot;" name="state"/>
- <field name="section_id" ref="crm.section_sales_department"/>
- <field eval="&quot;(392) 895-7917&quot;" name="partner_mobile"/>
- <field eval="1" name="active"/>
- <field name="categ_id" ref="crm.categ_phone1"/>
- <field eval="&quot;(956) 293-2595&quot;" name="partner_phone"/>
- <field eval="1.5" name="duration"/>
- <field eval="&quot;done&quot;" name="state"/>
- </record>
- <record id="crm_case_phone03" model="crm.phonecall">
- <field eval="time.strftime('%Y-%m-15 17:44:12')" name="date"/>
- <field name="partner_id" ref="base.res_partner_10"/>
- <field eval="&quot;2&quot;" name="priority"/>
- <field name="user_id" ref="base.user_demo"/>
- <field eval="&quot;Bad time, will call back&quot;" name="name"/>
- <field eval="&quot;open&quot;" name="state"/>
- <field name="section_id" ref="crm.section_sales_department"/>
- <field eval="&quot;(820) 167-3208&quot;" name="partner_mobile"/>
- <field eval="1" name="active"/>
- <field name="categ_id" ref="crm.categ_phone1"/>
- <field eval="&quot;(079) 681-2139&quot;" name="partner_phone"/>
- <field eval="&quot;contact@tecsas.fr&quot;" name="email_from"/>
- <field eval="5.0" name="duration"/>
- <field eval="&quot;done&quot;" name="state"/>
- </record>
- <record id="crm_case_phone04" model="crm.phonecall">
- <field eval="time.strftime('%Y-%m-21 14:10:23')" name="date"/>
- <field name="partner_id" ref="base.res_partner_tinyatwork"/>
- <field eval="&quot;3&quot;" name="priority"/>
- <field name="user_id" ref="base.user_root"/>
- <field eval="&quot;Discuss Review Process&quot;" name="name"/>
- <field eval="&quot;open&quot;" name="state"/>
- <field name="section_id" ref="crm.section_sales_department"/>
- <field eval="&quot;(077) 582-4035&quot;" name="partner_mobile"/>
- <field eval="1" name="active"/>
- <field name="categ_id" ref="crm.categ_phone2"/>
- <field eval="&quot;(514) 698-4118&quot;" name="partner_phone"/>
- <field eval="3.45" name="duration"/>
- </record>
- <record id="crm_case_phone05" model="crm.phonecall">
- <field eval="time.strftime('%Y-%m-28 16:20:43')" name="date"/>
- <field name="partner_id" ref="base.res_partner_5"/>
- <field eval="&quot;3&quot;" name="priority"/>
- <field name="user_id" ref="base.user_root"/>
- <field eval="&quot;More information on the proposed deal&quot;" name="name"/>
- <field eval="&quot;pending&quot;" name="state"/>
- <field name="section_id" ref="crm.section_sales_department"/>
- <field eval="&quot;(333) 715-1450&quot;" name="partner_mobile"/>
- <field eval="1" name="active"/>
- <field name="categ_id" ref="crm.categ_phone2"/>
- <field eval="&quot;(855) 924-4364&quot;" name="partner_phone"/>
- <field eval="2.08" name="duration"/>
- </record>
- <record id="crm_case_phone06" model="crm.phonecall">
- <field eval="&quot;3&quot;" name="priority"/>
- <field name="user_id" ref="base.user_root"/>
- <field eval="&quot;Bad time&quot;" name="name"/>
- <field eval="&quot;open&quot;" name="state"/>
- <field name="section_id" ref="crm.section_sales_department"/>
- <field eval="&quot;(468) 017-2684&quot;" name="partner_mobile"/>
- <field eval="time.strftime('%Y-%m-28 14:15:30')" name="date"/>
- <field name="categ_id" ref="crm.categ_phone2"/>
- <field eval="&quot;(373) 907-1009&quot;" name="partner_phone"/>
- <field eval="&quot;info@opensides.be&quot;" name="email_from"/>
- <field eval="8.56" name="duration"/>
- </record>
- </data>
+ <data noupdate="1">
+ <!--
+ ((((((((((( Demo Cases )))))))))))
+ -->
+ <record id="crm_case_phone01" model="crm.phonecall">
+ <field eval="time.strftime('%Y-%m-04 10:45:36')" name="date"/>
+ <field name="partner_id" ref="base.res_partner_11"/>
+ <field eval="&quot;3&quot;" name="priority"/>
+ <field name="user_id" ref="base.user_root"/>
+ <field eval="&quot;Left the message&quot;" name="name"/>
+ <field eval="&quot;open&quot;" name="state"/>
+ <field name="section_id" ref="crm.section_sales_department"/>
+ <field eval="&quot;(726) 782-0636&quot;" name="partner_mobile"/>
+ <field eval="1" name="active"/>
+ <field name="categ_id" ref="crm.categ_phone1"/>
+ <field eval="&quot;(769) 703-274&quot;" name="partner_phone"/>
+ <field eval="2.3" name="duration"/>
+ <field eval="&quot;done&quot;" name="state"/>
+ </record>
+ <record id="crm_case_phone02" model="crm.phonecall">
+ <field eval="time.strftime('%Y-%m-11 11:19:25')" name="date"/>
+ <field name="partner_id" ref="base.res_partner_6"/>
+ <field eval="&quot;4&quot;" name="priority"/>
+ <field name="user_id" ref="base.user_root"/>
+ <field eval="&quot;Get More information on the proposed deal&quot;" name="name"/>
+ <field eval="&quot;open&quot;" name="state"/>
+ <field name="section_id" ref="crm.section_sales_department"/>
+ <field eval="&quot;(392) 895-7917&quot;" name="partner_mobile"/>
+ <field eval="1" name="active"/>
+ <field name="categ_id" ref="crm.categ_phone1"/>
+ <field eval="&quot;(956) 293-2595&quot;" name="partner_phone"/>
+ <field eval="1.5" name="duration"/>
+ <field eval="&quot;done&quot;" name="state"/>
+ </record>
+ <record id="crm_case_phone03" model="crm.phonecall">
+ <field eval="time.strftime('%Y-%m-15 17:44:12')" name="date"/>
+ <field name="partner_id" ref="base.res_partner_10"/>
+ <field eval="&quot;2&quot;" name="priority"/>
+ <field name="user_id" ref="base.user_demo"/>
+ <field eval="&quot;Bad time, will call back&quot;" name="name"/>
+ <field eval="&quot;open&quot;" name="state"/>
+ <field name="section_id" ref="crm.section_sales_department"/>
+ <field eval="&quot;(820) 167-3208&quot;" name="partner_mobile"/>
+ <field eval="1" name="active"/>
+ <field name="categ_id" ref="crm.categ_phone1"/>
+ <field eval="&quot;(079) 681-2139&quot;" name="partner_phone"/>
+ <field eval="&quot;contact@tecsas.fr&quot;" name="email_from"/>
+ <field eval="5.0" name="duration"/>
+ <field eval="&quot;done&quot;" name="state"/>
+ </record>
+ <record id="crm_case_phone04" model="crm.phonecall">
+ <field eval="time.strftime('%Y-%m-21 14:10:23')" name="date"/>
+ <field name="partner_id" ref="base.res_partner_tinyatwork"/>
+ <field eval="&quot;3&quot;" name="priority"/>
+ <field name="user_id" ref="base.user_root"/>
+ <field eval="&quot;Discuss Review Process&quot;" name="name"/>
+ <field eval="&quot;open&quot;" name="state"/>
+ <field name="section_id" ref="crm.section_sales_department"/>
+ <field eval="&quot;(077) 582-4035&quot;" name="partner_mobile"/>
+ <field eval="1" name="active"/>
+ <field name="categ_id" ref="crm.categ_phone2"/>
+ <field eval="&quot;(514) 698-4118&quot;" name="partner_phone"/>
+ <field eval="3.45" name="duration"/>
+ </record>
+ <record id="crm_case_phone05" model="crm.phonecall">
+ <field eval="time.strftime('%Y-%m-28 16:20:43')" name="date"/>
+ <field name="partner_id" ref="base.res_partner_5"/>
+ <field eval="&quot;3&quot;" name="priority"/>
+ <field name="user_id" ref="base.user_root"/>
+ <field eval="&quot;More information on the proposed deal&quot;" name="name"/>
+ <field eval="&quot;pending&quot;" name="state"/>
+ <field name="section_id" ref="crm.section_sales_department"/>
+ <field eval="&quot;(333) 715-1450&quot;" name="partner_mobile"/>
+ <field eval="1" name="active"/>
+ <field name="categ_id" ref="crm.categ_phone2"/>
+ <field eval="&quot;(855) 924-4364&quot;" name="partner_phone"/>
+ <field eval="2.08" name="duration"/>
+ </record>
+ <record id="crm_case_phone06" model="crm.phonecall">
+ <field eval="&quot;3&quot;" name="priority"/>
+ <field name="user_id" ref="base.user_root"/>
+ <field eval="&quot;Bad time&quot;" name="name"/>
+ <field eval="&quot;open&quot;" name="state"/>
+ <field name="section_id" ref="crm.section_sales_department"/>
+ <field eval="&quot;(468) 017-2684&quot;" name="partner_mobile"/>
+ <field eval="time.strftime('%Y-%m-28 14:15:30')" name="date"/>
+ <field name="categ_id" ref="crm.categ_phone2"/>
+ <field eval="&quot;(373) 907-1009&quot;" name="partner_phone"/>
+ <field eval="&quot;info@opensides.be&quot;" name="email_from"/>
+ <field eval="8.56" name="duration"/>
+ </record>
+ </data>
</openerp>
diff --git a/addons/crm/crm_phonecall_view.xml b/addons/crm/crm_phonecall_view.xml
index 966387608ed..a874eeee239 100644
--- a/addons/crm/crm_phonecall_view.xml
+++ b/addons/crm/crm_phonecall_view.xml
@@ -2,8 +2,44 @@
<openerp>
<data>
-<!-- Phonecall Categories Form View -->
+ <!-- Read/Unread actions -->
+ <record id="actions_server_crm_phonecall_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_phonecall"/>
+ <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_phonecall_unread" model="ir.values">
+ <field name="name">action_crm_phonecall_unread</field>
+ <field name="action_id" ref="actions_server_crm_phonecall_unread"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_phonecall_unread'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_crm_phonecall" />
+ <field name="model">crm.phonecall</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
+ <record id="actions_server_crm_phonecall_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_phonecall"/>
+ <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_phonecall_read" model="ir.values">
+ <field name="name">action_crm_phonecall_read</field>
+ <field name="action_id" ref="actions_server_crm_phonecall_read"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_phonecall_read'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_crm_phonecall" />
+ <field name="model">crm.phonecall</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+<!-- Phonecall Categories Form View -->
<record id="crm_phonecall_categ_action" model="ir.actions.act_window">
<field name="name">Phonecall Categories</field>
<field name="res_model">crm.case.categ</field>
@@ -34,6 +70,7 @@
<field name="categ_id" invisible="1"/>
<field name="create_date" invisible="1"/>
<field name="opportunity_id" invisible="1"/>
+ <field name="needaction_pending" invisible="1"/>
<button string="Convert to Opportunity"
name="%(phonecall2opportunity_act)d"
states="open,pending"
@@ -64,21 +101,21 @@
<field name="arch" type="xml">
<form version="7.0">
<header>
- <button name="case_open" string="Confirm" type="object"
+ <button name="case_open" string="Confirm" type="object" class="oe_highlight"
states="draft,pending"/>
- <button name="case_close" string="Held" type="object"
+ <button name="case_close" string="Held" type="object" class="oe_highlight"
states="open,pending"/>
<button name="case_reset" string="Reset to Todo" type="object"
states="cancel"/>
<button name="case_cancel" string="Cancel" type="object"
states="draft,open,pending"/>
- <button string="Convert to Opportunity"
- name="%(phonecall2opportunity_act)d"
- type="action"
- attrs="{'invisible':[('opportunity_id','!=',False)]}" />
+ <button string="Convert to Opportunity" class="oe_highlight"
+ name="%(phonecall2opportunity_act)d"
+ type="action"
+ attrs="{'invisible':[('opportunity_id','!=',False)]}" />
<button string="Schedule Other Call"
- name="%(phonecall_to_phonecall_act)d"
- type="action" />
+ name="%(phonecall_to_phonecall_act)d"
+ type="action" />
<button string="Schedule a Meeting" name="action_make_meeting" type="object"/>
<field name="state" widget="statusbar" nolabel="1" statusbar_visible="draft,open,done"/>
</header>
@@ -109,7 +146,7 @@
<field name="description" placeholder="Description..." />
</sheet>
<footer>
- <field name="message_ids" widget="ThreadView"/>
+ <field name="message_ids" widget="mail_thread"/>
</footer>
</form>
</field>
@@ -123,7 +160,6 @@
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Phone Calls" fonts="bold:needaction_pending==True" editable="top">
- <field name="needaction_pending" invisible="1"/>
<field name="date"/>
<field name="name"/>
<field name="partner_id"
@@ -138,6 +174,7 @@
<field name="state" invisible="1"/>
<field name="create_date" invisible="1"/>
<field name="opportunity_id" invisible="1"/>
+ <field name="needaction_pending" invisible="1"/>
<button string="Schedule Other Call"
icon="terp-call-start"
name="%(phonecall_to_phonecall_act)d"
@@ -154,7 +191,7 @@
</field>
</record>
-<!-- Phonecalls Calendar View -->
+ <!-- Phonecalls Calendar View -->
<record model="ir.ui.view" id="crm_case_phone_calendar_view">
<field name="name">CRM - Phone Calls Calendar</field>
@@ -169,14 +206,18 @@
</field>
</record>
-<!-- Phonecalls Search View -->
-
+ <!-- Phonecalls Search View -->
<record id="view_crm_case_phonecalls_filter" model="ir.ui.view">
<field name="name">CRM - Phone Calls Search</field>
<field name="model">crm.phonecall</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Phonecalls">
+ <filter icon="terp-mail-message-new"
+ string="Inbox" help="Unread messages"
+ name="needaction_pending"
+ domain="[('needaction_pending','=',True)]"/>
+ <separator orientation="vertical"/>
<field name="name" string="Phonecalls"/>
<separator orientation="vertical"/>
<field name="date"/>
diff --git a/addons/crm/crm_report.xml b/addons/crm/crm_report.xml
index d5009ed6e01..d3480f013fd 100644
--- a/addons/crm/crm_report.xml
+++ b/addons/crm/crm_report.xml
@@ -2,7 +2,7 @@
<openerp>
<data>
<report auto="False" id="crm_business_opportunities_report"
- keyword="client_print_multi" menu="True" model="crm.case"
- multi="True" name="crm.case" string="Business Opportunities" />
+ keyword="client_print_multi" menu="True" model="crm.case"
+ multi="True" name="crm.case" string="Business Opportunities" />
</data>
</openerp>
diff --git a/addons/crm/crm_report_view.xml b/addons/crm/crm_report_view.xml
index 2c62ae2ead3..c3ccde5360b 100644
--- a/addons/crm/crm_report_view.xml
+++ b/addons/crm/crm_report_view.xml
@@ -35,12 +35,12 @@
<field name="name"/>
<field name="month"/>
<field name="user_id"/>
- <field name="section_id" select="1" widget="selection"/>
- <field name="category2_id" select="1"/>
+ <field name="section_id" widget="selection"/>
+ <field name="category2_id" />
<field name="stage_id"/>
<field name="amount_revenue"/>
- <field name="nbr" select="1"/>
- <field name="state" select="1"/>
+ <field name="nbr" />
+ <field name="state" />
<field name="delay_close"/>
</form>
</field>
@@ -124,11 +124,11 @@
<field name="name"/>
<field name="month"/>
<field name="user_id"/>
- <field name="section_id" select="1" widget="selection"/>
+ <field name="section_id" widget="selection"/>
<field name="stage_id"/>
<field name="amount_revenue"/>
- <field name="nbr" select="1"/>
- <field name="state" select="1"/>
+ <field name="nbr" />
+ <field name="state" />
<field name="delay_close"/>
</form>
</field>
@@ -211,11 +211,11 @@
<field name="name"/>
<field name="month"/>
<field name="user_id"/>
- <field name="section_id" select="1" widget="selection"/>
+ <field name="section_id" widget="selection"/>
<field name="categ_id"/>
<field name="stage_id"/>
- <field name="nbr" select="1"/>
- <field name="state" select="1"/>
+ <field name="nbr" />
+ <field name="state" />
<field name="delay_close"/>
</form>
</field>
@@ -299,12 +299,12 @@
<field name="name"/>
<field name="month"/>
<field name="user_id"/>
- <field name="section_id" select="1" widget="selection"/>
+ <field name="section_id" widget="selection"/>
<field name="categ_id"/>
<field name="category2_id"/>
<field name="stage_id"/>
- <field name="nbr" select="1"/>
- <field name="state" select="1"/>
+ <field name="nbr" />
+ <field name="state" />
<field name="delay_close"/>
</form>
</field>
diff --git a/addons/crm/crm_segmentation.py b/addons/crm/crm_segmentation.py
index 690948a8817..9cafe950410 100644
--- a/addons/crm/crm_segmentation.py
+++ b/addons/crm/crm_segmentation.py
@@ -61,7 +61,7 @@ added to partners that match the segmentation criterions after computation.'),
for categ in categs:
if start:
if categ['exclusif']:
- cr.execute('delete from res_partner_category_rel \
+ cr.execute('delete from res_partner_res_partner_category_rel \
where category_id=%s', (categ['categ_id'][0],))
id = categ['id']
@@ -81,7 +81,7 @@ added to partners that match the segmentation criterions after computation.'),
partners.remove(pid)
for partner_id in partners:
- cr.execute('insert into res_partner_category_rel (category_id,partner_id) \
+ cr.execute('insert into res_partner_res_partner_category_rel (category_id,partner_id) \
values (%s,%s)', (categ['categ_id'][0], partner_id))
self.write(cr, uid, [id], {'state':'not running', 'partner_id':0})
diff --git a/addons/crm/crm_view.xml b/addons/crm/crm_view.xml
index 257d1cd93f7..fc3cb3a3d2e 100644
--- a/addons/crm/crm_view.xml
+++ b/addons/crm/crm_view.xml
@@ -20,7 +20,7 @@
<menuitem id="base.next_id_64" name="Sales"
parent="base.menu_reporting" sequence="1" />
- <menuitem id="base.menu_sales_configuration_misc" name="Miscellaneous" parent="base.menu_base_config" sequence="75"/>
+ <menuitem id="base.menu_sales_configuration_misc" name="Miscellaneous" parent="base.menu_base_config" sequence="75"/>
<!-- crm.case.channel -->
@@ -81,11 +81,16 @@
<notebook colspan="4">
<page string="Sales Team">
<group col="4">
- <field name="reply_to"/>
- <field name="allow_unlink"/>
- <field name="change_responsible"/>
- <field name="member_ids"/>
+ <group>
+ <field name="reply_to"/>
+ </group>
+ <group>
+ <field name="change_responsible"/>
+ <field name="allow_unlink"/>
+ </group>
</group>
+ <separator string="Team Members"/>
+ <field name="member_ids"/>
</page>
<page string="Stages">
<separator string="Select Stages for this Sales Team"/>
diff --git a/addons/crm/i18n/crm.pot b/addons/crm/i18n/crm.pot
index 85e1f493643..f3d70b709af 100644
--- a/addons/crm/i18n/crm.pot
+++ b/addons/crm/i18n/crm.pot
@@ -540,7 +540,7 @@ msgstr ""
#. module: crm
#: field:crm.lead,email:0
-msgid "E-Mail"
+msgid "Email"
msgstr ""
#. module: crm
@@ -2675,7 +2675,7 @@ msgstr ""
#. module: crm
#: help:crm.lead,email_from:0
-msgid "E-mail address of the contact"
+msgid "Email address of the contact"
msgstr ""
#. module: crm
@@ -3401,7 +3401,7 @@ msgstr ""
#. module: crm
#: code:addons/crm/crm_action_rule.py:61
#, python-format
-msgid "No E-Mail Found for your Company address!"
+msgid "No Email Found for your Company address!"
msgstr ""
#. module: crm
@@ -3563,7 +3563,7 @@ msgstr ""
#. module: crm
#: model:ir.model,name:crm.model_mail_compose_message
-msgid "E-mail composition wizard"
+msgid "Email composition wizard"
msgstr ""
#. module: crm
diff --git a/addons/crm/res_config.py b/addons/crm/res_config.py
index b40ed78bb16..563da4bd137 100644
--- a/addons/crm/res_config.py
+++ b/addons/crm/res_config.py
@@ -26,7 +26,7 @@ class crm_configuration(osv.osv_memory):
_inherit = ['sale.config.settings', 'fetchmail.config.settings']
_columns = {
- 'fetchmail_lead': fields.boolean("Create Leads from Incoming Mails", readonly=True,
+ 'fetchmail_lead': fields.boolean("Create Leads from Incoming Mails",
fetchmail_model='crm.lead', fetchmail_name='Incoming Leads',
help="""Allows you to configure your incoming mail server, and create leads from incoming emails."""),
'module_crm_caldav': fields.boolean("Caldav Synchronization",
diff --git a/addons/crm/res_config_view.xml b/addons/crm/res_config_view.xml
index a09f333076f..811a9b3ca15 100644
--- a/addons/crm/res_config_view.xml
+++ b/addons/crm/res_config_view.xml
@@ -6,30 +6,37 @@
<field name="name">crm settings</field>
<field name="model">sale.config.settings</field>
<field name="type">form</field>
- <field name="inherit_id" ref="base.view_sale_config_settings"/>
+ <field name="inherit_id" ref="base_setup.view_sale_config_settings"/>
<field name="arch" type="xml">
- <group name="config_fetchmail" position="after">
- <field name="fetchmail_lead"/>
- <button colspan="2" type="object" name="configure_fetchmail_lead" string="Configure" icon="gtk-execute"/>
+ <group name="config_fetchmail" version="7.0" position="inside">
+ <label for="fetchmail_lead"/>
+ <div>
+ <field name="fetchmail_lead"/>
+ <button name="configure_fetchmail_lead" type="object" string="Configure" icon="gtk-go-forward"
+ attrs="{'invisible': [('fetchmail_lead','=',False)]}"/>
+ </div>
</group>
<group name="config_crm" position="after">
- <separator string="Import and Synchronize Data from an Other Application" colspan="4"/>
- <field name="module_import_sugarcrm"/>
- <field name="module_crm_caldav"/>
- <field name="module_import_google"/>
+ <group string="Import and Synchronize Data from an Other Application">
+ <field name="module_import_sugarcrm"/>
+ <field name="module_crm_caldav"/>
+ <field name="module_import_google"/>
+ </group>
- <separator string="Documents and Wiki" colspan="4"/>
- <field name="module_wiki_sale_faq" />
+ <group string="Documents and Wiki">
+ <field name="module_wiki_sale_faq"/>
+ </group>
- <separator string="Customer Form" colspan="4"/>
- <field name="module_google_map"/>
+ <group string="Customer Form">
+ <field name="module_google_map"/>
+ </group>
</group>
</field>
</record>
<menuitem id="base.menu_sale_config" name="Sales" parent="base.menu_config"
- sequence="1" action="base.action_sale_config"/>
+ sequence="1" action="base_setup.action_sale_config"/>
</data>
</openerp>
diff --git a/addons/crm/res_partner_view.xml b/addons/crm/res_partner_view.xml
index 4b2cf008958..69f71c95405 100644
--- a/addons/crm/res_partner_view.xml
+++ b/addons/crm/res_partner_view.xml
@@ -45,25 +45,57 @@
</field>
</record>
- <act_window
- id="crm_meeting_partner"
- name="Meetings"
- res_model="crm.meeting"
- src_model="res.partner"
- view_mode="calendar,tree,form,gantt"
- context="{'search_default_partner_id': [active_id],'default_partner_id': active_id}"
- />
- <act_window
- id="act_res_partner_2_opportunity"
- name="Opportunities"
- res_model="crm.lead"
- src_model="res.partner"
- view_mode="kanban,tree,form,graph,calendar"
- domain="[('type','=','opportunity')]"
- context="{'search_default_partner_id': [active_id],'default_partner_id': active_id}"
- />
+ <!-- open meetings related to given partner -->
+ <record id="crm_meeting_partner" model="ir.actions.act_window">
+ <field name="name">Meetings</field>
+ <field name="src_model">res.partner</field>
+ <field name="res_model">crm.meeting</field>
+ <field name="view_mode">calendar,tree,form,gantt</field>
+ <field name="context">{'search_default_partner_id': active_id}</field>
+ </record>
+
+ <!-- open opportunities related to given partner -->
+ <record model="ir.actions.act_window" id="relate_partner_opportunities">
+ <field name="name">Opportunities</field>
+ <field name="res_model">crm.lead</field>
+ <field name="view_mode">kanban,tree,form,graph,calendar</field>
+ <field name="domain">[('type','=','opportunity')]</field>
+ <field name="context">{'search_default_partner_id': active_id,
+ 'stage_type': 'opportunity', 'default_type': 'opportunity'}</field>
+ <field name="view_id" eval="False"/>
+ <field name="search_view_id" ref="crm.view_crm_case_opportunities_filter"/>
+ <field name="help">
+ With opportunities you can manage and keep track of your sales pipeline by creating specific customer- or prospect-related sales documents to follow up potential sales. Information such as expected revenue, opportunity stage, expected closing date, communication history and much more can be stored. Opportunities can be connected to the email gateway: new emails may create opportunities, each of them automatically gets the history of the conversation with the customer.
+
+ You and your team(s) will be able to plan meetings and phone calls from opportunities, convert them into quotations, manage related documents, track all customer related activities, and much more.
+ </field>
+ </record>
+ <record model="ir.actions.act_window.view" id="relate_partner_opportunities_kanban">
+ <field name="sequence" eval="0"/>
+ <field name="view_mode">kanban</field>
+ <field name="view_id" ref="crm_case_kanban_view_leads"/>
+ <field name="act_window_id" ref="relate_partner_opportunities"/>
+ </record>
+ <record model="ir.actions.act_window.view" id="relate_partner_opportunities_tree">
+ <field name="sequence" eval="1"/>
+ <field name="view_mode">tree</field>
+ <field name="view_id" ref="crm_case_tree_view_oppor"/>
+ <field name="act_window_id" ref="relate_partner_opportunities"/>
+ </record>
+ <record model="ir.actions.act_window.view" id="relate_partner_opportunities_form">
+ <field name="sequence" eval="2"/>
+ <field name="view_mode">form</field>
+ <field name="view_id" ref="crm_case_form_view_oppor"/>
+ <field name="act_window_id" ref="relate_partner_opportunities"/>
+ </record>
+ <record model="ir.actions.act_window.view" id="relate_partner_opportunities_graph">
+ <field name="sequence" eval="4"/>
+ <field name="view_mode">graph</field>
+ <field name="view_id" ref="crm_case_graph_view_opportunity"/>
+ <field name="act_window_id" ref="relate_partner_opportunities"/>
+ </record>
-<!-- Partner kanban view inherte -->
+ <!-- Partner kanban view inherte -->
<record model="ir.ui.view" id="crm_lead_partner_kanban_view">
<field name="name">res.partner.kanban.inherit</field>
<field name="model">res.partner</field>
@@ -74,13 +106,13 @@
<field name="opportunity_count"/>
<field name="meeting_count"/>
</field>
- <xpath expr="//h4[@class='oe_partner_heading']" position="after">
- <a name="%(act_res_partner_2_opportunity)d" type="action">
- <t t-if="record.opportunity_count.value">Opportunities(<t t-esc="record.opportunity_count.value"/>)</t>
- </a>
- <a name="%(crm_meeting_partner)d" type="action">
- <t t-if="record.meeting_count.value">Meetings(<t t-esc="record.meeting_count.value"/>)</t>
- </a>
+ <xpath expr="//h4[@class='oe_partner_heading']" position="after">
+ <a name="%(relate_partner_opportunities)d" type="action">
+ <t t-if="record.opportunity_count.value"><t t-esc="record.opportunity_count.value"/> Opportunities</t>
+ </a>
+ <a name="%(crm_meeting_partner)d" type="action">
+ <t t-if="record.meeting_count.value"><t t-esc="record.meeting_count.value"/> Meetings</t>
+ </a>
</xpath>
</field>
</record>
@@ -96,12 +128,12 @@
<button type="action"
string="Schedule a Meeting"
name="%(crm.crm_case_categ_meet_create_partner)d"
- context="{'search_default_partner_id': [active_id], 'default_duration': 4.0}"/>
+ context="{'search_default_partner_id': active_id, 'default_duration': 4.0}"/>
<button type="action" string="Schedule a Call"
name="%(crm.crm_case_categ_phone_create_partner)d"
- context="{'search_default_partner_id': [active_id], 'default_duration': 1.0, 'default_partner_id': active_id}" />
- <button type="action" string="Create an Opportunity"
- name="%(crm.action_view_crm_partner2opportunity)d" />
+ context="{'search_default_partner_id': active_id, 'default_duration': 1.0}" />
+ <button type="action" string="Opportunities"
+ name="%(crm.crm_case_category_act_oppor11)d" context="{'search_default_partner_id': active_id}"/>
</xpath>
</field>
</record>
diff --git a/addons/crm/wizard/crm_add_note_view.xml b/addons/crm/wizard/crm_add_note_view.xml
index c2a7b248d93..93551eaf943 100644
--- a/addons/crm/wizard/crm_add_note_view.xml
+++ b/addons/crm/wizard/crm_add_note_view.xml
@@ -11,11 +11,14 @@
<field name="arch" type="xml">
<form string="Add Note" version="7.0">
<header>
- <button name="action_add" type="object" string="_Add" icon="gtk-ok" />
- <button string="_Cancel" icon="gtk-close" special="cancel" />
+ <button name="action_add" type="object" string="_Add" class="oe_highlight"/>
+ or
+ <button string="Cancel" class="oe_link" special="cancel" />
</header>
- <separator string="Add Note"/>
- <field name="body"/>
+ <group>
+ <separator string="Add Note"/>
+ <field name="body"/>
+ </group>
</form>
</field>
</record>
diff --git a/addons/crm/wizard/crm_lead_to_opportunity_view.xml b/addons/crm/wizard/crm_lead_to_opportunity_view.xml
index aff5ed7f8c6..a240a4de66c 100644
--- a/addons/crm/wizard/crm_lead_to_opportunity_view.xml
+++ b/addons/crm/wizard/crm_lead_to_opportunity_view.xml
@@ -1,70 +1,61 @@
<openerp>
- <data>
-
+ <data>
<record id="view_crm_lead2opportunity_partner" model="ir.ui.view">
- <field name="name">crm.lead2opportunity.partner.form</field>
- <field name="model">crm.lead2opportunity.partner</field>
- <field name="type">form</field>
- <field name="arch" type="xml">
- <form string="Convert to Opportunity">
-
- <field name="action"/>
- <group attrs="{'invisible':[('action','!=','exist')]}">
- <field name="partner_id" attrs="{'required': [('action', '=', 'exist')]}"/>
- </group>
- <separator string="Convert to Opportunity" colspan="4"/>
+ <field name="name">crm.lead2opportunity.partner.form</field>
+ <field name="model">crm.lead2opportunity.partner</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Convert to Opportunity" version="7.0">
+ <header>
+ <button name="action_apply" string="Create Opportunity" type="object" class="oe_highlight"/>
+ or
+ <button string="Cancel" class="oe_link" special="cancel" />
+ </header>
+ <field name="action"/>
+ <group attrs="{'invisible':[('action','!=','exist')]}">
+ <field name="partner_id" attrs="{'required': [('action', '=', 'exist')]}"/>
+ </group>
+ <group string="Convert to Opportunity">
<field name="name" colspan="4"/>
- <group col="4" colspan="4" attrs="{'invisible': [('name', '=', 'convert')]}" >
- <separator string="Select Opportunities" colspan="4" />
- </group>
- <field name="opportunity_ids" colspan="4" nolabel="1" attrs="{'invisible': [('name', '=', 'convert')]}">
- <tree>
- <field name="name" />
- <field name="partner_id" />
- <field name="user_id" />
- <field name="section_id" />
- </tree>
- </field>
-
- <separator string="" colspan="4" />
- <group col="4" colspan="4">
- <button special="cancel" string="Cancel" icon="gtk-cancel"/>
- <button name="action_apply" string="Create Opportunity" type="object" icon="gtk-ok"/>
- </group>
-
- </form>
- </field>
- </record>
+ </group>
+ <separator string="Select Opportunities" attrs="{'invisible': [('name', '=', 'convert')]}"/>
+ <field name="opportunity_ids" attrs="{'invisible': [('name', '=', 'convert')]}">
+ <tree>
+ <field name="name" />
+ <field name="partner_id" />
+ <field name="user_id" />
+ <field name="section_id" />
+ </tree>
+ </field>
+ </form>
+ </field>
+ </record>
- <record id="view_crm_lead2opportunity_partner_mass" model="ir.ui.view">
- <field name="name">crm.lead2opportunity.partner.mass.form</field>
- <field name="model">crm.lead2opportunity.partner.mass</field>
- <field name="type">form</field>
- <field name="arch" type="xml">
- <form string="Convert to Opportunity">
-
- <field name="action"/>
- <field name="name" colspan="4"/>
-
- <separator string="Assigned Opportunities to" colspan="4" />
- <field name="section_id" />
- <group col="4" colspan="4">
- <separator string="Select Salesman" colspan="4" />
- </group>
- <field name="user_ids" nolabel="1" colspan="4">
- <tree>
- <field name="name" />
- </tree>
- </field>
- <separator string="" colspan="4" />
- <group col="4" colspan="4">
- <button special="cancel" string="Cancel" icon="gtk-cancel"/>
- <button name="mass_convert" string="Convert into Opportunities" type="object" icon="gtk-ok"/>
- </group>
-
- </form>
- </field>
- </record>
+ <record id="view_crm_lead2opportunity_partner_mass" model="ir.ui.view">
+ <field name="name">crm.lead2opportunity.partner.mass.form</field>
+ <field name="model">crm.lead2opportunity.partner.mass</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Convert to Opportunity" version="7.0">
+ <header>
+ <button name="mass_convert" string="Convert into Opportunities" type="object" class="oe_highlight"/>
+ or
+ <button string="Cancel" class="oe_link" special="cancel" />
+ </header>
+ <field name="action"/>
+ <field name="name" colspan="4"/>
+ <group string="Assigned Opportunities to">
+ <field name="section_id" />
+ </group>
+ <separator string="Select Salesman"/>
+ <field name="user_ids">
+ <tree>
+ <field name="name" />
+ </tree>
+ </field>
+ </form>
+ </field>
+ </record>
<record id="action_crm_lead2opportunity_partner" model="ir.actions.act_window">
<field name="name">Create a Partner</field>
@@ -74,13 +65,13 @@
<field name="view_id" ref="view_crm_lead2opportunity_partner"/>
<field name="target">new</field>
</record>
-
- <act_window id="action_crm_send_mass_convert"
+
+ <act_window id="action_crm_send_mass_convert"
multi="True"
key2="client_action_multi" name="Convert opportunities"
res_model="crm.lead2opportunity.partner.mass" src_model="crm.lead"
view_mode="form" target="new" view_type="form"
context="{'mass_convert' : True}"
view_id="view_crm_lead2opportunity_partner_mass"/>
- </data>
+ </data>
</openerp>
diff --git a/addons/crm/wizard/crm_lead_to_partner_view.xml b/addons/crm/wizard/crm_lead_to_partner_view.xml
index e067f43e955..ce12d62f9bf 100644
--- a/addons/crm/wizard/crm_lead_to_partner_view.xml
+++ b/addons/crm/wizard/crm_lead_to_partner_view.xml
@@ -10,11 +10,12 @@
<field name="arch" type="xml">
<form string="Create a Partner" version="7.0">
<header>
- <button special="cancel" string="Cancel" icon="gtk-cancel"/>
- <button name="make_partner" string="Continue" type="object" icon="gtk-ok"/>
+ <button name="make_partner" string="Continue" type="object" class="oe_highlight"/>
+ or
+ <button string="Cancel" class="oe_link" special="cancel" />
</header>
- <separator string="Create a Partner"/>
<group col="4">
+ <separator string="Create a Partner"/>
<field name="action"/>
<field name="partner_id" attrs="{'required': [('action', '=', 'exist')], 'invisible':[('action','!=','exist')]}"/>
</group>
diff --git a/addons/crm/wizard/crm_merge_opportunities_view.xml b/addons/crm/wizard/crm_merge_opportunities_view.xml
index 7e3f7b2b0f4..99de31afc15 100644
--- a/addons/crm/wizard/crm_merge_opportunities_view.xml
+++ b/addons/crm/wizard/crm_merge_opportunities_view.xml
@@ -11,8 +11,9 @@
<field name="arch" type="xml">
<form string="Merge Opportunities" version="7.0">
<header>
- <button name="action_merge" type="object" string="_Merge" icon="gtk-ok" />
- <button string="_Cancel" icon="gtk-cancel" special="cancel" />
+ <button name="action_merge" type="object" string="_Merge" class="oe_highlight"/>
+ or
+ <button string="Cancel" class="oe_link" special="cancel" />
</header>
<separator string="Select Opportunities"/>
<field name="opportunity_ids">
diff --git a/addons/crm/wizard/crm_opportunity_to_phonecall_view.xml b/addons/crm/wizard/crm_opportunity_to_phonecall_view.xml
index ad1a763fa46..6c921b3f071 100644
--- a/addons/crm/wizard/crm_opportunity_to_phonecall_view.xml
+++ b/addons/crm/wizard/crm_opportunity_to_phonecall_view.xml
@@ -9,11 +9,12 @@
<field name="model">crm.opportunity2phonecall</field>
<field name="type">form</field>
<field name="arch" type="xml">
- <form string="Schedule/Log a Call" layout="manual" version="7.0">
+ <form string="Schedule/Log a Call" version="7.0">
<header>
- <button name="action_schedule" type="object" string="Log call" icon="gtk-ok" attrs="{'invisible' : [('action', '!=', 'log')]}" />
- <button name="action_schedule" type="object" string="Schedule Call" icon="gtk-ok" attrs="{'invisible' : [('action', '!=', 'schedule')]}" />
- <button name="action_cancel" string="_Cancel" icon="gtk-cancel" special="cancel" />
+ <button name="action_schedule" type="object" string="Log call" attrs="{'invisible' : [('action', '!=', 'log')]}" class="oe_highlight"/>
+ <button name="action_schedule" type="object" string="Schedule Call" attrs="{'invisible' : [('action', '!=', 'schedule')]}" class="oe_highlight" />
+ or
+ <button name="action_cancel" string="Cancel" class="oe_link" special="cancel" />
</header>
<group>
<group>
diff --git a/addons/crm/wizard/crm_partner_to_opportunity_view.xml b/addons/crm/wizard/crm_partner_to_opportunity_view.xml
index c7641d8f64d..3f37a0b6fa1 100644
--- a/addons/crm/wizard/crm_partner_to_opportunity_view.xml
+++ b/addons/crm/wizard/crm_partner_to_opportunity_view.xml
@@ -10,8 +10,9 @@
<field name="arch" type="xml">
<form string="Create Opportunity" version="7.0">
<header>
- <button special="cancel" string="Cancel" icon="gtk-cancel"/>
- <button name="make_opportunity" string="Create Opportunity" type="object" icon="gtk-ok"/>
+ <button name="make_opportunity" string="Create Opportunity" type="object" class="oe_highlight"/>
+ or
+ <button string="Cancel" class="oe_link" special="cancel" />
</header>
<group col="4">
<field name="name"/>
@@ -29,7 +30,7 @@
<field name="name">Create Opportunity</field>
<field name="res_model">crm.partner2opportunity</field>
<field name="view_type">form</field>
- <field name="view_mode">form</field>
+ <field name="view_mode">form,tree,kanban,calendar</field>
<field name="target">new</field>
</record>
diff --git a/addons/crm/wizard/crm_phonecall_to_meeting_view.xml b/addons/crm/wizard/crm_phonecall_to_meeting_view.xml
index 6415fddd2ab..85d0bf4bc47 100644
--- a/addons/crm/wizard/crm_phonecall_to_meeting_view.xml
+++ b/addons/crm/wizard/crm_phonecall_to_meeting_view.xml
@@ -10,12 +10,12 @@
<field name="model">crm.phonecall2meeting</field>
<field name="type">form</field>
<field name="arch" type="xml">
- <form string="Convert To Meeting">
+ <form string="Convert To Meeting" version="7.0">
<header>
- <button name="action_cancel" string="_Cancel"
- icon="gtk-cancel" special="cancel" />
<button name="action_make_meeting" type="object"
- string="_Schedule" icon="gtk-go-forward" />
+ string="_Schedule" class="oe_highlight"/>
+ or
+ <button string="Cancel" class="oe_link" special="cancel" />
</header>
<label string="Are you sure to schedule a Meeting for this Phonecall?"/>
</form>
diff --git a/addons/crm/wizard/crm_phonecall_to_opportunity_view.xml b/addons/crm/wizard/crm_phonecall_to_opportunity_view.xml
index 5f12181c48f..1dc14786cc3 100644
--- a/addons/crm/wizard/crm_phonecall_to_opportunity_view.xml
+++ b/addons/crm/wizard/crm_phonecall_to_opportunity_view.xml
@@ -11,8 +11,9 @@
<field name="arch" type="xml">
<form string="Convert To Opportunity " version="7.0">
<header>
- <button name="action_cancel" string="_Cancel" icon="gtk-cancel" special="cancel" />
- <button name="make_opportunity" type="object" string="_Convert" icon="gtk-convert" />
+ <button name="make_opportunity" type="object" string="_Convert" class="oe_highlight"/>
+ or
+ <button string="Cancel" class="oe_link" special="cancel" />
</header>
<group col="4">
<field name="name"/>
diff --git a/addons/crm/wizard/crm_phonecall_to_partner_view.xml b/addons/crm/wizard/crm_phonecall_to_partner_view.xml
index c1ba57a7a24..3281acdeec3 100644
--- a/addons/crm/wizard/crm_phonecall_to_partner_view.xml
+++ b/addons/crm/wizard/crm_phonecall_to_partner_view.xml
@@ -10,10 +10,12 @@
<field name="arch" type="xml">
<form string="Create a Partner" version="7.0">
<header>
- <button name="open_create_partner" string="Create Partner" type="object" icon="gtk-ok" groups="base.group_partner_manager"/>
- <button special="cancel" string="Cancel" icon="gtk-cancel"/>
+ <button name="open_create_partner" string="Create Partner" type="object" groups="base.group_partner_manager" class="oe_highlight"/>
+ or
+ <button string="Cancel" class="oe_link" special="cancel" />
</header>
<label string="Are you sure you want to create a partner based on this Phonecall ?"/>
+ <newline/>
<label string="You may have to verify that this partner does not exist already."/>
</form>
</field>
@@ -28,8 +30,9 @@
<field name="arch" type="xml">
<form string="Create a Partner" version="7.0">
<header>
- <button name="make_partner" string="Continue" type="object" icon="gtk-ok"/>
- <button special="cancel" string="Cancel" icon="gtk-cancel"/>
+ <button name="make_partner" string="Continue" type="object" class="oe_highlight"/>
+ or
+ <button string="Cancel" class="oe_link" special="cancel" />
</header>
<group>
<field name="action"/>
@@ -49,7 +52,5 @@
<field name="view_id" ref="view_crm_phonecall2partner_create"/>
<field name="target">new</field>
</record>
-
-
</data>
</openerp>
diff --git a/addons/crm/wizard/crm_phonecall_to_phonecall_view.xml b/addons/crm/wizard/crm_phonecall_to_phonecall_view.xml
index b1f40c4eebd..7319c1b0437 100644
--- a/addons/crm/wizard/crm_phonecall_to_phonecall_view.xml
+++ b/addons/crm/wizard/crm_phonecall_to_phonecall_view.xml
@@ -11,20 +11,18 @@
<field name="arch" type="xml">
<form string="Schedule/Log a Call" version="7.0">
<header>
- <button name="action_cancel" string="_Cancel" icon="gtk-cancel" special="cancel" />
- <button name="action_schedule" type="object" string="Log Call" icon="gtk-ok" attrs="{'invisible' : [('action', '!=', 'log')]}" />
- <button name="action_schedule" type="object" string="Schedule Call" icon="gtk-ok" attrs="{'invisible' : [('action', '!=', 'schedule')]}" />
+ <button name="action_schedule" type="object" string="Log Call" attrs="{'invisible' : [('action', '!=', 'log')]}" class="oe_highlight"/>
+ <button name="action_schedule" type="object" string="Schedule Call" attrs="{'invisible' : [('action', '!=', 'schedule')]}" class="oe_highlight"/>
+ or
+ <button string="Cancel" class="oe_link" special="cancel" />
</header>
<group col="4">
- <separator string="Schedule/Log a Call" colspan="4"/>
<field name="action"/>
- <separator string="Call Details" colspan="4"/>
<field name="name"/>
<field name="date" string="Planned Date" attrs="{'invisible': [('action','=','log')]}"/>
<field name="partner_id" readonly="True"/>
<field name="user_id" />
<field name="section_id"/>
- <field name="categ_id" string="Type" widget="selection" domain="[('object_id.model', '=', 'crm.phonecall')]"/>
</group>
</form>
</field>