[MERGE]: merging from the same branch
bzr revid: mga@tinyerp.com-20100428122707-rmfunk7w3b77gecj
This commit is contained in:
@@ -238,7 +238,7 @@
|
||||
<tr>
|
||||
<td><para style="P8"><font color="white"> </font></para></td>
|
||||
<td>
|
||||
<para style="terp_default_8">[[ o.partner_id.title or '' ]] [[ o.partner_id.name ]]</para>
|
||||
<para style="terp_default_8">[[ o.partner_id.name ]] [[ o.partner_id.title or '' ]]</para>
|
||||
<para style="terp_default_8">[[ o.address_invoice_id.title or '' ]] [[ o.address_invoice_id.name ]]</para>
|
||||
<para style="terp_default_8">[[ o.address_invoice_id.street ]]</para>
|
||||
<para style="terp_default_8">[[ o.address_invoice_id.street2 or '' ]]</para>
|
||||
|
||||
@@ -191,7 +191,7 @@
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_9">[[ o.partner_id.title or '' ]] [[ o.partner_id.name ]]</para>
|
||||
<para style="terp_default_9">[[ o.partner_id.name ]] [[ o.partner_id.title or '' ]] </para>
|
||||
<para style="terp_default_9">[[ o.address_invoice_id.title or '' ]] [[ o.address_invoice_id.name ]]</para>
|
||||
<para style="terp_default_9">[[ o.address_invoice_id.street ]]</para>
|
||||
<para style="terp_default_9">[[ o.address_invoice_id.street2 or '' ]]</para>
|
||||
|
||||
@@ -195,7 +195,7 @@
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_9">[[ o.partner_id.title or '' ]] [[ o.partner_id.name ]]</para>
|
||||
<para style="terp_default_9">[[ o.partner_id.name ]] [[ o.partner_id.title or '' ]]</para>
|
||||
<para style="terp_default_9">[[ o.address_invoice_id.title or '' ]] [[ o.address_invoice_id.name ]]</para>
|
||||
<para style="terp_default_9">[[ o.address_invoice_id.street ]]</para>
|
||||
<para style="terp_default_9">[[ o.address_invoice_id.street2 or '' ]]</para>
|
||||
|
||||
@@ -31,7 +31,6 @@ If you don't think you need any of these right now, you can easily install them
|
||||
<field name="report_designer"/>
|
||||
<separator string="Vertical Modules" colspan="4"/>
|
||||
<field name="profile_association"/>
|
||||
<field name="profile_training"/>
|
||||
<field name="profile_auction"/>
|
||||
<field name="profile_bookstore"/>
|
||||
</group>
|
||||
|
||||
@@ -78,10 +78,6 @@ class base_setup_installer(osv.osv_memory):
|
||||
help="Installs a preselected set of OpenERP "
|
||||
"applications which will help you manage your association "
|
||||
"more efficiently."),
|
||||
'profile_training':fields.boolean('Training Centers',
|
||||
help="Helps you manage your training sessions and "
|
||||
"centers, from the conception of a training project to the "
|
||||
"gathering of trainee feedback."),
|
||||
'profile_auction':fields.boolean('Auction Houses',
|
||||
help="Installs a preselected set of OpenERP "
|
||||
"applications selected to help you manage your auctions "
|
||||
|
||||
@@ -75,6 +75,7 @@ between mails and Open ERP.""",
|
||||
'wizard/crm_opportunity_to_phonecall_view.xml',
|
||||
'wizard/crm_partner_to_opportunity_view.xml',
|
||||
|
||||
'wizard/crm_forward_to_partner_view.xml',
|
||||
'wizard/crm_send_email_view.xml',
|
||||
'wizard/crm_email_add_cc_view.xml',
|
||||
'crm_view.xml',
|
||||
|
||||
+5
-5
@@ -34,15 +34,15 @@ AVAILABLE_STATES = [
|
||||
('open', 'Open'),
|
||||
('cancel', 'Cancelled'),
|
||||
('done', 'Closed'),
|
||||
('pending', 'Pending')
|
||||
('pending', 'Pending'),
|
||||
]
|
||||
|
||||
AVAILABLE_PRIORITIES = [
|
||||
('5', 'Lowest'),
|
||||
('4', 'Low'),
|
||||
('3', 'Normal'),
|
||||
('1', 'Highest'),
|
||||
('2', 'High'),
|
||||
('1', 'Highest')
|
||||
('3', 'Normal'),
|
||||
('4', 'Low'),
|
||||
('5', 'Lowest'),
|
||||
]
|
||||
|
||||
class crm_case_section(osv.osv):
|
||||
|
||||
@@ -174,15 +174,20 @@
|
||||
icon="gtk-undo" type="action" />
|
||||
</form>
|
||||
<tree string="Communication history">
|
||||
<field name="description"/>
|
||||
<field name="email_to"/>
|
||||
<field name="name" />
|
||||
<field name="date"/>
|
||||
<field name="email_from" />
|
||||
<field name="email_to"/>
|
||||
<field name="description"/>
|
||||
</tree>
|
||||
</field>
|
||||
<button colspan="4" string="Send New Email"
|
||||
<button colspan="2" string="Send New Email"
|
||||
name="%(action_crm_send_mail)d"
|
||||
context="{'mail':'new', 'model': 'crm.lead'}"
|
||||
icon="gtk-go-forward" type="action" />
|
||||
<button colspan="2" string="Forward to Partner"
|
||||
name="%(crm_lead_forward_to_partner_act)d"
|
||||
icon="gtk-go-forward" type="action" />
|
||||
</page>
|
||||
|
||||
</notebook>
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
##############################################################################
|
||||
|
||||
import crm_send_email
|
||||
import crm_forward_to_partner
|
||||
import crm_email_add_cc
|
||||
|
||||
import crm_lead_to_partner
|
||||
|
||||
@@ -0,0 +1,160 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). All Rights Reserved
|
||||
# $Id$
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import osv, fields
|
||||
|
||||
from tools.translate import _
|
||||
import tools
|
||||
|
||||
class crm_lead_forward_to_partner(osv.osv_memory):
|
||||
_name = 'crm.lead.forward.to.partner'
|
||||
|
||||
_columns = {
|
||||
'partner_id' : fields.many2one('res.partner', 'Partner'),
|
||||
'address_id' : fields.many2one('res.partner.address', 'Address'),
|
||||
'email_from' : fields.char('From', required=True, size=128),
|
||||
'email_to' : fields.char('To', required=True, size=128),
|
||||
'subject' : fields.char('Subject', required=True, size=128),
|
||||
'message' : fields.text('Message', required=True),
|
||||
}
|
||||
|
||||
def on_change_partner(self, cr, uid, ids, partner_id):
|
||||
return {
|
||||
'domain' : {
|
||||
'address_id' : partner_id and "[('partner_id', '=', partner_id)]" or "[]",
|
||||
}
|
||||
}
|
||||
|
||||
def on_change_address(self, cr, uid, ids, address_id):
|
||||
email = ''
|
||||
if address_id:
|
||||
email = self.pool.get('res.partner.address').browse(cr, uid, address_id).email
|
||||
|
||||
return {
|
||||
'value' : {
|
||||
'email_to' : email,
|
||||
}
|
||||
}
|
||||
|
||||
def action_cancel(self, cr, uid, ids, context=None):
|
||||
return {'type' : 'ir.actions.act_window_close'}
|
||||
|
||||
def action_forward(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
Forward the lead to a partner
|
||||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
|
||||
res_id = context.get('active_id', False)
|
||||
|
||||
if not res_id:
|
||||
return {}
|
||||
|
||||
this = self.browse(cr, uid, ids[0], context=context)
|
||||
|
||||
hist_obj = self.pool.get('crm.case.history')
|
||||
smtp_pool = self.pool.get('email.smtpclient')
|
||||
case_pool = self.pool.get('crm.lead')
|
||||
case = case_pool.browse(cr, uid, res_id, context=context)
|
||||
|
||||
emails = [this.email_to]
|
||||
body = case_pool.format_body(this.message)
|
||||
email_from = this.email_from or False
|
||||
case_pool._history(cr, uid, [case], _('Forward'), history=True, email=this.email_to, details=body, email_from=email_from)
|
||||
|
||||
flag = False
|
||||
if case.section_id and case.section_id.server_id:
|
||||
flag = smtp_pool.send_email(
|
||||
cr=cr,
|
||||
uid=uid,
|
||||
server_id=case.section_id.server_id.id,
|
||||
emailto=emails,
|
||||
subject=this.subject,
|
||||
body="<pre>%s</pre>" % body,
|
||||
)
|
||||
else:
|
||||
flag = tools.email_send(
|
||||
email_from,
|
||||
emails,
|
||||
this.subject,
|
||||
body,
|
||||
)
|
||||
|
||||
return {}
|
||||
|
||||
def default_get(self, cr, uid, fields, context=None):
|
||||
"""
|
||||
This function gets default values
|
||||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
|
||||
active_ids = context.get('active_ids')
|
||||
if not active_ids:
|
||||
return {}
|
||||
|
||||
lead_proxy = self.pool.get('crm.lead')
|
||||
|
||||
lead = lead_proxy.browse(cr, uid, active_ids[0], context=context)
|
||||
|
||||
field_names = [
|
||||
'partner_name', 'title', 'function_name', 'street', 'street2',
|
||||
'zip', 'city', 'country_id', 'state_id', 'email_from',
|
||||
'phone', 'fax', 'mobile'
|
||||
]
|
||||
|
||||
message = []
|
||||
|
||||
for field_name in field_names:
|
||||
field_definition = lead_proxy._columns[field_name]
|
||||
value = None
|
||||
|
||||
if field_definition._type == 'selection':
|
||||
if hasattr(field_definition.selection, '__call__'):
|
||||
key = field_definition.selection(lead_proxy, cr, uid, context=context)
|
||||
else:
|
||||
key = field.definition.selection
|
||||
value = dict(key).get(lead[field_name], lead[field_name])
|
||||
elif field_definition._type == 'many2one':
|
||||
if lead[field_name]:
|
||||
value = lead[field_name].name_get()[0][1]
|
||||
else:
|
||||
value = lead[field_name]
|
||||
|
||||
message.append("%s: %s" % (field_definition.string, value or ''))
|
||||
|
||||
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
|
||||
email_from = ''
|
||||
if user.address_id and user.address_id.email:
|
||||
email_from = "%s <%s>" % (user.name, user.address_id.email)
|
||||
|
||||
res = {
|
||||
'email_from' : email_from,
|
||||
'subject' : '[Lead-Forward:%06d] %s' % (lead.id, lead.name),
|
||||
'message' : "\n".join(message + ['---']),
|
||||
}
|
||||
|
||||
return res
|
||||
|
||||
crm_lead_forward_to_partner()
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record model="ir.ui.view" id="crm_lead_forward_to_partner_form">
|
||||
<field name="name">crm_lead_forward_to_partner</field>
|
||||
<field name="model">crm.lead.forward.to.partner</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Forward to Partner">
|
||||
<separator string="User" colspan="4" />
|
||||
<field name="email_from" colspan="4" />
|
||||
|
||||
<separator string="Destination" colspan="4" />
|
||||
<field name="partner_id" on_change="on_change_partner(partner_id)" colspan="4" />
|
||||
<field name="address_id" string="Contact" on_change="on_change_address(address_id)" colspan="4" />
|
||||
<field name="email_to" colspan="4" />
|
||||
|
||||
<separator string="Email" colspan="4" />
|
||||
<field name="subject" colspan="4" />
|
||||
<field name="message" colspan="4" />
|
||||
<separator string="" colspan="4" />
|
||||
<group colspan="4" col="2">
|
||||
<button name="action_cancel" special="cancel" string="Cancel" icon="gtk-cancel" type="object" />
|
||||
<button name="action_forward" string="Forward" icon="gtk-go-forward" type="object" />
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="crm_lead_forward_to_partner_act">
|
||||
<field name="name">Forward to Partner</field>
|
||||
<field name="res_model">crm.lead.forward.to.partner</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -76,7 +76,8 @@ class crm_send_new_email(osv.osv_memory):
|
||||
|
||||
case = case_pool.browse(cr, uid, res_id)
|
||||
if context.get('mail', 'new') == 'new':
|
||||
message_id = case.history_line[0].message_id
|
||||
if len(case.history_line):
|
||||
message_id = case.history_line[0].message_id
|
||||
else:
|
||||
hist = hist_obj.browse(cr, uid, res_id)
|
||||
message_id = hist.message_id
|
||||
@@ -92,9 +93,11 @@ class crm_send_new_email(osv.osv_memory):
|
||||
case_pool._history(cr, uid, [case], _('Send'), history=True, email=data['email_to'], details=body, email_from=email_from, message_id=message_id)
|
||||
|
||||
x_headers = {
|
||||
'References':"%s" % (message_id),
|
||||
'Reply-To':"%s" % case.section_id.reply_to,
|
||||
}
|
||||
if message_id:
|
||||
x_headers['References'] = "%s" % (message_id)
|
||||
|
||||
flag = False
|
||||
if case.section_id and case.section_id.server_id:
|
||||
flag = smtp_pool.send_email(
|
||||
@@ -159,13 +162,15 @@ class crm_send_new_email(osv.osv_memory):
|
||||
if 'email_from' in fields:
|
||||
res.update({'email_from': (case.section_id and case.section_id.reply_to) or \
|
||||
(case.user_id and case.user_id.address_id and \
|
||||
case.user_id.address_id.email) or tools.config.get('email_from',False)})
|
||||
case.user_id.address_id.email and \
|
||||
"%s <%s>" % (case.user_id.name, case.user_id.address_id.email)) or \
|
||||
tools.config.get('email_from',False)})
|
||||
if 'subject' in fields:
|
||||
res.update({'subject': '[%s] %s' %(str(case.id), case.name or '')})
|
||||
if 'email_cc' in fields:
|
||||
res.update({'email_cc': case.email_cc or ''})
|
||||
if 'text' in fields:
|
||||
res.update({'text': '\n\n'+(case.user_id.signature or '') + '\n\n' + (case.description or '')})
|
||||
res.update({'text': '\n\n'+(case.user_id.signature or '')})
|
||||
if 'state' in fields:
|
||||
res.update({'state': 'pending'})
|
||||
return res
|
||||
|
||||
@@ -20,11 +20,11 @@
|
||||
</page>
|
||||
<page string="Attachments">
|
||||
<field name="doc1" filename="doc1_fname"/>
|
||||
<field name="doc1_fname"/>
|
||||
<field name="doc1_fname" invisible="1" />
|
||||
<field name="doc2" filename="doc2_fname" />
|
||||
<field name="doc2_fname"/>
|
||||
<field name="doc2_fname" invisible="1" />
|
||||
<field name="doc3" filename="doc3_fname" />
|
||||
<field name="doc3_fname"/>
|
||||
<field name="doc3_fname" invisible="1" />
|
||||
</page>
|
||||
</notebook>
|
||||
<group colspan="2" col="4" >
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="P10">[[ o.partner_id.title or '' ]] [[ o.partner_id.name ]]</para>
|
||||
<para style="P10">[[ o.partner_id.name ]] [[ o.partner_id.title or '' ]]</para>
|
||||
<para style="P10">[[ o.address_invoice_id.title or '' ]] [[ o.address_invoice_id.name ]]</para>
|
||||
<para style="P10">[[ o.address_invoice_id.street ]]</para>
|
||||
<para style="P10">[[ o.address_invoice_id.street2 or '' ]]</para>
|
||||
@@ -164,4 +164,4 @@
|
||||
<drawRightString x="195mm" y="15mm">[[mod10r('01'+str('%.2f' % o.amount_total).replace('.','').rjust(10,'0'))]]>[[ _get_ref(o) ]]+ [[o.partner_bank.bvr_number.split('-')[0]+(str(o.partner_bank.bvr_number.split('-')[1])).rjust(6,'0')+o.partner_bank.bvr_number.split('-')[2] ]]></drawRightString>
|
||||
</illustration>
|
||||
</story>
|
||||
</document>
|
||||
</document>
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="P18">[[ o.partner_id.title or '' ]] [[ o.partner_id.name ]]</para>
|
||||
<para style="P18">[[ o.partner_id.name ]] [[ o.partner_id.title or '' ]]</para>
|
||||
<para style="P18">[[ o.address_invoice_id.title or '' ]] [[ o.address_invoice_id.name ]]</para>
|
||||
<para style="P18">[[ o.address_invoice_id.street ]]</para>
|
||||
<para style="P18">[[ o.address_invoice_id.street2 or '' ]]</para>
|
||||
@@ -380,4 +380,4 @@
|
||||
</illustration>
|
||||
|
||||
</story>
|
||||
</document>
|
||||
</document>
|
||||
|
||||
@@ -8,12 +8,12 @@
|
||||
<field name="inherit_id" ref="base.view_partner_form"/>
|
||||
<field name="priority">36</field>
|
||||
<field name="arch" type="xml">
|
||||
<group name="sale_list" position="after" groups="base.group_extended">
|
||||
<group colspan="2" col="2" groups="base.group_extended">
|
||||
<page string="Sales & Purchases" position="inside">
|
||||
<group colspan="4" col="2" groups="base.group_extended">
|
||||
<separator string="Purchases Properties" colspan="2"/>
|
||||
<field name="property_product_pricelist_purchase"/>
|
||||
<field name="property_product_pricelist_purchase" />
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
<td>
|
||||
<para style="terp_default_9">[[ repeatIn(o.dest_address_id and [o.dest_address_id] or [],'addr') ]]</para>
|
||||
<para style="terp_default_Bold_9">Shipping address :</para>
|
||||
<para style="P1">[[ o.partner_id.title or '' ]] [[ o.partner_id.name ]]</para>
|
||||
<para style="P1">[[ o.partner_id.name ]] [[ o.partner_id.title or '' ]]</para>
|
||||
<para style="P1">[[ addr.title or '' ]] [[ addr.name ]]</para>
|
||||
<para style="P1">[[ addr.street ]]</para>
|
||||
<para style="P1">[[ addr.street2 or '' ]]</para>
|
||||
@@ -175,7 +175,7 @@
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_9">[[ o.partner_id.title or '' ]] [[ o.partner_id.name ]]</para>
|
||||
<para style="terp_default_9">[[ o.partner_id.name ]] [[ o.partner_id.title or '' ]]</para>
|
||||
<para style="terp_default_9">[[ o.partner_address_id.title or '' ]] [[ o.partner_address_id.name ]]</para>
|
||||
<para style="terp_default_9">[[ o.partner_address_id.street ]]</para>
|
||||
<para style="terp_default_9">[[ o.partner_address_id.street2 or '' ]]</para>
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_9">[[ (order.partner_id and order.partner_id.title) or '' ]] [[ order.partner_id.name ]]</para>
|
||||
<para style="terp_default_9">[[ order.partner_id.name ]] [[ order.partner_id.title or '' ]]</para>
|
||||
<para style="terp_default_9">[[ (order.partner_address_id and order.partner_address_id.title) or '' ]] [[ order.partner_address_id.name ]] </para>
|
||||
<para style="terp_default_9">[[ (order.partner_address_id and order.partner_address_id.street) or '']] [[ order.partner_address_id.street2 ]]</para>
|
||||
<para style="terp_default_9">[[ (order.partner_address_id and order.partner_address_id.zip) or '' ]] [[ (order.partner_address_id and order.partner_address_id.city) or '' ]]</para>
|
||||
|
||||
@@ -245,7 +245,7 @@
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_8">[[ o.partner_id.title or '' ]] [[ o.partner_id.name ]]</para>
|
||||
<para style="terp_default_8">[[ o.partner_id.name ]] [[ o.partner_id.title or '' ]]</para>
|
||||
<para style="terp_default_8">[[ o.address_invoice_id.title or '' ]] [[ o.address_invoice_id.name ]]</para>
|
||||
<para style="terp_default_8">[[ o.address_invoice_id.street ]]</para>
|
||||
<para style="terp_default_8">[[ o.address_invoice_id.street2 or '' ]]</para>
|
||||
|
||||
@@ -134,7 +134,7 @@
|
||||
<tr>
|
||||
<td>
|
||||
<para style="terp_default_Bold_9">Shipping address :</para>
|
||||
<para style="terp_default_9">[[ o.partner_id.title or '' ]] [[ o.partner_id.name ]]</para>
|
||||
<para style="terp_default_9">[[ o.partner_id.name ]] [[ o.partner_id.title or '' ]]</para>
|
||||
<para style="terp_default_9">[[ o.partner_shipping_id.title or '' ]] [[ o.partner_shipping_id.name ]]</para>
|
||||
<para style="terp_default_9">[[ o.partner_shipping_id.street ]]</para>
|
||||
<para style="terp_default_9">[[ o.partner_shipping_id.street2 or '' ]]</para>
|
||||
@@ -155,7 +155,7 @@
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_9">[[ o.partner_id.title or '' ]] [[ o.partner_id.name ]]</para>
|
||||
<para style="terp_default_9">[[ o.partner_id.name ]] [[ o.partner_id.title or '' ]]</para>
|
||||
<para style="terp_default_9">[[ o.partner_order_id.title or '' ]] [[ o.partner_order_id.name ]]</para>
|
||||
<para style="terp_default_9">[[ o.partner_order_id.street ]]</para>
|
||||
<para style="terp_default_9">[[ o.partner_order_id.street2 or '' ]]</para>
|
||||
|
||||
Reference in New Issue
Block a user