X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=addons%2Faccount_asset%2Faccount_asset.py;h=97aec1d848734d0704dc3882aad541a429fed3fa;hb=91aa0dbad8c2664c302a9d101068a3e8f3a5809b;hp=bacd29f16074dc4d761a8070ac9617d83b62a855;hpb=24815c7bc648da834cb9565bd9833be481738492;p=odoo%2Fodoo.git diff --git a/addons/account_asset/account_asset.py b/addons/account_asset/account_asset.py index bacd29f..97aec1d 100644 --- a/addons/account_asset/account_asset.py +++ b/addons/account_asset/account_asset.py @@ -131,7 +131,7 @@ class account_asset_asset(osv.osv): if asset.prorata: undone_dotation_number += 1 return undone_dotation_number - + def compute_depreciation_board(self, cr, uid, ids, context=None): depreciation_lin_obj = self.pool.get('account.asset.depreciation.line') for asset in self.browse(cr, uid, ids, context=context): @@ -141,10 +141,14 @@ class account_asset_asset(osv.osv): old_depreciation_line_ids = depreciation_lin_obj.search(cr, uid, [('asset_id', '=', asset.id), ('move_id', '=', False)]) if old_depreciation_line_ids: 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') + amount_to_depr = residual_amount = asset.value_residual + if asset.prorata: + depreciation_date = datetime.strptime(self._get_last_depreciation_date(cr, uid, [asset.id], context)[asset.id], '%Y-%m-%d') + else: + # depreciation_date = 1st January of purchase year + purchase_date = datetime.strptime(asset.purchase_date, '%Y-%m-%d') + depreciation_date = datetime(purchase_date.year, 1, 1) day = depreciation_date.day month = depreciation_date.month year = depreciation_date.year @@ -180,6 +184,9 @@ class account_asset_asset(osv.osv): def set_to_close(self, cr, uid, ids, context=None): return self.write(cr, uid, ids, {'state': 'close'}, context=context) + def set_to_draft(self, cr, uid, ids, context=None): + return self.write(cr, uid, ids, {'state': 'draft'}, context=context) + def _amount_residual(self, cr, uid, ids, name, args, context=None): cr.execute("""SELECT l.asset_id as id, round(SUM(abs(l.debit-l.credit))) AS amount @@ -194,10 +201,20 @@ class account_asset_asset(osv.osv): res.setdefault(id, 0.0) return res + def onchange_company_id(self, cr, uid, ids, company_id=False, context=None): + val = {} + if company_id: + company = self.pool.get('res.company').browse(cr, uid, company_id, context=context) + if company.currency_id.company_id and company.currency_id.company_id.id != company_id: + val['currency_id'] = False + else: + val['currency_id'] = company.currency_id.id + return {'value': val} + _columns = { 'account_move_line_ids': fields.one2many('account.move.line', 'asset_id', 'Entries', readonly=True, states={'draft':[('readonly',False)]}), 'name': fields.char('Asset', size=64, required=True, readonly=True, states={'draft':[('readonly',False)]}), - 'code': fields.char('Reference ', size=16, readonly=True, states={'draft':[('readonly',False)]}), + 'code': fields.char('Reference', size=32, readonly=True, states={'draft':[('readonly',False)]}), 'purchase_value': fields.float('Gross value ', required=True, readonly=True, states={'draft':[('readonly',False)]}), 'currency_id': fields.many2one('res.currency','Currency',required=True, readonly=True, states={'draft':[('readonly',False)]}), 'company_id': fields.many2one('res.company', 'Company', required=True, readonly=True, states={'draft':[('readonly',False)]}), @@ -220,7 +237,7 @@ class account_asset_asset(osv.osv): 'method_end': fields.date('Ending Date', readonly=True, states={'draft':[('readonly',False)]}), 'method_progress_factor': fields.float('Degressive Factor', readonly=True, states={'draft':[('readonly',False)]}), 'value_residual': fields.function(_amount_residual, method=True, digits_compute=dp.get_precision('Account'), string='Residual Value'), - 'method_time': fields.selection([('number','Number of Depreciations'),('end','Ending Date')], 'Time Method', required=True, readonly=True, states={'draft':[('readonly',False)]}, + 'method_time': fields.selection([('number','Number of Depreciations'),('end','Ending Date')], 'Time Method', required=True, readonly=True, states={'draft':[('readonly',False)]}, help="Choose the method to use to compute the dates and number of depreciation lines.\n"\ " * Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n" \ " * Ending Date: Choose the time between 2 depreciations and the date the depreciations won't go beyond."), @@ -242,7 +259,7 @@ class account_asset_asset(osv.osv): 'currency_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.currency_id.id, 'company_id': lambda self, cr, uid, context: self.pool.get('res.company')._company_default_get(cr, uid, 'account.asset.asset',context=context), } - + def _check_recursion(self, cr, uid, ids, context=None, parent=None): return super(account_asset_asset, self)._check_recursion(cr, uid, ids, context=context, parent=parent) @@ -291,8 +308,8 @@ class account_asset_asset(osv.osv): 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), ('move_check', '=', False)], context=context) + 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), ('move_check', '=', False)], context=context) return depreciation_obj.create_move(cr, uid, depreciation_ids, context=context) def create(self, cr, uid, vals, context=None): @@ -390,7 +407,7 @@ class account_asset_depreciation_line(osv.osv): self.write(cr, uid, line.id, {'move_id': move_id}, context=context) created_move_ids.append(move_id) if can_close: - asset_obj.write(cr, uid, [line.asset_id.id], {'state': 'close'}, context=context) + asset_obj.write(cr, uid, [line.asset_id.id], {'state': 'close'}, context=context) return created_move_ids account_asset_depreciation_line() @@ -412,7 +429,7 @@ class account_asset_history(osv.osv): 'user_id': fields.many2one('res.users', 'User', required=True), 'date': fields.date('Date', required=True), 'asset_id': fields.many2one('account.asset.asset', 'Asset', required=True), - 'method_time': fields.selection([('number','Number of Depreciations'),('end','Ending Date')], 'Time Method', required=True, + 'method_time': fields.selection([('number','Number of Depreciations'),('end','Ending Date')], 'Time Method', required=True, help="The method to use to compute the dates and number of depreciation lines.\n"\ "Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n" \ "Ending Date: Choose the time between 2 depreciations and the date the depreciations won't go beyond."), @@ -426,7 +443,7 @@ class account_asset_history(osv.osv): 'date': lambda *args: time.strftime('%Y-%m-%d'), 'user_id': lambda self, cr, uid, ctx: uid } - + account_asset_history() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: