diff --git a/addons/account_asset/account_asset.py b/addons/account_asset/account_asset.py index b335063b758..29df81b5279 100644 --- a/addons/account_asset/account_asset.py +++ b/addons/account_asset/account_asset.py @@ -25,6 +25,7 @@ from dateutil.relativedelta import relativedelta from openerp.osv import fields, osv import openerp.addons.decimal_precision as dp +from tools.translate import _ class account_asset_category(osv.osv): _name = 'account.asset.category' @@ -75,6 +76,12 @@ class account_asset_asset(osv.osv): _name = 'account.asset.asset' _description = 'Asset' + def unlink(self, cr, uid, ids, context=None): + for asset in self.browse(cr, uid, ids, context=context): + if asset.account_move_line_ids: + raise osv.except_osv(_('Error!'), _('You cannot delete an asset that contains posted depreciation lines.')) + return super(account_account, self).unlink(cr, uid, ids, context=context) + def _get_period(self, cr, uid, context=None): periods = self.pool.get('account.period').find(cr, uid) if periods: @@ -369,7 +376,7 @@ class account_asset_depreciation_line(osv.osv): _columns = { 'name': fields.char('Depreciation Name', size=64, required=True, select=1), 'sequence': fields.integer('Sequence', required=True), - 'asset_id': fields.many2one('account.asset.asset', 'Asset', required=True), + 'asset_id': fields.many2one('account.asset.asset', 'Asset', required=True, ondelete='cascade'), 'parent_state': fields.related('asset_id', 'state', type='char', string='State of Asset'), 'amount': fields.float('Current Depreciation', digits_compute=dp.get_precision('Account'), required=True), 'remaining_value': fields.float('Next Period Depreciation', digits_compute=dp.get_precision('Account'),required=True), @@ -454,7 +461,7 @@ account_asset_depreciation_line() class account_move_line(osv.osv): _inherit = 'account.move.line' _columns = { - 'asset_id': fields.many2one('account.asset.asset', 'Asset'), + 'asset_id': fields.many2one('account.asset.asset', 'Asset', ondelete="restrict"), 'entry_ids': fields.one2many('account.move.line', 'asset_id', 'Entries', readonly=True, states={'draft':[('readonly',False)]}), }