From 9e4e8f065560a07fc86461c5d17b01fc070bd9d0 Mon Sep 17 00:00:00 2001 From: "uco (OpenERP)" Date: Fri, 29 Jan 2010 13:05:52 +0530 Subject: [PATCH 01/11] [ADD,IMP]: (1) crm_project: Added security files. (2) crm_hr: Added security files. (3) crm: Improved security file. (4) report_crm: Added remaining reports for some objects. Improved security file. bzr revid: uco@tinyerp.co.in-20100129073552-l3wj2a2md460mho6 --- addons/crm/__terp__.py | 2 +- addons/crm/security/ir.model.access.csv | 17 +- addons/crm_hr/__terp__.py | 1 + addons/crm_hr/security/crm_hr_security.xml | 2 +- addons/crm_hr/security/ir.model.access.csv | 5 + addons/crm_project/__terp__.py | 3 +- .../crm_project/security/ir.model.access.csv | 6 + addons/report_crm/report_crm.py | 99 ++++++++ addons/report_crm/report_crm_claim.py | 106 ++++++++ addons/report_crm/report_crm_claim_view.xml | 238 ++++++++++++++++- addons/report_crm/report_crm_fundraising.py | 106 ++++++++ .../report_crm_fundraising_view.xml | 239 +++++++++++++++++- addons/report_crm/report_crm_lead.py | 106 ++++++++ addons/report_crm/report_crm_lead_view.xml | 235 +++++++++++++++++ addons/report_crm/report_crm_opportunity.py | 105 ++++++++ .../report_crm_opportunity_view.xml | 235 +++++++++++++++++ addons/report_crm/report_crm_phonecall.py | 4 +- addons/report_crm/report_crm_view.xml | 186 +++++++++++++- .../report_crm/security/ir.model.access.csv | 33 ++- 19 files changed, 1708 insertions(+), 20 deletions(-) create mode 100644 addons/crm_hr/security/ir.model.access.csv create mode 100644 addons/crm_project/security/ir.model.access.csv diff --git a/addons/crm/__terp__.py b/addons/crm/__terp__.py index d01f083c2d9..5ef83f99cbe 100644 --- a/addons/crm/__terp__.py +++ b/addons/crm/__terp__.py @@ -85,7 +85,7 @@ between mails and Open ERP.""", 'crm_helpdesk_menu.xml', #'crm_report.xml', 'security/crm_security.xml', - #'security/ir.model.access.csv', + 'security/ir.model.access.csv', 'process/crm_configuration_process.xml' ], diff --git a/addons/crm/security/ir.model.access.csv b/addons/crm/security/ir.model.access.csv index d30fc07a73f..7339832b083 100644 --- a/addons/crm/security/ir.model.access.csv +++ b/addons/crm/security/ir.model.access.csv @@ -6,6 +6,13 @@ "access_crm_case_rule","crm.case.rule","model_crm_case_rule","crm.group_crm_user",1,0,0,0 "access_crm_case_manger","crm.case manager","model_crm_case","crm.group_crm_user",1,1,1,1 "access_crm_case","crm.case","model_crm_case","crm.group_crm_manager",1,1,1,1 +"access_crm_claim","crm.claim","model_crm_claim","crm.group_crm_manager",1,1,1,1 +"access_crm_fundraising","crm.fundraising","model_crm_fundraising","crm.group_crm_manager",1,1,1,1 +"access_crm_helpdesk","crm.helpdesk","model_crm_helpdesk","crm.group_crm_manager",1,1,1,1 +"access_crm_meeting","crm.meeting","model_crm_meeting","crm.group_crm_manager",1,1,1,1 +"access_crm_lead","crm.lead","model_crm_lead","crm.group_crm_manager",1,1,1,1 +"access_crm_opportunity","crm.opportunity","model_crm_opportunity","crm.group_crm_manager",1,1,1,1 +"access_crm_phonecall","crm.phonecall","model_crm_phonecall","crm.group_crm_manager",1,1,1,1 "access_crm_case_log","crm.case.log","model_crm_case_log","crm.group_crm_user",1,1,1,1 "access_crm_case_history","crm.case.history","model_crm_case_history","crm.group_crm_user",1,1,1,1 "access_crm_case_section_manager","crm.case.section.manager","model_crm_case_section","crm.group_crm_manager",1,1,1,1 @@ -16,12 +23,6 @@ "access_crm_email_add_cc_manager","crm.email.add.cc","model_crm_email_add_cc","crm.group_crm_manager",1,1,1,1 "access_crm_email_add_cc_user","crm.email.add.cc","model_crm_email_add_cc","crm.group_crm_user",1,0,0,0 "access_crm_case_stage","crm.case.stage","model_crm_case_stage","crm.group_crm_user",1,0,0,0 -"access_report_crm_case_section_stage","report.crm.case.section.stage","model_report_crm_case_section_stage","crm.group_crm_manager",1,0,0,0 -"access_report_crm_case_section_categ_stage","report.crm.case.section.categ.stage","model_report_crm_case_section_categ_stage","crm.group_crm_manager",1,0,0,0 -"access_report_crm_case_section_categ_categ2","report.crm.case.section.categ.categ2","model_report_crm_case_section_categ_categ2","crm.group_crm_manager",1,0,0, -"access_report_crm_case_section_categ2","report.crm.case.section.categ2","model_report_crm_case_section_categ2","crm.group_crm_manager",1,0,0, "access_crm_case_stage_manager","crm.case.stage","model_crm_case_stage","crm.group_crm_manager",1,1,1,1 -"access_crm_menu_config_wizard","crm config wizard manager","model_crm_menu_config_wizard","crm.group_crm_manager",1,1,1,1 -"access_crm_menu_config_wizard system","crm config wizard manager system","model_crm_menu_config_wizard","base.group_system",1,1,1,1 -"access_crm_case_category2_user","crm_case_category2 user","model_crm_case_category2","crm.group_crm_user",1,0,0,0 -"access_crm_case_category2_manager","crm_case_category2 manager","model_crm_case_category2","crm.group_crm_manager",1,1,1,1 +"access_crm_case_resource_type_user","crm_case_resource_type user","model_crm_case_resource_type","crm.group_crm_user",1,0,0,0 +"access_crm_case_resource_type_manager","crm_case_resource_type manager","model_crm_case_resource_type","crm.group_crm_manager",1,1,1,1 diff --git a/addons/crm_hr/__terp__.py b/addons/crm_hr/__terp__.py index 3faec9b3b96..a4715123679 100644 --- a/addons/crm_hr/__terp__.py +++ b/addons/crm_hr/__terp__.py @@ -40,6 +40,7 @@ 'crm_hr_menu.xml', 'report_crm_hr_view.xml', 'security/crm_hr_security.xml', + 'security/ir.model.access.csv', 'board_crm_hr_statistical_view.xml', ], 'demo_xml': [ diff --git a/addons/crm_hr/security/crm_hr_security.xml b/addons/crm_hr/security/crm_hr_security.xml index da970de6aa2..15fc8ce82d4 100644 --- a/addons/crm_hr/security/crm_hr_security.xml +++ b/addons/crm_hr/security/crm_hr_security.xml @@ -5,7 +5,7 @@ - crm.meeting.rule + crm.job.rule diff --git a/addons/crm_hr/security/ir.model.access.csv b/addons/crm_hr/security/ir.model.access.csv new file mode 100644 index 00000000000..a237d65ad78 --- /dev/null +++ b/addons/crm_hr/security/ir.model.access.csv @@ -0,0 +1,5 @@ +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" +"access_crm_job","crm.job","model_crm_job","crm.group_crm_manager",1,1,1,1 +"access_report_crm_job_user","report.crm.job.user","model_report_crm_job_user","crm.group_crm_manager",1,0,0,0 +"access_report_crm_job_categ","report.crm.job.categ","model_report_crm_job_categ","crm.group_crm_manager",1,0,0,0 +"access_repor_crm_job_section","report.crm.job.section","model_report_crm_job_section","crm.group_crm_manager",1,0,0,0 diff --git a/addons/crm_project/__terp__.py b/addons/crm_project/__terp__.py index 2e05fcc0bae..7a63ce1d1f4 100644 --- a/addons/crm_project/__terp__.py +++ b/addons/crm_project/__terp__.py @@ -40,7 +40,8 @@ 'crm_feature_view.xml', 'crm_feature_menu.xml', 'report_crm_project_bug_view.xml', - 'security/crm_project_security.xml' + 'security/crm_project_security.xml', + 'security/ir.model.access.csv', ], 'demo_xml': ['crm_bugs_demo.xml'], 'installable': True, diff --git a/addons/crm_project/security/ir.model.access.csv b/addons/crm_project/security/ir.model.access.csv new file mode 100644 index 00000000000..189470f765f --- /dev/null +++ b/addons/crm_project/security/ir.model.access.csv @@ -0,0 +1,6 @@ +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" +"access_crm_project_bug","crm.project.bug","model_crm_project_bug","crm.group_crm_manager",1,1,1,1 +"access_crm_project_future","crm.project.future","model_crm_project_future","crm.group_crm_manager",1,1,1,1 +"access_report_crm_project_bug_user","report.crm.project.bug.user","model_report_crm_project_bug_user","crm.group_crm_manager",1,0,0,0 +"access_report_crm_project_bug_categ","report.crm.project.bug.categ","model_report_crm_project_bug_categ","crm.group_crm_manager",1,0,0,0 +"access_repor_crm_project_bug_section","report.crm.project.bug.section","model_report_crm_project_bug_section","crm.group_crm_manager",1,0,0,0 diff --git a/addons/report_crm/report_crm.py b/addons/report_crm/report_crm.py index c55f6ce69d5..b0ab10b82d8 100644 --- a/addons/report_crm/report_crm.py +++ b/addons/report_crm/report_crm.py @@ -191,5 +191,104 @@ class report_crm_case_section_stage(osv.osv): report_crm_case_section_stage() +class report_crm_case_section_type(osv.osv): + _name = "report.crm.case.section.type" + _description = "Cases by Section and Type" + _auto = False + _columns = { + 'name': fields.char('Year',size=64,required=False, readonly=True), + 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'), + ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True), + 'user_id':fields.many2one('res.users', 'User', readonly=True), + 'section_id':fields.many2one('crm.case.section', 'Section', readonly=True), + 'nbr': fields.integer('# of Cases', readonly=True), + 'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True), + } + _order = 'section_id' + + def init(self, cr): + tools.sql.drop_view_if_exists(cr, "report_crm_case_section_type") + cr.execute(""" + create view report_crm_case_section_type as ( + select + min(c.id) as id, + to_char(c.create_date,'YYYY') as name, + to_char(c.create_date, 'MM') as month, + c.user_id, + c.state, + c.section_id, + count(*) as nbr + from + crm_case c + group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.user_id, c.section_id, c.state)""") + +report_crm_case_section_type() + +class report_crm_case_section_categ_stage(osv.osv): + _name = "report.crm.case.section.categ.stage" + _description = "Cases by Section, Category and Stage" + _auto = False + _columns = { + 'name': fields.char('Year',size=64,required=False, readonly=True), + 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'), + ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True), + 'user_id':fields.many2one('res.users', 'User', readonly=True), + 'section_id':fields.many2one('crm.case.section', 'Section', readonly=True), + 'nbr': fields.integer('# of Cases', readonly=True), + 'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True), + } + _order = 'section_id' + + def init(self, cr): + tools.sql.drop_view_if_exists(cr, "report_crm_case_section_categ_stage") + cr.execute(""" + create view report_crm_case_section_categ_stage as ( + select + min(c.id) as id, + to_char(c.create_date,'YYYY') as name, + to_char(c.create_date, 'MM') as month, + c.user_id, + c.state, + c.section_id, + count(*) as nbr + from + crm_case c + group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'),c.user_id, c.state, c.section_id)""") + +report_crm_case_section_categ_stage() + +class report_crm_case_section_categ_type(osv.osv): + _name = "report.crm.case.section.categ.type" + _description = "Cases by Section, Category and Type" + _auto = False + _columns = { + 'name': fields.char('Year',size=64,required=False, readonly=True), + 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'), + ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True), + 'user_id':fields.many2one('res.users', 'User', readonly=True), + 'section_id':fields.many2one('crm.case.section', 'Section', readonly=True), + 'nbr': fields.integer('# of Cases', readonly=True), + 'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True), + } + _order = 'section_id' + + def init(self, cr): + tools.sql.drop_view_if_exists(cr, "report_crm_case_section_categ_type") + cr.execute(""" + create view report_crm_case_section_categ_type as ( + select + min(c.id) as id, + to_char(c.create_date, 'YYYY') as name, + to_char(c.create_date, 'MM') as month, + c.user_id, + c.state, + c.section_id, + count(*) as nbr + from + crm_case c + group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'),c.user_id, c.state, c.section_id)""") + +report_crm_case_section_categ_type() + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/report_crm/report_crm_claim.py b/addons/report_crm/report_crm_claim.py index 57c0df8793f..2586ad2131e 100644 --- a/addons/report_crm/report_crm_claim.py +++ b/addons/report_crm/report_crm_claim.py @@ -128,4 +128,110 @@ class report_crm_claim_section(osv.osv): )""") report_crm_claim_section() +class report_crm_claim_section_type(osv.osv): + _name = "report.crm.claim.section.type" + _inherit = "report.crm.case.section.type" + _description = "Claims by section and type" + _auto = False + _columns = { + 'type_id': fields.many2one('crm.case.resource.type', 'Claim Type', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.claim')]", readonly=True), + 'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.claim')]", readonly=True), + 'amount_revenue': fields.float('Est.Revenue', readonly=True), + 'delay_close': fields.char('Delay Close', size=20, readonly=True), + } + _order = 'type_id' + + def init(self, cr): + tools.sql.drop_view_if_exists(cr, "report_crm_claim_section_type") + cr.execute(""" + create view report_crm_claim_section_type as ( + select + min(c.id) as id, + to_char(c.create_date,'YYYY') as name, + to_char(c.create_date, 'MM') as month, + c.user_id, + c.state, + c.type_id, + c.stage_id, + c.section_id, + count(*) as nbr, + sum(planned_revenue) as amount_revenue, + to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close + from + crm_claim c + where c.type_id is not null + group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.user_id, c.state, c.stage_id, c.type_id, c.section_id)""") + +report_crm_claim_section_type() + +class report_crm_claim_section_categ_stage(osv.osv): + _name = "report.crm.claim.section.categ.stage" + _inherit = "report.crm.case.section.categ.stage" + _description = "Claims by Section, Category and Stage" + _auto = False + _columns = { + 'categ_id': fields.many2one('crm.case.categ','Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.claim')]", readonly=True), + 'stage_id':fields.many2one('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.claim')]", readonly=True), + 'delay_close': fields.char('Delay Close', size=20, readonly=True), + } + _order = 'stage_id, categ_id' + + def init(self, cr): + tools.sql.drop_view_if_exists(cr, "report_crm_claim_section_categ_stage") + cr.execute(""" + create view report_crm_claim_section_categ_stage as ( + select + min(c.id) as id, + to_char(c.create_date,'YYYY') as name, + to_char(c.create_date, 'MM') as month, + c.user_id, + c.categ_id, + c.state, + c.stage_id, + c.section_id, + count(*) as nbr, + to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close + from + crm_claim c + where c.categ_id is not null AND c.stage_id is not null + group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'),c.user_id, c.categ_id, c.state, c.stage_id, c.section_id)""") + +report_crm_claim_section_categ_stage() + +class report_crm_claim_section_categ_type(osv.osv): + _name = "report.crm.claim.section.categ.type" + _inherit = "report.crm.case.section.categ.type" + _description = "Claims by Section, Category and Type" + _auto = False + _columns = { + 'categ_id':fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.claim')]", readonly=True), + 'type_id': fields.many2one('crm.case.resource.type', 'Claim Type', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.claim')]", readonly=True), + 'stage_id':fields.many2one('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.claim')]", readonly=True), + 'delay_close': fields.char('Delay Close', size=20, readonly=True), + } + _order = 'categ_id, type_id' + + def init(self, cr): + tools.sql.drop_view_if_exists(cr, "report_crm_claim_section_categ_type") + cr.execute(""" + create view report_crm_claim_section_categ_type as ( + select + min(c.id) as id, + to_char(c.create_date, 'YYYY') as name, + to_char(c.create_date, 'MM') as month, + c.user_id, + c.categ_id, + c.type_id, + c.state, + c.stage_id, + c.section_id, + count(*) as nbr, + to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close + from + crm_claim c + where c.categ_id is not null AND c.type_id is not null + group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'),c.user_id, c.categ_id, c.type_id, c.state, c.stage_id, c.section_id)""") + +report_crm_claim_section_categ_type() + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file diff --git a/addons/report_crm/report_crm_claim_view.xml b/addons/report_crm/report_crm_claim_view.xml index 562ccbec8a4..43d57306596 100644 --- a/addons/report_crm/report_crm_claim_view.xml +++ b/addons/report_crm/report_crm_claim_view.xml @@ -186,6 +186,242 @@ - + + + # + # Claims by section and type + # + + + CRM Report - Sections and Type(Tree) + report.crm.claim.section.type + + tree + + + + + + + + + + + CRM Report - Sections and Type(Form) + report.crm.claim.section.type + + form + + + + + + + + + + + + CRM Report - Sections and Type(Graph) + report.crm.claim.section.type + graph + + + + + + + + + + CRM Report - Sections and Type(Select) + report.crm.claim.section.type + + search + + + + + + + + + report.crm.claim.section.type + Claims by section and type + form + graph,tree + + + + + graph + + + + + + tree + + + + + + # + # Claims by section, category and stage + # + + + CRM Report - Section, Category and Stage(Tree) + report.crm.claim.section.categ.stage + + tree + + + + + + + + + + CRM Report - Section, Category and Stage(Form) + report.crm.claim.section.categ.stage + + form + + + + + + + + + + + CRM Report - Section, Category and Stage(Select) + report.crm.claim.section.categ.stage + graph + + + + + + + + + + CRM Report - Section, Category and Stage(Select) + report.crm.claim.section.categ.stage + + search + + + + + + + + + + report.crm.claim.section.categ.stage + Claims by section, category and stage + form + graph,tree + + + + + graph + + + + + + tree + + + + + + # + # Claims by section, category and type + # + + + CRM Report - Section, Category and Type(Tree) + report.crm.claim.section.categ.type + + tree + + + + + + + + + + + CRM Report - Section, Category and Type(Form) + report.crm.claim.section.categ.type + + form + + + + + + + + + + + + CRM Report - Section, Category and Type(Select) + report.crm.claim.section.categ.type + graph + + + + + + + + + + CRM Report - Section, Category and Type(Select) + report.crm.claim.section.categ.type + + search + + + + + + + + + + + report.crm.claim.section.categ.type + Claims by section, category and type + form + graph,tree + + + + + graph + + + + + + tree + + + + + \ No newline at end of file diff --git a/addons/report_crm/report_crm_fundraising.py b/addons/report_crm/report_crm_fundraising.py index 4ee8911a776..2cf752ea9ce 100644 --- a/addons/report_crm/report_crm_fundraising.py +++ b/addons/report_crm/report_crm_fundraising.py @@ -128,4 +128,110 @@ class report_crm_fundraising_section(osv.osv): )""") report_crm_fundraising_section() +class report_crm_fundraising_section_type(osv.osv): + _name = "report.crm.fundraising.section.type" + _inherit = "report.crm.case.section.type" + _description = "Fundraising by section and type" + _auto = False + _columns = { + 'type_id': fields.many2one('crm.case.resource.type', 'Fundraising Type', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.fundraising')]", readonly=True), + 'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.fundraising')]", readonly=True), + 'amount_revenue': fields.float('Est.Revenue', readonly=True), + 'delay_close': fields.char('Delay Close', size=20, readonly=True), + } + _order = 'type_id' + + def init(self, cr): + tools.sql.drop_view_if_exists(cr, "report_crm_fundraising_section_type") + cr.execute(""" + create view report_crm_fundraising_section_type as ( + select + min(c.id) as id, + to_char(c.create_date,'YYYY') as name, + to_char(c.create_date, 'MM') as month, + c.user_id, + c.state, + c.type_id, + c.stage_id, + c.section_id, + count(*) as nbr, + sum(planned_revenue) as amount_revenue, + to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close + from + crm_fundraising c + where c.type_id is not null + group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.user_id, c.state, c.stage_id, c.type_id, c.section_id)""") + +report_crm_fundraising_section_type() + +class report_crm_fundraising_section_categ_stage(osv.osv): + _name = "report.crm.fundraising.section.categ.stage" + _inherit = "report.crm.case.section.categ.stage" + _description = "Fundraising by Section, Category and Stage" + _auto = False + _columns = { + 'categ_id': fields.many2one('crm.case.categ','Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.fundraising')]", readonly=True), + 'stage_id':fields.many2one('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.fundraising')]", readonly=True), + 'delay_close': fields.char('Delay Close', size=20, readonly=True), + } + _order = 'stage_id, categ_id' + + def init(self, cr): + tools.sql.drop_view_if_exists(cr, "report_crm_fundraising_section_categ_stage") + cr.execute(""" + create view report_crm_fundraising_section_categ_stage as ( + select + min(c.id) as id, + to_char(c.create_date,'YYYY') as name, + to_char(c.create_date, 'MM') as month, + c.user_id, + c.categ_id, + c.state, + c.stage_id, + c.section_id, + count(*) as nbr, + to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close + from + crm_fundraising c + where c.categ_id is not null AND c.stage_id is not null + group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'),c.user_id, c.categ_id, c.state, c.stage_id, c.section_id)""") + +report_crm_fundraising_section_categ_stage() + +class report_crm_fundraising_section_categ_type(osv.osv): + _name = "report.crm.fundraising.section.categ.type" + _inherit = "report.crm.case.section.categ.type" + _description = "Fundraising by Section, Category and Type" + _auto = False + _columns = { + 'categ_id':fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.fundraising')]", readonly=True), + 'type_id': fields.many2one('crm.case.resource.type', 'Fundraising Type', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.fundraising')]", readonly=True), + 'stage_id':fields.many2one('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.fundraising')]", readonly=True), + 'delay_close': fields.char('Delay Close', size=20, readonly=True), + } + _order = 'categ_id, type_id' + + def init(self, cr): + tools.sql.drop_view_if_exists(cr, "report_crm_fundraising_section_categ_type") + cr.execute(""" + create view report_crm_fundraising_section_categ_type as ( + select + min(c.id) as id, + to_char(c.create_date, 'YYYY') as name, + to_char(c.create_date, 'MM') as month, + c.user_id, + c.categ_id, + c.type_id, + c.state, + c.stage_id, + c.section_id, + count(*) as nbr, + to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close + from + crm_fundraising c + where c.categ_id is not null AND c.type_id is not null + group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'),c.user_id, c.categ_id, c.type_id, c.state, c.stage_id, c.section_id)""") + +report_crm_fundraising_section_categ_type() + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file diff --git a/addons/report_crm/report_crm_fundraising_view.xml b/addons/report_crm/report_crm_fundraising_view.xml index 0ee491fc5b0..bada63a0ae5 100644 --- a/addons/report_crm/report_crm_fundraising_view.xml +++ b/addons/report_crm/report_crm_fundraising_view.xml @@ -71,7 +71,7 @@ - + report.crm.fundraising.categ.tree @@ -138,7 +138,7 @@ - + report.crm.fundraising.section.tree @@ -187,5 +187,240 @@ + + # + # Fundraising by section and type + # + + + CRM Report - Sections and Type(Tree) + report.crm.fundraising.section.type + + tree + + + + + + + + + + + CRM Report - Sections and Type(Form) + report.crm.fundraising.section.type + + form + + + + + + + + + + + + CRM Report - Sections and Type(Graph) + report.crm.fundraising.section.type + graph + + + + + + + + + + CRM Report - Sections and Type(Select) + report.crm.fundraising.section.type + + search + + + + + + + + + report.crm.fundraising.section.type + Fundraising by section and type + form + graph,tree + + + + + graph + + + + + + tree + + + + + + # + # Fundraising by section, category and stage + # + + + CRM Report - Section, Category and Stage(Tree) + report.crm.fundraising.section.categ.stage + + tree + + + + + + + + + + CRM Report - Section, Category and Stage(Form) + report.crm.fundraising.section.categ.stage + + form + + + + + + + + + + + CRM Report - Section, Category and Stage(Select) + report.crm.fundraising.section.categ.stage + graph + + + + + + + + + + CRM Report - Section, Category and Stage(Select) + report.crm.fundraising.section.categ.stage + + search + + + + + + + + + + report.crm.fundraising.section.categ.stage + Fundraising by section, category and stage + form + graph,tree + + + + + graph + + + + + + tree + + + + + + # + # Fundraising by section, category and type + # + + + CRM Report - Section, Category and Type(Tree) + report.crm.fundraising.section.categ.type + + tree + + + + + + + + + + + CRM Report - Section, Category and Type(Form) + report.crm.fundraising.section.categ.type + + form + + + + + + + + + + + + CRM Report - Section, Category and Type(Select) + report.crm.fundraising.section.categ.type + graph + + + + + + + + + + CRM Report - Section, Category and Type(Select) + report.crm.fundraising.section.categ.type + + search + + + + + + + + + + + report.crm.fundraising.section.categ.type + Fundraising by section, category and type + form + graph,tree + + + + + graph + + + + + + tree + + + + diff --git a/addons/report_crm/report_crm_lead.py b/addons/report_crm/report_crm_lead.py index 35b0b799235..479b93445c4 100644 --- a/addons/report_crm/report_crm_lead.py +++ b/addons/report_crm/report_crm_lead.py @@ -164,4 +164,110 @@ class report_crm_lead_section_stage(osv.osv): report_crm_lead_section_stage() +class report_crm_lead_section_type(osv.osv): + _name = "report.crm.lead.section.type" + _inherit = "report.crm.case.section.type" + _description = "Leads by section and type" + _auto = False + _columns = { + 'type_id': fields.many2one('crm.case.resource.type', 'Lead Type', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]", readonly=True), + 'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]", readonly=True), + 'amount_revenue': fields.float('Est.Revenue', readonly=True), + 'delay_close': fields.char('Delay Close', size=20, readonly=True), + } + _order = 'type_id' + + def init(self, cr): + tools.sql.drop_view_if_exists(cr, "report_crm_lead_section_type") + cr.execute(""" + create view report_crm_lead_section_type as ( + select + min(c.id) as id, + to_char(c.create_date,'YYYY') as name, + to_char(c.create_date, 'MM') as month, + c.user_id, + c.state, + c.type_id, + c.stage_id, + c.section_id, + count(*) as nbr, + sum(planned_revenue) as amount_revenue, + to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close + from + crm_lead c + where c.type_id is not null + group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.user_id, c.state, c.stage_id, c.type_id, c.section_id)""") + +report_crm_lead_section_type() + +class report_crm_lead_section_categ_stage(osv.osv): + _name = "report.crm.lead.section.categ.stage" + _inherit = "report.crm.case.section.categ.stage" + _description = "Leads by Section, Category and Stage" + _auto = False + _columns = { + 'categ_id': fields.many2one('crm.case.categ','Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]", readonly=True), + 'stage_id':fields.many2one('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]", readonly=True), + 'delay_close': fields.char('Delay Close', size=20, readonly=True), + } + _order = 'stage_id, categ_id' + + def init(self, cr): + tools.sql.drop_view_if_exists(cr, "report_crm_lead_section_categ_stage") + cr.execute(""" + create view report_crm_lead_section_categ_stage as ( + select + min(c.id) as id, + to_char(c.create_date,'YYYY') as name, + to_char(c.create_date, 'MM') as month, + c.user_id, + c.categ_id, + c.state, + c.stage_id, + c.section_id, + count(*) as nbr, + to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close + from + crm_lead c + where c.categ_id is not null AND c.stage_id is not null + group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'),c.user_id, c.categ_id, c.state, c.stage_id, c.section_id)""") + +report_crm_lead_section_categ_stage() + +class report_crm_lead_section_categ_type(osv.osv): + _name = "report.crm.lead.section.categ.type" + _inherit = "report.crm.case.section.categ.type" + _description = "Leads by Section, Category and Type" + _auto = False + _columns = { + 'categ_id':fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]", readonly=True), + 'type_id': fields.many2one('crm.case.resource.type', 'Lead Type', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]", readonly=True), + 'stage_id':fields.many2one('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]", readonly=True), + 'delay_close': fields.char('Delay Close', size=20, readonly=True), + } + _order = 'categ_id, type_id' + + def init(self, cr): + tools.sql.drop_view_if_exists(cr, "report_crm_lead_section_categ_type") + cr.execute(""" + create view report_crm_lead_section_categ_type as ( + select + min(c.id) as id, + to_char(c.create_date, 'YYYY') as name, + to_char(c.create_date, 'MM') as month, + c.user_id, + c.categ_id, + c.type_id, + c.state, + c.stage_id, + c.section_id, + count(*) as nbr, + to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close + from + crm_lead c + where c.categ_id is not null AND c.type_id is not null + group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'),c.user_id, c.categ_id, c.type_id, c.state, c.stage_id, c.section_id)""") + +report_crm_lead_section_categ_type() + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file diff --git a/addons/report_crm/report_crm_lead_view.xml b/addons/report_crm/report_crm_lead_view.xml index 10782abeab3..8dbec663dd2 100644 --- a/addons/report_crm/report_crm_lead_view.xml +++ b/addons/report_crm/report_crm_lead_view.xml @@ -246,5 +246,240 @@ + + # + # Leads by section and type + # + + + CRM Report - Sections and Type(Tree) + report.crm.lead.section.type + + tree + + + + + + + + + + + CRM Report - Sections and Type(Form) + report.crm.lead.section.type + + form + + + + + + + + + + + + CRM Report - Sections and Type(Graph) + report.crm.lead.section.type + graph + + + + + + + + + + CRM Report - Sections and Type(Select) + report.crm.lead.section.type + + search + + + + + + + + + report.crm.lead.section.type + Leads by section and type + form + graph,tree + + + + + graph + + + + + + tree + + + + + + # + # Leads by section, category and stage + # + + + CRM Report - Section, Category and Stage(Tree) + report.crm.lead.section.categ.stage + + tree + + + + + + + + + + CRM Report - Section, Category and Stage(Form) + report.crm.lead.section.categ.stage + + form + + + + + + + + + + + CRM Report - Section, Category and Stage(Select) + report.crm.lead.section.categ.stage + graph + + + + + + + + + + CRM Report - Section, Category and Stage(Select) + report.crm.lead.section.categ.stage + + search + + + + + + + + + + report.crm.lead.section.categ.stage + Leads by section, category and stage + form + graph,tree + + + + + graph + + + + + + tree + + + + + + # + # Leads by section, category and type + # + + + CRM Report - Section, Category and Type(Tree) + report.crm.lead.section.categ.type + + tree + + + + + + + + + + + CRM Report - Section, Category and Type(Form) + report.crm.lead.section.categ.type + + form + + + + + + + + + + + + CRM Report - Section, Category and Type(Select) + report.crm.lead.section.categ.type + graph + + + + + + + + + + CRM Report - Section, Category and Type(Select) + report.crm.lead.section.categ.type + + search + + + + + + + + + + + report.crm.lead.section.categ.type + Leads by section, category and type + form + graph,tree + + + + + graph + + + + + + tree + + + + diff --git a/addons/report_crm/report_crm_opportunity.py b/addons/report_crm/report_crm_opportunity.py index dbd3149556d..796ae488442 100644 --- a/addons/report_crm/report_crm_opportunity.py +++ b/addons/report_crm/report_crm_opportunity.py @@ -128,4 +128,109 @@ class report_crm_opportunity_section(osv.osv): )""") report_crm_opportunity_section() +class report_crm_opportunity_section_type(osv.osv): + _name = "report.crm.opportunity.section.type" + _inherit = "report.crm.case.section.type" + _description = "Opportunity by section and type" + _auto = False + _columns = { + 'type_id': fields.many2one('crm.case.resource.type', 'Opportunity Type', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]", readonly=True), + 'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]", readonly=True), + 'amount_revenue': fields.float('Est.Revenue', readonly=True), + 'delay_close': fields.char('Delay Close', size=20, readonly=True), + } + _order = 'type_id' + + def init(self, cr): + tools.sql.drop_view_if_exists(cr, "report_crm_opportunity_section_type") + cr.execute(""" + create view report_crm_opportunity_section_type as ( + select + min(c.id) as id, + to_char(c.create_date,'YYYY') as name, + to_char(c.create_date, 'MM') as month, + c.user_id, + c.state, + c.type_id, + c.stage_id, + c.section_id, + count(*) as nbr, + sum(planned_revenue) as amount_revenue, + to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close + from + crm_opportunity c + where c.type_id is not null + group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.user_id, c.state, c.stage_id, c.type_id, c.section_id)""") + +report_crm_opportunity_section_type() + +class report_crm_opportunity_section_categ_stage(osv.osv): + _name = "report.crm.opportunity.section.categ.stage" + _inherit = "report.crm.case.section.categ.stage" + _description = "Opportunity by Section, Category and Stage" + _auto = False + _columns = { + 'categ_id': fields.many2one('crm.case.categ','Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]", readonly=True), + 'stage_id':fields.many2one('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]", readonly=True), + 'delay_close': fields.char('Delay Close', size=20, readonly=True), + } + _order = 'stage_id, categ_id' + + def init(self, cr): + tools.sql.drop_view_if_exists(cr, "report_crm_opportunity_section_categ_stage") + cr.execute(""" + create view report_crm_opportunity_section_categ_stage as ( + select + min(c.id) as id, + to_char(c.create_date,'YYYY') as name, + to_char(c.create_date, 'MM') as month, + c.user_id, + c.categ_id, + c.state, + c.stage_id, + c.section_id, + count(*) as nbr, + to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close + from + crm_opportunity c + where c.categ_id is not null AND c.stage_id is not null + group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'),c.user_id, c.categ_id, c.state, c.stage_id, c.section_id)""") + +report_crm_opportunity_section_categ_stage() + +class report_crm_opportunity_section_categ_type(osv.osv): + _name = "report.crm.opportunity.section.categ.type" + _inherit = "report.crm.case.section.categ.type" + _description = "Opportunity by Section, Category and Type" + _auto = False + _columns = { + 'categ_id':fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]", readonly=True), + 'type_id': fields.many2one('crm.case.resource.type', 'Opportunity Type', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]", readonly=True), + 'stage_id':fields.many2one('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]", readonly=True), + 'delay_close': fields.char('Delay Close', size=20, readonly=True), + } + _order = 'categ_id, type_id' + + def init(self, cr): + tools.sql.drop_view_if_exists(cr, "report_crm_opportunity_section_categ_type") + cr.execute(""" + create view report_crm_opportunity_section_categ_type as ( + select + min(c.id) as id, + to_char(c.create_date, 'YYYY') as name, + to_char(c.create_date, 'MM') as month, + c.user_id, + c.categ_id, + c.type_id, + c.state, + c.stage_id, + c.section_id, + count(*) as nbr, + to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close + from + crm_opportunity c + where c.categ_id is not null AND c.type_id is not null + group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'),c.user_id, c.categ_id, c.type_id, c.state, c.stage_id, c.section_id)""") + +report_crm_opportunity_section_categ_type() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file diff --git a/addons/report_crm/report_crm_opportunity_view.xml b/addons/report_crm/report_crm_opportunity_view.xml index 6e2f82d99fa..17310cfd0aa 100644 --- a/addons/report_crm/report_crm_opportunity_view.xml +++ b/addons/report_crm/report_crm_opportunity_view.xml @@ -187,5 +187,240 @@ + + # + # Opportunity by section and type + # + + + CRM Report - Sections and Type(Tree) + report.crm.opportunity.section.type + + tree + + + + + + + + + + + CRM Report - Sections and Type(Form) + report.crm.opportunity.section.type + + form + + + + + + + + + + + + CRM Report - Sections and Type(Graph) + report.crm.opportunity.section.type + graph + + + + + + + + + + CRM Report - Sections and Type(Select) + report.crm.opportunity.section.type + + search + + + + + + + + + report.crm.opportunity.section.type + Opportunity by section and type + form + graph,tree + + + + + graph + + + + + + tree + + + + + + # + # Opportunity by section, category and stage + # + + + CRM Report - Section, Category and Stage(Tree) + report.crm.opportunity.section.categ.stage + + tree + + + + + + + + + + CRM Report - Section, Category and Stage(Form) + report.crm.opportunity.section.categ.stage + + form + + + + + + + + + + + CRM Report - Section, Category and Stage(Select) + report.crm.opportunity.section.categ.stage + graph + + + + + + + + + + CRM Report - Section, Category and Stage(Select) + report.crm.opportunity.section.categ.stage + + search + + + + + + + + + + report.crm.opportunity.section.categ.stage + Opportunity by section, category and stage + form + graph,tree + + + + + graph + + + + + + tree + + + + + + # + # opportunitys by section, category and type + # + + + CRM Report - Section, Category and Type(Tree) + report.crm.opportunity.section.categ.type + + tree + + + + + + + + + + + CRM Report - Section, Category and Type(Form) + report.crm.opportunity.section.categ.type + + form + + + + + + + + + + + + CRM Report - Section, Category and Type(Select) + report.crm.opportunity.section.categ.type + graph + + + + + + + + + + CRM Report - Section, Category and Type(Select) + report.crm.opportunity.section.categ.type + + search + + + + + + + + + + + report.crm.opportunity.section.categ.type + Opportunity by section, category and type + form + graph,tree + + + + + graph + + + + + + tree + + + + diff --git a/addons/report_crm/report_crm_phonecall.py b/addons/report_crm/report_crm_phonecall.py index c23e3357329..a9aad6241e7 100644 --- a/addons/report_crm/report_crm_phonecall.py +++ b/addons/report_crm/report_crm_phonecall.py @@ -36,7 +36,7 @@ report_crm_phonecall_user() class report_crm_phonecall_categ(osv.osv): _name = "report.crm.phonecall.categ" - _description = "Phone Calls by section and category" + _description = "Phone calls by section and category" _auto = False _inherit = "report.crm.case.categ" _columns = { @@ -71,7 +71,7 @@ report_crm_phonecall_categ() class report_crm_phonecall_section(osv.osv): _name = "report.crm.phonecall.section" - _description = "Phonecalls by Section" + _description = "Phone calls by Section" _auto = False _inherit = "report.crm.case.section" diff --git a/addons/report_crm/report_crm_view.xml b/addons/report_crm/report_crm_view.xml index d2cbc4e7bc9..a5ac4a942b5 100644 --- a/addons/report_crm/report_crm_view.xml +++ b/addons/report_crm/report_crm_view.xml @@ -3,8 +3,8 @@ + Cases by user and section + --> report.crm.case.user.tree @@ -268,6 +268,186 @@ tree + + # + # Cases by section and type of case + # + + + CRM Report - Sections and Type(Tree) + report.crm.case.section.type + tree + + + + + + + + + + + + + CRM Report - Sections and Type(Form) + report.crm.case.section.type + form + +
+ + + + + + + + +
+ + + CRM Report - Sections and Type(Select) + report.crm.case.section.type + search + + + + + + + + + + + + + + + + report.crm.case.section.type + form + tree + + + + # + # Cases by section, category and stage + # + + + CRM Report - Section, Category and Stage(Tree) + report.crm.case.section.categ.stage + tree + + + + + + + + + + + + + CRM Report - Section, Category and Stage(Form) + report.crm.case.section.categ.stage + form + +
+ + + + + + + + +
+ + + CRM Report - Section, Category and Stage(Select) + report.crm.case.section.categ.stage + search + + + + + + + + + + + + + + + + report.crm.case.section.categ.stage + form + tree + + + + # + # Cases by section, category and type + # + + + CRM Report - Section, Category and Type(Tree) + report.crm.case.section.categ.type + tree + + + + + + + + + + + + + CRM Report - Section, Category and Type(Form) + report.crm.case.section.categ.type + form + +
+ + + + + + + + +
+ + + CRM Report - Section, Category and Type(Select) + report.crm.case.section.categ.type + search + + + + + + + + + + + + + + + + report.crm.case.section.categ.type + form + tree + + @@ -318,6 +498,6 @@ [('state','=','open')] - +
diff --git a/addons/report_crm/security/ir.model.access.csv b/addons/report_crm/security/ir.model.access.csv index 12746e5d274..8130bd8ddcb 100644 --- a/addons/report_crm/security/ir.model.access.csv +++ b/addons/report_crm/security/ir.model.access.csv @@ -3,4 +3,35 @@ access_report_crm_case_user,report.crm.case.user,model_report_crm_case_user,crm. access_report_crm_case_categ,report.crm.case.categ,model_report_crm_case_categ,crm.group_crm_manager,1,0,0,0 access_repor_crm_case_section,report.crm.case.section,model_report_crm_case_section,crm.group_crm_manager,1,0,0,0 access_report_crm_case_service_dashboard,report.crm.case.service.dashboard,model_report_crm_case_service_dashboard,crm.group_crm_manager,1,0,0,0 - +access_report_crm_case_section_stage,report.crm.case.section.stage,model_report_crm_case_section_stage,crm.group_crm_manager,1,0,0,0 +access_report_crm_case_section_categ_stage,report.crm.case.section.categ.stage,model_report_crm_case_section_categ_stage,crm.group_crm_manager,1,0,0,0 +access_report_crm_case_section_categ_type,report.crm.case.section.categ.type,model_report_crm_case_section_categ_type,crm.group_crm_manager,1,0,0, +access_report_crm_case_section_type,report.crm.case.section.type,model_report_crm_case_section_type,crm.group_crm_manager,1,0,0, +access_report_crm_claim_user,report.crm.claim.user,model_report_crm_claim_user,crm.group_crm_manager,1,0,0,0 +access_report_crm_claim_categ,report.crm.claim.categ,model_report_crm_claim_categ,crm.group_crm_manager,1,0,0,0 +access_repor_crm_claim_section,report.crm.claim.section,model_report_crm_claim_section,crm.group_crm_manager,1,0,0,0 +access_report_crm_claim_section_categ_stage,report.crm.claim.section.categ.stage,model_report_crm_claim_section_categ_stage,crm.group_crm_manager,1,0,0,0 +access_report_crm_claim_section_categ_type,report.crm.claim.section.categ.type,model_report_crm_claim_section_categ_type,crm.group_crm_manager,1,0,0, +access_report_crm_claim_section_type,report.crm.claim.section.type,model_report_crm_claim_section_type,crm.group_crm_manager,1,0,0, +access_report_crm_fundraising_user,report.crm.fundraising.user,model_report_crm_fundraising_user,crm.group_crm_manager,1,0,0,0 +access_report_crm_fundraising_categ,report.crm.fundraising.categ,model_report_crm_fundraising_categ,crm.group_crm_manager,1,0,0,0 +access_repor_crm_fundraising_section,report.crm.fundraising.section,model_report_crm_fundraising_section,crm.group_crm_manager,1,0,0,0 +access_report_crm_fundraising_section_categ_stage,report.crm.fundraising.section.categ.stage,model_report_crm_fundraising_section_categ_stage,crm.group_crm_manager,1,0,0,0 +access_report_crm_fundraising_section_categ_type,report.crm.fundraising.section.categ.type,model_report_crm_fundraising_section_categ_type,crm.group_crm_manager,1,0,0, +access_report_crm_fundraising_section_type,report.crm.fundraising.section.type,model_report_crm_fundraising_section_type,crm.group_crm_manager,1,0,0, +access_report_crm_lead_user,report.crm.lead.user,model_report_crm_lead_user,crm.group_crm_manager,1,0,0,0 +access_report_crm_lead_categ,report.crm.lead.categ,model_report_crm_lead_categ,crm.group_crm_manager,1,0,0,0 +access_repor_crm_lead_section,report.crm.lead.section,model_report_crm_lead_section,crm.group_crm_manager,1,0,0,0 +access_report_crm_lead_section_stage,report.crm.lead.section.stage,model_report_crm_lead_section_stage,crm.group_crm_manager,1,0,0,0 +access_report_crm_lead_section_categ_stage,report.crm.lead.section.categ.stage,model_report_crm_lead_section_categ_stage,crm.group_crm_manager,1,0,0,0 +access_report_crm_lead_section_categ_type,report.crm.lead.section.categ.type,model_report_crm_lead_section_categ_type,crm.group_crm_manager,1,0,0, +access_report_crm_lead_section_type,report.crm.lead.section.type,model_report_crm_lead_section_type,crm.group_crm_manager,1,0,0, +access_report_crm_opportunity_user,report.crm.opportunity.user,model_report_crm_opportunity_user,crm.group_crm_manager,1,0,0,0 +access_report_crm_opportunity_categ,report.crm.opportunity.categ,model_report_crm_opportunity_categ,crm.group_crm_manager,1,0,0,0 +access_repor_crm_opportunity_section,report.crm.opportunity.section,model_report_crm_opportunity_section,crm.group_crm_manager,1,0,0,0 +access_report_crm_opportunity_section_categ_stage,report.crm.opportunity.section.categ.stage,model_report_crm_opportunity_section_categ_stage,crm.group_crm_manager,1,0,0,0 +access_report_crm_opportunity_section_categ_type,report.crm.opportunity.section.categ.type,model_report_crm_opportunity_section_categ_type,crm.group_crm_manager,1,0,0, +access_report_crm_opportunity_section_type,report.crm.opportunity.section.type,model_report_crm_opportunity_section_type,crm.group_crm_manager,1,0,0, +access_report_crm_phonecall_user,report.crm.phonecall.user,model_report_crm_phonecall_user,crm.group_crm_manager,1,0,0,0 +access_report_crm_phonecall_categ,report.crm.phonecall.categ,model_report_crm_phonecall_categ,crm.group_crm_manager,1,0,0,0 +access_repor_crm_phonecall_section,report.crm.phonecall.section,model_report_crm_phonecall_section,crm.group_crm_manager,1,0,0,0 From 98942e98626ac6ce50ab9eeb7cb8a40c9deba000 Mon Sep 17 00:00:00 2001 From: "sbh (Open ERP)" Date: Fri, 29 Jan 2010 14:31:44 +0530 Subject: [PATCH 02/11] [IMP] crm: add the act window of phoneall and meeting in business opportunity bzr revid: sbh@tinyerp.com-20100129090144-ev2psnyr7mae4w31 --- addons/crm/crm_lead_view.xml | 1 + addons/crm/crm_opportunity_menu.xml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index d35a7d7dc83..0c2f0f83b84 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -51,6 +51,7 @@ +