[ADD,IMP]:account chart for configurable chart and improvements

bzr revid: nch@tinyerp.com-20100511094059-oiz2eyhw54su4lus
This commit is contained in:
nch@tinyerp.com 2010-05-11 15:10:59 +05:30
parent de0f1d7863
commit b16cec65d2
17 changed files with 830 additions and 70 deletions

View File

@ -26,19 +26,15 @@
<xpath expr='//separator[@string="vsep"]' position='attributes'>
<attribute name='rowspan'>23</attribute>
<attribute name='string'></attribute>
</xpath>
<xpath expr='//group[@string="progress"]' position='attributes'>
<attribute name='width'>190</attribute>
<attribute name='string'></attribute>
</xpath>
<group colspan="8">
<group colspan="4" height="450" width="600">
<field name="charts"/>
<group colspan="4" attrs="{'invisible':[('charts','!=','l10n_chart_configurable')]}">
<group colspan="4" attrs="{'invisible':[('charts','!=','configurable')]}">
<field name="sale_tax" colspan="2"/>
<field name="purchase_tax" colspan="2"/>
</group>
<group colspan="4" attrs="{'invisible':[('charts','!=','l10n_chart_configurable')]}">
<group colspan="4" attrs="{'invisible':[('charts','!=','configurable')]}">
<separator col="4" colspan="4" string="Bank and Cost Account"/>
<field colspan="4" mode="tree" name="bank_accounts_id" nolabel="1" widget="one2many_list">
<form string="Bank Information">

View File

