[IMP] account.config.settings: add field 'expects chart of accounts' on company, and improve layout and dynamics of wizard

bzr revid: rco@openerp.com-20120402075237-5zrqd5p0s6hbqtrx
This commit is contained in:
Raphael Collet 2012-04-02 09:52:37 +02:00
parent 1aad2cd28d
commit 3a3d24f396
3 changed files with 54 additions and 63 deletions

View File

@ -24,6 +24,7 @@ from osv import fields, osv
class res_company(osv.osv):
_inherit = "res.company"
_columns = {
'expects_chart_of_accounts': fields.boolean('Expects a Chart of Accounts'),
'paypal_account': fields.char("Paypal Account", size=128, help="Paypal username (usually email) for receiving online payments."),
'overdue_msg': fields.text('Overdue Payments Message', translate=True),
'property_reserve_and_surplus_account': fields.property(
@ -37,6 +38,7 @@ class res_company(osv.osv):
}
_defaults = {
'expects_chart_of_accounts': True,
'overdue_msg': '''Our records indicate that the following payments are still due. If the amount
has already been paid, please disregard this notice. However, if you have any
queries regarding your account, please contact us.

View File

@ -37,6 +37,8 @@ class account_config_settings(osv.osv_memory):
'company_id': fields.many2one('res.company', 'Company', required=True),
'has_default_company': fields.boolean('Has default company', readonly=True),
'expects_chart_of_accounts': fields.related('company_id', 'expects_chart_of_accounts', type='boolean',
string='Chart of Accounts for this Company'),
'currency_id': fields.related('company_id', 'currency_id', type='many2one', relation='res.currency',
string='Main currency', help="Main currency of the company."),
'paypal_account': fields.related('company_id', 'paypal_account', type='char', size=128,
@ -44,7 +46,7 @@ class account_config_settings(osv.osv_memory):
'company_footer': fields.related('company_id', 'rml_footer2', type='char', size=250, readonly=True,
string='Footer of reports', help="Footer of reports based on your bank accounts."),
'has_account_chart': fields.boolean('Has a chart of accounts'),
'has_chart_of_accounts': fields.boolean('Company has a chart of accounts'),
'chart_template_id': fields.many2one('account.chart.template', 'Chart Template', domain="[('visible','=', True)]"),
'code_digits': fields.integer('# of Digits', help="No. of Digits to use for account code"),
'seq_journal': fields.boolean('Separated Journal Sequences', help="Check this box if you want to use a different sequence for each created journal. Otherwise, all will use the same sequence."),
@ -54,7 +56,7 @@ class account_config_settings(osv.osv_memory):
'purchase_tax_rate': fields.float('Purchase Tax (%)'),
'complete_tax_set': fields.boolean('Complete Set of Taxes', help='This boolean helps you to choose if you want to propose to the user to encode the sales and purchase rates or use the usual m2o fields. This last choice assumes that the set of tax defined for the chosen template is complete'),
'has_fiscal_year': fields.boolean('Has a fiscal year'),
'has_fiscal_year': fields.boolean('Company has a fiscal year'),
'date_start': fields.date('Start Date', required=True),
'date_stop': fields.date('End Date', required=True),
'period': fields.selection([('month', 'Monthly'), ('3months','3 Monthly')], 'Periods', required=True),
@ -141,28 +143,21 @@ class account_config_settings(osv.osv_memory):
'period': 'month',
}
def set_default_taxes(self, cr, uid, ids, context=None):
ir_values = self.pool.get('ir.values')
config = self.browse(cr, uid, ids[0], context)
ir_values.set_default(cr, uid, 'product.product', 'taxes_id',
config.default_sale_tax and [config.default_sale_tax.id] or False, company_id=config.company_id.id)
ir_values.set_default(cr, uid, 'product.product', 'supplier_taxes_id',
config.default_purchase_tax and [config.default_purchase_tax.id] or False, company_id=config.company_id.id)
def onchange_company_id(self, cr, uid, ids, company_id):
# update related fields
company = self.pool.get('res.company').browse(cr, uid, company_id)
has_account_chart = company_id not in self.pool.get('account.installer').get_unconfigured_cmp(cr, uid)
has_fiscal_year = self.pool.get('account.fiscalyear').search_count(cr, uid,
has_chart_of_accounts = company_id not in self.pool.get('account.installer').get_unconfigured_cmp(cr, uid)
fiscalyear_count = self.pool.get('account.fiscalyear').search_count(cr, uid,
[('date_start', '<=', time.strftime('%Y-%m-%d')), ('date_stop', '>=', time.strftime('%Y-%m-%d')),
('company_id', '=', company_id)])
values = {
'expects_chart_of_accounts': company.expects_chart_of_accounts,
'currency_id': company.currency_id.id,
'paypal_account': company.paypal_account,
'company_footer': company.rml_footer2,
'has_account_chart': has_account_chart,
'complete_tax_set': has_account_chart,
'has_fiscal_year': has_fiscal_year,
'has_chart_of_accounts': has_chart_of_accounts,
'has_fiscal_year': bool(fiscalyear_count),
'chart_template_id': False,
}
# update journals and sequences
for journal_type in ('sale', 'sale_refund', 'purchase', 'purchase_refund'):
@ -194,6 +189,7 @@ class account_config_settings(osv.osv_memory):
'sale_tax_rate': 15, 'purchase_tax_rate': 15,
}}
if chart_template_id:
# update complete_tax_set, sale_tax and purchase_tax
chart_template = self.pool.get('account.chart.template').browse(cr, uid, chart_template_id, context=context)
res['value'].update({'complete_tax_set': chart_template.complete_tax_set})
if chart_template.complete_tax_set:
@ -220,40 +216,43 @@ class account_config_settings(osv.osv_memory):
def onchange_tax_rate(self, cr, uid, ids, rate, context=None):
return {'value': {'purchase_tax_rate': rate or False}}
def install_chartofaccounts(self, cr, uid, ids, context=None):
def set_default_taxes(self, cr, uid, ids, context=None):
""" set default sale and purchase taxes for products """
ir_values = self.pool.get('ir.values')
config = self.browse(cr, uid, ids[0], context)
ir_values.set_default(cr, uid, 'product.product', 'taxes_id',
config.default_sale_tax and [config.default_sale_tax.id] or False, company_id=config.company_id.id)
ir_values.set_default(cr, uid, 'product.product', 'supplier_taxes_id',
config.default_purchase_tax and [config.default_purchase_tax.id] or False, company_id=config.company_id.id)
def set_chart_of_accounts(self, cr, uid, ids, context=None):
""" install a chart of accounts for the given company (if required) """
config = self.browse(cr, uid, ids[0], context)
if config.chart_template_id:
assert config.expects_chart_of_accounts and not config.has_chart_of_accounts
wizard = self.pool.get('wizard.multi.charts.accounts')
wizard_id = wizard.create(cr, uid, {
'company_id': config.company_id.id,
'chart_template_id': config.chart_template_id.id,
'code_digits': config.code_digits or 6,
'seq_journal': config.seq_journal,
'sale_tax': config.sale_tax.id,
'purchase_tax': config.purchase_tax.id,
'sale_tax_rate': config.sale_tax_rate,
'purchase_tax_rate': config.purchase_tax_rate,
'complete_tax_set': config.complete_tax_set,
}, context)
'company_id': config.company_id.id,
'chart_template_id': config.chart_template_id.id,
'code_digits': config.code_digits or 6,
'seq_journal': config.seq_journal,
'sale_tax': config.sale_tax.id,
'purchase_tax': config.purchase_tax.id,
'sale_tax_rate': config.sale_tax_rate,
'purchase_tax_rate': config.purchase_tax_rate,
'complete_tax_set': config.complete_tax_set,
}, context)
wizard.execute(cr, uid, [wizard_id], context)
self.configure_fiscalyear(cr, uid, ids, context)
# reopen the current wizard to refresh the view
return {
'type': 'ir.actions.act_window',
'res_model': 'account.config.settings',
'view_type': 'form',
'view_mode': 'form',
'context': str({'default_company_id': config.company_id.id}),
}
def configure_fiscalyear(self, cr, uid, ids, context=None):
def set_fiscalyear(self, cr, uid, ids, context=None):
""" create a fiscal year for the given company (if necessary) """
config = self.browse(cr, uid, ids[0], context)
fy_obj = self.pool.get('account.fiscalyear')
fy_count = fy_obj.search_count(cr, uid,
fiscalyear = self.pool.get('account.fiscalyear')
fiscalyear_count = fiscalyear.search_count(cr, uid,
[('date_start', '<=', config.date_start), ('date_stop', '>=', config.date_stop),
('company_id', '=', config.company_id.id)],
context=context)
if not fy_count:
if not fiscalyear_count:
name = code = config.date_start[:4]
if int(name) != int(config.date_stop[:4]):
name = config.date_start[:4] +'-'+ config.date_stop[:4]
@ -265,18 +264,10 @@ class account_config_settings(osv.osv_memory):
'date_stop': config.date_stop,
'company_id': config.company_id.id,
}
fiscal_id = fy_obj.create(cr, uid, vals, context=context)
fiscalyear_id = fiscalyear.create(cr, uid, vals, context=context)
if config.period == 'month':
fy_obj.create_period(cr, uid, [fiscal_id])
fiscalyear.create_period(cr, uid, [fiscalyear_id])
elif config.period == '3months':
fy_obj.create_period3(cr, uid, [fiscal_id])
# reopen the current wizard to refresh the view
return {
'type': 'ir.actions.act_window',
'res_model': 'account.config.settings',
'view_type': 'form',
'view_mode': 'form',
'context': str({'default_company_id': config.company_id.id}),
}
fiscalyear.create_period3(cr, uid, [fiscalyear_id])
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -11,30 +11,28 @@
<field name="has_default_company" invisible="1" />
<field name="company_id" widget="selection" on_change="onchange_company_id(company_id)"
attrs="{'invisible': [('has_default_company', '=', True)]}"/>
<field name="expects_chart_of_accounts"/>
<field name="has_account_chart" invisible="1"/>
<group string="Configure your Chart of Accounts" colspan="4" attrs="{'invisible': [('has_account_chart','=',True)]}">
<label string="You have no chart of accounts or taxes defined for this company. Please select a chart of accounts to proceed." colspan="4"/>
<field name="has_chart_of_accounts" invisible="1"/>
<group string="No Chart of Accounts exists for this Company" colspan="4" attrs="{'invisible': ['|', ('expects_chart_of_accounts','=',False), ('has_chart_of_accounts','=',True)]}">
<label string="Please select a chart template to install a chart of accounts." colspan="4"/>
<field name="chart_template_id" widget="selection" on_change="onchange_chart_template_id(chart_template_id)" domain="[('visible','=', True)]"/>
<button string="Other Chart Templates" icon="gtk-jump-to"
name="%(action_account_configuration_installer)d" type="action" context="{'default_company_id': company_id}"/>
<button name="install_chartofaccounts" string="Create Chart of Accounts" icon="gtk-execute" type="object"/>
<field name ="code_digits" groups="account.group_account_user"/>
<field name ="seq_journal" groups="base.group_extended"/>
<newline/>
<field name ="complete_tax_set" invisible="1"/>
<field name="sale_tax" attrs="{'invisible': [('complete_tax_set', '!=', True)]}" domain="[('chart_template_id', '=', chart_template_id),('parent_id','=',False),('type_tax_use','in',('sale','all'))]"/>
<field name="purchase_tax" attrs="{'invisible': [('complete_tax_set', '!=', True)]}" domain="[('chart_template_id', '=', chart_template_id),('parent_id','=',False),('type_tax_use','in',('purchase', 'all'))]"/>
<field name ="sale_tax_rate" attrs="{'invisible': [('complete_tax_set', '=', True)]}" on_change="onchange_tax_rate(sale_tax_rate)"/>
<field name ="purchase_tax_rate" attrs="{'invisible': [('complete_tax_set', '=', True)]}"/>
<field name="sale_tax" attrs="{'invisible': ['|', ('chart_template_id','=',False), ('complete_tax_set','=',False)]}"
domain="[('chart_template_id', '=', chart_template_id),('parent_id','=',False),('type_tax_use','in',('sale','all'))]"/>
<field name="purchase_tax" attrs="{'invisible': ['|', ('chart_template_id','=',False), ('complete_tax_set','=',False)]}"
domain="[('chart_template_id', '=', chart_template_id),('parent_id','=',False),('type_tax_use','in',('purchase', 'all'))]"/>
<field name ="sale_tax_rate" attrs="{'invisible': ['|', ('chart_template_id','=',False), ('complete_tax_set','=',True)]}" on_change="onchange_tax_rate(sale_tax_rate)"/>
<field name ="purchase_tax_rate" attrs="{'invisible': ['|', ('chart_template_id','=',False), ('complete_tax_set','=',True)]}"/>
</group>
<field name="has_fiscal_year" invisible="1"/>
<group string="Configure your Fiscal Year" colspan="4" attrs="{'invisible': [('has_fiscal_year','=',True)]}">
<group colspan="4">
<label string="You have no fiscal year/period open for this date."/>
<button name="configure_fiscalyear" string="Configure" icon="gtk-execute" type="object"/>
</group>
<group string="No Fiscal Year exists for this Company" colspan="4" attrs="{'invisible': ['|', ('expects_chart_of_accounts','=',False), ('has_fiscal_year','=',True)]}">
<field name="date_start" on_change="on_change_start_date(date_start)"/>
<field name="date_stop"/>
<field name="period" colspan="4"/>