diff --git a/addons/account_asset/account_asset.py b/addons/account_asset/account_asset.py
index 8efe78879d5..142fc89df09 100644
--- a/addons/account_asset/account_asset.py
+++ b/addons/account_asset/account_asset.py
@@ -278,87 +278,13 @@ class account_asset_asset(osv.osv):
default.update({'depreciation_line_ids': [], 'state': 'draft'})
return super(account_asset_asset, self).copy(cr, uid, id, default, context=context)
- def _compute_period(self, cr, uid, property, context={}):
- if (len(property.entry_asset_ids or [])/2)>=property.method_number:
- return False
- if len(property.entry_asset_ids):
- cp = property.entry_asset_ids[-1].period_id
- cpid = self.pool.get('account.period').next(cr, uid, cp, property.method_period, context)
- current_period = self.pool.get('account.period').browse(cr, uid, cpid, context)
- else:
- current_period = property.asset_id.period_id
- return current_period
-
- def _compute_move(self, cr, uid, property, period, context={}):
- #FIXME: fucntion not working OK
+ def _compute_entries(self, cr, uid, ids, period_id, context={}):
result = []
- total = 0.0
- for move in property.asset_id.entry_ids:
- total += move.debit-move.credit
- for move in property.entry_asset_ids:
- if move.account_id == property.account_asset_ids:
- total += move.debit
- total += -move.credit
- periods = (len(property.entry_asset_ids)/2) - property.method_number
-
- if periods==1:
- amount = total
- else:
- if property.method == 'linear':
- amount = total / periods
- else:
- amount = total * property.method_progress_factor
-
- move_id = self.pool.get('account.move').create(cr, uid, {
- 'journal_id': property.journal_id.id,
- 'period_id': period.id,
- 'name': property.name or property.asset_id.name,
- 'ref': property.asset_id.code
- })
- result = [move_id]
- id = self.pool.get('account.move.line').create(cr, uid, {
- 'name': property.name or property.asset_id.name,
- 'move_id': move_id,
- 'account_id': property.account_asset_id.id,
- 'debit': amount>0 and amount or 0.0,
- 'credit': amount<0 and -amount or 0.0,
- 'ref': property.asset_id.code,
- 'period_id': period.id,
- 'journal_id': property.journal_id.id,
- 'partner_id': property.asset_id.partner_id.id,
- 'date': time.strftime('%Y-%m-%d'),
- })
- id2 = self.pool.get('account.move.line').create(cr, uid, {
- 'name': property.name or property.asset_id.name,
- 'move_id': move_id,
- 'account_id': property.account_actif_id.id,
- 'credit': amount>0 and amount or 0.0,
- 'debit': amount<0 and -amount or 0.0,
- 'ref': property.asset_id.code,
- 'period_id': period.id,
- 'journal_id': property.journal_id.id,
- 'partner_id': property.asset_id.partner_id.id,
- 'date': time.strftime('%Y-%m-%d'),
- })
- #
- self.pool.get('account.asset.asset').write(cr, uid, [property.id], {
- 'entry_asset_ids': [(4, id2, False),(4,id,False)]
- })
- if property.method_number - (len(property.entry_asset_ids)/2)<=1:
- #self.pool.get('account.asset.property')._close(cr, uid, property, context)
- return result
- return result
-
- def _compute_entries(self, cr, uid, asset, period_id, context={}):
- #FIXME: function not working CHECK all res
- result = []
- date_start = self.pool.get('account.period').browse(cr, uid, period_id, context).date_start
- for property in asset.property_ids:
- if property.state=='open':
- period = self._compute_period(cr, uid, property, context)
- if period and (period.date_start<=date_start):
- result += self._compute_move(cr, uid, property, period, context)
- return result
+ period_obj = self.pool.get('account.period')
+ depreciation_obj = self.pool.get('account.asset.depreciation.line')
+ period = period_obj.browse(cr, uid, period_id, context=context)
+ depreciation_ids = depreciation_obj.search(cr, uid, [('asset_id', 'in', ids), ('depreciation_date','<',period.date_stop), ('depreciation_date', '>', period.date_start)], context=context)
+ return depreciation_obj.create_move(cr, uid, depreciation_ids, context=context)
def create(self, cr, uid, vals, context=None):
asset_id = super(account_asset_asset, self).create(cr, uid, vals, context=context)
@@ -399,6 +325,7 @@ class account_asset_depreciation_line(osv.osv):
move_obj = self.pool.get('account.move')
move_line_obj = self.pool.get('account.move.line')
currency_obj = self.pool.get('res.currency')
+ created_move_ids = []
for line in self.browse(cr, uid, ids, context=context):
if currency_obj.is_zero(cr, uid, line.asset_id.currency_id, line.remaining_value):
can_close = True
@@ -452,9 +379,10 @@ class account_asset_depreciation_line(osv.osv):
'asset_id': line.asset_id.id
})
self.write(cr, uid, line.id, {'move_id': move_id}, context=context)
- if can_close:
- asset_obj.write(cr, uid, [line.asset_id.id], {'state': 'close'}, context=context)
- return True
+ created_move_ids.append(move_id)
+ if can_close:
+ asset_obj.write(cr, uid, [line.asset_id.id], {'state': 'close'}, context=context)
+ return created_move_ids
account_asset_depreciation_line()
diff --git a/addons/account_asset/account_asset_view.xml b/addons/account_asset/account_asset_view.xml
index faf13749403..1e54079406f 100644
--- a/addons/account_asset/account_asset_view.xml
+++ b/addons/account_asset/account_asset_view.xml
@@ -166,7 +166,7 @@
tree
child_ids
-
+
diff --git a/addons/account_asset/wizard/wizard_asset_compute.py b/addons/account_asset/wizard/wizard_asset_compute.py
index ec0e3a063b9..96e0b02794d 100755
--- a/addons/account_asset/wizard/wizard_asset_compute.py
+++ b/addons/account_asset/wizard/wizard_asset_compute.py
@@ -47,10 +47,8 @@ asset_ask_fields = {
def _asset_compute(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
ass_obj = pool.get('account.asset.asset')
- ids = ass_obj.search(cr, uid, [('state','=','normal')], context=context)
- ids_create = []
- for asset in ass_obj.browse(cr, uid, ids, context):
- ids_create += ass_obj._compute_entries(cr, uid, asset, data['form']['period_id'], context)
+ ids = ass_obj.search(cr, uid, [('state','=','open')], context=context)
+ ids_create = ass_obj._compute_entries(cr, uid, ids, data['form']['period_id'], context=context)
self.move_ids = ids_create
return {'move_ids': ids_create}