[REM]: crm:Remove wrong commit changes

bzr revid: ksa@tinyerp.co.in-20100322094556-z321hgds7qgcl48j
This commit is contained in:
ksa (Open ERP)
2010-03-22 15:15:56 +05:30
parent 6e60df4801
commit bf7b27b4f8
+214 -144
View File
@@ -30,77 +30,77 @@ import tools
MAX_LEVEL = 15
AVAILABLE_STATES = [
('draft', 'Draft'),
('open', 'Open'),
('cancel', 'Cancelled'),
('done', 'Closed'),
('draft', 'Draft'),
('open', 'Open'),
('cancel', 'Cancelled'),
('done', 'Closed'),
('pending', 'Pending')
]
AVAILABLE_PRIORITIES = [
('5', 'Lowest'),
('4', 'Low'),
('3', 'Normal'),
('2', 'High'),
('5', 'Lowest'),
('4', 'Low'),
('3', 'Normal'),
('2', 'High'),
('1', 'Highest')
]
icon_lst = {
'form': 'STOCK_NEW',
'tree': 'STOCK_JUSTIFY_FILL',
'form': 'STOCK_NEW',
'tree': 'STOCK_JUSTIFY_FILL',
'calendar': 'STOCK_SELECT_COLOR'
}
class crm_case_section(osv.osv):
""" Cases Section"""
_name = "crm.case.section"
_description = "Sales Teams"
_order = "name"
_columns = {
'name': fields.char('Sales Team', size=64, required=True, translate=True),
'code': fields.char('Code', size=8),
'active': fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the sales team without removing it."),
'allow_unlink': fields.boolean('Allow Delete', help="Allows to delete non draft cases"),
'user_id': fields.many2one('res.users', 'Responsible User'),
'reply_to': fields.char('Reply-To', size=64, help="The email address put in the 'Reply-To' of all emails sent by Open ERP about cases in this sales team"),
'parent_id': fields.many2one('crm.case.section', 'Parent Section'),
'child_ids': fields.one2many('crm.case.section', 'parent_id', 'Child Sections'),
'name': fields.char('Sales Team', size=64, required=True, translate=True),
'code': fields.char('Code', size=8),
'active': fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the sales team without removing it."),
'allow_unlink': fields.boolean('Allow Delete', help="Allows to delete non draft cases"),
'user_id': fields.many2one('res.users', 'Responsible User'),
'reply_to': fields.char('Reply-To', size=64, help="The email address put in the 'Reply-To' of all emails sent by Open ERP about cases in this sales team"),
'parent_id': fields.many2one('crm.case.section', 'Parent Section'),
'child_ids': fields.one2many('crm.case.section', 'parent_id', 'Child Sections'),
}
_defaults = {
'active': lambda *a: 1,
'allow_unlink': lambda *a: 1,
'active': lambda *a: 1,
'allow_unlink': lambda *a: 1,
}
_sql_constraints = [
('code_uniq', 'unique (code)', 'The code of the section must be unique !')
]
def _check_recursion(self, cr, uid, ids):
"""
"""
Checks for recursion level for sections
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of section ids
@param ids: List of section ids
"""
level = 100
while len(ids):
cr.execute('select distinct parent_id from crm_case_section where id =ANY(%s)', (ids,))
ids = filter(None, map(lambda x: x[0], cr.fetchall()))
if not level:
return False
level -= 1
return True
_constraints = [
(_check_recursion, 'Error ! You cannot create recursive sections.', ['parent_id'])
]
def name_get(self, cr, uid, ids, context={}):
"""Overrides orm """
if not len(ids):
@@ -120,18 +120,30 @@ class crm_case_categ(osv.osv):
_description = "Category of case"
_columns = {
'name': fields.char('Case Category Name', size=64, required=True, translate=True),
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
'object_id': fields.many2one('ir.model', 'Object Name'),
<<<<<<< TREE
'name': fields.char('Case Category Name', size=64, required=True, translate=True),
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
'object_id': fields.many2one('ir.model','Object Name'),
=======
'name': fields.char('Case Category Name', size=64, required=True, translate=True),
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
'object_id': fields.many2one('ir.model', 'Object Name'),
>>>>>>> MERGE-SOURCE
}
def _find_object_id(self, cr, uid, context=None):
object_id = context and context.get('object_id', False) or False
<<<<<<< TREE
ids =self.pool.get('ir.model').search(cr, uid, [('model', '=', object_id)])
return ids and ids[0]
_defaults = {
=======
ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', object_id)])
return ids and ids[0]
_defaults = {
return ids and ids[0]
_defaults = {
>>>>>>> MERGE-SOURCE
'object_id' : _find_object_id
}
#
#
crm_case_categ()
class crm_case_resource_type(osv.osv):
@@ -139,17 +151,28 @@ class crm_case_resource_type(osv.osv):
_description = "Resource Type of case"
_rec_name = "name"
_columns = {
'name': fields.char('Case Resource Type', size=64, required=True, translate=True),
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
'object_id': fields.many2one('ir.model', 'Object Name'),
<<<<<<< TREE
'name': fields.char('Case Resource Type', size=64, required=True, translate=True),
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
'object_id': fields.many2one('ir.model','Object Name'),
=======
'name': fields.char('Case Resource Type', size=64, required=True, translate=True),
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
'object_id': fields.many2one('ir.model', 'Object Name'),
>>>>>>> MERGE-SOURCE
}
def _find_object_id(self, cr, uid, context=None):
object_id = context and context.get('object_id', False) or False
<<<<<<< TREE
ids =self.pool.get('ir.model').search(cr, uid, [('model', '=', object_id)])
return ids and ids[0]
=======
ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', object_id)])
return ids and ids[0]
return ids and ids[0]
>>>>>>> MERGE-SOURCE
_defaults = {
'object_id' : _find_object_id
}
}
crm_case_resource_type()
@@ -159,24 +182,29 @@ class crm_case_stage(osv.osv):
_rec_name = 'name'
_order = "sequence"
_columns = {
'name': fields.char('Stage Name', size=64, required=True, translate=True),
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of case stages."),
'object_id': fields.many2one('ir.model', 'Object Name'),
'probability': fields.float('Probability (%)', required=True),
'on_change': fields.boolean('Change Probability Automatically', help="Change Probability on next and previous stages."),
'name': fields.char('Stage Name', size=64, required=True, translate=True),
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of case stages."),
'object_id': fields.many2one('ir.model', 'Object Name'),
'probability': fields.float('Probability (%)', required=True),
'on_change': fields.boolean('Change Probability Automatically', help="Change Probability on next and previous stages."),
'requirements': fields.text('Requirements')
}
def _find_object_id(self, cr, uid, context=None):
object_id = context and context.get('object_id', False) or False
<<<<<<< TREE
ids =self.pool.get('ir.model').search(cr, uid, [('model', '=', object_id)])
return ids and ids[0]
=======
ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', object_id)])
return ids and ids[0]
return ids and ids[0]
>>>>>>> MERGE-SOURCE
_defaults = {
'sequence': lambda *args: 1,
'probability': lambda *args: 0.0,
'sequence': lambda *args: 1,
'probability': lambda *args: 0.0,
'object_id' : _find_object_id
}
crm_case_stage()
def _links_get(self, cr, uid, context={}):
@@ -218,41 +246,50 @@ class crm_case(osv.osv):
if not history_obj:
return result
for case in self.browse(cr, uid, ids, context):
<<<<<<< TREE
model_ids = model_obj.search(cr, uid, [('model','=',case._name)])
history_ids = history_obj.search(cr, uid, [('model_id','=',model_ids[0]),('res_id','=',case.id)])
=======
model_ids = model_obj.search(cr, uid, [('model', '=', case._name)])
history_ids = history_obj.search(cr, uid, [('model_id', '=', model_ids[0]), ('res_id', '=', case.id)])
history_ids = history_obj.search(cr, uid, [('model_id', '=', model_ids[0]), ('res_id', '=', case.id)])
>>>>>>> MERGE-SOURCE
if history_ids:
result[case.id] = {name: history_ids}
else:
result[case.id] = {name: []}
<<<<<<< TREE
result[case.id] = {name:[]}
=======
result[case.id] = {name: []}
>>>>>>> MERGE-SOURCE
return result
_columns = {
'id': fields.integer('ID', readonly=True),
'name': fields.char('Description', size=1024, required=True),
'active': fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the case without removing it."),
'description': fields.text('Description'),
'section_id': fields.many2one('crm.case.section', 'Sales Team', select=True, help='Sales team to which Case belongs to. Define Responsible user and Email account for mail gateway.'),
'email_from': fields.char('Email', size=128, help="These people will receive email."),
'id': fields.integer('ID', readonly=True),
'name': fields.char('Description', size=1024, required=True),
'active': fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the case without removing it."),
'description': fields.text('Description'),
'section_id': fields.many2one('crm.case.section', 'Sales Team', select=True, help='Sales team to which Case belongs to. Define Responsible user and Email account for mail gateway.'),
'email_from': fields.char('Email', size=128, help="These people will receive email."),
'email_cc': fields.text('Watchers Emails', size=252 , help="These people will receive a copy of the future" \
" communication between partner and users by email"),
'probability': fields.float('Probability'),
'email_last': fields.function(_email_last, method=True,
string='Latest E-Mail', type='text'),
'partner_id': fields.many2one('res.partner', 'Partner'),
'partner_address_id': fields.many2one('res.partner.address', 'Partner Contact', domain="[('partner_id','=',partner_id)]"),
'create_date': fields.datetime('Creation Date' , readonly=True),
'write_date': fields.datetime('Update Date' , readonly=True),
'date_deadline': fields.date('Deadline'),
'user_id': fields.many2one('res.users', 'Responsible'),
'history_line': fields.function(_get_log_ids, method=True, type='one2many', multi="history_line", relation="crm.case.history", string="Communication"),
'log_ids': fields.function(_get_log_ids, method=True, type='one2many', multi="log_ids", relation="crm.case.log", string="Logs History"),
'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]"),
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True,
" communication between partner and users by email"),
'probability': fields.float('Probability'),
'email_last': fields.function(_email_last, method=True,
string='Latest E-Mail', type='text'),
'partner_id': fields.many2one('res.partner', 'Partner'),
'partner_address_id': fields.many2one('res.partner.address', 'Partner Contact', domain="[('partner_id','=',partner_id)]"),
'create_date': fields.datetime('Creation Date' , readonly=True),
'write_date': fields.datetime('Update Date' , readonly=True),
'date_deadline': fields.date('Deadline'),
'user_id': fields.many2one('res.users', 'Responsible'),
'history_line': fields.function(_get_log_ids, method=True, type='one2many', multi="history_line", relation="crm.case.history", string="Communication"),
'log_ids': fields.function(_get_log_ids, method=True, type='one2many', multi="log_ids", relation="crm.case.log", string="Logs History"),
'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]"),
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True,
help='The state is set to \'Draft\', when a case is created.\
\nIf the case is in progress the state is set to \'Open\'.\
\nWhen the case is over, the state is set to \'Done\'.\
\nIf the case needs to be reviewed then the state is set to \'Pending\'.'),
'company_id': fields.many2one('res.company', 'Company'),
\nIf the case needs to be reviewed then the state is set to \'Pending\'.'),
'company_id': fields.many2one('res.company', 'Company'),
}
def _get_default_partner_address(self, cr, uid, context):
if not context.get('portal', False):
@@ -282,22 +319,22 @@ class crm_case(osv.osv):
return user.context_section_id.id or False
_defaults = {
'active': lambda *a: 1,
'user_id': _get_default_user,
'partner_id': _get_default_partner,
'partner_address_id': _get_default_partner_address,
'email_from': _get_default_email,
'state': lambda *a: 'draft',
'date_deadline': lambda *a: (datetime.today() + timedelta(days=3)).strftime('%Y-%m-%d %H:%M:%S'),
'section_id': _get_section,
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.case', context=c),
'active': lambda *a: 1,
'user_id': _get_default_user,
'partner_id': _get_default_partner,
'partner_address_id': _get_default_partner_address,
'email_from': _get_default_email,
'state': lambda *a: 'draft',
'date_deadline': lambda *a: (datetime.today() + timedelta(days=3)).strftime('%Y-%m-%d %H:%M:%S'),
'section_id': _get_section,
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.case', context=c),
}
_order = 'date_deadline desc, create_date desc,id desc'
def unlink(self, cr, uid, ids, context={}):
for case in self.browse(cr, uid, ids, context):
if (not case.section_id.allow_unlink) and (case.state <> 'draft'):
raise osv.except_osv(_('Warning !'),
raise osv.except_osv(_('Warning !'),
_('You can not delete this case. You should better cancel it.'))
return super(crm_case, self).unlink(cr, uid, ids, context)
@@ -307,10 +344,10 @@ class crm_case(osv.osv):
section = (case.section_id.id or False)
if section in s:
st = case.stage_id.id or False
if st in s[section]:
if st in s[section]:
self.write(cr, uid, [case.id], {'stage_id': s[section][st]})
return True
def get_stage_dict(self, cr, uid, ids, context={}):
sid = self.pool.get('crm.case.stage').search(cr, uid, [('object_id.model', '=', self._name)], context=context)
s = {}
@@ -321,7 +358,7 @@ class crm_case(osv.osv):
s[section][previous.get(section, False)] = stage.id
previous[section] = stage.id
return s
def stage_previous(self, cr, uid, ids, context={}):
s = self.get_stage_dict(cr, uid, ids, context=context)
for case in self.browse(cr, uid, ids, context):
@@ -347,7 +384,7 @@ class crm_case(osv.osv):
if case.email_from:
value['email_from'] = case.email_from
return {'value': value}
def history(self, cr, uid, ids, keyword, history=False, email=False, details=None, context={}):
cases = self.browse(cr, uid, ids, context=context)
return self.__history(cr, uid, cases, keyword=keyword, \
@@ -355,25 +392,44 @@ class crm_case(osv.osv):
context=context)
def __history(self, cr, uid, cases, keyword, history=False, email=False, details=None, context={}):
model_obj = self.pool.get('ir.model')
model_obj = self.pool.get('ir.model')
for case in cases:
model_ids = model_obj.search(cr, uid, [('model', '=', case._name)])
<<<<<<< TREE
model_ids = model_obj.search(cr, uid, [('model','=',case._name)])
=======
model_ids = model_obj.search(cr, uid, [('model', '=', case._name)])
>>>>>>> MERGE-SOURCE
data = {
'name': keyword,
'user_id': uid,
'date': time.strftime('%Y-%m-%d %H:%M:%S'),
'model_id' : model_ids and model_ids[0] or False,
'res_id': case.id,
<<<<<<< TREE
'name': keyword,
'user_id': uid,
'date': time.strftime('%Y-%m-%d %H:%M:%S'),
'model_id' : model_ids and model_ids[0] or False,
'res_id': case.id,
=======
'name': keyword,
'user_id': uid,
'date': time.strftime('%Y-%m-%d %H:%M:%S'),
'model_id' : model_ids and model_ids[0] or False,
'res_id': case.id,
>>>>>>> MERGE-SOURCE
'section_id': case.section_id.id
}
obj = self.pool.get('crm.case.log')
if history:
obj = self.pool.get('crm.case.history')
data['description'] = details or case.description
<<<<<<< TREE
data['email'] = email or \
(case.user_id and case.user_id.address_id and \
case.user_id.address_id.email) or False
res = obj.create(cr, uid, data, context)
=======
data['email'] = email or False
data['email_from'] = (case.user_id and case.user_id.address_id and \
case.user_id.address_id.email) or tools.config.get('email_from',False)
res = obj.create(cr, uid, data, context)
res = obj.create(cr, uid, data, context)
>>>>>>> MERGE-SOURCE
return True
_history = __history
@@ -389,34 +445,34 @@ class crm_case(osv.osv):
if case.email_last:
description = email_last
self.write(cursor, user, case.id, {
'description': '> ' + description.replace('\n', '\n> '),
'description': '> ' + description.replace('\n', '\n> '),
}, context=context)
return True
def case_log(self, cr, uid, ids, context={}, email=False, *args):
cases = self.browse(cr, uid, ids)
self.__history(cr, uid, cases, _('Historize'), history=True, email=email)
return self.write(cr, uid, ids, {'description': False, 'som': False,
return self.write(cr, uid, ids, {'description': False, 'som': False,
'canal_id': False})
def case_log_reply(self, cr, uid, ids, context={}, email=False, *args):
cases = self.browse(cr, uid, ids)
for case in cases:
if not case.email_from:
raise osv.except_osv(_('Error!'),
raise osv.except_osv(_('Error!'),
_('You must put a Partner eMail to use this action!'))
if not case.user_id:
raise osv.except_osv(_('Error!'),
raise osv.except_osv(_('Error!'),
_('You must define a responsible user for this case in order to use this action!'))
if not case.description:
raise osv.except_osv(_('Error!'),
raise osv.except_osv(_('Error!'),
_('Can not send mail with empty body,you should have description in the body'))
self.__history(cr, uid, cases, _('Send'), history=True, email=False)
for case in cases:
self.write(cr, uid, [case.id], {
'description': False,
'som': False,
'canal_id': False,
'description': False,
'som': False,
'canal_id': False,
})
emails = [case.email_from] + (case.email_cc or '').split(',')
emails = filter(None, emails)
@@ -426,23 +482,28 @@ class crm_case(osv.osv):
emailfrom = case.user_id.address_id and case.user_id.address_id.email or False
if not emailfrom:
raise osv.except_osv(_('Error!'),
raise osv.except_osv(_('Error!'),
_("No E-Mail ID Found for your Company address!"))
tools.email_send(
emailfrom,
emails,
'[' + str(case.id) + '] ' + case.name,
self.format_body(body),
reply_to = case.section_id.reply_to,
emailfrom,
emails,
'[' + str(case.id) + '] ' + case.name,
self.format_body(body),
reply_to = case.section_id.reply_to,
openobject_id = str(case.id)
)
return True
def onchange_partner_id(self, cr, uid, ids, part, email=False):
if not part:
return {'value': {'partner_address_id': False,
'email_from': False,
<<<<<<< TREE
return {'value':{'partner_address_id': False,
'email_from': False,
=======
return {'value': {'partner_address_id': False,
'email_from': False,
>>>>>>> MERGE-SOURCE
}}
addr = self.pool.get('res.partner').address_get(cr, uid, [part], ['contact'])
data = {'partner_address_id': addr['contact']}
@@ -481,7 +542,11 @@ class crm_case(osv.osv):
self.write(cr, uid, ids, data)
cases = self.browse(cr, uid, ids)
self.__history(cr, uid, cases, _('Escalate'))
self._action(cr, uid, cases, 'escalate')
<<<<<<< TREE
self._action(cr,uid, cases, 'escalate')
=======
self._action(cr, uid, cases, 'escalate')
>>>>>>> MERGE-SOURCE
return True
@@ -517,9 +582,15 @@ class crm_case(osv.osv):
cases = self.browse(cr, uid, ids)
cases[0].state # to fill the browse record cache
self.__history(cr, uid, cases, _('Draft'))
<<<<<<< TREE
self.write(cr, uid, ids, {'state':'draft', 'active':True})
self._action(cr,uid, cases, 'draft')
return True
=======
self.write(cr, uid, ids, {'state': 'draft', 'active': True})
self._action(cr, uid, cases, 'draft')
return True
return True
>>>>>>> MERGE-SOURCE
crm_case()
@@ -529,17 +600,17 @@ class crm_case_log(osv.osv):
_description = "Case Communication History"
_order = "id desc"
_columns = {
'name': fields.char('Status', size=64),
'som': fields.many2one('res.partner.som', 'State of Mind'),
'date': fields.datetime('Date'),
'canal_id': fields.many2one('res.partner.canal', 'Channel'),
'section_id': fields.many2one('crm.case.section', 'Section'),
'user_id': fields.many2one('res.users', 'User Responsible', readonly=True),
'model_id': fields.many2one('ir.model', "Model"),
'res_id': fields.integer('Resource ID'),
'name': fields.char('Status', size=64),
'som': fields.many2one('res.partner.som', 'State of Mind'),
'date': fields.datetime('Date'),
'canal_id': fields.many2one('res.partner.canal', 'Channel'),
'section_id': fields.many2one('crm.case.section', 'Section'),
'user_id': fields.many2one('res.users', 'User Responsible', readonly=True),
'model_id': fields.many2one('ir.model', "Model"),
'res_id': fields.integer('Resource ID'),
}
_defaults = {
'date': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
'date': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
}
crm_case_log()
@@ -547,7 +618,7 @@ class crm_case_history(osv.osv):
_name = "crm.case.history"
_description = "Case history"
_order = "id desc"
_inherits = {'crm.case.log': "log_id"}
_inherits = {'crm.case.log': "log_id"}
def _note_get(self, cursor, user, ids, name, arg, context=None):
res = {}
@@ -556,11 +627,11 @@ class crm_case_history(osv.osv):
res[hist.id] += (hist.description or '')
return res
_columns = {
'description': fields.text('Description'),
'note': fields.function(_note_get, method=True, string="Description", type="text"),
'email': fields.char('Email', size=84),
'description': fields.text('Description'),
'note': fields.function(_note_get, method=True, string="Description", type="text"),
'email': fields.char('Email', size=84),
'email_from' : fields.char('From Email', size=84),
'log_id': fields.many2one('crm.case.log', 'Log', ondelete='cascade'),
'log_id': fields.many2one('crm.case.log', 'Log', ondelete='cascade'),
}
crm_case_history()
@@ -568,11 +639,11 @@ class crm_email_add_cc_wizard(osv.osv_memory):
_name = "crm.email.add.cc"
_description = "Email Add CC"
_columns = {
'name': fields.selection([('user', 'User'), ('partner', 'Partner'), ('email', 'Email Address')], 'Send to', required=True),
'user_id': fields.many2one('res.users', "User"),
'partner_id': fields.many2one('res.partner', "Partner"),
'email': fields.char('Email', size=32),
'subject': fields.char('Subject', size=32),
'name': fields.selection([('user', 'User'), ('partner', 'Partner'), ('email', 'Email Address')], 'Send to', required=True),
'user_id': fields.many2one('res.users', "User"),
'partner_id': fields.many2one('res.partner', "Partner"),
'email': fields.char('Email', size=32),
'subject': fields.char('Subject', size=32),
}
def change_email(self, cr, uid, ids, user, partner):
@@ -603,12 +674,12 @@ class crm_email_add_cc_wizard(osv.osv_memory):
case = model_pool.browse(cr, uid, history_line.log_id.res_id)
body = history_line.description.replace('\n', '\n> ')
flag = tools.email_send(
case.user_id.address_id.email,
[case.email_from],
subject or '[' + str(case.id) + '] ' + case.name,
model_pool.format_body(body),
email_cc = [email],
openobject_id = str(case.id),
case.user_id.address_id.email,
[case.email_from],
subject or '[' + str(case.id) + '] ' + case.name,
model_pool.format_body(body),
email_cc = [email],
openobject_id = str(case.id),
subtype = "html"
)
if flag:
@@ -623,15 +694,14 @@ class users(osv.osv):
_inherit = 'res.users'
_description = "Users"
_columns = {
'context_section_id': fields.many2one('crm.case.section', 'Sales Team'),
'context_section_id': fields.many2one('crm.case.section', 'Sales Team'),
}
users()
class res_partner(osv.osv):
_inherit = 'res.partner'
_columns = {
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
}
res_partner()