@ -0,0 +1,516 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<!-- Types -->
<record model="account.account.type" id="conf_account_type_receivable" >
<field name="name">Receivable</field>
<field name="code">receivable</field>
<field name="close_method">unreconciled</field>
</record>
<record model="account.account.type" id="conf_account_type_payable" >
<field name="name">Payable</field>
<field name="code">payable</field>
<field name="close_method">unreconciled</field>
</record>
<record model="account.account.type" id="conf_account_type_view">
<field name="name">View</field>
<field name="code">view</field>
<field name="close_method">none</field>
</record>
<record model="account.account.type" id="conf_account_type_income" >
<field name="name">Income</field>
<field name="code">income</field>
<field name="close_method">none</field>
</record>
<record model="account.account.type" id="conf_account_type_expense">
<field name="name">Expense</field>
<field name="code">expense</field>
<field name="close_method">none</field>
</record>
<record model="account.account.type" id="conf_account_type_tax">
<field name="name">Tax</field>
<field name="code">tax</field>
<field name="close_method">unreconciled</field>
</record>
<record model="account.account.type" id="conf_account_type_cash">
<field name="name">Cash</field>
<field name="code">cash</field>
<field name="close_method">balance</field>
</record>
<record model="account.account.type" id="conf_account_type_asset">
<field name="name">Asset</field>
<field name="code">asset</field>
<field name="close_method">balance</field>
</record>
<record model="account.account.type" id="conf_account_type_equity">
<field name="name">Equity</field>
<field name="code">equity</field>
<field name="close_method">balance</field>
</record>
<record model="account.account.type" id="conf_account_type_bnk">
<field name="name">Bank</field>
<field name="code">bank</field>
<field name="close_method">balance</field>
</record>
<record model="account.account.type" id="conf_account_type_chk">
<field name="name">Check</field>
<field name="code">check</field>
<field name="close_method">balance</field>
</record>
<!-- Account Templates-->
<record id="conf_chart0" model="account.account.template">
<field name="code">0</field>
<field name="name">Configurable Account Chart</field>
<field eval="0" name="parent_id"/>
<field name="type">view</field>
<field name="user_type" ref="conf_account_type_view"/>
</record>
<!-- Balance Sheet -->
<record id="conf_bal" model="account.account.template">
<field name="code">1</field>
<field name="name">Balance Sheet</field>
<field ref="conf_chart0" name="parent_id"/>
<field name="type">view</field>
<field name="user_type" ref="conf_account_type_view"/>
</record>
<record id="conf_fas" model="account.account.template">
<field name="code">10</field>
<field name="name">Fixed Assets</field>
<field ref="conf_bal" name="parent_id"/>
<field name="type">view</field>
<field name="user_type" ref="conf_account_type_view"/>
</record>
<record id="conf_xfa" model="account.account.template">
<field name="code">100</field>
<field name="name">Fixed Asset Account</field>
<field ref="conf_fas" name="parent_id"/>
<field name="type">other</field>
<field name="user_type" ref="conf_account_type_asset"/>
</record>
<record id="conf_nca" model="account.account.template">
<field name="code">11</field>
<field name="name">Net Current Assets</field>
<field ref="conf_bal" name="parent_id"/>
<field name="type">view</field>
<field name="user_type" ref="conf_account_type_view"/>
</record>
<record id="conf_cas" model="account.account.template">
<field name="code">110</field>
<field name="name">Current Assets</field>
<field ref="conf_nca" name="parent_id"/>
<field name="type">view</field>
<field name="user_type" ref="conf_account_type_view"/>
</record>
<record id="conf_stk" model="account.account.template">
<field name="code">1101</field>
<field name="name">Purchased Stocks</field>
<field ref="conf_cas" name="parent_id"/>
<field name="type">other</field>
<field name="user_type" ref="conf_account_type_asset"/>
</record>
<record id="conf_a_recv" model="account.account.template">
<field name="code">1102</field>
<field name="name">Debtors</field>
<field ref="conf_cas" name="parent_id"/>
<field name="type">receivable</field>
<field eval="True" name="reconcile"/>
<field name="user_type" ref="conf_account_type_receivable"/>
</record>
<!-- <record id="account.property_account_receivable" model="ir.property">
<field eval="'account.account,'+str(a_recv)" name="value"/>
</record> -->
<record id="conf_ova" model="account.account.template">
<field name="code">1103</field>
<field name="name">Output VAT</field>
<field ref="conf_cas" name="parent_id"/>
<field name="type">other</field>
<field name="user_type" ref="conf_account_type_tax"/>
</record>
<record id="conf_bnk" model="account.account.template">
<field name="code">1104</field>
<field name="name">Bank Current Account</field>
<field ref="conf_cas" name="parent_id"/>
<field name="type">other</field>
<field name="user_type" ref="conf_account_type_cash"/>
</record>
<record id="conf_cash" model="account.account.template">
<field name="code">1105</field>
<field name="name">Cash</field>
<field ref="conf_cas" name="parent_id"/>
<field name="type">other</field>
<field name="user_type" ref="conf_account_type_cash"/>
</record>
<record id="conf_cli" model="account.account.template">
<field name="code">111</field>
<field name="name">Current Liabilities</field>
<field ref="conf_nca" name="parent_id"/>
<field name="type">view</field>
<field name="user_type" ref="conf_account_type_view"/>
</record>
<record id="conf_a_pay" model="account.account.template">
<field name="code">1111</field>
<field name="name">Creditors</field>
<field ref="conf_cli" name="parent_id"/>
<field name="type">payable</field>
<field eval="True" name="reconcile"/>
<field name="user_type" ref="conf_account_type_payable"/>
</record>
<!-- <record id="account.property_account_payable" model="ir.property">
<field eval="'account.account,'+str(a_pay)" name="value"/>
</record>-->
<record id="conf_iva" model="account.account.template">
<field name="code">1112</field>
<field name="name">Input VAT</field>
<field ref="conf_cli" name="parent_id"/>
<field name="type">other</field>
<field name="user_type" ref="conf_account_type_tax"/>
</record>
<!-- Profit and Loss -->
<record id="conf_gpf" model="account.account.template">
<field name="code">2</field>
<field name="name">Profit and Loss</field>
<field ref="conf_chart0" name="parent_id"/>
<field name="type">view</field>
<field name="user_type" ref="conf_account_type_view"/>
</record>
<record id="conf_rev" model="account.account.template">
<field name="code">20</field>
<field name="name">Revenue</field>
<field ref="conf_gpf" name="parent_id"/>
<field name="type">view</field>
<field name="user_type" ref="conf_account_type_view"/>
</record>
<record id="conf_a_sale" model="account.account.template">
<field name="code">200</field>
<field name="name">Product Sales</field>
<field ref="conf_rev" name="parent_id"/>
<field name="type">other</field>
<field name="user_type" ref="conf_account_type_income"/>
</record>
<!-- <record id="account.property_account_income_categ" model="ir.property">
<field eval="'account.account,'+str(a_sale)" name="value"/>
</record> -->
<record id="conf_cos" model="account.account.template">
<field name="code">21</field>
<field name="name">Cost of Sales</field>
<field ref="conf_gpf" name="parent_id"/>
<field name="type">view</field>
<field name="user_type" ref="conf_account_type_view"/>
</record>
<record id="conf_cog" model="account.account.template">
<field name="code">210</field>
<field name="name">Cost of Goods Sold</field>
<field ref="conf_cos" name="parent_id"/>
<field name="type">other</field>
<field name="user_type" ref="conf_account_type_expense"/>
</record>
<record id="conf_ovr" model="account.account.template">
<field name="code">22</field>
<field name="name">Overheads</field>
<field ref="conf_gpf" name="parent_id"/>
<field name="type">view</field>
<field name="user_type" ref="conf_account_type_view"/>
</record>
<record id="conf_a_expense" model="account.account.template">
<field name="code">220</field>
<field name="name">Expenses</field>
<field ref="conf_ovr" name="parent_id"/>
<field name="type">other</field>
<field name="user_type" ref="conf_account_type_expense"/>
</record>
<!-- <record id="account.property_account_expense_categ" model="ir.property">
<field eval="'account.account,'+str(a_expense)" name="value"/>
</record> -->
<!-- Taxes -->
<!-- VAT Code Definitions -->
<!-- Invoiced VAT -->
<!-- Input VAT -->
<record id="vat_code_chart_root" model="account.tax.code.template">
<field name="name">Plan Fees </field>
</record>
<record id="vat_code_balance_net" model="account.tax.code.template">
<field name="name">VAT Balance to Pay</field>
<field name="parent_id" ref="vat_code_chart_root"/>
</record>
<record id="vat_code_input" model="account.tax.code.template">
<field name="name">Input VAT</field>
<field name="parent_id" ref="vat_code_balance_net"/>
<field eval="-1" name="sign"/>
</record>
<record id="vat_code_input_S" model="account.tax.code.template">
<field name="name">Input VAT Rate S (15%)</field>
<field name="parent_id" ref="vat_code_input"/>
</record>
<record id="vat_code_input_R" model="account.tax.code.template">
<field name="name">Input VAT Rate R (5%)</field>
<field name="parent_id" ref="vat_code_input"/>
</record>
<!-- Output VAT -->
<record id="vat_code_output" model="account.tax.code.template">
<field name="name">Output VAT</field>
<field name="parent_id" ref="vat_code_balance_net"/>
</record>
<record id="vat_code_output_S" model="account.tax.code.template">
<field name="name">Output VAT Rate S (15%)</field>
<field name="parent_id" ref="vat_code_output"/>
</record>
<record id="vat_code_output_R" model="account.tax.code.template">
<field name="name">Output VAT Rate R (5%)</field>
<field name="parent_id" ref="vat_code_output"/>
</record>
<!-- Invoiced Base of VAT -->
<!-- Purchases -->
<record id="vat_code_base_net" model="account.tax.code.template">
<field name="name">Tax Bases</field>
<field name="parent_id" ref="vat_code_chart_root"/>
</record>
<record id="vat_code_base_purchases" model="account.tax.code.template">
<field name="name">Taxable Purchases Base</field>
<field name="parent_id" ref="vat_code_base_net"/>
</record>
<record id="vat_code_purch_S" model="account.tax.code.template">
<field name="name">Taxable Purchases Rated S (15%)</field>
<field name="parent_id" ref="vat_code_base_purchases"/>
</record>
<record id="vat_code_purch_R" model="account.tax.code.template">
<field name="name">Taxable Purchases Rated R (5%)</field>
<field name="parent_id" ref="vat_code_base_purchases"/>
</record>
<record id="vat_code_purch_Z" model="account.tax.code.template">
<field name="name">Taxable Purchases Rated Z (0%)</field>
<field name="parent_id" ref="vat_code_base_purchases"/>
</record>
<record id="vat_code_purch_X" model="account.tax.code.template">
<field name="name">Taxable Purchases Type X (Exempt)</field>
<field name="parent_id" ref="vat_code_base_purchases"/>
</record>
<record id="vat_code_purch_O" model="account.tax.code.template">
<field name="name">Taxable Purchases Type O (Out of scope)</field>
<field name="parent_id" ref="vat_code_base_purchases"/>
</record>
<!-- Sales -->
<record id="vat_code_base_sales" model="account.tax.code.template">
<field name="name">Base of Taxable Sales</field>
<field name="parent_id" ref="vat_code_base_net"/>
</record>
<record id="vat_code_sales_S" model="account.tax.code.template">
<field name="name">Taxable Sales Rated S (15%)</field>
<field name="parent_id" ref="vat_code_base_sales"/>
</record>
<record id="vat_code_sales_R" model="account.tax.code.template">
<field name="name">Taxable Sales Rated R (5%)</field>
<field name="parent_id" ref="vat_code_base_sales"/>
</record>
<record id="vat_code_sales_Z" model="account.tax.code.template">
<field name="name">Taxable Sales Rated Z (0%)</field>
<field name="parent_id" ref="vat_code_base_sales"/>
</record>
<record id="vat_code_sales_X" model="account.tax.code.template">
<field name="name">Taxable Sales Type X (Exempt)</field>
<field name="parent_id" ref="vat_code_base_sales"/>
</record>
<record id="vat_code_sales_O" model="account.tax.code.template">
<field name="name">Taxable Sales Type O (Out of scope)</field>
<field name="parent_id" ref="vat_code_base_sales"/>
</record>
<record id="configurable_chart_template" model="account.chart.template">
<field name="name">Configurable Account Chart Template</field>
<field name="account_root_id" ref="conf_chart0"/>
<field name="tax_code_root_id" ref="vat_code_chart_root"/>
<field name="bank_account_view_id" ref="conf_bnk"/>
<field name="property_account_receivable" ref="conf_a_recv"/>
<field name="property_account_payable" ref="conf_a_pay"/>
<field name="property_account_expense_categ" ref="conf_a_expense"/>
<field name="property_account_income_categ" ref="conf_a_sale"/>
</record>
<!-- VAT Codes -->
<!-- Purchases + Input VAT -->
<record id="ivats" model="account.tax.template">
<field name="chart_template_id" ref="configurable_chart_template"/>
<field name="name">IVAT S</field>
<field eval="0.15" name="amount"/>
<field name="type">percent</field>
<field name="account_collected_id" ref="conf_iva"/>
<field name="account_paid_id" ref="conf_iva"/>
<field name="base_code_id" ref="vat_code_purch_S"/>
<field name="tax_code_id" ref="vat_code_input_S"/>
<field name="ref_base_code_id" ref="vat_code_purch_S"/>
<field name="ref_tax_code_id" ref="vat_code_input_S"/>
<field name="type_tax_use">purchase</field>
</record>
<record id="ivatr" model="account.tax.template">
<field name="chart_template_id" ref="configurable_chart_template"/>
<field name="name">IVAT R</field>
<field eval="0.005" name="amount"/>
<field name="type">percent</field>
<field name="account_collected_id" ref="conf_iva"/>
<field name="account_paid_id" ref="conf_iva"/>
<field name="base_code_id" ref="vat_code_purch_R"/>
<field name="tax_code_id" ref="vat_code_input_R"/>
<field name="ref_base_code_id" ref="vat_code_purch_R"/>
<field name="ref_tax_code_id" ref="vat_code_input_R"/>
<field name="type_tax_use">purchase</field>
</record>
<record id="ivatz" model="account.tax.template">
<field name="chart_template_id" ref="configurable_chart_template"/>
<field name="name">IVAT Z</field>
<field eval="0.0" name="amount"/>
<field name="type">percent</field>
<field name="base_code_id" ref="vat_code_purch_Z"/>
<field name="ref_base_code_id" ref="vat_code_purch_Z"/>
<field name="type_tax_use">purchase</field>
</record>
<record id="ivatx" model="account.tax.template">
<field name="chart_template_id" ref="configurable_chart_template"/>
<field name="name">IVAT X</field>
<field eval="0.0" name="amount"/>
<field name="type">percent</field>
<field name="base_code_id" ref="vat_code_purch_X"/>
<field name="ref_base_code_id" ref="vat_code_purch_X"/>
<field name="type_tax_use">purchase</field>
</record>
<record id="ivato" model="account.tax.template">
<field name="chart_template_id" ref="configurable_chart_template"/>
<field name="name">IVAT O</field>
<field eval="0.0" name="amount"/>
<field name="type">percent</field>
<field name="base_code_id" ref="vat_code_purch_O"/>
<field name="ref_base_code_id" ref="vat_code_purch_O"/>
<field name="type_tax_use">purchase</field>
</record>
<!-- Sales + Output VAT -->
<record id="ovats" model="account.tax.template">
<field name="chart_template_id" ref="configurable_chart_template"/>
<field name="name">OVAT S</field>
<field eval="0.15" name="amount"/>
<field name="type">percent</field>
<field name="account_collected_id" ref="conf_ova"/>
<field name="account_paid_id" ref="conf_ova"/>
<field name="base_code_id" ref="vat_code_sales_S"/>
<field name="tax_code_id" ref="vat_code_output_S"/>
<field name="ref_base_code_id" ref="vat_code_sales_S"/>
<field name="ref_tax_code_id" ref="vat_code_output_S"/>
<field name="type_tax_use">sale</field>
</record>
<record id="ovatr" model="account.tax.template">
<field name="chart_template_id" ref="configurable_chart_template"/>
<field name="name">OVAT R</field>
<field eval="0.005" name="amount"/>
<field name="type">percent</field>
<field name="account_collected_id" ref="conf_ova"/>
<field name="account_paid_id" ref="conf_ova"/>
<field name="base_code_id" ref="vat_code_sales_R"/>
<field name="tax_code_id" ref="vat_code_output_R"/>
<field name="ref_base_code_id" ref="vat_code_sales_R"/>
<field name="ref_tax_code_id" ref="vat_code_output_R"/>
<field name="type_tax_use">sale</field>
</record>
<record id="ovatz" model="account.tax.template">
<field name="chart_template_id" ref="configurable_chart_template"/>
<field name="name">OVAT Z</field>
<field eval="0.0" name="amount"/>
<field name="type">percent</field>
<field name="base_code_id" ref="vat_code_sales_Z"/>
<field name="ref_base_code_id" ref="vat_code_sales_Z"/>
<field name="type_tax_use">sale</field>
</record>
<record id="ovatx" model="account.tax.template">
<field name="chart_template_id" ref="configurable_chart_template"/>
<field name="name">OVAT X</field>
<field eval="0.0" name="amount"/>
<field name="type">percent</field>
<field name="base_code_id" ref="vat_code_sales_X"/>
<field name="ref_base_code_id" ref="vat_code_sales_X"/>
<field name="type_tax_use">sale</field>
</record>
<record id="ovato" model="account.tax.template">
<field name="chart_template_id" ref="configurable_chart_template"/>
<field name="name">OVAT O</field>
<field eval="0.0" name="amount"/>
<field name="type">percent</field>
<field name="base_code_id" ref="vat_code_sales_O"/>
<field name="ref_base_code_id" ref="vat_code_sales_O"/>
<field name="type_tax_use">sale</field>
</record>
</data>
</openerp>

