diff --git a/addons/account/security/ir.model.access.csv b/addons/account/security/ir.model.access.csv
index 4cf67851760..271a4efe0ab 100644
--- a/addons/account/security/ir.model.access.csv
+++ b/addons/account/security/ir.model.access.csv
@@ -87,3 +87,4 @@
"access_account_fiscal_position_account_template","account.fiscal.position.account.template","model_account_fiscal_position_account_template","account.group_account_manager",1,1,1,1
"access_account_sequence_fiscal_year","account.sequence.fiscalyear","model_account_sequence_fiscalyear","account.group_account_user",1,1,1,1
"access_account_sequence_fiscal_year_user","account.sequence.fiscalyear user","model_account_sequence_fiscalyear","base.group_user",1,0,0,0
+"access_account_installer","account.installer","model_account_installer","base.group_user",1,0,0,0
diff --git a/addons/account_voucher/__terp__.py b/addons/account_voucher/__terp__.py
index 242cc5fb391..20bf2c579ff 100755
--- a/addons/account_voucher/__terp__.py
+++ b/addons/account_voucher/__terp__.py
@@ -39,6 +39,7 @@
],
"update_xml" : [
+ "security/account_security.xml",
"voucher_sequence.xml",
"account_report.xml",
"voucher_view.xml",
diff --git a/addons/base_calendar/base_calendar.py b/addons/base_calendar/base_calendar.py
index 5c8aa460da0..18b27820766 100644
--- a/addons/base_calendar/base_calendar.py
+++ b/addons/base_calendar/base_calendar.py
@@ -811,18 +811,18 @@ rule or repeating pattern for anexception to a recurrence set"),
'interval': lambda *x: 1,
}
- def modify_this(self, cr, uid, ids, defaults, context=None, *args):
+ def modify_this(self, cr, uid, ids, defaults, real_date, context=None, *args):
ids = map(lambda x: base_calendar_id2real_id(x), ids)
datas = self.read(cr, uid, ids[0], context=context)
defaults.update({
'recurrent_uid': base_calendar_id2real_id(datas['id']),
- 'recurrent_id': defaults.get('date'),
+ 'recurrent_id': defaults.get('date') or real_date,
'rrule_type': 'none',
'rrule': ''
})
exdate = datas['exdate'] and datas['exdate'].split(',') or []
- if defaults.get('date'):
- exdate.append(defaults.get('date'))
+ if real_date and defaults.get('date'):
+ exdate.append(real_date)
self.write(cr, uid, ids, {'exdate': ','.join(exdate)}, context=context)
new_id = self.copy(cr, uid, ids[0], default=defaults, context=context)
return new_id
@@ -986,9 +986,13 @@ rule or repeating pattern for anexception to a recurrence set"),
new_ids = []
for id in select:
if len(str(id).split('-')) > 1:
- data = self.read(cr, uid, id, ['date', 'date_deadline'])
- self.modify_this(cr, uid, [id], vals, context)
- continue
+ data = self.read(cr, uid, id, ['date', 'date_deadline', 'rrule', 'duration'])
+ if data.get('rrule'):
+ real_date = data.get('date')
+ data.update(vals)
+ new_id = self.modify_this(cr, uid, [id], data, real_date, context)
+ context.update({'active_id': new_id,'active_ids': [new_id]})
+ continue
id = base_calendar_id2real_id(id)
if not id in new_ids:
new_ids.append(id)
diff --git a/addons/base_calendar/security/ir.model.access.csv b/addons/base_calendar/security/ir.model.access.csv
index dd84c390183..2851e392e0b 100644
--- a/addons/base_calendar/security/ir.model.access.csv
+++ b/addons/base_calendar/security/ir.model.access.csv
@@ -1,6 +1,7 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_basic_calendar_all","basic.calendar","model_basic_calendar",,1,1,1,1
-"access_basic_calendar_event_all","basic.calendar.event","model_basic_calendar_event",,1,1,1,1
-"access_basic_calendar_attendee_all","basic.calendar.attendee","model_basic_calendar_attendee",,1,1,1,1
-"access_calendar_todo_all","basic.calendar.todo","model_basic_calendar_todo",,1,1,1,1
-"access_basic_calendar_alarm_all","basic.calendar.alarm","model_basic_calendar_alarm",,1,1,1,1
+"access_calendar_attendee","calendar.attendee","model_calendar_attendee",,1,1,1,1
+"access_calendar_alarm","calendar.alarm","model_calendar_alarm",,1,1,1,1
+"access_res_alarm","res.alarm","model_res_alarm",,1,1,1,1
+"access_calendar_event_all","calendar.event","model_calendar_event",,1,1,1,1
+"access_calendar_todo","calendar.todo","model_calendar_todo",,1,1,1,1
+"access_base_calendar_invite_attendee","base_calendar.invite.attendee","model_base_calendar_invite_attendee",,1,1,1,1
diff --git a/addons/caldav/caldav.py b/addons/caldav/caldav.py
index 3afcc28dd40..ce7bbe62e24 100644
--- a/addons/caldav/caldav.py
+++ b/addons/caldav/caldav.py
@@ -804,7 +804,10 @@ class Attendee(CalDAV, osv.osv_memory):
cn_val = [str(attendee[a_val['field']])]
if cn_val:
attendee_add.params['CN'] = cn_val
- attendee_add.value = 'MAILTO:' + attendee['email']
+ if not attendee['email']:
+ raise osv.except_osv(_('Error !'), _('Attendee must have an Email Id'))
+ elif attendee['email']:
+ attendee_add.value = 'MAILTO:' + attendee['email']
return vevent
Attendee()
diff --git a/addons/crm/__init__.py b/addons/crm/__init__.py
index ec083dd91b1..b3142be7c2f 100644
--- a/addons/crm/__init__.py
+++ b/addons/crm/__init__.py
@@ -32,7 +32,7 @@ import crm_fundraising
import crm_helpdesk
-#import report
+import report
import wizard
diff --git a/addons/crm/__terp__.py b/addons/crm/__terp__.py
index 8302d67f0a9..f359d8e4cc9 100644
--- a/addons/crm/__terp__.py
+++ b/addons/crm/__terp__.py
@@ -26,7 +26,7 @@
'category': 'Generic Modules/CRM & SRM',
'description': """The generic Open ERP Customer Relationship Management
system enables a group of people to intelligently and efficiently manage
-leads, opportunities, tasks, issues, requests, bugs, campaign, claims, etc.
+leads, opportunities, claims, meeting, phonecall etc.
It manages key tasks such as communication, identification, prioritization,
assignment, resolution and notification.
@@ -81,14 +81,21 @@ between mails and Open ERP.""",
'crm_claims_view.xml',
'crm_claims_menu.xml',
-# 'crm_report_view.xml',
'crm_helpdesk_view.xml',
'crm_helpdesk_menu.xml',
- #'crm_report.xml',
+
'security/crm_security.xml',
'security/ir.model.access.csv',
- 'process/crm_configuration_process.xml'
+ 'report/crm_report_view.xml',
+ 'report/crm_report_claim_view.xml',
+ 'report/crm_report_lead_view.xml',
+ 'report/crm_report_fundraising_view.xml',
+ 'report/crm_report_opportunity_view.xml' ,
+ 'report/crm_report_phonecall_view.xml',
+
+ 'process/crm_configuration_process.xml',
+
],
'demo_xml': [
'crm_demo.xml',
diff --git a/addons/crm/crm.py b/addons/crm/crm.py
index 7765f61ec32..27826f74bfa 100644
--- a/addons/crm/crm.py
+++ b/addons/crm/crm.py
@@ -296,8 +296,8 @@ class crm_case(osv.osv):
if section in s:
st = case.stage_id.id or False
if st in s[section]:
- self.write(cr, uid, [case.id], {'stage_id': s[section][st]})
-
+ stage_value = self.pool.get('crm.case.stage').read(cr, uid,s[section][st] , ['probability'], context)
+ self.write(cr, uid, [case.id], {'stage_id': s[section][st],'probability':stage_value['probability']})
return True
def get_stage_dict(self, cr, uid, ids, context={}):
@@ -319,7 +319,8 @@ class crm_case(osv.osv):
st = case.stage_id.id or False
s[section] = dict([(v, k) for (k, v) in s[section].iteritems()])
if st in s[section]:
- self.write(cr, uid, [case.id], {'stage_id': s[section][st]})
+ stage_value = self.pool.get('crm.case.stage').read(cr, uid,s[section][st] ,['probability'], context)
+ self.write(cr, uid, [case.id], {'stage_id': s[section][st],'probability':stage_value['probability']})
return True
@@ -609,3 +610,15 @@ class users(osv.osv):
'context_section_id': fields.many2one('crm.case.section', 'Sales Team'),
}
users()
+
+
+class res_partner(osv.osv):
+ _inherit = 'res.partner'
+ _columns = {
+ 'section_id': fields.many2one('crm.case.section', 'Sales Team'),
+ }
+
+res_partner()
+
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/crm/crm_claims_view.xml b/addons/crm/crm_claims_view.xml
index e0fd5d90c80..ae6635bdbcb 100644
--- a/addons/crm/crm_claims_view.xml
+++ b/addons/crm/crm_claims_view.xml
@@ -43,6 +43,11 @@
+
+
+
+
+
@@ -188,24 +193,31 @@
search
-
-
+
+
+
+
-
+
+
+
-
+
+
+ view.res.partner.form.crm.inherited1
+ res.partner
+ form
+
+
+
+
+
+
+
+
+
+
+ view.res.partner.form.crm.inherited2
+ res.partner
+ form
+
+
+
+
+
+
+
+
+
+
+ view.res.partner.form.crm.inherited3
+ res.partner
+ form
+
+
+
+
+
+
+
+
diff --git a/addons/crm/report/__init__.py b/addons/crm/report/__init__.py
index 2c08abaca5e..6b42b8dafef 100644
--- a/addons/crm/report/__init__.py
+++ b/addons/crm/report/__init__.py
@@ -19,8 +19,13 @@
#
##############################################################################
-import report_businessopp
+#import report_businessopp
import crm_report
+import crm_report_claim
+import crm_report_lead
+import crm_report_phonecall
+import crm_report_fundraising
+import crm_report_opportunity
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/crm/report/crm_report.py b/addons/crm/report/crm_report.py
index e847f010b77..91ad7269351 100644
--- a/addons/crm/report/crm_report.py
+++ b/addons/crm/report/crm_report.py
@@ -20,8 +20,7 @@
##############################################################################
from osv import fields,osv
-
-import tools.sql
+import tools
AVAILABLE_STATES = [
('draft','Draft'),
@@ -31,170 +30,106 @@ AVAILABLE_STATES = [
('pending','Pending')
]
-class report_crm_case_section_categ2(osv.osv):
- _name = "report.crm.case.section.categ2"
- _description = "Cases by section and category2"
+class report_crm_case(osv.osv):
+ _name = "report.crm.case"
+ _description = "Cases and section"
_auto = False
+
+ def _get_data(self, cr, uid, ids, field_name, arg, context={}):
+ res = {}
+ state_perc = 0.0
+ avg_ans = 0.0
+
+ for case in self.browse(cr, uid, ids, context):
+ if field_name != 'avg_answers':
+ state = field_name[5:]
+ cr.execute("select count(*) from crm_opportunity where section_id =%s and state='%s'"%(case.section_id.id,state))
+ state_cases = cr.fetchone()[0]
+ perc_state = (state_cases / float(case.nbr) ) * 100
+
+ res[case.id] = perc_state
+ else:
+ model_name = self._name.split('report.')
+ if len(model_name) < 2:
+ res[case.id] = 0.0
+ else:
+ model_name = model_name[1]
+
+ cr.execute("select count(*) from crm_case_log l, ir_model m where l.model_id=m.id and m.model = '%s'" , model_name)
+ logs = cr.fetchone()[0]
+
+ avg_ans = logs / case.nbr
+ res[case.id] = avg_ans
+
+ return res
+
_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),
- 'category2_id':fields.many2one('crm.case.category2', 'Type', readonly=True),
- 'stage_id':fields.many2one('crm.case.stage', 'Stage', readonly=True),
- 'amount_revenue': fields.float('Est.Revenue', 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),
- 'delay_close': fields.char('Delay Close', size=20, readonly=True),
- }
- _order = 'category2_id, section_id'
-
- def init(self, cr):
- tools.sql.drop_view_if_exists(cr, "report_crm_case_section_categ2")
- cr.execute("""
- create view report_crm_case_section_categ2 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.category2_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_case c
- where c.category2_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.category2_id, c.section_id)""")
-
-report_crm_case_section_categ2()
-
-class report_crm_case_section_stage(osv.osv):
- _name = "report.crm.case.section.stage"
- _description = "Cases by section and stage"
- _auto = False
- _columns = {
- 'name': fields.char('Year',size=64,required=False, readonly=True),
+ 'avg_answers': fields.function(_get_data,string='Avg. Answers', method=True,type="integer"),
+ 'perc_done': fields.function(_get_data,string='%Done', method=True,type="float"),
+ 'perc_cancel': fields.function(_get_data,string='%Cancel', method=True,type="float"),
'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),
- 'categ_id':fields.many2one('crm.case.categ', 'Category', readonly=True),
- 'stage_id':fields.many2one('crm.case.stage', 'Stage', readonly=True),
- 'amount_revenue': fields.float('Est.Revenue', readonly=True),
- 'nbr': fields.integer('# of Cases', readonly=True),
- 'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
- 'delay_close': fields.char('Delay Close', size=20, readonly=True),
- }
- _order = 'stage_id, section_id'
-
+ 'company_id': fields.many2one('res.company','Company',readonly=True),
+ }
+ _order = 'name desc, user_id'
def init(self, cr):
- tools.sql.drop_view_if_exists(cr, "report_crm_case_section_stage")
+ tools.drop_view_if_exists(cr, 'report_crm_case')
cr.execute("""
- create view report_crm_case_section_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.stage_id,
- c.section_id,
- c.categ_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_case c
- where c.stage_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.categ_id, c.section_id)""")
-
-report_crm_case_section_stage()
-
-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),
- 'categ_id':fields.many2one('crm.case.categ', 'Category', readonly=True),
- 'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
- 'stage_id':fields.many2one('crm.case.stage', 'Stage', readonly=True),
- 'nbr': fields.integer('# of Cases', readonly=True),
- 'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
- 'delay_close': fields.char('Delay Close', size=20, readonly=True),
- }
- _order = 'stage_id, section_id, categ_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.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_case 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_case_section_categ_stage()
-
-class report_crm_case_section_categ_categ2(osv.osv):
- _name = "report.crm.case.section.categ.categ2"
- _description = "Cases by section, Category and Category2"
- _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),
- 'categ_id':fields.many2one('crm.case.categ', 'Category', readonly=True),
- 'category2_id':fields.many2one('crm.case.category2', 'Type', readonly=True),
- 'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
- 'stage_id':fields.many2one('crm.case.stage', 'Stage', readonly=True),
- 'nbr': fields.integer('# of Cases', readonly=True),
- 'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
- 'delay_close': fields.char('Delay Close', size=20, readonly=True),
- }
- _order = 'section_id, categ_id, category2_id'
-
- def init(self, cr):
- tools.sql.drop_view_if_exists(cr, "report_crm_case_section_categ_categ2")
- cr.execute("""
- create view report_crm_case_section_categ_categ2 as (
+ create or replace view report_crm_case 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.category2_id,
c.state,
- c.stage_id,
+ c.user_id,
c.section_id,
- count(*) as nbr,
- to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
+ c.company_id,
+ count(*) as nbr
from
crm_case c
- where c.categ_id is not null AND c.category2_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.category2_id, c.state, c.stage_id, c.section_id)""")
+ group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.state, c.user_id,c.section_id,c.company_id
+ )""")
+report_crm_case()
+
+class report_crm_case_service_dashboard(osv.osv):
+ _name = "report.crm.case.service.dashboard"
+ _description = "Report of Closed and Open CRM Cases within past 15 days"
+ _auto = False
+ _columns = {
+ 'date_deadline': fields.datetime('Deadline', readonly=True),
+ 'name': fields.char('Description', size=64, readonly=True),
+ 'user_id': fields.many2one('res.users', 'Responsible', readonly=True),
+ 'state': fields.selection(AVAILABLE_STATES, 'Status', size=16, readonly=True),
+ 'create_date' : fields.datetime('Create Date', readonly=True)
+ }
+ _order = 'create_date'
+
+ def init(self, cr):
+ cr.execute("""create or replace view report_crm_case_service_dashboard as (
+ select
+ cse.id as id, cse.date_deadline as date_deadline,
+ cse.name as name, cse.user_id as user_id,
+ cse.state as state,
+ cse.create_date as create_date
+ from
+ crm_case cse
+ where
+ (cse.state='done')
+ OR
+
+ ((to_date(to_char(cse.create_date, 'YYYY-MM-dd'),'YYYY-MM-dd') <= CURRENT_DATE)
+ AND
+ (to_date(to_char(cse.create_date, 'YYYY-MM-dd'),'YYYY-MM-dd') > (CURRENT_DATE-15))
+ AND
+ cse.state='open')
+ )""")
+report_crm_case_service_dashboard()
+
-report_crm_case_section_categ_categ2()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/report_crm/report_crm_claim.py b/addons/crm/report/crm_report_claim.py
similarity index 83%
rename from addons/report_crm/report_crm_claim.py
rename to addons/crm/report/crm_report_claim.py
index e78f2c8aa51..5ec1cf05849 100644
--- a/addons/report_crm/report_crm_claim.py
+++ b/addons/crm/report/crm_report_claim.py
@@ -8,7 +8,9 @@ class report_crm_claim(osv.osv):
_columns = {
'delay_close': fields.char('Delay to close', size=20, readonly=True),
'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.claim')]", readonly=True),
- 'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.claim')]"),
+ 'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.claim')]",readonly=True),
+ 'partner_id': fields.many2one('res.partner', 'Partner',readonly=True),
+ 'company_id': fields.many2one('res.company','Company',readonly=True),
}
def init(self, cr):
tools.drop_view_if_exists(cr, 'report_crm_claim')
@@ -22,6 +24,8 @@ class report_crm_claim(osv.osv):
c.user_id,
c.stage_id,
c.section_id,
+ c.partner_id,
+ c.company_id,
c.categ_id,
count(*) as nbr,
0 as avg_answers,
@@ -30,7 +34,7 @@ class report_crm_claim(osv.osv):
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
from
crm_claim c
- group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.state, c.user_id,c.section_id, c.stage_id,c.categ_id
+ group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.state, c.user_id,c.section_id, c.stage_id,c.categ_id,c.partner_id,c.company_id
)""")
report_crm_claim()
diff --git a/addons/report_crm/report_crm_claim_view.xml b/addons/crm/report/crm_report_claim_view.xml
similarity index 92%
rename from addons/report_crm/report_crm_claim_view.xml
rename to addons/crm/report/crm_report_claim_view.xml
index 8232d72792b..99a715be840 100644
--- a/addons/report_crm/report_crm_claim_view.xml
+++ b/addons/crm/report/crm_report_claim_view.xml
@@ -10,12 +10,14 @@
+
+
+
+
-
-
@@ -66,21 +68,21 @@
Claims
report.crm.claim
form
- graph,tree
-
+ tree,graph
+
-
+
tree
-
+
graph
diff --git a/addons/report_crm/report_crm_fundraising.py b/addons/crm/report/crm_report_fundraising.py
similarity index 89%
rename from addons/report_crm/report_crm_fundraising.py
rename to addons/crm/report/crm_report_fundraising.py
index 397a50896bc..70497a71c31 100644
--- a/addons/report_crm/report_crm_fundraising.py
+++ b/addons/crm/report/crm_report_fundraising.py
@@ -11,6 +11,8 @@ class report_crm_fundraising(osv.osv):
'amount_revenue': fields.float('Est.Revenue', readonly=True),
'amount_revenue_prob': fields.float('Est. Rev*Prob.', readonly=True),
'delay_close': fields.char('Delay to close', size=20, readonly=True),
+ 'partner_id': fields.many2one('res.partner', 'Partner'),
+ 'company_id': fields.many2one('res.company','Company'),
}
def init(self, cr):
tools.drop_view_if_exists(cr, 'report_crm_fundraising')
@@ -24,6 +26,8 @@ class report_crm_fundraising(osv.osv):
c.user_id,
c.section_id,
c.categ_id,
+ c.company_id,
+ c.partner_id,
count(*) as nbr,
0 as avg_answers,
0.0 as perc_done,
@@ -34,7 +38,7 @@ class report_crm_fundraising(osv.osv):
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
from
crm_fundraising c
- group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.state, c.user_id,c.section_id,c.categ_id
+ group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.state, c.user_id,c.section_id,c.categ_id,c.partner_id,c.company_id
)""")
report_crm_fundraising()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/report_crm/report_crm_fundraising_view.xml b/addons/crm/report/crm_report_fundraising_view.xml
similarity index 91%
rename from addons/report_crm/report_crm_fundraising_view.xml
rename to addons/crm/report/crm_report_fundraising_view.xml
index 1bdba2fb4a4..0861cd58a2b 100644
--- a/addons/report_crm/report_crm_fundraising_view.xml
+++ b/addons/crm/report/crm_report_fundraising_view.xml
@@ -13,14 +13,16 @@
+
+
+
+
-
+
-
-
@@ -69,21 +71,21 @@
Fundraising
report.crm.fundraising
form
- graph,tree
-
+ tree,graph
+
-
+
tree
-
+
graph
diff --git a/addons/report_crm/report_crm_lead.py b/addons/crm/report/crm_report_lead.py
similarity index 84%
rename from addons/report_crm/report_crm_lead.py
rename to addons/crm/report/crm_report_lead.py
index 2f170bd1825..e9c79ed772d 100644
--- a/addons/report_crm/report_crm_lead.py
+++ b/addons/crm/report/crm_report_lead.py
@@ -7,8 +7,10 @@ class report_crm_lead(osv.osv):
_inherit = "report.crm.case"
_columns = {
'delay_close': fields.char('Delay to close', size=20, readonly=True),
- 'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]"),
+ '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),
+ 'partner_id': fields.many2one('res.partner', 'Partner' ,readonly=True),
+ 'company_id': fields.many2one('res.company','Company',readonly=True),
}
def init(self, cr):
tools.drop_view_if_exists(cr, 'report_crm_lead')
@@ -21,8 +23,10 @@ class report_crm_lead(osv.osv):
c.state,
c.user_id,
c.stage_id,
+ c.company_id,
c.section_id,
c.categ_id,
+ c.partner_id,
count(*) as nbr,
0 as avg_answers,
0.0 as perc_done,
@@ -30,7 +34,7 @@ class report_crm_lead(osv.osv):
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
from
crm_lead c
- group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.state, c.user_id,c.section_id,c.stage_id,categ_id
+ group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.state, c.user_id,c.section_id,c.stage_id,categ_id,c.partner_id,c.company_id
)""")
report_crm_lead()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/report_crm/report_crm_lead_view.xml b/addons/crm/report/crm_report_lead_view.xml
similarity index 94%
rename from addons/report_crm/report_crm_lead_view.xml
rename to addons/crm/report/crm_report_lead_view.xml
index 027238cc279..fd7e56a0317 100644
--- a/addons/report_crm/report_crm_lead_view.xml
+++ b/addons/crm/report/crm_report_lead_view.xml
@@ -13,11 +13,13 @@
+
+
+
+
-
-
@@ -66,21 +68,20 @@
Leads
report.crm.lead
form
- graph,tree
-
+ tree,graph
-
+
tree
-
+
graph
diff --git a/addons/report_crm/report_crm_opportunity.py b/addons/crm/report/crm_report_opportunity.py
similarity index 81%
rename from addons/report_crm/report_crm_opportunity.py
rename to addons/crm/report/crm_report_opportunity.py
index 1adfbf4baed..2ded021a71e 100644
--- a/addons/report_crm/report_crm_opportunity.py
+++ b/addons/crm/report/crm_report_opportunity.py
@@ -11,8 +11,10 @@ class report_crm_opportunity(osv.osv):
'amount_revenue': fields.float('Est.Revenue', readonly=True),
'amount_revenue_prob': fields.float('Est. Rev*Prob.', readonly=True),
'delay_close': fields.char('Delay to close', size=20, readonly=True),
- 'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]"),
- 'stage_id':fields.many2one('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]", readonly=True),
+ '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),
+ 'partner_id': fields.many2one('res.partner', 'Partner',readonly=True),
+ 'company_id': fields.many2one('res.company', 'Company',readonly=True),
}
def init(self, cr):
tools.drop_view_if_exists(cr, 'report_crm_opportunity')
@@ -27,17 +29,19 @@ class report_crm_opportunity(osv.osv):
c.section_id,
c.categ_id,
c.stage_id,
+ c.partner_id,
+ c.company_id,
count(*) as nbr,
0 as avg_answers,
0.0 as perc_done,
0.0 as perc_cancel,
sum(planned_revenue) as amount_revenue,
- sum(planned_revenue*probability)::decimal(16,2) as amount_revenue_prob,
+ sum((planned_revenue*probability)/100.0)::decimal(16,2) as amount_revenue_prob,
avg(probability)::decimal(16,2) as probability,
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
from
crm_opportunity c
- group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.state, c.user_id,c.section_id,c.stage_id,c.categ_id
+ group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.state, c.user_id,c.section_id,c.stage_id,c.categ_id,c.partner_id,company_id
)""")
report_crm_opportunity()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/report_crm/report_crm_opportunity_view.xml b/addons/crm/report/crm_report_opportunity_view.xml
similarity index 88%
rename from addons/report_crm/report_crm_opportunity_view.xml
rename to addons/crm/report/crm_report_opportunity_view.xml
index b4f149d3cfe..8dfe91c4031 100644
--- a/addons/report_crm/report_crm_opportunity_view.xml
+++ b/addons/crm/report/crm_report_opportunity_view.xml
@@ -13,14 +13,16 @@
+
+
+
+
-
-
+
+
-
-
@@ -63,6 +65,8 @@
+
+
@@ -71,18 +75,17 @@
Opportunities
report.crm.opportunity
form
- graph,tree
-
+ tree,graph
-
+
tree
-
+
graph
diff --git a/addons/report_crm/report_crm_phonecall.py b/addons/crm/report/crm_report_phonecall.py
similarity index 85%
rename from addons/report_crm/report_crm_phonecall.py
rename to addons/crm/report/crm_report_phonecall.py
index e693179a258..f89af4b1d15 100644
--- a/addons/report_crm/report_crm_phonecall.py
+++ b/addons/crm/report/crm_report_phonecall.py
@@ -9,6 +9,8 @@ class report_crm_phonecall(osv.osv):
_columns = {
'delay_close': fields.char('Delay to close', size=20, readonly=True),
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.phonecall')]"),
+ 'partner_id': fields.many2one('res.partner', 'Partner' ,readonly=True),
+ 'company_id': fields.many2one('res.company','Company',readonly=True),
}
def init(self, cr):
tools.drop_view_if_exists(cr, 'report_crm_phonecall')
@@ -22,6 +24,8 @@ class report_crm_phonecall(osv.osv):
c.user_id,
c.section_id,
c.categ_id,
+ c.partner_id,
+ c.company_id,
count(*) as nbr,
0 as avg_answers,
0.0 as perc_done,
@@ -29,7 +33,7 @@ class report_crm_phonecall(osv.osv):
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
from
crm_phonecall c
- group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.state, c.user_id,c.section_id, c.categ_id
+ group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.state, c.user_id,c.section_id, c.categ_id,c.partner_id,c.company_id
)""")
report_crm_phonecall()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/report_crm/report_crm_phonecall_view.xml b/addons/crm/report/crm_report_phonecall_view.xml
similarity index 92%
rename from addons/report_crm/report_crm_phonecall_view.xml
rename to addons/crm/report/crm_report_phonecall_view.xml
index b89570192ef..71889fb994c 100644
--- a/addons/report_crm/report_crm_phonecall_view.xml
+++ b/addons/crm/report/crm_report_phonecall_view.xml
@@ -13,11 +13,13 @@
+
+
+
+
-
-
@@ -64,20 +66,20 @@
Phone Calls
report.crm.phonecall
form
- graph,tree
-
+ tree,graph
+
-
+
tree
-
+
graph
diff --git a/addons/report_crm/report_crm_view.xml b/addons/crm/report/crm_report_view.xml
similarity index 94%
rename from addons/report_crm/report_crm_view.xml
rename to addons/crm/report/crm_report_view.xml
index b69ee89548b..2e52d59b87c 100644
--- a/addons/report_crm/report_crm_view.xml
+++ b/addons/crm/report/crm_report_view.xml
@@ -11,6 +11,7 @@
+
@@ -53,8 +54,8 @@
-
-
+
+
@@ -67,24 +68,21 @@
domain="[('section_id.user_id','=',uid)]"
help="My section"/>
-
-
-
+
-
+
+
+
+
+
-
+
-
-
diff --git a/addons/crm/wizard/crm_opportunity_wizard.py b/addons/crm/wizard/crm_opportunity_wizard.py
index d7ec0b72cb6..e2636027c92 100644
--- a/addons/crm/wizard/crm_opportunity_wizard.py
+++ b/addons/crm/wizard/crm_opportunity_wizard.py
@@ -154,16 +154,20 @@ class opportunity2meeting(wizard.interface):
partner_id = opportunity.partner_id and opportunity.partner_id.id or False
name = opportunity.name
email = opportunity.email_from
- section_id = opportunity.section_id and opportunity.section_id.id or False
+ section_id = opportunity.section_id and opportunity.section_id.id or False
return {
'name': _('Meetings'),
- 'domain' : "[('user_id','=',%s)]"%(uid),
- 'context': {'default_partner_id': partner_id, 'default_section_id': section_id, 'default_email_from': email, 'default_state':'open', 'default_name':name},
+ 'domain' : "[('user_id','=',%s), ('opportunity_id', '=', %s)]"%(uid, data['id']),
+ 'context': {'default_partner_id': partner_id,
+ 'default_opportunity_id': data['id'],
+ 'default_section_id': section_id,
+ 'default_email_from': email,
+ 'default_state':'open', 'default_name':name},
'view_type': 'form',
- 'view_mode': 'calendar,form,tree',
+ 'view_mode': 'tree,form,calendar',
'res_model': 'crm.meeting',
'view_id': False,
- 'views': [(id1,'calendar'),(id2,'form'),(id3,'tree')],
+ 'views': [(id3, 'tree'), (id2, 'form'), (id1, 'calendar')],
'type': 'ir.actions.act_window',
'search_view_id': id['res_id']
}
diff --git a/addons/crm_project/__terp__.py b/addons/crm_project/__terp__.py
index caae2eeeff8..cbaf06871d3 100644
--- a/addons/crm_project/__terp__.py
+++ b/addons/crm_project/__terp__.py
@@ -30,7 +30,7 @@
""",
'author': 'Tiny',
'website': 'http://www.openerp.com',
- 'depends': ['crm','project','report_crm'],
+ 'depends': ['crm','project'],
'init_xml': [
'crm_bugs_data.xml'
],
diff --git a/addons/crm_project/report_crm_project_bug_view.xml b/addons/crm_project/report_crm_project_bug_view.xml
index 97eb7678a3e..50b9145bad7 100644
--- a/addons/crm_project/report_crm_project_bug_view.xml
+++ b/addons/crm_project/report_crm_project_bug_view.xml
@@ -29,7 +29,7 @@
report.crm.project.bug.form
report.crm.project.bug
-
+
form
@@ -58,7 +58,7 @@
report.crm.project.bug.select
report.crm.project.bug
-
+
search
diff --git a/addons/document/security/ir.model.access.csv b/addons/document/security/ir.model.access.csv
index 40714e7520f..4993ebc049e 100644
--- a/addons/document/security/ir.model.access.csv
+++ b/addons/document/security/ir.model.access.csv
@@ -7,3 +7,7 @@
"access_document_directory_content_group_system","document.directory.content group system","model_document_directory_content","base.group_system",1,1,1,1
"access_document_directory_content_type_group_document_manager","document.directory.content.type document manager","model_document_directory_content_type","group_document_manager",1,1,1,1
"access_document_directory_content_type_group_system","document.directory.content.type group system","model_document_directory_content_type","base.group_user",1,0,0,0
+"access_document_storage_group_document_manager","document.storage document manager","model_document_storage","group_document_manager",1,1,1,1
+"access_document_storage_group_system","document.storage group system","model_document_storage","base.group_user",1,0,0,0
+"access_document_directory_dctx_group_document_manager","document.directory.dctx document manager","model_document_directory_dctx","group_document_manager",1,1,1,1
+"access_document_directory_dctx_group_system","document.directory.dctx group system","model_document_directory_dctx","base.group_system",1,1,1,1
diff --git a/addons/hr/security/ir.model.access.csv b/addons/hr/security/ir.model.access.csv
index cd1a18d246b..3853a6e8e38 100644
--- a/addons/hr/security/ir.model.access.csv
+++ b/addons/hr/security/ir.model.access.csv
@@ -5,3 +5,5 @@
"access_hr_employee_category_manager","hr.employee.category.manager","model_hr_employee_category","hr.group_hr_manager",1,1,1,1
"access_hr_department_manager","hr.department.manager","model_hr_department","hr.group_hr_manager",1,1,1,1
"access_hr_employee_marital_status","hr.employee.marital.status","model_hr_employee_marital_status","hr.group_hr_user",1,1,1,1
+"access_hr_job","hr.job","model_hr_job","hr.group_hr_user",1,0,0,0
+"access_hr_installer","hr.installer","model_hr_installer","hr.group_hr_user",1,0,0,0
\ No newline at end of file
diff --git a/addons/mail_gateway/security/ir.model.access.csv b/addons/mail_gateway/security/ir.model.access.csv
index 996147308f6..864db00acb0 100644
--- a/addons/mail_gateway/security/ir.model.access.csv
+++ b/addons/mail_gateway/security/ir.model.access.csv
@@ -1,4 +1,7 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_mail_gateway_server","mail.gateway.server","model_mail_gateway_server","base.group_user",1,0,0,0
+"access_mail_gateway","mail.gateway","model_mail_gateway","base.group_user",1,0,0,0
+"access_mail_gateway_history","mail.gateway.history","model_mail_gateway_history","base.group_user",1,0,0,0
diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py
index 5bb5d8a59c4..40fd2e46525 100644
--- a/addons/mrp/mrp.py
+++ b/addons/mrp/mrp.py
@@ -1422,7 +1422,7 @@ StockPicking()
class spilt_in_production_lot(osv.osv_memory):
- _inherit = "stock.move.spilt"
+ _inherit = "stock.move.split"
def split(self, cr, uid, ids, move_ids, context=None):
production_obj = self.pool.get('mrp.production')
move_obj = self.pool.get('stock.move')
diff --git a/addons/mrp/security/ir.model.access.csv b/addons/mrp/security/ir.model.access.csv
index f3cae96266c..cdc658ff7c0 100644
--- a/addons/mrp/security/ir.model.access.csv
+++ b/addons/mrp/security/ir.model.access.csv
@@ -30,3 +30,5 @@
"access_hr_timesheet_group_mrp_worker","resource.calendar mrp_worker","resource.model_resource_calendar","mrp.group_mrp_user",1,0,0,0
"access_mrp_procurement_stock_worker","mrp.procurement stock_worker","model_mrp_procurement","stock.group_stock_user",1,1,1,1
"access_mrp_production_stock_worker","mrp.production stock_worker","model_mrp_production","stock.group_stock_user",1,0,0,0
+"access_mrp_installer","mrp.installer","model_mrp_installer","mrp.group_mrp_user",1,0,0,0
+"access_mrp_product_produce","mrp.product.produce","model_mrp_product_produce","mrp.group_mrp_user",1,0,0,0
diff --git a/addons/project/security/ir.model.access.csv b/addons/project/security/ir.model.access.csv
index efeda2170a5..b5877b688b7 100644
--- a/addons/project/security/ir.model.access.csv
+++ b/addons/project/security/ir.model.access.csv
@@ -11,3 +11,5 @@
"access_project_task_work_manager","project.task.work.manager","model_project_task_work","project.group_project_manager",1,1,1,1
"access_config_compute_remaining","project.config.compute.remaining","model_config_compute_remaining","project.group_project_user",1,1,1,1
"access_config_compute_remaining_manager","project.config.compute.remaining.manager","model_config_compute_remaining","project.group_project_manager",1,1,1,1
+"access_project_message","project.message","model_project_message","project.group_project_user",1,0,0,0
+"access_project_installer","project.installer","model_project_installer","project.group_project_user",1,0,0,0
\ No newline at end of file
diff --git a/addons/report_analytic/security/ir.model.access.csv b/addons/report_analytic/security/ir.model.access.csv
index 2c07cac1fd6..67807398c36 100644
--- a/addons/report_analytic/security/ir.model.access.csv
+++ b/addons/report_analytic/security/ir.model.access.csv
@@ -1,2 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_report_analytic_account_close,report.analytic.account.close,model_report_analytic_account_close,account.group_account_manager,1,0,0,0
+access_report_account_analytic_line_to_invoice,report.account.analytic.line.to.invoice,model_report_account_analytic_line_to_invoice,account.group_account_manager,1,0,0,0
\ No newline at end of file
diff --git a/addons/report_crm/__init__.py b/addons/report_crm/__init__.py
deleted file mode 100644
index 7a050fae5a7..00000000000
--- a/addons/report_crm/__init__.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-
-import report_crm
-import report_crm_lead
-import report_crm_claim
-import report_crm_opportunity
-import report_crm_fundraising
-import report_crm_phonecall
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/addons/report_crm/__terp__.py b/addons/report_crm/__terp__.py
deleted file mode 100644
index 7c051839560..00000000000
--- a/addons/report_crm/__terp__.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-
-
-{
- 'name': 'CRM Management - Reporting',
- 'version': '1.0',
- 'category': 'Generic Modules/CRM & SRM',
- 'description': """A module that adds new reports based on Leads, Opportunities, Phonecalls, Claims, FunRising.
- """,
- 'author': 'Tiny',
- 'website': 'http://www.openerp.com',
- 'depends': ['crm'],
- 'init_xml': [],
- 'update_xml': [#'security/ir.model.access.csv',
- 'report_crm_view.xml',
- 'report_crm_lead_view.xml',
- 'report_crm_claim_view.xml',
- 'report_crm_opportunity_view.xml',
- 'report_crm_phonecall_view.xml',
- 'report_crm_fundraising_view.xml'
- ],
- 'demo_xml': [],
- 'installable': True, #TODO : After fixed problems , set True
- 'active': False,
- 'certificate': '0030422968285',
-}
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/report_crm/report_crm.py b/addons/report_crm/report_crm.py
deleted file mode 100644
index da9ba2e9ba3..00000000000
--- a/addons/report_crm/report_crm.py
+++ /dev/null
@@ -1,133 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-
-from osv import fields,osv
-import tools
-
-AVAILABLE_STATES = [
- ('draft','Draft'),
- ('open','Open'),
- ('cancel', 'Cancelled'),
- ('done', 'Closed'),
- ('pending','Pending')
-]
-
-class report_crm_case(osv.osv):
- _name = "report.crm.case"
- _description = "Cases and section"
- _auto = False
-
- def _get_data(self, cr, uid, ids, field_name, arg, context={}):
- res = {}
- state_perc = 0.0
- avg_ans = 0.0
-
- for case in self.browse(cr, uid, ids, context):
- if field_name != 'avg_answers':
- state = field_name[5:]
- cr.execute("select count(*) from crm_opportunity where section_id =%s and state='%s'"%(case.section_id.id,state))
- state_cases = cr.fetchone()[0]
- perc_state = (state_cases / float(case.nbr) ) * 100
-
- res[case.id] = perc_state
- else:
- model_name = self._name.split('report.')
- if len(model_name) < 2:
- res[case.id] = 0.0
- else:
- model_name = model_name[1]
-
- cr.execute("select count(*) from crm_case_log l, ir_model m where l.model_id=m.id and m.model = '%s'" , model_name)
- logs = cr.fetchone()[0]
-
- avg_ans = logs / case.nbr
- res[case.id] = avg_ans
-
- return res
-
- _columns = {
- 'name': fields.char('Year',size=64,required=False, 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),
- 'avg_answers': fields.function(_get_data,string='Avg. Answers', method=True,type="integer"),
- 'perc_done': fields.function(_get_data,string='%Done', method=True,type="float"),
- 'perc_cancel': fields.function(_get_data,string='%Cancel', method=True,type="float"),
- '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),
- }
- _order = 'name desc, user_id'
- def init(self, cr):
- tools.drop_view_if_exists(cr, 'report_crm_case')
- cr.execute("""
- create or replace view report_crm_case as (
- select
- min(c.id) as id,
- to_char(c.create_date, 'YYYY') as name,
- to_char(c.create_date, 'MM') as month,
- c.state,
- c.user_id,
- 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.state, c.user_id,c.section_id
- )""")
-report_crm_case()
-
-class report_crm_case_service_dashboard(osv.osv):
- _name = "report.crm.case.service.dashboard"
- _description = "Report of Closed and Open CRM Cases within past 15 days"
- _auto = False
- _columns = {
- 'date_deadline': fields.datetime('Deadline', readonly=True),
- 'name': fields.char('Description', size=64, readonly=True),
- 'user_id': fields.many2one('res.users', 'Responsible', readonly=True),
- 'state': fields.selection(AVAILABLE_STATES, 'Status', size=16, readonly=True),
- 'create_date' : fields.datetime('Create Date', readonly=True)
- }
- _order = 'create_date'
-
- def init(self, cr):
- cr.execute("""create or replace view report_crm_case_service_dashboard as (
- select
- cse.id as id, cse.date_deadline as date_deadline,
- cse.name as name, cse.user_id as user_id,
- cse.state as state,
- cse.create_date as create_date
- from
- crm_case cse
- where
- (cse.state='done')
- OR
-
- ((to_date(to_char(cse.create_date, 'YYYY-MM-dd'),'YYYY-MM-dd') <= CURRENT_DATE)
- AND
- (to_date(to_char(cse.create_date, 'YYYY-MM-dd'),'YYYY-MM-dd') > (CURRENT_DATE-15))
- AND
- cse.state='open')
- )""")
-report_crm_case_service_dashboard()
-
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/addons/report_crm/security/ir.model.access.csv b/addons/report_crm/security/ir.model.access.csv
deleted file mode 100644
index 8130bd8ddcb..00000000000
--- a/addons/report_crm/security/ir.model.access.csv
+++ /dev/null
@@ -1,37 +0,0 @@
-id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_report_crm_case_user,report.crm.case.user,model_report_crm_case_user,crm.group_crm_manager,1,0,0,0
-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
diff --git a/addons/resource/__terp__.py b/addons/resource/__terp__.py
index 7c924574cf1..fb2a0f5899c 100755
--- a/addons/resource/__terp__.py
+++ b/addons/resource/__terp__.py
@@ -37,7 +37,7 @@
'init_xml': [],
'update_xml': [
#'security/resource_security.xml',
-# 'security/ir.model.access.csv',
+ 'security/ir.model.access.csv',
'resource_view.xml',
],
'demo_xml': ['resource_demo.xml'
diff --git a/addons/resource/security/ir.model.access.csv b/addons/resource/security/ir.model.access.csv
index 0874bf97235..796d29dcb94 100644
--- a/addons/resource/security/ir.model.access.csv
+++ b/addons/resource/security/ir.model.access.csv
@@ -1,5 +1,5 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_hr_timesheet_group","resource.calendar","model_resource_calendar","hr.group_hr_user",1,0,0,0
-"access_hr_timesheet","hr.timesheet","model_hr_timesheet","hr.group_hr_user",1,1,1,1
-"access_hr_timesheet_manager","hr.timesheet manager","model_hr_timesheet","hr.group_hr_manager",1,1,1,1
-"access_hr_timesheet_group_manager","hr.timesheet.group.manager","model_hr_timesheet_group","hr.group_hr_manager",1,1,1,1
+"access_resource_calendar","resource.calendar","model_resource_calendar","base.group_user",1,0,0,0
+"access_resource_calendar_week","resource.calendar.week","model_resource_calendar_week","base.group_user",1,0,0,0
+"access_resource_resource","resource.resource","model_resource_resource","base.group_user",1,0,0,0
+"access_resource_calendar_leaves","resource.calendar.leaves","model_resource_calendar_leaves","base.group_user",1,0,0,0
\ No newline at end of file
diff --git a/addons/stock/security/ir.model.access.csv b/addons/stock/security/ir.model.access.csv
index 25a455e771f..eea058ebde1 100644
--- a/addons/stock/security/ir.model.access.csv
+++ b/addons/stock/security/ir.model.access.csv
@@ -16,3 +16,10 @@
"access_stock_location_product_manager","stock.location product manager","model_stock_location","product.group_product_manager",1,0,0,0
"access_stock_lines_date","report.stock.lines.date all","model_report_stock_lines_date",,1,0,0,0
"access_stock_report_tracklots","stock.report.tracklots","model_stock_report_tracklots","stock.group_stock_user",1,1,1,1
+"access_report_products_to_received_planned","report.products.to.received.planned","model_report_products_to_received_planned","stock.group_stock_user",1,0,0,0
+"access_report_delivery_products_planned","report.delivery.products.planned","model_report_delivery_products_planned","stock.group_stock_user",1,0,0,0
+"access_stock_move_track","stock.move.track","model_stock_move_track","stock.group_stock_user",1,0,0,0
+"access_stock_move_consume","stock.move.consume","model_stock_move_consume","stock.group_stock_user",1,0,0,0
+"access_stock_move_scrap","stock.move.scrap","model_stock_move_scrap","stock.group_stock_user",1,0,0,0
+"access_stock_move_split","stock.move.split","model_stock_move_split","stock.group_stock_user",1,0,0,0
+"access_stock_move_split_lines","stock.move.split.lines","model_stock_move_split_lines","stock.group_stock_user",1,0,0,0
\ No newline at end of file
diff --git a/addons/stock/stock_wizard.py b/addons/stock/stock_wizard.py
index c813b8583b6..548375db199 100644
--- a/addons/stock/stock_wizard.py
+++ b/addons/stock/stock_wizard.py
@@ -110,13 +110,13 @@ class stock_move_scrap(osv.osv_memory):
stock_move_scrap()
-class spilt_in_production_lot(osv.osv_memory):
- _name = "stock.move.spilt"
+class split_in_production_lot(osv.osv_memory):
+ _name = "stock.move.split"
_description = "Split in Production lots"
_columns = {
'product_id': fields.many2one('product.product', 'Product', required=True, select=True),
- 'line_ids': fields.one2many('stock.move.spilt.lines', 'lot_id', 'Lots Number')
+ 'line_ids': fields.one2many('stock.move.split.lines', 'lot_id', 'Lots Number')
}
def _get_product_id(self, cr, uid, context):
@@ -185,17 +185,17 @@ class spilt_in_production_lot(osv.osv_memory):
return new_move
-spilt_in_production_lot()
+split_in_production_lot()
-class stock_move_spilt_lines(osv.osv_memory):
- _name = "stock.move.spilt.lines"
+class stock_move_split_lines(osv.osv_memory):
+ _name = "stock.move.split.lines"
_description = "Split lines"
_columns = {
'name': fields.char('Tracking serial', size=64),
'quantity': fields.integer('Quantity'),
'use_exist' : fields.boolean('Use Exist'),
- 'lot_id': fields.many2one('stock.move.spilt', 'Lot'),
+ 'lot_id': fields.many2one('stock.move.split', 'Lot'),
'action': fields.selection([('split','Split'),('keepinone','Keep in one lot')],'Action'),
}
_defaults = {
@@ -203,4 +203,4 @@ class stock_move_spilt_lines(osv.osv_memory):
'action' : lambda *x: 'split',
}
-stock_move_spilt_lines()
+stock_move_split_lines()
diff --git a/addons/stock/stock_wizard_view.xml b/addons/stock/stock_wizard_view.xml
index 72200beaee8..55fc8a6d8a7 100644
--- a/addons/stock/stock_wizard_view.xml
+++ b/addons/stock/stock_wizard_view.xml
@@ -100,7 +100,7 @@
Split in lots
- stock.move.spilt
+ stock.move.split
form