[FIX] context in search button + remove context type = lead in action + field type required
bzr revid: tfr@openerp.com-20110218132035-98sozsfsbiqi78ap
This commit is contained in:
parent
49ec83dd81
commit
03068fb1ee
|
@ -49,7 +49,7 @@ class crm_case(object):
|
|||
|
||||
def _find_lost_stage(self, cr, uid, type, section_id):
|
||||
return self._find_percent_stage(cr, uid, 0.0, type, section_id)
|
||||
|
||||
|
||||
def _find_won_stage(self, cr, uid, type, section_id):
|
||||
return self._find_percent_stage(cr, uid, 100.0, type, section_id)
|
||||
|
||||
|
@ -60,14 +60,14 @@ class crm_case(object):
|
|||
stage_pool = self.pool.get('crm.case.stage')
|
||||
if section_id :
|
||||
ids = stage_pool.search(cr, uid, [("probability", '=', percent), ("type", 'like', type), ("section_ids", 'in', [section_id])])
|
||||
else :
|
||||
else :
|
||||
ids = stage_pool.search(cr, uid, [("probability", '=', percent), ("type", 'like', type)])
|
||||
|
||||
|
||||
if ids:
|
||||
return ids[0]
|
||||
return False
|
||||
|
||||
|
||||
|
||||
|
||||
def _find_first_stage(self, cr, uid, type, section_id):
|
||||
"""
|
||||
return the first stage that has a sequence number equal or higher than sequence
|
||||
|
@ -75,9 +75,9 @@ class crm_case(object):
|
|||
stage_pool = self.pool.get('crm.case.stage')
|
||||
if section_id :
|
||||
ids = stage_pool.search(cr, uid, [("sequence", '>', 0), ("type", 'like', type), ("section_ids", 'in', [section_id])])
|
||||
else :
|
||||
else :
|
||||
ids = stage_pool.search(cr, uid, [("sequence", '>', 0), ("type", 'like', type)])
|
||||
|
||||
|
||||
if ids:
|
||||
stages = stage_pool.browse(cr, uid, ids)
|
||||
stage_min = stages[0]
|
||||
|
@ -85,9 +85,9 @@ class crm_case(object):
|
|||
if stage_min.sequence > stage.sequence:
|
||||
stage_min = stage
|
||||
return stage_min.id
|
||||
else :
|
||||
else :
|
||||
return False
|
||||
|
||||
|
||||
def onchange_stage_id(self, cr, uid, ids, stage_id, context={}):
|
||||
|
||||
""" @param self: The object pointer
|
||||
|
@ -95,7 +95,7 @@ class crm_case(object):
|
|||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of stage’s IDs
|
||||
@stage_id: change state id on run time """
|
||||
|
||||
|
||||
if not stage_id:
|
||||
return {'value':{}}
|
||||
|
||||
|
@ -151,19 +151,19 @@ class crm_case(object):
|
|||
default = {}
|
||||
|
||||
default.update({
|
||||
'message_ids': [],
|
||||
'message_ids': [],
|
||||
})
|
||||
if hasattr(self, '_columns'):
|
||||
if self._columns.get('date_closed'):
|
||||
default.update({
|
||||
'date_closed': False,
|
||||
'date_closed': False,
|
||||
})
|
||||
if self._columns.get('date_open'):
|
||||
default.update({
|
||||
'date_open': False
|
||||
})
|
||||
return super(osv.osv, self).copy(cr, uid, id, default, context=context)
|
||||
|
||||
|
||||
def _get_default_email(self, cr, uid, context=None):
|
||||
"""Gives default email address for current user
|
||||
@param self: The object pointer
|
||||
|
@ -214,7 +214,7 @@ class crm_case(object):
|
|||
return next_stage
|
||||
else :
|
||||
return self._find_next_stage(cr, uid, stage_list, index + 1, current_seq, stage_pool)
|
||||
|
||||
|
||||
def stage_change(self, cr, uid, ids, context=None, order='sequence'):
|
||||
if context is None:
|
||||
context = {}
|
||||
|
@ -226,12 +226,12 @@ class crm_case(object):
|
|||
for case in self.browse(cr, uid, ids, context=context):
|
||||
next_stage = False
|
||||
value = {}
|
||||
if case.section_id.id :
|
||||
if case.section_id.id :
|
||||
domain = [('type', '=', stage_type),('section_ids', '=', case.section_id.id)]
|
||||
else :
|
||||
domain = [('type', '=', stage_type)]
|
||||
|
||||
|
||||
|
||||
stages = stage_pool.search(cr, uid, domain, order=order)
|
||||
current_seq = case.stage_id.sequence
|
||||
index = -1
|
||||
|
@ -239,18 +239,18 @@ class crm_case(object):
|
|||
index = stages.index(case.stage_id.id)
|
||||
|
||||
next_stage = self._find_next_stage(cr, uid, stages, index, current_seq, stage_pool, context=context)
|
||||
|
||||
|
||||
if next_stage:
|
||||
next_stage_id = next_stage.id
|
||||
value.update({'stage_id': next_stage.id})
|
||||
if next_stage.on_change:
|
||||
value.update({'probability': next_stage.probability})
|
||||
self.write(cr, uid, [case.id], value, context=context)
|
||||
|
||||
|
||||
|
||||
|
||||
return next_stage_id #FIXME should return a list of all id
|
||||
|
||||
|
||||
|
||||
|
||||
def stage_next(self, cr, uid, ids, context=None):
|
||||
"""This function computes next stage for case from its current stage
|
||||
using available stage for that case type
|
||||
|
@ -259,9 +259,9 @@ class crm_case(object):
|
|||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of case IDs
|
||||
@param context: A standard dictionary for contextual values"""
|
||||
|
||||
|
||||
return self.stage_change(cr, uid, ids, context=context, order='sequence')
|
||||
|
||||
|
||||
def stage_previous(self, cr, uid, ids, context=None):
|
||||
"""This function computes previous stage for case from its current stage
|
||||
using available stage for that case type
|
||||
|
@ -283,7 +283,7 @@ class crm_case(object):
|
|||
"""
|
||||
if not part:
|
||||
return {'value': {'partner_address_id': False,
|
||||
'email_from': False,
|
||||
'email_from': False,
|
||||
'phone': False
|
||||
}}
|
||||
addr = self.pool.get('res.partner').address_get(cr, uid, [part], ['contact'])
|
||||
|
@ -321,7 +321,7 @@ class crm_case(object):
|
|||
@param ids: List of case Ids
|
||||
@param *args: Tuple Value for additional Params
|
||||
"""
|
||||
|
||||
|
||||
cases = self.browse(cr, uid, ids)
|
||||
self._history(cr, uid, cases, _('Open'))
|
||||
for case in cases:
|
||||
|
@ -329,9 +329,9 @@ class crm_case(object):
|
|||
if not case.user_id:
|
||||
data['user_id'] = uid
|
||||
self.write(cr, uid, case.id, data)
|
||||
|
||||
|
||||
self._action(cr, uid, cases, 'open')
|
||||
|
||||
|
||||
self._action(cr, uid, cases, 'open')
|
||||
return True
|
||||
|
||||
def case_close(self, cr, uid, ids, *args):
|
||||
|
@ -483,7 +483,7 @@ class crm_case(object):
|
|||
tools.email_send(
|
||||
src,
|
||||
[dest],
|
||||
subject,
|
||||
subject,
|
||||
body,
|
||||
reply_to=case.section_id.reply_to,
|
||||
openobject_id=str(case.id),
|
||||
|
@ -550,9 +550,9 @@ class crm_case_stage(osv.osv):
|
|||
_description = "Stage of case"
|
||||
_rec_name = 'name'
|
||||
_order = "sequence"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def _get_type_value(self, cr, user, context):
|
||||
return [('lead','Lead'),('opportunity','Opportunity')]
|
||||
|
||||
|
@ -564,10 +564,10 @@ class crm_case_stage(osv.osv):
|
|||
'on_change': fields.boolean('Change Probability Automatically', \
|
||||
help="Change Probability on next and previous stages."),
|
||||
'requirements': fields.text('Requirements'),
|
||||
'type': fields.selection(_get_type_value, 'Type'),
|
||||
'type': fields.selection(_get_type_value, 'Type', required=True),
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
def _find_stage_type(self, cr, uid, context=None):
|
||||
"""Finds type of stage according to object.
|
||||
@param self: The object pointer
|
||||
|
@ -612,7 +612,7 @@ class crm_case_section(osv.osv):
|
|||
'child_ids': fields.one2many('crm.case.section', 'parent_id', 'Child Teams'),
|
||||
'resource_calendar_id': fields.many2one('resource.calendar', "Working Time"),
|
||||
'note': fields.text('Description'),
|
||||
'working_hours': fields.float('Working Hours', digits=(16,2 )),
|
||||
'working_hours': fields.float('Working Hours', digits=(16,2 )),
|
||||
'stage_ids': fields.many2many('crm.case.stage', 'section_stage_rel', 'section_id', 'stage_id', 'Stages'),
|
||||
}
|
||||
|
||||
|
@ -708,7 +708,7 @@ class crm_case_stage(osv.osv):
|
|||
_columns = {
|
||||
'section_ids':fields.many2many('crm.case.section', 'section_stage_rel', 'stage_id', 'section_id', 'Sections'),
|
||||
}
|
||||
|
||||
|
||||
crm_case_stage()
|
||||
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<data>
|
||||
|
||||
<!-- Stage Search view -->
|
||||
|
||||
|
||||
<record id="crm_lead_stage_search" model="ir.ui.view">
|
||||
<field name="name">Stage - Search</field>
|
||||
<field name="model">crm.case.stage</field>
|
||||
|
@ -11,9 +11,9 @@
|
|||
<field name="arch" type="xml">
|
||||
<search string="Stage Search">
|
||||
<filter icon="terp-personal" name="lead"
|
||||
string="Lead" domain="[('type', '=', 'lead')]"/>
|
||||
string="Lead" domain="[('type', '=', 'lead')]" context="{'type' : 'lead'}"/>
|
||||
<filter icon="terp-personal+" name="opportunity"
|
||||
string="Opportunity" domain="[('type', '=', 'opportunity')]"/>
|
||||
string="Opportunity" domain="[('type', '=', 'opportunity')]" context="{'type' : 'opportunity'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="name"/>
|
||||
</search>
|
||||
|
@ -27,7 +27,7 @@
|
|||
<field name="res_model">crm.case.stage</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_id" ref="crm.crm_case_stage_tree"/>
|
||||
<field name="context">{'type':'lead','search_default_lead':1}</field>
|
||||
<field name="context">{'search_default_opportunity':1}</field>
|
||||
<field name="search_view_id" ref="crm_lead_stage_search"/>
|
||||
<field name="help">Add specific stages to leads and opportunities allowing your sales to better organise their sales pipeline. Stages will allow them to easily track how a specific lead or opportunity is positioned in the sales cycle.</field>
|
||||
</record>
|
||||
|
@ -348,7 +348,6 @@
|
|||
|
||||
<group expand="0" string="Extended Filters..." groups="base.group_extended">
|
||||
<field name="stage_id" widget="selection" domain="[('type', '=', 'lead')]"/>
|
||||
<field name="categ_id" widget="selection" domain="[('object_id.model', '=', 'crm.lead')]"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="country_id" context="{'invisible_country': False}">
|
||||
<filter icon="terp-personal+" context="{'invisible_country': False}" help="Show countries"/>
|
||||
|
|
Loading…
Reference in New Issue