From 9c2ab087caaaf680b14fa6fe2a283bffc3add417 Mon Sep 17 00:00:00 2001 From: "pso (OpenERP)" Date: Thu, 12 May 2011 19:14:20 +0530 Subject: [PATCH] [IMP] account_asset: Improved create_move method bzr revid: pso@tinyerp.com-20110512134420-joc4keo8jtjbklqp --- addons/account_asset/account_asset.py | 44 ++++++++++++++++----------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/addons/account_asset/account_asset.py b/addons/account_asset/account_asset.py index 652816de57e..767bb907a55 100644 --- a/addons/account_asset/account_asset.py +++ b/addons/account_asset/account_asset.py @@ -1,6 +1,6 @@ # -*- encoding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). # @@ -15,7 +15,7 @@ # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . +# along with this program. If not, see . # ############################################################################## @@ -52,7 +52,7 @@ account_asset_category() # #compute depreciation board # depreciation_line_ids = obj.pool.get('account.asset.asset').compute_depreciation_board(cr, user, ids, context=context) # for key, value in depreciation_line_ids.items(): -# #write values on asset +# #write values on asset # obj.pool.get(self._obj).write(cr, user, key, {'depreciation_line_ids': [6,0,value]}) # return depreciation_line_ids @@ -103,14 +103,14 @@ class account_asset_asset(osv.osv): amount = residual_amount * asset.method_progress_factor residual_amount -= amount vals = { - 'amount': amount, - 'asset_id': asset.id, - 'sequence':i, + 'amount': amount, + 'asset_id': asset.id, + 'sequence':i, 'name': str(asset.id) +'/'+ str(i), 'remaining_value': residual_amount, 'depreciated_value': asset.purchase_value - residual_amount, 'depreciation_date': depreciation_date.strftime('%Y-%m-%d'), - } + } self.pool.get('account.asset.depreciation.line').create(cr, uid, vals) month += asset.method_period depreciation_date = datetime(year + (month / 12), month % 12, day) @@ -124,7 +124,7 @@ class account_asset_asset(osv.osv): def _amount_total(self, cr, uid, ids, name, args, context={}): #FIXME: function not working² id_set=",".join(map(str,ids)) - cr.execute("""SELECT l.asset_id,abs(SUM(l.debit-l.credit)) AS amount FROM + cr.execute("""SELECT l.asset_id,abs(SUM(l.debit-l.credit)) AS amount FROM account_move_line l WHERE l.asset_id IN ("""+id_set+") GROUP BY l.asset_id ") res=dict(cr.fetchall()) @@ -133,7 +133,7 @@ class account_asset_asset(osv.osv): return res def _amount_residual(self, cr, uid, ids, name, args, context={}): - cr.execute("""SELECT + cr.execute("""SELECT l.asset_id as id, SUM(abs(l.debit-l.credit)) AS amount FROM account_move_line l @@ -160,7 +160,7 @@ class account_asset_asset(osv.osv): 'localisation': fields.char('Localisation', size=32, select=2), 'parent_id': fields.many2one('account.asset.asset', 'Parent Asset'), 'child_ids': fields.one2many('account.asset.asset', 'parent_id', 'Children Assets'), - 'purchase_date': fields.date('Purchase Date', required=True), + 'purchase_date': fields.date('Purchase Date', required=True), 'state': fields.selection([('view','View'),('draft','Draft'),('normal','Normal'),('close','Close')], 'state', required=True), 'active': fields.boolean('Active', select=2), 'partner_id': fields.many2one('res.partner', 'Partner'), @@ -264,7 +264,7 @@ class account_asset_asset(osv.osv): return result def _compute_entries(self, cr, uid, asset, period_id, context={}): - #FIXME: function not working CHECK all res + #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: @@ -290,13 +290,21 @@ class account_asset_depreciation_line(osv.osv): } def create_move(self, cr, uid,ids, context=None): + if context is None: + context = {} asset_obj = self.pool.get('account.asset.asset') period_obj = self.pool.get('account.period') move_obj = self.pool.get('account.move') move_line_obj = self.pool.get('account.move.line') + currency_obj = self.pool.get('res.currency') for line in self.browse(cr, uid, ids, context=context): depreciation_date = asset_obj._get_last_depreciation_date(cr, uid, [line.asset_id.id], context=context)[line.asset_id.id] period_ids = period_obj.find(cr, uid, depreciation_date, context=context) + company_currency = line.asset_id.company_id.currency_id.id + current_currency = line.asset_id.currency_id.id + context.update({'date': depreciation_date}) + amount = currency_obj.compute(cr, uid, current_currency, company_currency, line.amount, context=context) + sign = line.asset_id.category_id.journal_id.type = 'purchase' and 1 or -1 move_vals = { 'name': line.name, 'date': depreciation_date, @@ -311,11 +319,12 @@ class account_asset_depreciation_line(osv.osv): 'move_id': move_id, 'account_id': line.asset_id.category_id.account_depreciation_id.id, 'debit': 0.0, - 'credit': line.amount, + 'credit': amount, 'period_id': period_ids and period_ids[0] or False, 'journal_id': line.asset_id.category_id.journal_id.id, 'partner_id': line.asset_id.partner_id.id, - 'currency_id': line.asset_id.currency_id.id, + 'currency_id': company_currency <> current_currency and current_currency or False, + 'amount_currency': company_currency <> current_currency and - sign * line.amount or 0.0, 'analytic_account_id': line.asset_id.category_id.account_analytic_id.id, 'date': depreciation_date, }) @@ -325,11 +334,12 @@ class account_asset_depreciation_line(osv.osv): 'move_id': move_id, 'account_id': line.asset_id.category_id.account_expense_depreciation_id.id, 'credit': 0.0, - 'debit': line.amount, + 'debit': amount, 'period_id': period_ids and period_ids[0] or False, 'journal_id': line.asset_id.category_id.journal_id.id, 'partner_id': line.asset_id.partner_id.id, - 'currency_id': line.asset_id.currency_id.id, + 'currency_id': company_currency <> current_currency and current_currency or False, + 'amount_currency': company_currency <> current_currency and sign * line.amount or 0.0, 'analytic_account_id': line.asset_id.category_id.account_analytic_id.id, 'date': depreciation_date, }) @@ -341,7 +351,7 @@ account_asset_depreciation_line() #class account_asset_property(osv.osv): # def _amount_total(self, cr, uid, ids, name, args, context={}): # id_set=",".join(map(str,ids)) -# cr.execute("""SELECT l.asset_id,abs(SUM(l.debit-l.credit)) AS amount FROM +# cr.execute("""SELECT l.asset_id,abs(SUM(l.debit-l.credit)) AS amount FROM # account_asset_property p # left join # account_move_line l on (p.asset_id=l.asset_id) @@ -411,7 +421,7 @@ class account_move_line(osv.osv): _inherit = 'account.move.line' _columns = { 'asset_id': fields.many2one('account.asset.asset', 'Asset'), - 'entry_ids': fields.one2many('account.move.line', 'asset_id', 'Entries', readonly=True, states={'draft':[('readonly',False)]}), + 'entry_ids': fields.one2many('account.move.line', 'asset_id', 'Entries', readonly=True, states={'draft':[('readonly',False)]}), } account_move_line()