2010-01-06 15:24:08 +00:00
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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 <http://www.gnu.org/licenses/>.
#
##############################################################################
2010-08-13 04:12:51 +00:00
2010-04-30 06:13:14 +00:00
import time
import datetime
from dateutil . relativedelta import relativedelta
2010-06-18 07:23:59 +00:00
from os . path import join as opj
2010-04-30 06:13:14 +00:00
from operator import itemgetter
2010-08-13 04:12:51 +00:00
2010-06-18 07:23:59 +00:00
from tools . translate import _
2010-01-06 15:24:08 +00:00
from osv import fields , osv
[imp] account, base_setup: move chart of accounts selection from base_setup installer to account's
Also remove it from account's config item as it's redundant
Rationale: account can be installed due to dependency chains, not just
direct installation from base_setup: project, stock, purchase and
profile_auction all depend on account, mrp depends on stock which
depends on account, so from base_setup's installer alone there are 5
different ways to end up with account installed and need to configure
charts of accounts.
Therefore having chart of accounts config in base_setup's installer is
dumb (as we need a second one anyway), and since it's (in a way) a
problem of module installation, the most coherent way is to move it to
account/installer.py, and remove it from the config screen where it
was (which becomes redundant).
Made it required, because it was required in the config item, not sure
it's actually mandatory to install a chart of accounts but whatever.
bzr revid: xmo@tinyerp.com-20100126140830-h4c7hlvmzzos69ls
2010-01-26 14:08:30 +00:00
import netsvc
2010-05-11 09:40:59 +00:00
import tools
2010-01-06 15:24:08 +00:00
class account_installer ( osv . osv_memory ) :
_name = ' account.installer '
_inherit = ' res.config.installer '
[imp] account, base_setup: move chart of accounts selection from base_setup installer to account's
Also remove it from account's config item as it's redundant
Rationale: account can be installed due to dependency chains, not just
direct installation from base_setup: project, stock, purchase and
profile_auction all depend on account, mrp depends on stock which
depends on account, so from base_setup's installer alone there are 5
different ways to end up with account installed and need to configure
charts of accounts.
Therefore having chart of accounts config in base_setup's installer is
dumb (as we need a second one anyway), and since it's (in a way) a
problem of module installation, the most coherent way is to move it to
account/installer.py, and remove it from the config screen where it
was (which becomes redundant).
Made it required, because it was required in the config item, not sure
it's actually mandatory to install a chart of accounts but whatever.
bzr revid: xmo@tinyerp.com-20100126140830-h4c7hlvmzzos69ls
2010-01-26 14:08:30 +00:00
def _get_charts ( self , cr , uid , context = None ) :
modules = self . pool . get ( ' ir.module.module ' )
2011-03-24 13:11:44 +00:00
ids = modules . search ( cr , uid , [ ( ' name ' , ' like ' , ' l10n_ ' ) ] , context = context )
2010-04-30 06:13:14 +00:00
charts = list (
[imp] account, base_setup: move chart of accounts selection from base_setup installer to account's
Also remove it from account's config item as it's redundant
Rationale: account can be installed due to dependency chains, not just
direct installation from base_setup: project, stock, purchase and
profile_auction all depend on account, mrp depends on stock which
depends on account, so from base_setup's installer alone there are 5
different ways to end up with account installed and need to configure
charts of accounts.
Therefore having chart of accounts config in base_setup's installer is
dumb (as we need a second one anyway), and since it's (in a way) a
problem of module installation, the most coherent way is to move it to
account/installer.py, and remove it from the config screen where it
was (which becomes redundant).
Made it required, because it was required in the config item, not sure
it's actually mandatory to install a chart of accounts but whatever.
bzr revid: xmo@tinyerp.com-20100126140830-h4c7hlvmzzos69ls
2010-01-26 14:08:30 +00:00
sorted ( ( ( m . name , m . shortdesc )
2010-12-13 06:43:09 +00:00
for m in modules . browse ( cr , uid , ids , context = context ) ) ,
[imp] account, base_setup: move chart of accounts selection from base_setup installer to account's
Also remove it from account's config item as it's redundant
Rationale: account can be installed due to dependency chains, not just
direct installation from base_setup: project, stock, purchase and
profile_auction all depend on account, mrp depends on stock which
depends on account, so from base_setup's installer alone there are 5
different ways to end up with account installed and need to configure
charts of accounts.
Therefore having chart of accounts config in base_setup's installer is
dumb (as we need a second one anyway), and since it's (in a way) a
problem of module installation, the most coherent way is to move it to
account/installer.py, and remove it from the config screen where it
was (which becomes redundant).
Made it required, because it was required in the config item, not sure
it's actually mandatory to install a chart of accounts but whatever.
bzr revid: xmo@tinyerp.com-20100126140830-h4c7hlvmzzos69ls
2010-01-26 14:08:30 +00:00
key = itemgetter ( 1 ) ) )
2010-10-21 09:19:25 +00:00
charts . insert ( 0 , ( ' configurable ' , ' Generic Chart Of Account ' ) )
2010-04-30 06:13:14 +00:00
return charts
[imp] account, base_setup: move chart of accounts selection from base_setup installer to account's
Also remove it from account's config item as it's redundant
Rationale: account can be installed due to dependency chains, not just
direct installation from base_setup: project, stock, purchase and
profile_auction all depend on account, mrp depends on stock which
depends on account, so from base_setup's installer alone there are 5
different ways to end up with account installed and need to configure
charts of accounts.
Therefore having chart of accounts config in base_setup's installer is
dumb (as we need a second one anyway), and since it's (in a way) a
problem of module installation, the most coherent way is to move it to
account/installer.py, and remove it from the config screen where it
was (which becomes redundant).
Made it required, because it was required in the config item, not sure
it's actually mandatory to install a chart of accounts but whatever.
bzr revid: xmo@tinyerp.com-20100126140830-h4c7hlvmzzos69ls
2010-01-26 14:08:30 +00:00
2010-01-06 15:24:08 +00:00
_columns = {
# Accounting
2010-10-15 09:00:41 +00:00
' charts ' : fields . selection ( _get_charts , ' Chart of Accounts ' ,
2010-09-01 12:26:56 +00:00
required = True ,
[imp] account, base_setup: move chart of accounts selection from base_setup installer to account's
Also remove it from account's config item as it's redundant
Rationale: account can be installed due to dependency chains, not just
direct installation from base_setup: project, stock, purchase and
profile_auction all depend on account, mrp depends on stock which
depends on account, so from base_setup's installer alone there are 5
different ways to end up with account installed and need to configure
charts of accounts.
Therefore having chart of accounts config in base_setup's installer is
dumb (as we need a second one anyway), and since it's (in a way) a
problem of module installation, the most coherent way is to move it to
account/installer.py, and remove it from the config screen where it
was (which becomes redundant).
Made it required, because it was required in the config item, not sure
it's actually mandatory to install a chart of accounts but whatever.
bzr revid: xmo@tinyerp.com-20100126140830-h4c7hlvmzzos69ls
2010-01-26 14:08:30 +00:00
help = " Installs localized accounting charts to match as closely as "
" possible the accounting needs of your company based on your "
" country. " ) ,
2010-04-30 06:13:14 +00:00
' date_start ' : fields . date ( ' Start Date ' , required = True ) ,
' date_stop ' : fields . date ( ' End Date ' , required = True ) ,
2010-10-20 05:13:53 +00:00
' period ' : fields . selection ( [ ( ' month ' , ' Monthly ' ) , ( ' 3months ' , ' 3 Monthly ' ) ] , ' Periods ' , required = True ) ,
2011-02-10 06:50:57 +00:00
' sale_tax ' : fields . float ( ' Sale Tax( % ) ' ) ,
' purchase_tax ' : fields . float ( ' Purchase Tax( % ) ' ) ,
2010-12-23 15:16:39 +00:00
' company_id ' : fields . many2one ( ' res.company ' , ' Company ' , required = True ) ,
2010-07-30 13:17:47 +00:00
}
2010-08-20 06:58:03 +00:00
2010-09-23 05:47:31 +00:00
def _default_company ( self , cr , uid , context = None ) :
2010-08-20 06:58:03 +00:00
user = self . pool . get ( ' res.users ' ) . browse ( cr , uid , uid , context = context )
2010-10-21 12:24:24 +00:00
return user . company_id and user . company_id . id or False
2010-08-20 06:58:03 +00:00
2010-09-23 05:47:31 +00:00
def _get_default_charts ( self , cr , uid , context = None ) :
2010-09-14 05:57:48 +00:00
module_name = False
company_id = self . _default_company ( cr , uid , context = context )
2010-10-20 05:13:53 +00:00
company = self . pool . get ( ' res.company ' ) . browse ( cr , uid , company_id , context = context )
2010-09-14 05:57:48 +00:00
address_id = self . pool . get ( ' res.partner ' ) . address_get ( cr , uid , [ company . partner_id . id ] )
if address_id [ ' default ' ] :
2010-10-20 05:13:53 +00:00
address = self . pool . get ( ' res.partner.address ' ) . browse ( cr , uid , address_id [ ' default ' ] , context = context )
2010-09-14 05:57:48 +00:00
code = address . country_id . code
module_name = ( code and ' l10n_ ' + code . lower ( ) ) or False
if module_name :
2010-10-20 05:13:53 +00:00
module_id = self . pool . get ( ' ir.module.module ' ) . search ( cr , uid , [ ( ' name ' , ' = ' , module_name ) ] , context = context )
2010-09-14 05:57:48 +00:00
if module_id :
return module_name
return ' configurable '
2010-01-06 15:24:08 +00:00
_defaults = {
2010-11-04 12:42:42 +00:00
' date_start ' : lambda * a : time . strftime ( ' % Y-01-01 ' ) ,
' date_stop ' : lambda * a : time . strftime ( ' % Y-12-31 ' ) ,
2010-10-18 15:13:12 +00:00
' period ' : ' month ' ,
2011-02-10 06:50:57 +00:00
' sale_tax ' : 0.0 ,
' purchase_tax ' : 0.0 ,
2010-08-20 06:58:03 +00:00
' company_id ' : _default_company ,
2010-09-14 05:57:48 +00:00
' charts ' : _get_default_charts
2010-07-30 13:17:47 +00:00
}
2010-12-24 12:59:47 +00:00
2010-12-10 09:40:23 +00:00
def fields_view_get ( self , cr , uid , view_id = None , view_type = ' form ' , context = None , toolbar = False , submenu = False ) :
res = super ( account_installer , self ) . fields_view_get ( cr , uid , view_id = view_id , view_type = view_type , context = context , toolbar = toolbar , submenu = False )
cmp_select = [ ]
company_ids = self . pool . get ( ' res.company ' ) . search ( cr , uid , [ ] , context = context )
2010-12-23 15:16:39 +00:00
#display in the widget selection of companies, only the companies that haven't been configured yet (but don't care about the demo chart of accounts)
cr . execute ( " SELECT company_id FROM account_account WHERE active = ' t ' AND account_account.parent_id IS NULL AND name != %s " , ( " Chart For Automated Tests " , ) )
configured_cmp = [ r [ 0 ] for r in cr . fetchall ( ) ]
2010-12-10 09:40:23 +00:00
unconfigured_cmp = list ( set ( company_ids ) - set ( configured_cmp ) )
2010-12-24 12:59:47 +00:00
for field in res [ ' fields ' ] :
2011-04-29 08:49:48 +00:00
if field == ' company_id ' :
res [ ' fields ' ] [ field ] [ ' domain ' ] = unconfigured_cmp
res [ ' fields ' ] [ field ] [ ' selection ' ] = [ ( ' ' , ' ' ) ]
if unconfigured_cmp :
cmp_select = [ ( line . id , line . name ) for line in self . pool . get ( ' res.company ' ) . browse ( cr , uid , unconfigured_cmp ) ]
res [ ' fields ' ] [ field ] [ ' selection ' ] = cmp_select
2010-12-10 09:40:23 +00:00
return res
[imp] account, base_setup: move chart of accounts selection from base_setup installer to account's
Also remove it from account's config item as it's redundant
Rationale: account can be installed due to dependency chains, not just
direct installation from base_setup: project, stock, purchase and
profile_auction all depend on account, mrp depends on stock which
depends on account, so from base_setup's installer alone there are 5
different ways to end up with account installed and need to configure
charts of accounts.
Therefore having chart of accounts config in base_setup's installer is
dumb (as we need a second one anyway), and since it's (in a way) a
problem of module installation, the most coherent way is to move it to
account/installer.py, and remove it from the config screen where it
was (which becomes redundant).
Made it required, because it was required in the config item, not sure
it's actually mandatory to install a chart of accounts but whatever.
bzr revid: xmo@tinyerp.com-20100126140830-h4c7hlvmzzos69ls
2010-01-26 14:08:30 +00:00
2011-02-10 06:50:57 +00:00
def on_change_tax ( self , cr , uid , id , tax ) :
return { ' value ' : { ' purchase_tax ' : tax } }
2010-05-13 11:50:52 +00:00
2010-09-23 05:47:31 +00:00
def on_change_start_date ( self , cr , uid , id , start_date = False ) :
2010-04-30 06:13:14 +00:00
if start_date :
start_date = datetime . datetime . strptime ( start_date , " % Y- % m- %d " )
end_date = ( start_date + relativedelta ( months = 12 ) ) - relativedelta ( days = 1 )
2010-10-20 05:13:53 +00:00
return { ' value ' : { ' date_stop ' : end_date . strftime ( ' % Y- % m- %d ' ) } }
2010-04-30 06:13:14 +00:00
return { }
def execute ( self , cr , uid , ids , context = None ) :
2010-08-13 04:12:51 +00:00
if context is None :
context = { }
2010-09-08 08:03:49 +00:00
fy_obj = self . pool . get ( ' account.fiscalyear ' )
2010-09-22 12:46:46 +00:00
mod_obj = self . pool . get ( ' ir.model.data ' )
2011-02-25 13:44:24 +00:00
obj_acc_temp = self . pool . get ( ' account.account.template ' )
obj_tax_code_temp = self . pool . get ( ' account.tax.code.template ' )
obj_tax_temp = self . pool . get ( ' account.tax.template ' )
obj_acc_chart_temp = self . pool . get ( ' account.chart.template ' )
2010-05-05 04:53:49 +00:00
record = self . browse ( cr , uid , ids , context = context ) [ 0 ]
2010-10-21 09:19:25 +00:00
for res in self . read ( cr , uid , ids , context = context ) :
2010-05-11 09:40:59 +00:00
if record . charts == ' configurable ' :
2010-10-21 09:19:25 +00:00
fp = tools . file_open ( opj ( ' account ' , ' configurable_account_chart.xml ' ) )
tools . convert_xml_import ( cr , ' account ' , fp , { } , ' init ' , True , None )
2010-05-11 09:40:59 +00:00
fp . close ( )
2011-02-10 06:50:57 +00:00
s_tax = ( res . get ( ' sale_tax ' , 0.0 ) ) / 100
p_tax = ( res . get ( ' purchase_tax ' , 0.0 ) ) / 100
pur_temp_tax = mod_obj . get_object_reference ( cr , uid , ' account ' , ' tax_code_base_purchases ' )
pur_temp_tax_id = pur_temp_tax and pur_temp_tax [ 1 ] or False
2011-03-03 14:59:00 +00:00
pur_temp_tax_paid = mod_obj . get_object_reference ( cr , uid , ' account ' , ' tax_code_output ' )
2011-02-10 06:50:57 +00:00
pur_temp_tax_paid_id = pur_temp_tax_paid and pur_temp_tax_paid [ 1 ] or False
sale_temp_tax = mod_obj . get_object_reference ( cr , uid , ' account ' , ' tax_code_base_sales ' )
sale_temp_tax_id = sale_temp_tax and sale_temp_tax [ 1 ] or False
2011-03-03 14:59:00 +00:00
sale_temp_tax_paid = mod_obj . get_object_reference ( cr , uid , ' account ' , ' tax_code_input ' )
2011-02-10 06:50:57 +00:00
sale_temp_tax_paid_id = sale_temp_tax_paid and sale_temp_tax_paid [ 1 ] or False
2011-02-25 13:44:24 +00:00
chart_temp_ids = obj_acc_chart_temp . search ( cr , uid , [ ( ' name ' , ' = ' , ' Configurable Account Chart Template ' ) ] , context = context )
chart_temp_id = chart_temp_ids and chart_temp_ids [ 0 ] or False
2011-03-03 14:59:00 +00:00
if s_tax * 100 > 0.0 :
2011-02-25 13:44:24 +00:00
tax_account_ids = obj_acc_temp . search ( cr , uid , [ ( ' name ' , ' = ' , ' Tax Received ' ) ] , context = context )
2011-02-10 06:50:57 +00:00
sales_tax_account_id = tax_account_ids and tax_account_ids [ 0 ] or False
2011-02-25 13:44:24 +00:00
vals_tax_code_temp = {
2011-03-03 14:59:00 +00:00
' name ' : _ ( ' TAX %s %% ' ) % ( s_tax * 100 ) ,
' code ' : _ ( ' TAX %s %% ' ) % ( s_tax * 100 ) ,
2011-02-25 13:44:24 +00:00
' parent_id ' : sale_temp_tax_id
2011-02-10 06:50:57 +00:00
}
2011-02-25 13:44:24 +00:00
new_tax_code_temp = obj_tax_code_temp . create ( cr , uid , vals_tax_code_temp , context = context )
vals_paid_tax_code_temp = {
2011-03-03 14:59:00 +00:00
' name ' : _ ( ' TAX Received %s %% ' ) % ( s_tax * 100 ) ,
' code ' : _ ( ' TAX Received %s %% ' ) % ( s_tax * 100 ) ,
2011-02-25 13:44:24 +00:00
' parent_id ' : sale_temp_tax_paid_id
}
new_paid_tax_code_temp = obj_tax_code_temp . create ( cr , uid , vals_paid_tax_code_temp , context = context )
sales_tax_temp = obj_tax_temp . create ( cr , uid , {
2011-03-03 14:59:00 +00:00
' name ' : _ ( ' TAX %s %% ' ) % ( s_tax * 100 ) ,
2011-02-10 06:50:57 +00:00
' amount ' : s_tax ,
2011-02-25 13:44:24 +00:00
' base_code_id ' : new_tax_code_temp ,
' tax_code_id ' : new_paid_tax_code_temp ,
' ref_base_code_id ' : new_tax_code_temp ,
' ref_tax_code_id ' : new_paid_tax_code_temp ,
2011-02-10 06:50:57 +00:00
' type_tax_use ' : ' sale ' ,
2011-02-25 13:44:24 +00:00
' type ' : ' percent ' ,
2011-03-03 14:59:00 +00:00
' sequence ' : 0 ,
2011-02-10 06:50:57 +00:00
' account_collected_id ' : sales_tax_account_id ,
2011-02-25 13:44:24 +00:00
' account_paid_id ' : sales_tax_account_id ,
' chart_template_id ' : chart_temp_id ,
} , context = context )
2011-03-03 14:59:00 +00:00
if p_tax * 100 > 0.0 :
2011-02-25 13:44:24 +00:00
tax_account_ids = obj_acc_temp . search ( cr , uid , [ ( ' name ' , ' = ' , ' Tax Paid ' ) ] , context = context )
2011-02-10 06:50:57 +00:00
purchase_tax_account_id = tax_account_ids and tax_account_ids [ 0 ] or False
2011-02-25 13:44:24 +00:00
vals_tax_code_temp = {
2011-03-03 14:59:00 +00:00
' name ' : _ ( ' TAX %s %% ' ) % ( p_tax * 100 ) ,
' code ' : _ ( ' TAX %s %% ' ) % ( p_tax * 100 ) ,
2011-02-25 13:44:24 +00:00
' parent_id ' : pur_temp_tax_id
2011-02-10 06:50:57 +00:00
}
2011-02-25 13:44:24 +00:00
new_tax_code_temp = obj_tax_code_temp . create ( cr , uid , vals_tax_code_temp , context = context )
vals_paid_tax_code_temp = {
2011-03-03 14:59:00 +00:00
' name ' : _ ( ' TAX Paid %s %% ' ) % ( p_tax * 100 ) ,
' code ' : _ ( ' TAX Paid %s %% ' ) % ( p_tax * 100 ) ,
2011-02-25 13:44:24 +00:00
' parent_id ' : pur_temp_tax_paid_id
2011-02-10 06:50:57 +00:00
}
2011-02-25 13:44:24 +00:00
new_paid_tax_code_temp = obj_tax_code_temp . create ( cr , uid , vals_paid_tax_code_temp , context = context )
purchase_tax_temp = obj_tax_temp . create ( cr , uid , {
2011-03-03 14:59:00 +00:00
' name ' : _ ( ' TAX %s %% ' ) % ( p_tax * 100 ) ,
' description ' : _ ( ' TAX %s %% ' ) % ( p_tax * 100 ) ,
2011-02-10 06:50:57 +00:00
' amount ' : p_tax ,
2011-02-25 13:44:24 +00:00
' base_code_id ' : new_tax_code_temp ,
' tax_code_id ' : new_paid_tax_code_temp ,
' ref_base_code_id ' : new_tax_code_temp ,
' ref_tax_code_id ' : new_paid_tax_code_temp ,
' type_tax_use ' : ' purchase ' ,
' type ' : ' percent ' ,
2011-03-03 14:59:00 +00:00
' sequence ' : 0 ,
2011-02-25 13:44:24 +00:00
' account_collected_id ' : purchase_tax_account_id ,
' account_paid_id ' : purchase_tax_account_id ,
' chart_template_id ' : chart_temp_id ,
} , context = context )
2011-02-10 06:50:57 +00:00
2010-05-03 10:28:01 +00:00
if ' date_start ' in res and ' date_stop ' in res :
2011-03-16 09:48:46 +00:00
f_ids = fy_obj . search ( cr , uid , [ ( ' date_start ' , ' <= ' , res [ ' date_start ' ] ) , ( ' date_stop ' , ' >= ' , res [ ' date_stop ' ] ) , ( ' company_id ' , ' = ' , res [ ' company_id ' ] [ 0 ] ) ] , context = context )
2010-09-08 09:32:25 +00:00
if not f_ids :
name = code = res [ ' date_start ' ] [ : 4 ]
if int ( name ) != int ( res [ ' date_stop ' ] [ : 4 ] ) :
name = res [ ' date_start ' ] [ : 4 ] + ' - ' + res [ ' date_stop ' ] [ : 4 ]
code = res [ ' date_start ' ] [ 2 : 4 ] + ' - ' + res [ ' date_stop ' ] [ 2 : 4 ]
2010-10-21 09:19:25 +00:00
vals = {
' name ' : name ,
' code ' : code ,
' date_start ' : res [ ' date_start ' ] ,
' date_stop ' : res [ ' date_stop ' ] ,
2011-03-16 09:48:46 +00:00
' company_id ' : res [ ' company_id ' ] [ 0 ]
2010-10-21 09:19:25 +00:00
}
2010-09-08 10:43:18 +00:00
fiscal_id = fy_obj . create ( cr , uid , vals , context = context )
2010-09-08 09:32:25 +00:00
if res [ ' period ' ] == ' month ' :
2010-09-08 10:43:18 +00:00
fy_obj . create_period ( cr , uid , [ fiscal_id ] )
2010-09-08 09:32:25 +00:00
elif res [ ' period ' ] == ' 3months ' :
2010-09-08 10:43:18 +00:00
fy_obj . create_period3 ( cr , uid , [ fiscal_id ] )
2011-05-23 09:11:25 +00:00
super ( account_installer , self ) . execute ( cr , uid , ids , context = context )
2010-08-20 06:58:03 +00:00
[imp] account, base_setup: move chart of accounts selection from base_setup installer to account's
Also remove it from account's config item as it's redundant
Rationale: account can be installed due to dependency chains, not just
direct installation from base_setup: project, stock, purchase and
profile_auction all depend on account, mrp depends on stock which
depends on account, so from base_setup's installer alone there are 5
different ways to end up with account installed and need to configure
charts of accounts.
Therefore having chart of accounts config in base_setup's installer is
dumb (as we need a second one anyway), and since it's (in a way) a
problem of module installation, the most coherent way is to move it to
account/installer.py, and remove it from the config screen where it
was (which becomes redundant).
Made it required, because it was required in the config item, not sure
it's actually mandatory to install a chart of accounts but whatever.
bzr revid: xmo@tinyerp.com-20100126140830-h4c7hlvmzzos69ls
2010-01-26 14:08:30 +00:00
def modules_to_install ( self , cr , uid , ids , context = None ) :
modules = super ( account_installer , self ) . modules_to_install (
cr , uid , ids , context = context )
chart = self . read ( cr , uid , ids , [ ' charts ' ] ,
context = context ) [ 0 ] [ ' charts ' ]
self . logger . notifyChannel (
' installer ' , netsvc . LOG_DEBUG ,
' Installing chart of accounts %s ' % chart )
return modules | set ( [ chart ] )
2010-01-06 15:24:08 +00:00
account_installer ( )
2010-05-05 04:53:49 +00:00
2010-08-13 03:55:27 +00:00
class account_installer_modules ( osv . osv_memory ) :
2011-06-06 06:48:42 +00:00
_inherit = ' base.setup.installer '
2010-08-13 03:55:27 +00:00
_columns = {
2010-10-15 09:00:41 +00:00
' account_analytic_plans ' : fields . boolean ( ' Multiple Analytic Plans ' ,
2010-08-13 03:55:27 +00:00
help = " Allows invoice lines to impact multiple analytic accounts "
" simultaneously. " ) ,
2010-10-15 09:00:41 +00:00
' account_payment ' : fields . boolean ( ' Suppliers Payment Management ' ,
2010-08-13 03:55:27 +00:00
help = " Streamlines invoice payment and creates hooks to plug "
" automated payment systems in. " ) ,
2010-10-15 09:00:41 +00:00
' account_followup ' : fields . boolean ( ' Followups Management ' ,
2010-08-13 03:55:27 +00:00
help = " Helps you generate reminder letters for unpaid invoices, "
" including multiple levels of reminding and customized "
" per-partner policies. " ) ,
2010-09-01 12:26:56 +00:00
' account_anglo_saxon ' : fields . boolean ( ' Anglo-Saxon Accounting ' ,
help = " This module will support the Anglo-Saxons accounting methodology by "
" changing the accounting logic with stock transactions. " ) ,
2011-07-11 11:19:13 +00:00
' account_asset ' : fields . boolean ( ' Assets Management ' ,
help = " Helps you to manage your assets and their depreciation entries. " ) ,
2010-09-23 05:47:31 +00:00
}
2010-08-13 03:55:27 +00:00
account_installer_modules ( )
2010-11-04 12:08:52 +00:00
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: