[MERGE] Merged branch remove-state-tde-all, taking only part about crm_claim, crm_helpdesk and various fixes in other crm modules.

bzr revid: tde@openerp.com-20130716151513-vb1vovihcgf0dltq
This commit is contained in:
Thibault Delavallée 2013-07-16 17:15:13 +02:00
commit aa389bcd5b
13 changed files with 142 additions and 193 deletions

View File

@ -42,7 +42,6 @@ class crm_claim_stage(osv.osv):
'sequence': fields.integer('Sequence', help="Used to order stages. Lower is better."), 'sequence': fields.integer('Sequence', help="Used to order stages. Lower is better."),
'section_ids':fields.many2many('crm.case.section', 'section_claim_stage_rel', 'stage_id', 'section_id', string='Sections', 'section_ids':fields.many2many('crm.case.section', 'section_claim_stage_rel', 'stage_id', 'section_id', string='Sections',
help="Link between stages and sales teams. When set, this limitate the current stage to the selected sales teams."), help="Link between stages and sales teams. When set, this limitate the current stage to the selected sales teams."),
'state': fields.selection(crm.AVAILABLE_STATES, 'Status', required=True, help="The related status for the stage. The status of your document will automatically change regarding the selected stage. For example, if a stage is related to the status 'Close', when your document reaches this stage, it will be automatically have the 'closed' status."),
'case_default': fields.boolean('Common to All Teams', 'case_default': fields.boolean('Common to All Teams',
help="If you check this field, this stage will be proposed by default on each sales team. It will not assign this stage to existing teams."), help="If you check this field, this stage will be proposed by default on each sales team. It will not assign this stage to existing teams."),
'fold': fields.boolean('Hide in Views when Empty', 'fold': fields.boolean('Hide in Views when Empty',
@ -51,7 +50,6 @@ class crm_claim_stage(osv.osv):
_defaults = { _defaults = {
'sequence': lambda *args: 1, 'sequence': lambda *args: 1,
'state': 'draft',
'fold': False, 'fold': False,
} }
@ -105,13 +103,6 @@ class crm_claim(osv.osv):
'stage_id': fields.many2one ('crm.claim.stage', 'Stage', track_visibility='onchange', 'stage_id': fields.many2one ('crm.claim.stage', 'Stage', track_visibility='onchange',
domain="['|', ('section_ids', '=', section_id), ('case_default', '=', True)]"), domain="['|', ('section_ids', '=', section_id), ('case_default', '=', True)]"),
'cause': fields.text('Root Cause'), 'cause': fields.text('Root Cause'),
'state': fields.related('stage_id', 'state', type="selection", store=True,
selection=crm.AVAILABLE_STATES, string="Status", readonly=True,
help='The status is set to \'Draft\', when a case is created.\
If the case is in progress the status is set to \'Open\'.\
When the case is over, the status is set to \'Done\'.\
If the case needs to be reviewed then the status is \
set to \'Pending\'.'),
} }
_defaults = { _defaults = {

View File

@ -44,25 +44,21 @@
<record model="crm.claim.stage" id="stage_claim1"> <record model="crm.claim.stage" id="stage_claim1">
<field name="name">New</field> <field name="name">New</field>
<field name="state">draft</field> <field name="sequence">1</field>
<field name="sequence">26</field>
<field name="case_default" eval="True"/> <field name="case_default" eval="True"/>
</record> </record>
<record model="crm.claim.stage" id="stage_claim5"> <record model="crm.claim.stage" id="stage_claim5">
<field name="name">In Progress</field> <field name="name">In Progress</field>
<field name="state">open</field>
<field name="sequence">27</field> <field name="sequence">27</field>
<field name="case_default" eval="True"/> <field name="case_default" eval="True"/>
</record> </record>
<record model="crm.claim.stage" id="stage_claim2"> <record model="crm.claim.stage" id="stage_claim2">
<field name="name">Settled</field> <field name="name">Settled</field>
<field name="state">done</field>
<field name="sequence">28</field> <field name="sequence">28</field>
<field name="case_default" eval="True"/> <field name="case_default" eval="True"/>
</record> </record>
<record model="crm.claim.stage" id="stage_claim3"> <record model="crm.claim.stage" id="stage_claim3">
<field name="name">Rejected</field> <field name="name">Rejected</field>
<field name="state">cancel</field>
<field name="sequence">29</field> <field name="sequence">29</field>
<field name="case_default" eval="True"/> <field name="case_default" eval="True"/>
<field name="case_refused" eval="True"/> <field name="case_refused" eval="True"/>

View File

@ -38,7 +38,6 @@
<tree string="Claim Stages"> <tree string="Claim Stages">
<field name="sequence"/> <field name="sequence"/>
<field name="name"/> <field name="name"/>
<field name="state"/>
</tree> </tree>
</field> </field>
</record> </record>
@ -51,7 +50,6 @@
<field name="name"/> <field name="name"/>
<field name="case_default"/> <field name="case_default"/>
<field name="sequence"/> <field name="sequence"/>
<field name="state"/>
<field name="fold"/> <field name="fold"/>
</form> </form>
</field> </field>
@ -79,7 +77,7 @@
<field name="name">CRM - Claims Tree</field> <field name="name">CRM - Claims Tree</field>
<field name="model">crm.claim</field> <field name="model">crm.claim</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree string="Claims" colors="blue:state=='pending' and not(date_deadline and (date_deadline &lt; current_date));gray:state in ('close', 'cancel');red:date_deadline and (date_deadline &lt; current_date)"> <tree string="Claims">
<field name="name"/> <field name="name"/>
<field name="partner_id"/> <field name="partner_id"/>
<field name="user_id"/> <field name="user_id"/>
@ -90,7 +88,6 @@
<field name="categ_id" string="Type"/> <field name="categ_id" string="Type"/>
<field name="date_deadline" invisible="1"/> <field name="date_deadline" invisible="1"/>
<field name="date_closed" invisible="1"/> <field name="date_closed" invisible="1"/>
<field name="state" groups="base.group_no_one"/>
</tree> </tree>
</field> </field>
</record> </record>
@ -113,7 +110,6 @@
<field name="priority"/> <field name="priority"/>
<field name="section_id" groups="base.group_multi_salesteams"/> <field name="section_id" groups="base.group_multi_salesteams"/>
<field name="date_deadline"/> <field name="date_deadline"/>
<field name="state" groups="base.group_no_one"/>
</group> </group>
<group colspan="4" col="4"> <group colspan="4" col="4">
<notebook> <notebook>
@ -191,9 +187,6 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<search string="Search Claims"> <search string="Search Claims">
<field name="name" string="Claims"/> <field name="name" string="Claims"/>
<filter icon="terp-check" string="New" name="current" domain="[('state','=','draft')]" help="New Claims"/>
<filter icon="terp-camera_test" string="In Progress" domain="[('state','=','open')]" help="In Progress Claims"/>
<filter icon="terp-gtk-media-pause" string="Pending" domain="[('state','=','pending')]"/>
<separator/> <separator/>
<filter string="Unassigned Claims" icon="terp-personal-" domain="[('user_id','=', False)]" help="Unassigned Claims" /> <filter string="Unassigned Claims" icon="terp-personal-" domain="[('user_id','=', False)]" help="Unassigned Claims" />
<field name="partner_id" filter_domain="[('partner_id','child_of',self)]"/> <field name="partner_id" filter_domain="[('partner_id','child_of',self)]"/>
@ -203,7 +196,6 @@
<filter string="Responsible" icon="terp-personal" domain="[]" help="Responsible User" context="{'group_by':'user_id'}"/> <filter string="Responsible" icon="terp-personal" domain="[]" help="Responsible User" context="{'group_by':'user_id'}"/>
<filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/> <filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/>
<filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'categ_id'}"/> <filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'categ_id'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}" groups="base.group_no_one"/>
<filter string="Claim Date" icon="terp-go-month" domain="[]" help="Claim Date" context="{'group_by':'date'}"/> <filter string="Claim Date" icon="terp-go-month" domain="[]" help="Claim Date" context="{'group_by':'date'}"/>
<filter string="Deadline" icon="terp-go-month" domain="[]" context="{'group_by':'date_deadline'}"/> <filter string="Deadline" icon="terp-go-month" domain="[]" context="{'group_by':'date_deadline'}"/>
<filter string="Closure" icon="terp-go-month" domain="[]" help="Date Closed" context="{'group_by':'date_closed'}" groups="base.group_no_one"/> <filter string="Closure" icon="terp-go-month" domain="[]" help="Date Closed" context="{'group_by':'date_closed'}" groups="base.group_no_one"/>

View File

@ -22,14 +22,6 @@
from openerp.osv import fields,osv from openerp.osv import fields,osv
from openerp import tools from openerp import tools
AVAILABLE_STATES = [
('draft','Draft'),
('open','Open'),
('cancel', 'Cancelled'),
('done', 'Closed'),
('pending','Pending')
]
AVAILABLE_PRIORITIES = [ AVAILABLE_PRIORITIES = [
('5', 'Lowest'), ('5', 'Lowest'),
('4', 'Low'), ('4', 'Low'),
@ -51,7 +43,6 @@ class crm_claim_report(osv.osv):
'user_id':fields.many2one('res.users', 'User', readonly=True), 'user_id':fields.many2one('res.users', 'User', readonly=True),
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True), 'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
'nbr': fields.integer('# of Cases', readonly=True), 'nbr': fields.integer('# of Cases', readonly=True),
'state': fields.selection(AVAILABLE_STATES, 'Status', size=16, readonly=True),
'month':fields.selection([('01', 'January'), ('02', 'February'), \ 'month':fields.selection([('01', 'January'), ('02', 'February'), \
('03', 'March'), ('04', 'April'),\ ('03', 'March'), ('04', 'April'),\
('05', 'May'), ('06', 'June'), \ ('05', 'May'), ('06', 'June'), \
@ -92,7 +83,6 @@ class crm_claim_report(osv.osv):
to_char(c.date, 'YYYY-MM-DD') as day, to_char(c.date, 'YYYY-MM-DD') as day,
to_char(c.date_closed, 'YYYY-MM-DD') as date_closed, to_char(c.date_closed, 'YYYY-MM-DD') as date_closed,
to_char(c.date_deadline, 'YYYY-MM-DD') as date_deadline, to_char(c.date_deadline, 'YYYY-MM-DD') as date_deadline,
c.state,
c.user_id, c.user_id,
c.stage_id, c.stage_id,
c.section_id, c.section_id,
@ -109,7 +99,7 @@ class crm_claim_report(osv.osv):
from from
crm_claim c crm_claim c
group by to_char(c.date, 'YYYY'), to_char(c.date, 'MM'),to_char(c.date, 'YYYY-MM-DD'),\ group by to_char(c.date, 'YYYY'), to_char(c.date, 'MM'),to_char(c.date, 'YYYY-MM-DD'),\
c.state, c.user_id,c.section_id, c.stage_id,\ c.user_id,c.section_id, c.stage_id,\
c.categ_id,c.partner_id,c.company_id,c.create_date, c.categ_id,c.partner_id,c.company_id,c.create_date,
c.priority,c.type_action,c.date_deadline,c.date_closed,c.id c.priority,c.type_action,c.date_deadline,c.date_closed,c.id
)""") )""")

View File

@ -21,7 +21,6 @@
<field name="email" sum="# Mails"/> <field name="email" sum="# Mails"/>
<field name="delay_close" avg="Avg Closing Delay"/> <field name="delay_close" avg="Avg Closing Delay"/>
<field name="delay_expected"/> <field name="delay_expected"/>
<field name="state" invisible="1"/>
<field name="stage_id" invisible="1"/> <field name="stage_id" invisible="1"/>
<field name="categ_id" invisible="1"/> <field name="categ_id" invisible="1"/>
<field name="priority" invisible="1"/> <field name="priority" invisible="1"/>
@ -37,7 +36,6 @@
<field name="model">crm.claim.report</field> <field name="model">crm.claim.report</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<graph orientation="horizontal" string="Claims" type="bar"> <graph orientation="horizontal" string="Claims" type="bar">
<field name="state"/>
<field name="nbr" operator="+"/> <field name="nbr" operator="+"/>
<field group="True" name="user_id"/> <field group="True" name="user_id"/>
</graph> </graph>
@ -51,10 +49,6 @@
<field name="model">crm.claim.report</field> <field name="model">crm.claim.report</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<search string="Search"> <search string="Search">
<filter icon="terp-document-new" string="New" domain="[('state','=','draft')]"/>
<filter icon="terp-camera_test" string="Open" domain="[('state','=','open')]"/>
<filter icon="terp-gtk-media-pause" string="Pending" domain="[('state','=','pending')]"/>
<separator/>
<filter string="My Sales Team(s)" icon="terp-personal+" context="{'invisible_section': False}" domain="[('section_id.user_id','=',uid)]" help="My Sales Team(s)" groups="base.group_multi_salesteams"/> <filter string="My Sales Team(s)" icon="terp-personal+" context="{'invisible_section': False}" domain="[('section_id.user_id','=',uid)]" help="My Sales Team(s)" groups="base.group_multi_salesteams"/>
<separator/> <separator/>
<filter string="My Company" icon="terp-go-home" context="{'invisible_section': False}" domain="[('section_id.user_id.company_id','=',uid)]" help="My company"/> <filter string="My Company" icon="terp-go-home" context="{'invisible_section': False}" domain="[('section_id.user_id.company_id','=',uid)]" help="My company"/>
@ -73,8 +67,6 @@
<field name="create_date" /> <field name="create_date" />
<field name="date_closed" /> <field name="date_closed" />
<field name="date_deadline" /> <field name="date_deadline" />
<filter icon="terp-dialog-close" string="Done" domain="[('state','=','done')]"/>
<filter icon="gtk-cancel" string="Cancel" domain="[('state','=','cancel')]"/>
</group> </group>
<group expand="1" string="Group By..."> <group expand="1" string="Group By...">
<filter string="Salesperson" name="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}" /> <filter string="Salesperson" name="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}" />
@ -84,7 +76,6 @@
<filter string="Priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}" /> <filter string="Priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}" />
<filter string="Category" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'categ_id'}" /> <filter string="Category" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'categ_id'}" />
<filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'type_action'}" help="Action Type"/> <filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'type_action'}" help="Action Type"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}" />
<filter string="Company" icon="terp-go-home" domain="[]" context="{'group_by':'company_id'}" groups="base.group_multi_company"/> <filter string="Company" icon="terp-go-home" domain="[]" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<filter string="Day" icon="terp-go-today" domain="[]" context="{'group_by':'day'}" help="Date of claim"/> <filter string="Day" icon="terp-go-today" domain="[]" context="{'group_by':'day'}" help="Date of claim"/>
<filter string="Month" icon="terp-go-month" domain="[]" context="{'group_by':'month'}" help="Month of claim"/> <filter string="Month" icon="terp-go-month" domain="[]" context="{'group_by':'month'}" help="Month of claim"/>

View File

@ -26,6 +26,14 @@ from openerp import tools
from openerp.tools.translate import _ from openerp.tools.translate import _
from openerp.tools import html2plaintext from openerp.tools import html2plaintext
AVAILABLE_STATES = [
('draft', 'New'),
('cancel', 'Cancelled'),
('open', 'In Progress'),
('pending', 'Pending'),
('done', 'Closed')
]
class crm_helpdesk(base_state, osv.osv): class crm_helpdesk(base_state, osv.osv):
""" Helpdesk Cases """ """ Helpdesk Cases """
@ -65,7 +73,7 @@ class crm_helpdesk(base_state, osv.osv):
domain="['|',('section_id','=',False),('section_id','=',section_id),\ domain="['|',('section_id','=',False),('section_id','=',section_id),\
('object_id.model', '=', 'crm.helpdesk')]"), ('object_id.model', '=', 'crm.helpdesk')]"),
'duration': fields.float('Duration', states={'done': [('readonly', True)]}), 'duration': fields.float('Duration', states={'done': [('readonly', True)]}),
'state': fields.selection(crm.AVAILABLE_STATES, 'Status', size=16, readonly=True, 'state': fields.selection(AVAILABLE_STATES, 'Status', size=16, readonly=True,
help='The status is set to \'Draft\', when a case is created.\ help='The status is set to \'Draft\', when a case is created.\
\nIf the case is in progress the status is set to \'Open\'.\ \nIf the case is in progress the status is set to \'Open\'.\
\nWhen the case is over, the status is set to \'Done\'.\ \nWhen the case is over, the status is set to \'Done\'.\

View File

@ -49,7 +49,8 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<field name="partner_id" position="after"> <field name="partner_id" position="after">
<field name="partner_assigned_id"/> <field name="partner_assigned_id"/>
</field> <field name="date_assign" invisible="1"/>
</field>
</field> </field>
</record> </record>
@ -60,6 +61,9 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<filter string="Team" position="after"> <filter string="Team" position="after">
<filter string="Assigned Partner" icon="terp-personal" domain="[]" context="{'group_by':'partner_assigned_id'}"/> <filter string="Assigned Partner" icon="terp-personal" domain="[]" context="{'group_by':'partner_assigned_id'}"/>
<filter string="Assigned Month" icon="terp-go-month"
domain="[]" context="{'group_by':'date_assign'}"/>
</filter> </filter>
<field name="partner_id" position="after"> <field name="partner_id" position="after">
<field name="partner_assigned_id"/> <field name="partner_assigned_id"/>

View File

@ -6,7 +6,7 @@
<field name="model">crm.lead</field> <field name="model">crm.lead</field>
<field name="priority" eval="32"/> <field name="priority" eval="32"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree string="Leads" colors="blue:state=='pending';grey:state in ('cancel', 'done');red:stage_id[1]=='Disinterested';black:stage_id[1]=='Interested'"> <tree string="Leads" colors="red:stage_id[1]=='Disinterested';black:stage_id[1]=='Interested'">
<field name="date_deadline" invisible="1"/> <field name="date_deadline" invisible="1"/>
<field name="create_date"/> <field name="create_date"/>
<field name="name" string="Subject"/> <field name="name" string="Subject"/>
@ -18,7 +18,6 @@
<field name="type_id" invisible="1"/> <field name="type_id" invisible="1"/>
<field name="referred" invisible="1"/> <field name="referred" invisible="1"/>
<field name="channel_id" invisible="1"/> <field name="channel_id" invisible="1"/>
<field name="state" invisible="1"/>
<field name="section_id" invisible="context.get('invisible_section', True)" /> <field name="section_id" invisible="context.get('invisible_section', True)" />
<button string="I'm interested" name="case_interested" icon="gtk-index" type="object"/> <button string="I'm interested" name="case_interested" icon="gtk-index" type="object"/>
@ -69,7 +68,7 @@
<field name="model">crm.lead</field> <field name="model">crm.lead</field>
<field name="priority" eval="32"/> <field name="priority" eval="32"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree string="Leads" colors="blue:state=='pending';grey:state in ('cancel', 'done')"> <tree string="Leads">
<field name="date_deadline" invisible="1"/> <field name="date_deadline" invisible="1"/>
<field name="create_date" groups="base.group_no_one"/> <field name="create_date" groups="base.group_no_one"/>
<field name="name" string="Opportunity"/> <field name="name" string="Opportunity"/>
@ -83,7 +82,6 @@
<field name="probability" widget="progressbar" avg="Avg. of Probability"/> <field name="probability" widget="progressbar" avg="Avg. of Probability"/>
<field name="section_id" invisible="context.get('invisible_section', True)" /> <field name="section_id" invisible="context.get('invisible_section', True)" />
<field name="priority" invisible="1"/> <field name="priority" invisible="1"/>
<field name="state" invisible="1"/>
</tree> </tree>
</field> </field>
</record> </record>

View File

@ -23,13 +23,6 @@ from openerp.osv import fields,osv
from openerp import tools from openerp import tools
from openerp.addons.crm import crm from openerp.addons.crm import crm
AVAILABLE_STATES = [
('draft','Draft'),
('open','Open'),
('cancel', 'Cancelled'),
('done', 'Closed'),
('pending','Pending')
]
class crm_lead_report_assign(osv.osv): class crm_lead_report_assign(osv.osv):
""" CRM Lead Report """ """ CRM Lead Report """
@ -43,7 +36,6 @@ class crm_lead_report_assign(osv.osv):
'user_id':fields.many2one('res.users', 'User', readonly=True), 'user_id':fields.many2one('res.users', 'User', readonly=True),
'country_id':fields.many2one('res.country', 'Country', readonly=True), 'country_id':fields.many2one('res.country', 'Country', readonly=True),
'section_id':fields.many2one('crm.case.section', 'Sales Team', readonly=True), 'section_id':fields.many2one('crm.case.section', 'Sales Team', readonly=True),
'state': fields.selection(AVAILABLE_STATES, 'Status', size=16, readonly=True),
'month':fields.selection([('01', 'January'), ('02', 'February'), \ 'month':fields.selection([('01', 'January'), ('02', 'February'), \
('03', 'March'), ('04', 'April'),\ ('03', 'March'), ('04', 'April'),\
('05', 'May'), ('06', 'June'), \ ('05', 'May'), ('06', 'June'), \
@ -54,7 +46,7 @@ class crm_lead_report_assign(osv.osv):
'date_assign': fields.date('Partner Date', readonly=True), 'date_assign': fields.date('Partner Date', readonly=True),
'create_date': fields.datetime('Create Date', readonly=True), 'create_date': fields.datetime('Create Date', readonly=True),
'day': fields.char('Day', size=128, readonly=True), 'day': fields.char('Day', size=128, readonly=True),
'delay_open': fields.float('Delay to Open',digits=(16,2),readonly=True, group_operator="avg",help="Number of Days to open the case"), 'delay_open': fields.float('Delay to Assign',digits=(16,2),readonly=True, group_operator="avg",help="Number of Days to open the case"),
'delay_close': fields.float('Delay to Close',digits=(16,2),readonly=True, group_operator="avg",help="Number of Days to close the case"), 'delay_close': fields.float('Delay to Close',digits=(16,2),readonly=True, group_operator="avg",help="Number of Days to close the case"),
'delay_expected': fields.float('Overpassed Deadline',digits=(16,2),readonly=True, group_operator="avg"), 'delay_expected': fields.float('Overpassed Deadline',digits=(16,2),readonly=True, group_operator="avg"),
'probability': fields.float('Avg Probability',digits=(16,2),readonly=True, group_operator="avg"), 'probability': fields.float('Avg Probability',digits=(16,2),readonly=True, group_operator="avg"),
@ -91,7 +83,6 @@ class crm_lead_report_assign(osv.osv):
to_char(c.create_date, 'YYYY-MM-DD') as creation_date, to_char(c.create_date, 'YYYY-MM-DD') as creation_date,
to_char(c.date_open, 'YYYY-MM-DD') as opening_date, to_char(c.date_open, 'YYYY-MM-DD') as opening_date,
to_char(c.date_closed, 'YYYY-mm-dd') as date_closed, to_char(c.date_closed, 'YYYY-mm-dd') as date_closed,
c.state,
c.date_assign, c.date_assign,
c.user_id, c.user_id,
c.probability, c.probability,
@ -110,7 +101,7 @@ class crm_lead_report_assign(osv.osv):
c.planned_revenue*(c.probability/100) as probable_revenue, c.planned_revenue*(c.probability/100) as probable_revenue,
1 as nbr, 1 as nbr,
date_trunc('day',c.create_date) as create_date, date_trunc('day',c.create_date) as create_date,
extract('epoch' from (c.date_closed-c.create_date))/(3600*24) as delay_close, extract('epoch' from (c.write_date-c.create_date))/(3600*24) as delay_close,
extract('epoch' from (c.date_deadline - c.date_closed))/(3600*24) as delay_expected, extract('epoch' from (c.date_deadline - c.date_closed))/(3600*24) as delay_expected,
extract('epoch' from (c.date_open-c.create_date))/(3600*24) as delay_open extract('epoch' from (c.date_open-c.create_date))/(3600*24) as delay_open
FROM FROM

View File

@ -8,8 +8,6 @@
<field name="model">crm.lead.report.assign</field> <field name="model">crm.lead.report.assign</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<search string="Leads Analysis"> <search string="Leads Analysis">
<filter icon="terp-check" string="Current" domain="[('state','in',('draft','open'))]"/>
<filter icon="terp-dialog-close" string="Closed" domain="[('state','=','done')]"/>
<field name="section_id" context="{'invisible_section': False}" groups="base.group_multi_salesteams"/> <field name="section_id" context="{'invisible_section': False}" groups="base.group_multi_salesteams"/>
<field name="grade_id"/> <field name="grade_id"/>
<field name="user_id"/> <field name="user_id"/>
@ -36,7 +34,6 @@
domain="[]" context="{'group_by':'grade_id'}" /> domain="[]" context="{'group_by':'grade_id'}" />
<filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/> <filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/>
<filter string="Priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}" /> <filter string="Priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}" />
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}" />
<filter string="Company" icon="terp-go-home" domain="[]" context="{'group_by':'company_id'}" /> <filter string="Company" icon="terp-go-home" domain="[]" context="{'group_by':'company_id'}" />
<filter string="Assign Date" icon="terp-go-today" domain="[]" name="group_partner_date" context="{'group_by':'date_assign'}"/> <filter string="Assign Date" icon="terp-go-today" domain="[]" name="group_partner_date" context="{'group_by':'date_assign'}"/>
<filter string="Day" icon="terp-go-today" domain="[]" context="{'group_by':'day'}"/> <filter string="Day" icon="terp-go-today" domain="[]" context="{'group_by':'day'}"/>
@ -54,7 +51,6 @@
<field name="model">crm.lead.report.assign</field> <field name="model">crm.lead.report.assign</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<graph orientation="horizontal" string="Lead Assign" type="bar"> <graph orientation="horizontal" string="Lead Assign" type="bar">
<field name="state"/>
<field name="nbr" operator="+"/> <field name="nbr" operator="+"/>
<field group="True" name="user_id"/> <field group="True" name="user_id"/>
</graph> </graph>
@ -76,14 +72,13 @@
<field name="partner_id" invisible="1"/> <field name="partner_id" invisible="1"/>
<field name="country_id" invisible="1"/> <field name="country_id" invisible="1"/>
<field name="day" invisible="1"/> <field name="day" invisible="1"/>
<field name="state" invisible="1"/>
<field name="stage_id" invisible="1"/> <field name="stage_id" invisible="1"/>
<field name="priority" invisible="1"/> <field name="priority" invisible="1"/>
<field name="type" invisible="1"/> <field name="type" invisible="1"/>
<field name="company_id" invisible="1" groups="base.group_multi_company"/> <field name="company_id" invisible="1" groups="base.group_multi_company"/>
<field name="nbr" string="#Opportunities" sum="#Opportunities"/> <field name="nbr" string="#Opportunities" sum="#Opportunities"/>
<field name="planned_revenue" sum="Planned Revenues"/> <field name="planned_revenue" sum="Planned Revenues"/>
<field name="delay_open" sum='Delay to open'/> <field name="delay_open" sum='Delay to Assign'/>
<field name="delay_close" sum='Delay to close'/> <field name="delay_close" sum='Delay to close'/>
<field name="delay_expected"/> <field name="delay_expected"/>
<field name="probability" widget="progressbar"/> <field name="probability" widget="progressbar"/>

View File

@ -33,134 +33,130 @@
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
</record> </record>
<menuitem id="res_partner_activation_config_mi" parent="base.menu_config_address_book" action="res_partner_activation_act" groups="base.group_no_one" /> <menuitem id="res_partner_activation_config_mi" parent="base.menu_config_address_book" action="res_partner_activation_act" groups="base.group_no_one"/>
<!--Partner Grade --> <!--Partner Grade -->
<record id="view_partner_grade_tree" model="ir.ui.view">
<field name="name">res.partner.grade.tree</field> <record id="view_partner_grade_tree" model="ir.ui.view">
<field name="model">res.partner.grade</field> <field name="name">res.partner.grade.tree</field>
<field name="arch" type="xml"> <field name="model">res.partner.grade</field>
<tree string="Partner Grade"> <field name="arch" type="xml">
<field name="sequence" invisible="1" /> <tree string="Partner Grade">
<field name="name" /> <field name="sequence" invisible="1"/>
</tree> <field name="name"/>
</tree>
</field>
</record>
<record id="view_partner_grade_form" model="ir.ui.view">
<field name="name">res.partner.grade.form</field>
<field name="model">res.partner.grade</field>
<field name="arch" type="xml">
<form string="Partner Grade" version="7.0">
<group col="4">
<field name="name"/>
<field name="sequence"/>
<field name="active"/>
</group>
</form>
</field>
</record>
<record id="res_partner_grade_action" model="ir.actions.act_window">
<field name="name">Partner Grade</field>
<field name="res_model">res.partner.grade</field>
<field name="view_type">form</field>
</record>
<menuitem action="res_partner_grade_action" id="menu_res_partner_grade_action"
groups="base.group_no_one"
parent="base.menu_crm_config_lead" />
<!-- Partner form -->
<record id="view_res_partner_filter_assign_tree" model="ir.ui.view">
<field name="name">res.partner.geo.inherit.tree</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_tree"/>
<field name="arch" type="xml">
<field name="user_id" position="after">
<field name="date_review_next"/>
<field name="grade_id"/>
<field name="activation"/>
</field> </field>
</record> </field>
<record id="view_partner_grade_form" model="ir.ui.view"> </record>
<field name="name">res.partner.grade.form</field>
<field name="model">res.partner.grade</field> <record id="view_res_partner_filter_assign" model="ir.ui.view">
<field name="arch" type="xml"> <field name="name">res.partner.geo.inherit.search</field>
<form string="Partner Grade" version="7.0"> <field name="model">res.partner</field>
<group col="4"> <field name="inherit_id" ref="base.view_res_partner_filter"/>
<field name="arch" type="xml">
<filter string="Salesperson" position="after">
<filter string="Activation" context="{'group_by' : 'activation'}" domain="[]" icon="terp-personal" />
</filter>
<field name="category_id" position="after">
<field name="grade_id"/>
</field>
</field>
</record>
<record id="view_crm_partner_geo_form" model="ir.ui.view">
<field name="name">res.partner.geo.inherit</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<xpath expr="//notebook[last()]" position="inside">
<page string="Geo Localization">
<group>
<group> <group>
<field name="name" /> <separator string="Partner Activation" colspan="2"/>
<field name="partner_weight" /> <field name="grade_id" widget="selection"/>
<div> <field name="activation" widget="selection"/>
<p class="oe_grey"> <field name="partner_weight"/>
Define a weight to this grade. The weight will be used as default in the partner form to compute the chance for this partner to get leads. For instance, for business purpose, you can define a target revenue for each grade. To give the same chance to each partner to get leads, keep 1 in this field.
</p>
</div>
</group> </group>
<group> <group>
<field name="sequence" /> <separator string="Partner Review" colspan="2"/>
<field name="active" /> <field name="date_review"/>
<field name="date_review_next"/>
<field name="date_partnership"/>
</group> </group>
</group> </group>
</form> <group colspan="2" col="2">
</field> <separator string="Geo Localization" colspan="2"/>
</record> <button
<record id="res_partner_grade_action" model="ir.actions.act_window"> string="Geo Localize"
<field name="name">Partner Grade</field> name="geo_localize"
<field name="res_model">res.partner.grade</field> colspan="2"
<field name="view_type">form</field> icon="gtk-apply"
</record> type="object"/>
<menuitem action="res_partner_grade_action" id="menu_res_partner_grade_action" groups="base.group_no_one" parent="base.menu_crm_config_lead" /> <field name="partner_latitude"/>
<field name="partner_longitude"/>
<field name="date_localization"/>
</group>
<newline/>
<!-- Partner form --> <field name="opportunity_assigned_ids" colspan="4" nolabel="1">
<record id="view_res_partner_filter_assign_tree" model="ir.ui.view"> <tree string="Assigned Opportunities">
<field name="name">res.partner.geo.inherit.tree</field> <field name="create_date"/>
<field name="model">res.partner</field> <field name="name"/>
<field name="inherit_id" ref="base.view_partner_tree" /> <field name="type"/>
<field name="arch" type="xml"> <field name="stage_id"/>
<field name="user_id" position="after"> <field name="section_id"
<field name="date_review_next" /> invisible="context.get('invisible_section', True)"
<field name="grade_id" /> groups="base.group_multi_salesteams"/>
<field name="activation" /> <field name="user_id" />
</field> <button string="Convert to Opportunity"
</field> name="convert_opportunity"
</record> type="object"
attrs="{'invisible':[('type','=','opportunity'),('probability', '=', 100)]}" />
<record id="view_res_partner_filter_assign" model="ir.ui.view"> <button name="case_escalate" string="Escalate"
<field name="name">res.partner.geo.inherit.search</field> type="object"
<field name="model">res.partner</field> icon="gtk-go-up"
<field name="inherit_id" ref="base.view_res_partner_filter" /> attrs="{'invisible':[('probability', '=', 100)]}" />
<field name="arch" type="xml"> </tree>
<filter string="Salesperson" position="after"> </field>
<filter string="Activation" context="{'group_by' : 'activation'}" domain="[]" icon="terp-personal" /> </page>
</filter> </xpath>
<field name="category_id" position="after"> </field>
<field name="grade_id" /> </record>
</field>
</field>
</record>
<record id="view_crm_partner_geo_form" model="ir.ui.view">
<field name="name">res.partner.geo.inherit</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form" />
<field name="arch" type="xml">
<xpath expr="//notebook[last()]" position="inside">
<page string="Forwarded Leads">
<group>
<group string="Partner Activation">
<label for="partner_latitude" string="Geolocalisation" />
<div class="oe_title oe_inline">
<h3 class="oe_inline">
<span class="oe_grey">( </span>
<field name="partner_latitude" nolabel="1" readonly="1" class="oe_inline" />
<span class="oe_grey oe_inline" attrs="{'invisible':[('partner_latitude','&lt;=',0)]}">N </span>
<span class="oe_grey oe_inline" attrs="{'invisible':[('partner_latitude','&gt;=',0)]}">S </span>
<field name="partner_longitude" class="oe_inline" readonly="1" nolabel="1" />
<span class="oe_grey oe_inline" attrs="{'invisible':[('partner_longitude','&lt;=',0)]}">E </span>
<span class="oe_grey oe_inline" attrs="{'invisible':[('partner_longitude','&gt;=',0)]}">W </span>
<span class="oe_grey">) </span>
</h3>
<button string="Geolocalize" name="geo_localize" class="oe_inline" type="object" />
</div>
<field name="grade_id" widget="selection" on_change="onchange_grade_id(grade_id)" />
<field name="partner_weight" class="oe_inline" />
<div colspan="2">
<p class="oe_grey">
Higher is the value, higher is the probability for this partner to get more leads.
</p>
</div>
</group>
<group>
<separator string="Partner Review" colspan="2" />
<field name="date_review" />
<field name="date_review_next" />
<field name="date_partnership" />
</group>
<group>
</group>
</group>
<newline />
<separator string="Forwarded Leads" colspan="2" />
<field name="opportunity_assigned_ids" colspan="4" nolabel="1">
<tree string="Assigned Opportunities" colors="blue:state=='pending';gray:state=='cancel'">
<field name="name" />
<field name="contact_name" />
<field name="email_from" />
<field name="phone" />
<field name="stage_id" />
<field name="state" invisible="1" />
</tree>
</field>
</page>
</xpath>
</field>
</record>
</data> </data>
</openerp> </openerp>

View File

@ -16,12 +16,9 @@
<field name="user_id"/> <field name="user_id"/>
<field string="Timebox" name="timebox_id"/> <field string="Timebox" name="timebox_id"/>
<button name="prev_timebox" type="object" icon="gtk-go-back" string="Previous" states="draft,pending,open"/> <!--TODO : Need To Clean-->
<button name="next_timebox" type="object" icon="gtk-go-forward" string="Next" states="draft,pending,open"/> <!-- <button name="prev_timebox" type="object" icon="gtk-go-back" string="Previous" attrs="{'invisible': [('probability', '=', 100)]}"/>-->
<!-- <button name="next_timebox" type="object" icon="gtk-go-forward" string="Next" attrs="{'invisible': [('probability', '=', 100)]}"/>-->
<field name="state"/>
<button name="do_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel" help="For cancelling the task"/>
<button name="action_close" states="draft,pending,open" string="Done" type="object" icon="terp-dialog-close" help="For changing to done state"/>
</tree> </tree>
</field> </field>
</page> </page>

View File

@ -9,8 +9,8 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<data> <data>
<xpath expr="/form/header/button[@name='case_mark_lost']" position="after"> <xpath expr="/form/header/button[@name='case_mark_lost']" position="after">
<button states="done" string="Create Quotation" name="%(action_crm_make_sale)d" type="action"/> <button attrs="{'invisible': [('probability', '&lt;', 100)]}" string="Create Quotation" name="%(action_crm_make_sale)d" type="action"/>
<button states="draft,open,pending" string="Convert to Quotation" name="%(action_crm_make_sale)d" type="action" class="oe_highlight"/> <button attrs="{'invisible': [('probability', '=', 100)]}" string="Convert to Quotation" name="%(action_crm_make_sale)d" type="action" class="oe_highlight"/>
</xpath> </xpath>
</data> </data>
</field> </field>