[IMP] improve depreciation board

bzr revid: openerp@ubuntu-20110502095134-32h3kxvlbwdtgt2h
This commit is contained in:
OpenERP 2011-05-02 02:51:34 -07:00
parent 7233f0b279
commit d87d099507
2 changed files with 108 additions and 34 deletions

View File

@ -21,6 +21,7 @@
from osv import osv, fields
import time
import datetime
class account_asset_category(osv.osv):
_name = 'account.asset.category'
_description = 'Asset category'
@ -73,24 +74,84 @@ class account_asset_asset(osv.osv):
return periods[0]
else:
return False
def compute_depreciation_board(self, cr, uid, ids, context=None):
##
def compute_depreciation_board(self, cr, uid,ids, context=None):
#FIXME: change into a fields.function
test = 1.0
date_year = 1.0
purchase_value_board = 1.0
amountpro = 1.0
#year_inc = time.strftime('%Y')
for asset in self.browse(cr, uid, ids, context=context):
#res[asset.id] = []
undone_dotation_number = asset.method_delay - len(asset.account_move_line_ids) + 1
amount = asset.value_residual
for i in range(1,undone_dotation_number+1):
if i == 1:
amount = asset.value_residual / undone_dotation_number
else:
if asset.method == 'linear':
amount = asset.value_residual / undone_dotation_number
else:
amount = asset.value_residual * asset.method_progress_factor
#res[asset.id].append([self.pool.get('account.asset.depreciation.line').create(cr, uid, {'amount': amount, 'asset_id': asset.id, 'sequence':i, 'name': str(asset.id) +'/'+ str(i)})])
self.pool.get('account.asset.depreciation.line').create(cr, uid, {'amount': amount, 'asset_id': asset.id, 'sequence':i, 'name': str(asset.id) +'/'+ str(i)})
return True
test = asset.value_residual
purchase_value_board = amount
if asset.prorata == 'false' :
for i in range(1,undone_dotation_number+1):
if i == 1:
amount = asset.value_residual / undone_dotation_number
test = asset.value_residual - amount
#amountpro = ((asset.value_residual / undone_dotation_number
else:
if asset.method == 'linear':
if i == undone_dotation_number+1:
# amount = amount - amountpro
test = test - amount
else:
amount = asset.value_residual / undone_dotation_number
test = test - amount
elif asset.method == "progressif":
if i == undone_dotation_number+1:
# amount = amount - amountpro
test = test - amount
else:
amount = asset.value_residual * asset.method_progress_factor
test = test - amount
else:
#methods
print ""
else:
deprec_date = time.strftime('%Y')
for i in range(1,undone_dotation_number+2):
date_year = int(time.strftime('%Y'))
date_year += i-1
deprec_date = '31/12/',str(date_year)
if i == 1:
amount = ((asset.value_residual / undone_dotation_number)*5)/12
test = asset.value_residual - amount
amountpro = ((asset.value_residual / undone_dotation_number)*5)/12
else:
if asset.method == 'linear':
if i == undone_dotation_number+1:
amount = amount - amountpro
test = test - amount
else:
amount = asset.value_residual / undone_dotation_number
test = test - amount
elif asset.method == "progressif":
if i == undone_dotation_number+1:
amount = amount - amountpro
test = test - amount
else:
amount = asset.value_residual * asset.method_progress_factor
test = test - amount
else:
#methods
print ""
#res[asset.id].append([self.pool.get('account.asset.depreciation.line').create(cr, uid, {'amount': amount, 'asset_id': asset.id, 'sequence':i, 'name': str(asset.id) +'/'+ str(i)})])
self.pool.get('account.asset.depreciation.line').create(cr, uid, {'amount': amount,'deprec_value': test,'deprec_date': deprec_date,'purchase_value_board':purchase_value_board, 'asset_id': asset.id, 'sequence':i, 'name': str(asset.id) +'/'+ str(i)})
return True
def account_move_line_deprec(self, cr, uid, ids, context={}):
print "Error !!!"
def validate(self, cr, uid, ids, context={}):
return self.write(cr, uid, ids, {
@ -135,17 +196,17 @@ class account_asset_asset(osv.osv):
'name': fields.char('Asset', size=64, required=True, select=1),
'code': fields.char('Reference ', size=16, select=1),
'purchase_value': fields.float('Purchase value ', required=True, size=16, select=1),
'purchase_value': fields.float('Gross value ', required=True, size=16, select=1),
'currency_id': fields.many2one('res.currency','Currency',required=True,size=5,select=1),
'company_id': fields.many2one('res.company', 'Company', required=True), #FIXME: fields.many2one !! OK
'note': fields.text('Note'),
'note': fields.text(' '),
'category_id': fields.many2one('account.asset.category', 'Asset category',required=True, change_default=True),
'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), #FIXME: date is not displayed currently OK
'period_id': fields.many2one('account.period', 'Period', required=True, readonly=True, states={'draft':[('readonly',False)]}),
'state': fields.selection([('view','View'),('draft','Draft'),('normal','Normal'),('close','Close')], 'Global state', 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'),#FIXME: not displayed OK
'account_move_line_ids': fields.one2many('account.move.line', 'asset_id', 'Entries', readonly=True, states={'draft':[('readonly',False)]}),
@ -168,7 +229,8 @@ class account_asset_asset(osv.osv):
'method_time': fields.selection([('delay','Delay'),('end','Ending Period')], 'Time Method', required=True, readonly=True, states={'draft':[('readonly',False)]}),
'prorata':fields.boolean('Prorata Temporis', Readonly="True", help='Si l amortissement se realise après le 1 janvier'),
'history_ids': fields.one2many('account.asset.property.history', 'asset_id', 'History', readonly=True),
'depreciation_line_ids': fields.one2many('account.asset.depreciation.line', 'asset_id', 'Depreciation Lines', readonly=True,),
'depreciation_line_ids': fields.one2many('account.asset.depreciation.line', 'asset_id', 'Depreciation Lines', readonly=True,),
}
_defaults = {
'code': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'account.asset.code'),
@ -181,7 +243,11 @@ class account_asset_asset(osv.osv):
'method_time': lambda obj, cr, uid, context: 'delay',
'method_period': lambda obj, cr, uid, context: 12,
'method_progress_factor': lambda obj, cr, uid, context: 0.3,
'currency_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.currency_id.id,
}
def _compute_period(self, cr, uid, property, context={}):
if (len(property.entry_asset_ids or [])/2)>=property.method_delay:
return False
@ -274,6 +340,8 @@ class account_asset_depreciation_line(osv.osv):
'sequence': fields.integer('Sequence of the depreciation', required=True),
'asset_id': fields.many2one('account.asset.asset', 'Asset', required=True),
'amount': fields.float('Depreciation amount', required=True),
'deprec_value': fields.float('Residual value', required=True),
'deprec_date': fields.char('Date', size=64, required=True, select=1),
}
account_asset_depreciation_line()

View File

@ -42,7 +42,7 @@
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_account_asset_category_form">
<!--<record model="ir.actions.act_window" id="action_account_asset_category_form">
<field name="name">Asset Category</field>
<field name="res_model">account.asset.category</field>
<field name="view_type">form</field>
@ -50,9 +50,9 @@
</record>
<menuitem
parent="menu_finance_config_Assets"
id="menu_action_account_asset_category_form"
action="action_account_asset_category_form"/>
id="menu_action_account_asset_category_form"
action="action_account_asset_category_form"/>
-->
<!-- <record model="ir.ui.view" id="view_account_asset_property_tree">
<field name="name">account.asset.property.tree</field>
@ -84,7 +84,8 @@
<field name="code" select="1"/>
<field name="purchase_value" select="1"/>
<field name="currency_id" select="1"/>
<field name="company_id" select="1"/>
<field name="company_id" select="1"/>
<field name="value_residual"/>
</group>
<!-- <field name="period_id" select="2"/>-->
<!-- <field name="name" select="1" colspan="4"/>-->
@ -109,11 +110,11 @@
<field name="purchase_date"/>
<field name="method"/>
<field name="method_progress_factor"/>
<field name="method_progress_factor" attrs="{'invisible':[('method','=','linear')]}"/>
<newline/>
<field name="prorata" colspan="1"/>
<field name="method_time"/>
<field name="method_period"/>
<field name="method_period" attrs="{'invisible':[('method_time','=','end')]}"/>
<button
name="%(wizard_asset_modify)d"
states="open"
@ -127,25 +128,30 @@
<!--
<field name="method_end"/> -->
</page>
<page string="History">
<field name="account_move_line_ids" colspan="4" nolabel="1" readonly="1"/>
<field name="history_ids" colspan="4" nolabel="1" readonly="1"/>
</page>
<page string="Depreciation board">
<field name="value_total"/>
<field name="value_residual"/>
<!-- <field name="value_total"/>
<field name="value_residual"/>-->
<field name="depreciation_line_ids" colspan="4" nolabel="1">
<tree>
<field name="name"/>
<field name="deprec_date"/>
<field name="sequence"/>
<field name="amount"/></tree>
<field name="amount"/>
<field name="deprec_value"/></tree>
</field>
<button type="object" name="compute_depreciation_board" string="Compute"/>
<button type="object" name="compute_depreciation_board" string="Compute" icon="terp-stock_format-scientific" colspan="2"/>
<button type="object" name="account_move_line_deprec" string="Create move line" icon="gtk-execute" colspan="2"/>
</page>
<page string="History">
<field name="account_move_line_ids" colspan="4" nolabel="1" readonly="1"/>
<field name="history_ids" colspan="4" nolabel="1" readonly="1"/>
</page>
<page string="Notes">
<field name="note"/>
<field name="note" nolabel="1"/>
</page>
</notebook>
<field name="state" readonly="1"/>
@ -202,7 +208,7 @@
<form string="Asset board">
<field name="name" select="1"/>
<field name="asset_id" select="1"/>
<field name="value_gross" select="2"/>
<field name="value_gross" select="2"/>
<field name="value_asset"/>
<field name="value_asset_cumul"/>
<field name="value_net"/>