diff --git a/addons/account/project/project_view.xml b/addons/account/project/project_view.xml
index 7658ab111d9..6f8867528e1 100644
--- a/addons/account/project/project_view.xml
+++ b/addons/account/project/project_view.xml
@@ -8,7 +8,8 @@
tree
-
+
+
diff --git a/addons/account_analytic_analysis/account_analytic_analysis.py b/addons/account_analytic_analysis/account_analytic_analysis.py
index 0ac783a8c5c..6e15fe1d5a5 100644
--- a/addons/account_analytic_analysis/account_analytic_analysis.py
+++ b/addons/account_analytic_analysis/account_analytic_analysis.py
@@ -485,6 +485,8 @@ class account_analytic_account(osv.osv):
return {}
res = {'value':{}}
template = self.browse(cr, uid, template_id, context=context)
+ res['value']['date_start'] = template.date_start
+ res['value']['date'] = template.date
res['value']['fix_price_invoices'] = template.fix_price_invoices
res['value']['invoice_on_timesheets'] = template.invoice_on_timesheets
res['value']['quantity_max'] = template.quantity_max
diff --git a/addons/analytic/analytic.py b/addons/analytic/analytic.py
index 35acc4a8508..1bd09848b03 100644
--- a/addons/analytic/analytic.py
+++ b/addons/analytic/analytic.py
@@ -27,7 +27,7 @@ import decimal_precision as dp
class account_analytic_account(osv.osv):
_name = 'account.analytic.account'
- _inherit = ['mail.thread']
+ _inherit = ['ir.needaction_mixin','mail.thread']
_description = 'Analytic Account'
def _compute_level_tree(self, cr, uid, ids, child_ids, res, field_names, context=None):
@@ -156,7 +156,11 @@ class account_analytic_account(osv.osv):
'name': fields.char('Account Name', size=128, required=True),
'complete_name': fields.function(_complete_name_calc, type='char', string='Full Account Name'),
'code': fields.char('Code/Reference', size=24, select=True),
- 'type': fields.selection([('view','Analytic View'), ('normal','Analytic Account'),('contract','Contract or Project'),('template','Template of Project')], 'Type of Account', required=True, help='If you select the View Type, it means you won\'t allow to create journal entries using that account.'),
+ 'type': fields.selection([('view','Analytic View'), ('normal','Analytic Account'),('contract','Contract or Project'),('template','Template of Project')], 'Type of Account', required=True,
+ help="If you select the View Type, it means you won\'t allow to create journal entries using that account.\n"\
+ "The type 'Analytic account' stands for usual accounts that you only want to use in accounting.\n"\
+ "If you select Contract or Project, it offers you the possibility to manage the validity and the invoicing options for this account.\n"\
+ "The special type 'Template of Project' allows you to define a template with default data that you can reuse easily."),
'description': fields.text('Description'),
'parent_id': fields.many2one('account.analytic.account', 'Parent Analytic Account', select=2),
'child_ids': fields.one2many('account.analytic.account', 'parent_id', 'Child Accounts'),
@@ -272,20 +276,25 @@ class account_analytic_account(osv.osv):
else:
account = self.search(cr, uid, args, limit=limit, context=context)
return self.name_get(cr, uid, account, context=context)
-
+
def create(self, cr, uid, vals, context=None):
contract = super(account_analytic_account, self).create(cr, uid, vals, context=context)
if contract:
self.create_send_note(cr, uid, [contract], context=context)
return contract
- # ------------------------------------------------
- # OpenChatter methods and notifications
- # ------------------------------------------------
+
+ def get_needaction_user_ids(self, cr, uid, ids, context=None):
+ result = dict.fromkeys(ids, [])
+ for obj in self.browse(cr, uid, ids, context=context):
+ if obj.state == 'pending':
+ result[obj.id] = [obj.user_id.id]
+ return result
+
def create_send_note(self, cr, uid, ids, context=None):
for obj in self.browse(cr, uid, ids, context=context):
self.message_subscribe(cr, uid, [obj.id], [obj.user_id.id], context=context)
self.message_append_note(cr, uid, [obj.id], body=_("Contract for %s has been created.") % (obj.partner_id.name), context=context)
-
+
account_analytic_account()
@@ -310,17 +319,17 @@ class account_analytic_line(osv.osv):
}
_order = 'date desc'
-
+
def _check_no_view(self, cr, uid, ids, context=None):
analytic_lines = self.browse(cr, uid, ids, context=context)
for line in analytic_lines:
if line.account_id.type == 'view':
return False
return True
-
+
_constraints = [
(_check_no_view, 'You can not create analytic line on view account.', ['account_id']),
- ]
+ ]
account_analytic_line()