[IMP] crm: immprovement on lead,opportunity

bzr revid: hmo@tinyerp.com-20100225065542-v5f9z5mbqnmd5ua2
This commit is contained in:
Harry (Open ERP) 2010-02-25 12:25:42 +05:30
parent db2ddf6345
commit 05fdaa58a7
7 changed files with 29 additions and 22 deletions

View File

@ -155,6 +155,7 @@ class crm_case_stage(osv.osv):
'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('Set Onchange'),
}
def _find_object_id(self, cr, uid, context=None):
object_id = context and context.get('object_id', False) or False

View File

@ -36,7 +36,7 @@ class crm_lead(osv.osv):
'name': fields.char('Lead Subject', size=64),
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]"),
'type_id': fields.many2one('crm.case.resource.type', 'Lead Type Name', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]"),
'partner_name': fields.char("Lead Name", size=64),
'partner_name': fields.char("Partner Name", size=64),
'partner_name2': fields.char('Contact', size=64),
'partner_phone': fields.char('Phone', size=32),
'partner_mobile': fields.char('Mobile', size=32),
@ -54,6 +54,7 @@ class crm_lead(osv.osv):
"the partner mentality in relation to our services.The scale has" \
"to be created with a factor for each level from 0 (Very dissatisfied) to 10 (Extremely satisfied)."),
'opportunity_id': fields.many2one('crm.opportunity', 'Opportunity'),
'user_id': fields.many2one('res.users', 'Salesman'),
}
crm_lead()

View File

@ -28,7 +28,7 @@
<field name="arch" type="xml">
<form string="Leads Form">
<group colspan="4" col="7">
<field name="partner_name" string="Lead Name" required="1"/>
<field name="partner_name" string="Partner Name" required="1"/>
<field name="partner_name2"/>
<field name="user_id"/>
<button
@ -124,11 +124,9 @@
<field name="partner_name2"/>
<field name="email_from"/>
<field name="partner_phone"/>
<field name="stage_id" string="Status"/>
<button name="stage_previous" string="Previous" states="open,pending" type="object" icon="gtk-go-back"/>
<button name="stage_next" string="Next" states="open,pending" type="object" icon="gtk-go-forward"/>
<field name="section_id"/>
<field name="user_id"/>
<field name="state"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
@ -191,7 +189,7 @@
<group expand="1" string="Group By..." colspan="4">
<filter string="Stage" icon="terp-crm" domain="[]" context="{'group_by':'stage_id'}"/>
<filter string="Partner" icon="terp-crm" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Responsible" icon="terp-crm" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Salesman" icon="terp-crm" domain="[]" context="{'group_by':'user_id'}"/>
<separator orientation="vertical"/>
<filter string="Creation" icon="terp-project" domain="[]" context="{'group_by':'create_date'}"/>
<filter string="Exp.Closing" icon="terp-project" domain="[]" context="{'group_by':'date_deadline'}"/>

View File

@ -37,7 +37,7 @@ class crm_opportunity(osv.osv):
_inherit = 'crm.case'
_columns = {
'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]"),
'categ_id': fields.many2one('crm.case.categ', 'Source', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]"),
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]"),
'type_id': fields.many2one('crm.case.resource.type', 'Resource Type', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]"),
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'),
'probability': fields.float('Probability (%)'),
@ -45,17 +45,20 @@ class crm_opportunity(osv.osv):
'ref' : fields.reference('Reference', selection=crm._links_get, size=128),
'ref2' : fields.reference('Reference 2', selection=crm._links_get, size=128),
'date_closed': fields.datetime('Closed', readonly=True),
'user_id': fields.many2one('res.users', 'Salesman'),
'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\'.'),
}
def onchange_stage_id(self, cr, uid, ids, stage, context={}):
if not stage:
def onchange_stage_id(self, cr, uid, ids, stage_id, context={}):
if not stage_id:
return {'value':{}}
probability = self.pool.get('crm.case.stage').browse(cr, uid, stage, context).probability
return {'value':{'probability':probability}}
stage = self.pool.get('crm.case.stage').browse(cr, uid, stage_id, context)
if not stage.on_change:
return {'value':{}}
return {'value':{'probability':stage.probability}}
crm_opportunity()

