[IMP]: Improve SQL report for task and project_issue.

bzr revid: rch_open_erp-20100428133856-4lserqno5zsnvjrq
This commit is contained in:
rch (Open ERP) 2010-04-28 19:08:56 +05:30
parent 1a3e8c3f79
commit 8a54668cba
3 changed files with 41 additions and 15 deletions

View File

@ -88,7 +88,7 @@
help="Non Assigned Tasks to users"
domain="[('user_id','=',False)]"/>
</field>
<field name="project_id">
<field name="project_id" widget="selection">
<filter icon="terp-project"
string="My Task"
help="My Tasks"
@ -111,7 +111,7 @@
<separator orientation="vertical"/>
<field name="type" widget="selection"/>
<field name="priority"/>
<field name="partner_id" widget="selection"/>
<field name="partner_id" />
<separator orientation="vertical"/>
<field name="date_deadline"/>
<newline/>

View File

@ -11,16 +11,23 @@ class project_issue_report(osv.osv):
'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('object_id.model', '=', 'project.issue')]"),
'nbr': fields.integer('# of Issues', readonly=True),
'delay_close': fields.float('Avg Closing Delay', digits=(16,2), readonly=True, group_operator="avg",
help="Number of Days to close the project issue"),
help="Number of Days to close the project issue"),
'delay_open': fields.float('Avg Opening Delay', digits=(16,2), readonly=True, group_operator="avg",
help="Number of Days to open the project issue"),
'company_id' : fields.many2one('res.company', 'Company'),
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'),
'project_id':fields.many2one('project.project', 'Project',readonly=True),
'type_id': fields.many2one('crm.case.resource.type', 'Type', domain="[('object_id.model', '=', 'project.issue')]"),
'date_closed': fields.datetime('Close Date', readonly=True),
'date_open': fields.datetime('Opened', readonly=True),
'assigned_to' : fields.many2one('res.users', 'Assigned to',readonly=True),
'partner_id': fields.many2one('res.partner','Partner',domain="[('object_id.model', '=', 'project.issue')]"),
'canal_id': fields.many2one('res.partner.canal', 'Channel',readonly=True),
'task_id': fields.many2one('project.task', 'Task',domain="[('object_id.model', '=', 'project.issue')]" )
'task_id': fields.many2one('project.task', 'Task',domain="[('object_id.model', '=', 'project.issue')]" ),
'analytic_account_id' : fields.many2one('account.analytic.account', 'Analytic Account',
domain="[('partner_id', '=', partner_id)]",
required=True),
'partner_address_id': fields.many2one('res.partner.address','Contact ',readonly=True),
}
def init(self, cr):
tools.drop_view_if_exists(cr, 'project_issue_report')
@ -46,8 +53,12 @@ class project_issue_report(osv.osv):
c.partner_id,
c.canal_id,
c.task_id,
c.analytic_account_id as analytic_account_id,
c.partner_address_id as partner_address_id,
c.date_open as date_open,
date_trunc('day',c.create_date) as create_date,
avg(extract('epoch' from (c.date_closed-c.create_date)))/(3600*24) as delay_close
avg(extract('epoch' from (c.date_closed-c.create_date)))/(3600*24) as delay_close,
avg(extract('epoch' from (c.date_open-c.create_date)))/(3600*24) as delay_open
from
project_issue c
left join
@ -70,7 +81,10 @@ class project_issue_report(osv.osv):
c.assigned_to,
c.partner_id,
c.canal_id,
c.task_id
c.task_id,
c.date_open,
c.analytic_account_id,
c.partner_address_id
)""")

View File

@ -15,7 +15,6 @@
<field name="type_id" string="Type" invisible="1"/>
<field name="priority" invisible="1"/>
<field name="company_id" invisible="1" groups="base.group_multi_company"/>
<field name="delay_close" avg='Avg Closing Delay'/>
<field name="section_id" invisible="1"/>
<field name="user_id" invisible="1"/>
<field name="categ_id" invisible="1"/>
@ -23,11 +22,16 @@
<field name="partner_id" invisible="1"/>
<field name="task_id" invisible="1"/>
<field name="assigned_to" invisible="1"/>
<field name="date_open" invisible="1"/>
<field name="date_closed" invisible="1"/>
<field name="create_date" invisible="1"/>
<field name="state" invisible="1"/>
<field name="day" invisible="1"/>
<field name="analytic_account_id" invisible="1"/>
<field name="partner_address_id" string="Contact" invisible="1"/>
<field name="nbr" string="#Project Issue" sum='#Number of Project Issue'/>
<field name="delay_open" avg='Avg Opening Delay'/>
<field name="delay_close" avg='Avg Closing Delay'/>
</tree>
</field>
</record>
@ -65,17 +69,21 @@
<field name="type_id" widget="selection" domain="[('object_id.model', '=', 'project.issue')]"/>
<field name="task_id"/>
<separator orientation="vertical"/>
<field name="assigned_to" widget="selection">
<filter icon="terp-crm" help = "Project Issue Assigned To Me" domain="[('assigned_to','=',uid)]" />
<filter icon="terp-crm" help="Non Assigned Project Issue" domain="[('assigned_to','=',False)]"/>
</field>
<field name="analytic_account_id" />
<newline/>
<field name="categ_id" widget="selection" domain="[('object_id.model', '=', 'project.issue')]"/>
<field name="stage_id" widget="selection" domain="[('object_id.model', '=', 'project.issue')]" />
<separator orientation="vertical"/>
<field name="partner_id" />
<field name="assigned_to" widget="selection">
<filter icon="terp-crm" help = "Project Issue Assigned To Me" domain="[('assigned_to','=',uid)]" />
<filter icon="terp-crm" help="Non Assigned Project Issue" domain="[('assigned_to','=',False)]"/>
</field>
<field name="canal_id" widget="selection"/>
<separator orientation="vertical"/>
<separator orientation="vertical"/>
<field name="partner_id" />
<field name="partner_address_id" />
<newline/>
<field name="date_open" string="Date Open"/>
<field name="date_closed" string="Date Closed"/>
</group>
</xpath>
@ -90,11 +98,15 @@
<separator orientation="vertical"/>
<filter string="Type" icon="terp-sale" domain="[]" context="{'group_by':'type_id'}"/>
<filter string="Task" icon="terp-sale" domain="[]" context="{'group_by':'task_id'}"/>
<separator orientation="vertical"/>
<filter string="Analytic Account" icon="terp-sale" domain="[]" context="{'group_by':'task_id'}"/>
<newline/>
<filter string="Assigned To" icon="terp-sale" domain="[]" context="{'group_by':'assigned_to'}"/>
<filter string="Partner" icon="terp-sale" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Channel" icon="terp-sale" domain="[]" context="{'group_by':'canal_id'}"/>
</xpath>
<separator orientation="vertical"/>
<filter string="Partner" icon="terp-sale" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Contact" icon="terp-sale" domain="[]" context="{'group_by':'partner_address_id'}"/>
</xpath>
</data>
</field>
</record>