diff --git a/addons/account_asset/account_asset.py b/addons/account_asset/account_asset.py index bf92467def5..189ffdec22d 100644 --- a/addons/account_asset/account_asset.py +++ b/addons/account_asset/account_asset.py @@ -110,12 +110,14 @@ class account_asset_asset(osv.osv): depreciation_lin_obj.unlink(cr, uid, old_depreciation_line_ids, context=context) amount_to_depr = residual_amount = asset.value_residual - depreciation_date = datetime.strptime(self._get_last_depreciation_date(cr, uid, [asset.id], context)[asset.id], '%Y-%m-%d') day = depreciation_date.day month = depreciation_date.month year = depreciation_date.year total_days = (year % 4) and 365 or 366 + if asset.account_move_line_ids: + add_months = asset.method_period * len(asset.account_move_line_ids) + depreciation_date = (datetime(year, month, day) + relativedelta(months=+add_months)) undone_dotation_number = asset.method_delay - len(asset.account_move_line_ids) if asset.method_time == 'end': @@ -123,6 +125,7 @@ class account_asset_asset(osv.osv): undone_dotation_number = (end_date - depreciation_date).days / total_days if asset.prorata or asset.method_time == 'end': undone_dotation_number += 1 + for i in range(1, undone_dotation_number+1): if i == undone_dotation_number + 1: amount = residual_amount @@ -139,7 +142,6 @@ class account_asset_asset(osv.osv): else: amount = residual_amount * asset.method_progress_factor residual_amount -= amount - vals = { 'amount': amount, 'asset_id': asset.id, @@ -152,10 +154,11 @@ class account_asset_asset(osv.osv): depreciation_lin_obj.create(cr, uid, vals, context=context) # Considering Depr. Period as months - depreciation_date = (datetime(year, month, day) + relativedelta(months=+asset.method_period)) day = depreciation_date.day month = depreciation_date.month year = depreciation_date.year + depreciation_date = (datetime(year, month, day) + relativedelta(months=+asset.method_period)) + return True def validate(self, cr, uid, ids, context={}): @@ -248,6 +251,12 @@ class account_asset_asset(osv.osv): 'prorata': category_obj.prorata, } return res + + def onchange_method_time(self, cr, uid, ids, method='linear', method_time='delay', context=None): + res = {'value': {}} + if method != 'linear' or method_time != 'delay': + res['value'] = {'prorata': False} + return res def copy(self, cr, uid, id, default=None, context=None): if default is None: diff --git a/addons/account_asset/account_asset_view.xml b/addons/account_asset/account_asset_view.xml index 2a578117ffe..cd7eda512f0 100644 --- a/addons/account_asset/account_asset_view.xml +++ b/addons/account_asset/account_asset_view.xml @@ -85,10 +85,10 @@ type="action" colspan="2"/> - + - +