View File

@ -65,7 +65,7 @@
<field name="type_id" select="1" string="Campaign"/>
<field name="section_id" colspan="1" widget="selection"/>
<field name="priority" string="Priority"/>
<field name="categ_id" select="1" string="Source" widget="selection" domain="[('object_id.model', '=', 'crm.opportunity')]"/>
<field name="categ_id" select="1" string="Category" widget="selection" domain="[('object_id.model', '=', 'crm.opportunity')]"/>
</group>
<separator colspan="4" string="Details"/>
@ -154,6 +154,7 @@
<field name="planned_revenue" sum="Total of Planned Revenue"/>
<field name="probability" widget="progressbar" avg="Avg. of Probability"/>
<field name="date_deadline" string="Excepted Closing"/>
<field name="section_id"/>
<field name="user_id"/>
<field name="state"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
@ -213,8 +214,11 @@
<newline/>
<group expand="1" string="Group By..." colspan="4">
<filter string="Stage" icon="terp-crm" domain="[]" context="{'group_by':'stage_id'}"/>
<filter string="Partner" icon="terp-crm" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Responsible" icon="terp-crm" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Category" icon="terp-crm" domain="[]" context="{'group_by':'categ_id'}"/>
<filter string="Campaign" icon="terp-crm" domain="[]" context="{'group_by':'type_id'}"/>
<separator orientation="vertical"/>
<filter string="Partner" icon="terp-crm" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Salesman" icon="terp-crm" domain="[]" context="{'group_by':'user_id'}"/>
<separator orientation="vertical"/>
<filter string="Creation" icon="terp-project" domain="[]" context="{'group_by':'create_date'}"/>
<filter string="Exp.Closing" icon="terp-project" domain="[]" context="{'group_by':'date_deadline'}"/>

View File

@ -76,6 +76,8 @@
<field name="object_id" invisible="1" />
<field name="sequence"/>
<field name="probability"/>
<field name="on_change"/>
</form>
</field>
</record>

View File

@ -35,7 +35,7 @@ class lead2opportunity(wizard.interface):
<label string="You may have to verify that this partner does not exist already." colspan="4"/>
<newline />
<field name="action"/>
<group attrs="{'invisible':[('action','=','create')]}">
<group attrs="{'invisible':[('action','!=','exist')]}">
<field name="partner_id" attrs="{'required':[('action','=','exist')]}"/>
</group>
</form>"""
@ -75,11 +75,9 @@ class lead2opportunity(wizard.interface):
def _selectopportunity(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
case_obj = pool.get('crm.lead')
for case in case_obj.browse(cr, uid, data['ids']):
if not case.partner_id:
return 'create_partner'
return {'name': case.name, 'probability': case.probability or 20.0,
'planned_revenue':case.planned_revenue, 'partner_id':case.partner_id.id}
case = case_obj.browse(cr, uid, data['id'])
return {'name': case.name, 'probability': case.probability,
'planned_revenue':case.planned_revenue, 'partner_id':case.partner_id and case.partner_id.id or False}
def _selectChoice(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
@ -151,7 +149,7 @@ class lead2opportunity(wizard.interface):
pool = pooler.get_pool(cr.dbname)
lead_case_obj = pool.get('crm.lead')
partner_obj = pool.get('res.partner')
contact_obj = pool.get('res.partner.address')
contact_obj = pool.get('res.partner.address')
if data['form']['action'] == 'create':
for case in lead_case_obj.browse(cr, uid, data['ids']):
partner_id = partner_obj.search(cr, uid, [('name', '=', case.partner_name or case.name)])
@ -189,7 +187,7 @@ class lead2opportunity(wizard.interface):
'create_partner': {
'actions': [],
'result': {'type': 'form', 'arch': partner_form, 'fields': partner_fields,
'state' : [('end', 'Cancel', 'gtk-cancel'),('create', 'Continue', 'gtk-go-forward')]}
'state' : [('end', 'Cancel', 'gtk-cancel'),('opportunity', 'Skip', 'gtk-goto-last'), ('create', 'Continue', 'gtk-go-forward')]}
},
'create': {
'actions': [],