View File

@ -21,10 +21,12 @@
import time
import datetime
from dateutil.relativedelta import relativedelta
from tools.translate import _
from operator import itemgetter
from osv import fields, osv
import netsvc
import tools
from os.path import join as opj
class account_installer(osv.osv_memory):
_name = 'account.installer'
@ -37,19 +39,9 @@ class account_installer(osv.osv_memory):
sorted(((m.name, m.shortdesc)
for m in modules.browse(cr, uid, ids)),
key=itemgetter(1)))
charts.insert(0,('configurable','Configurable Chart of Account'))
return charts
# def default_get(self, cr, uid, fields_list=None, context=None):
# ''' set default accounts'''
# defaults = super(account_installer, self)\
# .default_get(cr, uid, fields_list=fields_list, context=context)
# account = self.pool.get('account.bank.accounts.wizard')
# ids = []
# for acc in ('Current','Deposit'):
# ids.append(account.create(cr, uid, {'acc_name':acc,'account_type':'cash','bank_account_id':self}))
# defaults.update({'bank_accounts_id':[(6,0,ids)]})
# return defaults
_columns = {
# Accounting
'charts':fields.selection(_get_charts, 'Chart of Accounts',
@ -84,7 +76,7 @@ class account_installer(osv.osv_memory):
'period':lambda *a:'month',
'sale_tax':lambda *a:0.0,
'purchase_tax':lambda *a:0.0,
'charts':'l10n_chart_configurable',
'charts':'configurable',
}
def on_change_start_date(self, cr, uid, id, start_date):
@ -94,37 +86,280 @@ class account_installer(osv.osv_memory):
return {'value':{'date_stop':end_date.strftime('%Y-%m-%d')}}
return {}
def generate_configurable_chart(self, cr, uid, ids, context=None):
mod_obj = self.pool.get('ir.model.data')
result = mod_obj._get_id(cr, uid, 'account', 'configurable_chart_template')
id = mod_obj.read(cr, uid, [result], ['res_id'])[0]['res_id']
obj_multi = self.pool.get('account.chart.template').browse(cr,uid, id)
obj_acc = self.pool.get('account.account')
obj_acc_tax = self.pool.get('account.tax')
obj_journal = self.pool.get('account.journal')
obj_sequence = self.pool.get('ir.sequence')
obj_acc_template = self.pool.get('account.account.template')
obj_fiscal_position_template = self.pool.get('account.fiscal.position.template')
obj_fiscal_position = self.pool.get('account.fiscal.position')
company_id = self.pool.get('res.users').browse(cr,uid,[uid],context)[0].company_id
seq_journal = True
# Creating Account
obj_acc_root = obj_multi.account_root_id
tax_code_root_id = obj_multi.tax_code_root_id.id
#new code
acc_template_ref = {}
tax_template_ref = {}
tax_code_template_ref = {}
todo_dict = {}
#create all the tax code
children_tax_code_template = self.pool.get('account.tax.code.template').search(cr, uid, [('parent_id','child_of',[tax_code_root_id])], order='id')
children_tax_code_template.sort()
for tax_code_template in self.pool.get('account.tax.code.template').browse(cr, uid, children_tax_code_template):
vals={
'name': (tax_code_root_id == tax_code_template.id) and company_id.name or tax_code_template.name,
'code': tax_code_template.code,
'info': tax_code_template.info,
'parent_id': tax_code_template.parent_id and ((tax_code_template.parent_id.id in tax_code_template_ref) and tax_code_template_ref[tax_code_template.parent_id.id]) or False,
'company_id': company_id.id,
'sign': tax_code_template.sign,
}
new_tax_code = self.pool.get('account.tax.code').create(cr,uid,vals)
#recording the new tax code to do the mapping
tax_code_template_ref[tax_code_template.id] = new_tax_code
#create all the tax
for tax in obj_multi.tax_template_ids:
#create it
vals_tax = {
'name':tax.name,
'sequence': tax.sequence,
'amount':tax.amount,
'type':tax.type,
'applicable_type': tax.applicable_type,
'domain':tax.domain,
'parent_id': tax.parent_id and ((tax.parent_id.id in tax_template_ref) and tax_template_ref[tax.parent_id.id]) or False,
'child_depend': tax.child_depend,
'python_compute': tax.python_compute,
'python_compute_inv': tax.python_compute_inv,
'python_applicable': tax.python_applicable,
'tax_group':tax.tax_group,
'base_code_id': tax.base_code_id and ((tax.base_code_id.id in tax_code_template_ref) and tax_code_template_ref[tax.base_code_id.id]) or False,
'tax_code_id': tax.tax_code_id and ((tax.tax_code_id.id in tax_code_template_ref) and tax_code_template_ref[tax.tax_code_id.id]) or False,
'base_sign': tax.base_sign,
'tax_sign': tax.tax_sign,
'ref_base_code_id': tax.ref_base_code_id and ((tax.ref_base_code_id.id in tax_code_template_ref) and tax_code_template_ref[tax.ref_base_code_id.id]) or False,
'ref_tax_code_id': tax.ref_tax_code_id and ((tax.ref_tax_code_id.id in tax_code_template_ref) and tax_code_template_ref[tax.ref_tax_code_id.id]) or False,
'ref_base_sign': tax.ref_base_sign,
'ref_tax_sign': tax.ref_tax_sign,
'include_base_amount': tax.include_base_amount,
'description':tax.description,
'company_id': company_id.id,
'type_tax_use': tax.type_tax_use
}
new_tax = obj_acc_tax.create(cr,uid,vals_tax)
#as the accounts have not been created yet, we have to wait before filling these fields
todo_dict[new_tax] = {
'account_collected_id': tax.account_collected_id and tax.account_collected_id.id or False,
'account_paid_id': tax.account_paid_id and tax.account_paid_id.id or False,
}
tax_template_ref[tax.id] = new_tax
#deactivate the parent_store functionnality on account_account for rapidity purpose
self.pool._init = True
children_acc_template = obj_acc_template.search(cr, uid, [('parent_id','child_of',[obj_acc_root.id]),('nocreate','!=',True)])
children_acc_template.sort()
for account_template in obj_acc_template.browse(cr, uid, children_acc_template):
tax_ids = []
for tax in account_template.tax_ids:
tax_ids.append(tax_template_ref[tax.id])
#create the account_account
dig = 6
code_main = account_template.code and len(account_template.code) or 0
code_acc = account_template.code or ''
if code_main>0 and code_main<=dig and account_template.type != 'view':
code_acc=str(code_acc) + (str('0'*(dig-code_main)))
vals={
'name': (obj_acc_root.id == account_template.id) and company_id.name or account_template.name,
#'sign': account_template.sign,
'currency_id': account_template.currency_id and account_template.currency_id.id or False,
'code': code_acc,
'type': account_template.type,
'user_type': account_template.user_type and account_template.user_type.id or False,
'reconcile': account_template.reconcile,
'shortcut': account_template.shortcut,
'note': account_template.note,
'parent_id': account_template.parent_id and ((account_template.parent_id.id in acc_template_ref) and acc_template_ref[account_template.parent_id.id]) or False,
'tax_ids': [(6,0,tax_ids)],
'company_id': company_id.id,
}
new_account = obj_acc.create(cr,uid,vals)
acc_template_ref[account_template.id] = new_account
if account_template.name == 'Bank Current Account':
cash_result = mod_obj._get_id(cr, uid, 'account', 'conf_account_type_cash')
cash_type_id = mod_obj.read(cr, uid, [cash_result], ['res_id'])[0]['res_id']
bank_result = mod_obj._get_id(cr, uid, 'account', 'conf_account_type_bnk')
bank_type_id = mod_obj.read(cr, uid, [bank_result], ['res_id'])[0]['res_id']
check_result = mod_obj._get_id(cr, uid, 'account', 'conf_account_type_chk')
check_type_id = mod_obj.read(cr, uid, [check_result], ['res_id'])[0]['res_id']
record = self.browse(cr, uid, ids, context=context)[0]
code_cnt = 1
for val in record.bank_accounts_id:
if val.account_type == 'cash':type = cash_type_id
elif val.account_type == 'bank':type = bank_type_id
else:type = check_type_id
vals = {'name': val.acc_name or '',
'currency_id': val.currency_id.id or False,
'code': str(110400 + code_cnt),
'type': 'other',
'user_type': type,
'parent_id':new_account,
'company_id': company_id.id }
obj_acc.create(cr, uid, vals)
code_cnt += 1
#reactivate the parent_store functionnality on account_account
self.pool._init = False
self.pool.get('account.account')._parent_store_compute(cr)
for key,value in todo_dict.items():
if value['account_collected_id'] or value['account_paid_id']:
obj_acc_tax.write(cr, uid, [key], {
'account_collected_id': acc_template_ref[value['account_collected_id']],
'account_paid_id': acc_template_ref[value['account_paid_id']],
})
# Creating Journals
vals_journal={}
view_id = self.pool.get('account.journal.view').search(cr,uid,[('name','=','Journal View')])[0]
seq_id = obj_sequence.search(cr,uid,[('name','=','Account Journal')])[0]
if seq_journal:
seq_id_sale = obj_sequence.search(cr,uid,[('name','=','Sale Journal')])[0]
seq_id_purchase = obj_sequence.search(cr,uid,[('name','=','Purchase Journal')])[0]
else:
seq_id_sale = seq_id
seq_id_purchase = seq_id
vals_journal['view_id'] = view_id
#Sales Journal
vals_journal['name'] = _('Sales Journal')
vals_journal['type'] = 'sale'
vals_journal['code'] = _('SAJ')
vals_journal['sequence_id'] = seq_id_sale
if obj_multi.property_account_receivable:
vals_journal['default_credit_account_id'] = acc_template_ref[obj_multi.property_account_income_categ.id]
vals_journal['default_debit_account_id'] = acc_template_ref[obj_multi.property_account_income_categ.id]
obj_journal.create(cr,uid,vals_journal)
# Purchase Journal
vals_journal['name'] = _('Purchase Journal')
vals_journal['type'] = 'purchase'
vals_journal['code'] = _('EXJ')
vals_journal['sequence_id'] = seq_id_purchase
if obj_multi.property_account_payable:
vals_journal['default_credit_account_id'] = acc_template_ref[obj_multi.property_account_expense_categ.id]
vals_journal['default_debit_account_id'] = acc_template_ref[obj_multi.property_account_expense_categ.id]
obj_journal.create(cr,uid,vals_journal)
# Bank Journals
view_id_cash = self.pool.get('account.journal.view').search(cr,uid,[('name','=','Cash Journal View')])[0]
view_id_cur = self.pool.get('account.journal.view').search(cr,uid,[('name','=','Multi-Currency Cash Journal View')])[0]
ref_acc_bank = obj_multi.bank_account_view_id
#create the properties
property_obj = self.pool.get('ir.property')
fields_obj = self.pool.get('ir.model.fields')
todo_list = [
('property_account_receivable','res.partner','account.account'),
('property_account_payable','res.partner','account.account'),
('property_account_expense_categ','product.category','account.account'),
('property_account_income_categ','product.category','account.account'),
('property_account_expense','product.template','account.account'),
('property_account_income','product.template','account.account')
]
for record in todo_list:
r = []
r = property_obj.search(cr, uid, [('name','=', record[0] ),('company_id','=',company_id.id)])
account = getattr(obj_multi, record[0])
field = fields_obj.search(cr, uid, [('name','=',record[0]),('model','=',record[1]),('relation','=',record[2])])
vals = {
'name': record[0],
'company_id': company_id.id,
'fields_id': field[0],
'value': account and 'account.account,'+str(acc_template_ref[account.id]) or False,
}
if r:
#the property exist: modify it
property_obj.write(cr, uid, r, vals)
else:
#create the property
property_obj.create(cr, uid, vals)
fp_ids = obj_fiscal_position_template.search(cr, uid,[('chart_template_id', '=', obj_multi.id)])
if fp_ids:
for position in obj_fiscal_position_template.browse(cr, uid, fp_ids):
vals_fp = {
'company_id' : company_id.id,
'name' : position.name,
}
new_fp = obj_fiscal_position.create(cr, uid, vals_fp)
obj_tax_fp = self.pool.get('account.fiscal.position.tax')
obj_ac_fp = self.pool.get('account.fiscal.position.account')
for tax in position.tax_ids:
vals_tax = {
'tax_src_id' : tax_template_ref[tax.tax_src_id.id],
'tax_dest_id' : tax.tax_dest_id and tax_template_ref[tax.tax_dest_id.id] or False,
'position_id' : new_fp,
}
obj_tax_fp.create(cr, uid, vals_tax)
for acc in position.account_ids:
vals_acc = {
'account_src_id' : acc_template_ref[acc.account_src_id.id],
'account_dest_id' : acc_template_ref[acc.account_dest_id.id],
'position_id' : new_fp,
}
obj_ac_fp.create(cr, uid, vals_acc)
def execute(self, cr, uid, ids, context=None):
super(account_installer, self).execute(cr, uid, ids, context=context)
record = self.browse(cr, uid, ids, context=context)[0]
for res in self.read(cr,uid,ids):
if record.charts == 'l10n_chart_configurable':
obj_acc = self.pool.get('account.account')
if record.charts == 'configurable':
fp = tools.file_open(opj('account','configurable_account_chart.xml'))
tools.convert_xml_import(cr, 'account', fp, {}, 'init',True, None)
fp.close()
self.generate_configurable_chart(cr, uid, ids, context=context)
obj_tax = self.pool.get('account.tax')
user_type = self.pool.get('account.account.type')
obj_product = self.pool.get('product.product')
ir_values = self.pool.get('ir.values')
u_type_id = user_type.search(cr, uid,[('name','ilike','view')])[0]
company = self.pool.get('res.users').browse(cr, uid, uid, context).company_id
vals = {'name': company.name or '',
'currency_id': company.currency_id.id or False,
'code': 0 or '',
'type': 'view',
'user_type': u_type_id,
'company_id': company.id }
main_account = obj_acc.create(cr, uid, vals)
for val in record.bank_accounts_id:
vals = {'name': val.acc_name or '',
'currency_id': val.currency_id.id or False,
'code': val.acc_name or '',
'type': 'view',
'user_type': u_type_id,
'parent_id':main_account,
'company_id': company.id }
obj_acc.create(cr, uid, vals)
sales_tax = obj_tax.create(cr, uid,{'name':'sale Tax','amount':res.get('sale_tax',0.0)})
purchase_tax = obj_tax.create(cr, uid,{'name':'purchase Tax','amount':res.get('purchase_tax',0.0)})
s_tax = (res.get('sale_tax',0.0))/100
p_tax = (res.get('purchase_tax',0.0))/100
sales_tax = obj_tax.create(cr, uid,
{'name':'(%s)'%(s_tax*100),
'amount':s_tax
})
purchase_tax = obj_tax.create(cr, uid,
{'name':'(%s)'%(p_tax*100),
'amount':p_tax
})
product_ids = obj_product.search(cr,uid, [])
for product in obj_product.browse(cr, uid, product_ids):
obj_product.write(cr, uid, product.id, {'taxes_id':[(6,0,[sales_tax])],'supplier_taxes_id':[(6,0,[purchase_tax])]})

View File

@ -23,7 +23,10 @@ import installer
import todo
import gtk_contact_form
import wizard
import os
import base64
import random
import tools
from osv import fields, osv
import netsvc
from tools.translate import _
@ -34,6 +37,12 @@ class base_setup_config_choice(osv.osv_memory):
_name = 'base.setup.config'
logger = netsvc.Logger()
def _get_image(self, cr, uid, context=None):
file_no = str(random.randint(1,3))
path = os.path.join('base','res','config_pixmaps/%s.png'%file_no)
file_data = tools.file_open(path,'rb').read()
return base64.encodestring(file_data)
def get_users(self, cr, uid, context={}):
user_obj = self.pool.get('res.users')
user_ids = user_obj.search(cr, uid, [])
@ -42,11 +51,13 @@ class base_setup_config_choice(osv.osv_memory):
return _('The following users have been installed on your database: \n')+ user_str
_columns = {
'installed_users':fields.text('Installed Users', readonly=True)
'installed_users':fields.text('Installed Users', readonly=True),
'config_logo' : fields.binary('Image', readonly=True),
}
_defaults = {
'installed_users':get_users
'installed_users':get_users,
'config_logo' : _get_image
}
def set_default_menu(self, cr, uid, menu, context=None):

View File

@ -7,11 +7,11 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Setup">
<group colspan="4" col="8">
<group width="150">
<image name="gtk-dialog-info"/>
</group>
<group>
<group colspan="4" col="8" width="600">
<group>
<field name="config_logo" widget="image" width="150" height="100" nolabel="1" colspan="1"/>
</group>
<group colspan="6">
<separator string="Installation Done" colspan="8"/>
<label align="0.0" string="Your new database is now fully installed." colspan="8"/>
<field name="installed_users" nolabel= "1" colspan="8"/>

View File

@ -19,9 +19,7 @@ If you don't think you need any of these right now, you can easily install them
</xpath>
<xpath expr='//separator[@string="vsep"]' position='attributes'>
<attribute name='string'></attribute>
</xpath>
<xpath expr='//group[@string="progress"]' position='attributes'>
<attribute name='string'></attribute>
<attribute name='rowspan'>15</attribute>
</xpath>
<separator string="title" position="attributes">
<attribute name="string">Install Generic Modules</attribute>

View File

@ -38,8 +38,10 @@ class base_gtkcontactform(osv.osv_memory):
defaults = super(base_gtkcontactform, self)\
.default_get(cr, uid, fields_list=fields_list, context=context)
company_id = self.pool.get('base.setup.company').search(cr, uid, [])
company = self.pool.get('base.setup.company').read(cr, uid, company_id)[0]
defaults.update({'email':company.get('email',''),
company = self.pool.get('base.setup.company').read(cr, uid, company_id)
company = company and company[0] or False
if company:
defaults.update({'email':company.get('email',''),
'phone': company.get('phone','')})
return defaults
@ -73,9 +75,9 @@ class base_gtkcontactform(osv.osv_memory):
def execute(self, cr, uid, ids, context=None):
company_id = self.pool.get('base.setup.company').search(cr, uid, [])
company_data = self.pool.get('base.setup.company').read(cr, uid, company_id)
company_data = company_data and company_data[0]
company_data = company_data and company_data[0] or False
country1 = ''
if company_data.get('country_id', False):
if company_data and company_data.get('country_id', False):
country = self.pool.get('res.country').read(cr, uid, company_data['country_id'],['name'])['name']
for res in self.read(cr, uid, ids):
email = res.get('email','')

View File

@ -15,7 +15,6 @@
<attribute name="string">Select Human Resources Modules To Install</attribute>
</separator>
<xpath expr='//separator[@string="vsep"]' position='attributes'>
<attribute name='rowspan'>8</attribute>
<attribute name='string'></attribute>
</xpath>
<xpath expr="//label[@string='description']"

View File

@ -16,14 +16,14 @@
>Knowledge Management</attribute>
</separator>
<xpath expr='//separator[@string="vsep"]' position='attributes'>
<attribute name='rowspan'>9</attribute>
<attribute name='string'></attribute>
</xpath>
<xpath expr="//label[@string='description']"
position="attributes">
<attribute name="string">From this screen, you can select various OpenERP applications which will help employees store information, distribute it and share it with one another.</attribute>
</xpath>
<group colspan="8">
<group colspan="8" position="replace">
<group colspan="4">
<field name="document_ftp"/>
<field name="document_webdav"/>
<field name="wiki"/>
@ -31,6 +31,7 @@
<field name="wiki_faq"/>
<field name="wiki_quality_manual"/>
</group>
</group>
<xpath expr="//button[@string='Install Modules']" position="attributes">
<attribute name="string">Configure</attribute>
</xpath>

View File

@ -19,7 +19,6 @@
<attribute name="string">After having installed the core manufacturing application, you can extend it with a few more depending on the needs of your organization</attribute>
</xpath>
<xpath expr='//separator[@string="vsep"]' position='attributes'>
<attribute name='rowspan'>8</attribute>
<attribute name='string'></attribute>
</xpath>
<group colspan="8">

View File

@ -11,6 +11,9 @@
<form position="attributes">
<attribute name="string">Install Extra Modules</attribute>
</form>
<xpath expr='//separator[@string="vsep"]' position='attributes'>
<attribute name='string'></attribute>
</xpath>
<xpath expr="//label[@string='description']"
position="attributes">
<attribute name="string"

View File

@ -11,7 +11,6 @@
<attribute name="string">Tools Modules Installation</attribute>
</form>
<xpath expr='//separator[@string="vsep"]' position='attributes'>
<attribute name='rowspan'>10</attribute>
<attribute name='string'></attribute>
</xpath>

View File

@ -16,7 +16,6 @@
>Project Management</attribute>
</separator>
<xpath expr='//separator[@string="vsep"]' position='attributes'>
<attribute name='rowspan'>10</attribute>
<attribute name='string'></attribute>
</xpath>
<xpath expr="//label[@string='description']"

View File

@ -12,7 +12,6 @@
<attribute name="string">Purchase Modules Installation</attribute>
</form>
<xpath expr='//separator[@string="vsep"]' position='attributes'>
<attribute name='rowspan'>6</attribute>
<attribute name='string'></attribute>
</xpath>
<separator string="title" position="attributes">

View File

@ -11,7 +11,6 @@
<attribute name="string">Report Modules Installation</attribute>
</form>
<xpath expr='//separator[@string="vsep"]' position='attributes'>
<attribute name='rowspan'>7</attribute>
<attribute name='string'></attribute>
</xpath>
<separator string="title" position="attributes">

View File

@ -508,7 +508,6 @@
</separator>
<xpath expr="//label[@string='description']" position="attributes">
<attribute name="string">Setup your sales workflow and default values.</attribute>
<attribute name="width">100</attribute>
</xpath>
<xpath expr='//separator[@string="vsep"]' position='attributes'>
<attribute name='rowspan'>6</attribute>

View File

@ -12,13 +12,17 @@
<attribute name="string">Thunderbird Module Installation</attribute>
</form>
<separator string="title" position="attributes">
<attribute name="string">Configure Thunderbird Module</attribute>
<attribute name="string">Thunderbird</attribute>
</separator>
<xpath expr="//label[@string='description']" position="attributes">
<attribute name="string">This module is required for the thuderbird plug-in to work properly.This allows you to select an object that you had like to add to your email and its attachments. You can select a partner, a task, a project, an analytical account, or any other object and attach selected mail as .eml file in attachment of selected record.</attribute>
</xpath>
<group colspan="8">
<separator string="Thunderbird" colspan="4"/>
<xpath expr='//separator[@string="vsep"]' position='attributes'>
<attribute name='string'></attribute>
<attribute name='rowspan'>15</attribute>
</xpath>
<group colspan="8" position="replace">
<group colspan="8" height="400" width="700">
<field name="thunderbird"/>
<field name="name" invisible="1"/>
<field name="pdf_name" invisible="1"/>
@ -33,6 +37,7 @@
<separator string="Thunderbird plugin installation note." colspan="4"/>
<label colspan="8" string="Save The thunderbird plug­in Follow the following step to install thunderbird plug­in ? 1. From Menu Bar, Open Tools ­> Add ons. 2. Now click on install button and a browser window will appear. 3. Just select the (.xpi) file from thunderbird/plugin directory and click ok, a new software installation window will appear and within a short time Install Now button will be enabled. 4. Click on Install Now and restart Thunderbird. 5. Now Thunderbird plug­in is installed."/>
</group>
</group>
</data>
</field>
</record>