diff --git a/addons/analytic/analytic.py b/addons/analytic/analytic.py
index a94d1a36a9d..03e9a9608cd 100644
--- a/addons/analytic/analytic.py
+++ b/addons/analytic/analytic.py
@@ -208,6 +208,10 @@ class account_analytic_account(osv.osv):
args=[]
if context is None:
context={}
+ if context.get('current_model') == 'project.project':
+ cr.execute("select analytic_account_id from project_project")
+ project_ids = [x[0] for x in cr.fetchall()]
+ return self.name_get(cr, uid, project_ids, context=context)
account = self.search(cr, uid, [('code', '=', name)]+args, limit=limit, context=context)
if not account:
account = self.search(cr, uid, [('name', 'ilike', '%%%s%%' % name)]+args, limit=limit, context=context)
diff --git a/addons/crm/__openerp__.py b/addons/crm/__openerp__.py
index 89dc61bef59..74eb1a95b23 100644
--- a/addons/crm/__openerp__.py
+++ b/addons/crm/__openerp__.py
@@ -125,6 +125,7 @@ Create dashboard for CRM that includes:
'test/test_crm_meeting.yml',
'test/test_crm_opportunity.yml',
'test/test_crm_phonecall.yml',
+ 'test/test_crm_recurrent_meeting.yml',
],
'installable': True,
'active': False,
diff --git a/addons/crm/test/test_crm_recurrent_meeting.yml b/addons/crm/test/test_crm_recurrent_meeting.yml
new file mode 100644
index 00000000000..297ca8d5e4e
--- /dev/null
+++ b/addons/crm/test/test_crm_recurrent_meeting.yml
@@ -0,0 +1,106 @@
+-
+ In order to test recurrent meetings in OpenERP, I create meetings with different recurrency.
+-
+ I create a customer meeting record with daily recurrency.
+-
+ !record {model: crm.meeting, id: crm_meeting_pricelistdiscussion0}:
+ categ_id: crm.categ_meet1
+ count: 0.0
+ date: '2011-01-05 00:00:00'
+ date_deadline: '2011-01-05 01:00:00'
+ day: 0.0
+ duration: 1.0
+ end_date: '2011-01-12'
+ end_type: end_date
+ name: Pricelist Discussion
+ recurrency: true
+ recurrent_uid: 0.0
+ rrule: FREQ=DAILY;INTERVAL=1;UNTIL=20110112T235959Z
+ rrule_type: daily
+ sequence: 0.0
+-
+ I create another meeting record with weekly recurrency.
+-
+ !record {model: crm.meeting, id: crm_meeting_changesindesigning0}:
+ categ_id: crm.categ_meet2
+ count: 15
+ date: '2011-01-22 11:05:05'
+ date_deadline: '2011-01-22 16:05:05'
+ day: 0.0
+ duration: 5.0
+ email_from: info@opensides.be
+ end_type: count
+ fr: true
+ mo: true
+ name: Changes in Designing
+ partner_address_id: base.res_partner_address_1
+ partner_id: base.res_partner_9
+ recurrency: true
+ recurrent_uid: 0.0
+ rrule: FREQ=WEEKLY;BYDAY=FR,TU,TH,WE,MO;INTERVAL=1;COUNT=15
+ rrule_type: weekly
+ section_id: crm.section_sales_department
+ sequence: 0.0
+ th: true
+ tu: true
+ user_id: base.user_demo
+ we: true
+-
+ I create a meeting record with monthly recurrency.
+-
+ !record {model: crm.meeting, id: crm_meeting_reviewneeds0}:
+ categ_id: crm.categ_meet3
+ count: 0.0
+ date: '2011-01-20 10:02:02'
+ date_deadline: '2011-01-20 16:02:02'
+ day: 15
+ duration: 6.0
+ end_date: '2011-05-31'
+ end_type: end_date
+ name: Review needs
+ partner_address_id: base.res_partner_address_15
+ partner_id: base.res_partner_11
+ recurrency: true
+ recurrent_uid: 0.0
+ rrule: FREQ=MONTHLY;INTERVAL=1;UNTIL=20110531T235959Z;BYMONTHDAY=15
+ rrule_type: monthly
+ section_id: crm.section_sales_department
+ sequence: 0.0
+ user_id: base.user_demo
+-
+ I create a record for daily scrum meeting.
+-
+ !record {model: crm.meeting, id: crm_meeting_scrummeeting0}:
+ categ_id: crm.categ_meet2
+ count: 0.0
+ date: '2011-01-06 00:00:00'
+ date_deadline: '2011-01-06 01:00:00'
+ day: 0.0
+ duration: 1.0
+ name: Scrum meeting
+ recurrency: true
+ recurrent_uid: 0.0
+ rrule: FREQ=DAILY;INTERVAL=1
+ rrule_type: daily
+ sequence: 0.0
+-
+ I create a meeting record for yearly recurrency.
+-
+ !record {model: crm.meeting, id: crm_meeting_updatethedata0}:
+ categ_id: crm.categ_meet2
+ count: 0.0
+ date: '2011-01-18 13:12:49'
+ date_deadline: '2011-01-19 02:30:49'
+ day: 0.0
+ duration: 13.300000000000001
+ end_date: '2015-01-06'
+ end_type: end_date
+ name: Update the data
+ partner_address_id: base.res_partner_address_7
+ partner_id: base.res_partner_4
+ recurrency: true
+ recurrent_uid: 0.0
+ rrule: FREQ=YEARLY;INTERVAL=1;UNTIL=20150106T235959Z
+ rrule_type: yearly
+ section_id: crm.section_sales_department
+ sequence: 0.0
diff --git a/addons/project/project.py b/addons/project/project.py
index c076ed764d4..dda6819839a 100644
--- a/addons/project/project.py
+++ b/addons/project/project.py
@@ -129,7 +129,6 @@ class project(osv.osv):
'priority': fields.integer('Sequence', help="Gives the sequence order when displaying a list of task"),
'warn_manager': fields.boolean('Warn Manager', help="If you check this field, the project manager will receive a request each time a task is completed by his team.", states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}),
'members': fields.many2many('res.users', 'project_user_rel', 'project_id', 'uid', 'Project Members', help="Project's member. Not used in any computation, just for information purpose.", states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}),
- 'parent_id': fields.many2one('project.project', 'Parent Project'),
'tasks': fields.one2many('project.task', 'project_id', "Project tasks"),
'planned_hours': fields.function(_progress_rate, multi="progress", method=True, string='Planned Time', help="Sum of planned hours of all tasks related to this project and its child projects.",
store = {
diff --git a/addons/project/project_data.xml b/addons/project/project_data.xml
index f3bab29250a..01f63ab314d 100644
--- a/addons/project/project_data.xml
+++ b/addons/project/project_data.xml
@@ -17,13 +17,13 @@
Projects
3
- -->
+
diff --git a/addons/project/project_demo.xml b/addons/project/project_demo.xml
index e3b905fea9d..27a5b31a5bb 100644
--- a/addons/project/project_demo.xml
+++ b/addons/project/project_demo.xml
@@ -241,10 +241,10 @@
-
+
1
diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml
index 8b5dfd5fa21..3375f790091 100644
--- a/addons/project/project_view.xml
+++ b/addons/project/project_view.xml
@@ -21,7 +21,7 @@