diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py index 83ce4f5168f..4ca8400aaaf 100644 --- a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py +++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py @@ -205,8 +205,10 @@ class hr_timesheet_sheet(osv.osv): return True _columns = { - 'name': fields.char('Description', size=64, select=1), - 'user_id': fields.many2one('res.users', 'User', required=True, select=1), + 'name': fields.char('Description', size=64, select=1, + states={'confirm':[('readonly', True)], 'done':[('readonly', True)]}), + 'user_id': fields.many2one('res.users', 'User', required=True, select=1, + states={'confirm':[('readonly', True)], 'done':[('readonly', True)]}), 'date_from': fields.date('Date from', required=True, select=1, readonly=True, states={'new':[('readonly', False)]}), 'date_to': fields.date('Date to', required=True, select=1, readonly=True, states={'new':[('readonly', False)]}), 'date_current': fields.date('Current date', required=True), @@ -297,6 +299,12 @@ class hr_timesheet_sheet(osv.osv): for r in self.read(cr, uid, ids, ['date_from', 'date_to'], context, load='_classic_write')] + def unlink(self, cr, uid, ids, context=None): + sheets = self.read(cr, uid, ids, ['state']) + if any(s['state'] in ('confirm', 'done') for s in sheets): + raise osv.except_osv(_('Invalid action !'), _('Cannot delete Sheet(s) which are already confirmed !')) + return super(hr_timesheet_sheet, self).unlink(cr, uid, ids, context=context) + hr_timesheet_sheet()