[MERGE] Account: accounting: improve the generation of journals and periods => backlog 991 id

bzr revid: mra@mra-laptop-20110204102049-2d80e0kr6vhk00el
This commit is contained in:
Mustufa Rangwala 2011-02-04 15:50:49 +05:30
commit 51e3c0dff5
6 changed files with 184 additions and 22 deletions

View File

@ -802,19 +802,28 @@ class account_fiscalyear(osv.osv):
(_check_fiscal_year, 'Error! You cannot define overlapping fiscal years',['date_start', 'date_stop'])
]
def create_period3(self,cr, uid, ids, context=None):
def create_period3(self, cr, uid, ids, context=None):
return self.create_period(cr, uid, ids, context, 3)
def create_period(self,cr, uid, ids, context=None, interval=1):
def create_period(self, cr, uid, ids, context=None, interval=1):
period_obj = self.pool.get('account.period')
for fy in self.browse(cr, uid, ids, context=context):
ds = datetime.strptime(fy.date_start, '%Y-%m-%d')
while ds.strftime('%Y-%m-%d')<fy.date_stop:
period_obj.create(cr, uid, {
'name': 'Opening Period',
'code': ds.strftime('00/%Y'),
'date_start': ds + relativedelta(years=-1, days=-1),
'date_stop': ds + relativedelta(years=-1),
'special': True,
'fiscalyear_id': fy.id,
})
while ds.strftime('%Y-%m-%d') < fy.date_stop:
de = ds + relativedelta(months=interval, days=-1)
if de.strftime('%Y-%m-%d')>fy.date_stop:
if de.strftime('%Y-%m-%d') > fy.date_stop:
de = datetime.strptime(fy.date_stop, '%Y-%m-%d')
self.pool.get('account.period').create(cr, uid, {
period_obj.create(cr, uid, {
'name': ds.strftime('%m/%Y'),
'code': ds.strftime('%m/%Y'),
'date_start': ds.strftime('%Y-%m-%d'),
@ -2446,6 +2455,8 @@ class account_chart_template(osv.osv):
'property_account_expense': fields.many2one('account.account.template','Expense Account on Product Template'),
'property_account_income': fields.many2one('account.account.template','Income Account on Product Template'),
'property_reserve_and_surplus_account': fields.many2one('account.account.template', 'Reserve and Profit/Loss Account', domain=[('type', '=', 'payable')], help='This Account is used for transferring Profit/Loss(If It is Profit: Amount will be added, Loss: Amount will be deducted.), Which is calculated from Profilt & Loss Report'),
'property_account_income_opening': fields.many2one('account.account.template','Opening Entries Income Account'),
'property_account_expense_opening': fields.many2one('account.account.template','Opening Entries Expense Account'),
}
account_chart_template()
@ -2678,6 +2689,7 @@ class wizard_multi_charts_accounts(osv.osv_memory):
obj_data = self.pool.get('ir.model.data')
analytic_journal_obj = self.pool.get('account.analytic.journal')
obj_tax_code = self.pool.get('account.tax.code')
obj_tax_code_template = self.pool.get('account.tax.code.template')
# Creating Account
obj_acc_root = obj_multi.chart_template_id.account_root_id
tax_code_root_id = obj_multi.chart_template_id.tax_code_root_id.id
@ -2690,9 +2702,9 @@ class wizard_multi_charts_accounts(osv.osv_memory):
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 = obj_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, context=context):
for tax_code_template in obj_tax_code_template.browse(cr, uid, children_tax_code_template, context=context):
vals={
'name': (tax_code_root_id == tax_code_template.id) and obj_multi.company_id.name or tax_code_template.name,
'code': tax_code_template.code,
@ -2803,11 +2815,19 @@ class wizard_multi_charts_accounts(osv.osv_memory):
seq_id_purchase_refund = obj_sequence.search(cr, uid, [('name','=','Purchase Refund Journal')])
if seq_id_purchase_refund:
seq_id_purchase_refund = seq_id_purchase_refund[0]
seq_id_opening = obj_sequence.search(cr, uid, [('name','=','Opening Entries Journal')])
if seq_id_opening:
seq_id_opening = seq_id_opening[0]
seq_id_miscellaneous = obj_sequence.search(cr, uid, [('name','=','Miscellaneous Journal')])
if seq_id_miscellaneous:
seq_id_miscellaneous = seq_id_miscellaneous[0]
else:
seq_id_sale = seq_id
seq_id_purchase = seq_id
seq_id_sale_refund = seq_id
seq_id_purchase_refund = seq_id
seq_id_opening = seq_id
seq_id_miscellaneous = seq_id
vals_journal['view_id'] = view_id
@ -2868,12 +2888,6 @@ class wizard_multi_charts_accounts(osv.osv_memory):
vals_journal['default_credit_account_id'] = acc_template_ref[obj_multi.chart_template_id.property_account_income_categ.id]
vals_journal['default_debit_account_id'] = acc_template_ref[obj_multi.chart_template_id.property_account_income_categ.id]
# if obj_multi.property_account_receivable:
# vals_journal.update({
# 'default_credit_account_id': acc_template_ref[obj_multi.chart_template_id.property_account_income_categ.id],
# 'default_debit_account_id': acc_template_ref[obj_multi.chart_template_id.property_account_income_categ.id]
# })
obj_journal.create(cr, uid, vals_journal, context=context)
# Purchase Refund Journal
@ -2892,14 +2906,44 @@ class wizard_multi_charts_accounts(osv.osv_memory):
vals_journal['default_credit_account_id'] = acc_template_ref[obj_multi.chart_template_id.property_account_expense_categ.id]
vals_journal['default_debit_account_id'] = acc_template_ref[obj_multi.chart_template_id.property_account_expense_categ.id]
# if obj_multi.property_account_payable:
# vals_journal.update({
# 'default_credit_account_id': acc_template_ref[obj_multi.property_account_expense_categ.id],
# 'default_debit_account_id': acc_template_ref[obj_multi.property_account_expense_categ.id]
# })
obj_journal.create(cr, uid, vals_journal, context=context)
# Miscellaneous Journal
data_id = obj_data.search(cr, uid, [('model','=','account.journal.view'), ('name','=','account_journal_view')])
data = obj_data.browse(cr, uid, data_id[0], context=context)
view_id = data.res_id
analitical_miscellaneous_ids = analytic_journal_obj.search(cr, uid, [('type', '=', 'situation')], context=context)
analitical_journal_miscellaneous = analitical_miscellaneous_ids and analitical_miscellaneous_ids[0] or False
vals_journal = {
'view_id': view_id,
'name': _('Miscellaneous Journal'),
'type': 'general',
'code': _('MISC'),
'sequence_id': seq_id_miscellaneous,
'analytic_journal_id': analitical_journal_miscellaneous,
'company_id': company_id
}
obj_journal.create(cr, uid, vals_journal, context=context)
# Opening Entries Journal
if obj_multi.chart_template_id.property_account_income_opening and obj_multi.chart_template_id.property_account_expense_opening:
vals_journal = {
'view_id': view_id,
'name': _('Opening Entries Journal'),
'type': 'situation',
'code': _('TOEJ'),
'sequence_id': seq_id_opening,
'company_id': company_id,
'centralisation': True,
'default_credit_account_id': acc_template_ref[obj_multi.chart_template_id.property_account_income_opening.id],
'default_debit_account_id': acc_template_ref[obj_multi.chart_template_id.property_account_expense_opening.id]
}
obj_journal.create(cr, uid, vals_journal, context=context)
# Bank Journals
data_id = obj_data.search(cr, uid, [('model','=','account.journal.view'), ('name','=','account_journal_bank_view')])
data = obj_data.browse(cr, uid, data_id[0], context=context)

View File

@ -2152,6 +2152,8 @@
<field name="property_account_income_categ" domain="[('id', 'child_of', [account_root_id])]" />
<field name="property_account_expense" domain="[('id', 'child_of', [account_root_id])]"/>
<field name="property_account_income" domain="[('id', 'child_of', [account_root_id])]"/>
<field name="property_account_income_opening" domain="[('id', 'child_of', [account_root_id])]"/>
<field name="property_account_expense_opening" domain="[('id', 'child_of', [account_root_id])]"/>
<field name="property_reserve_and_surplus_account" />
</group>
</form>

View File

@ -191,6 +191,14 @@
<field name="user_type" ref="conf_account_type_asset"/>
</record>
<record id="conf_o_income" model="account.account.template">
<field name="code">1106</field>
<field name="name">Opening Income Account</field>
<field ref="conf_cas" name="parent_id"/>
<field name="type">other</field>
<field name="user_type" ref="conf_account_type_income"/>
</record>
<record id="conf_cli" model="account.account.template">
<field name="code">111</field>
<field name="name">Current Liabilities</field>
@ -225,6 +233,13 @@
<field name="user_type" ref="conf_account_type_liability"/>
</record>
<record id="conf_o_expense" model="account.account.template">
<field name="code">1114</field>
<field name="name">Opening Expense Account</field>
<field ref="conf_cli" name="parent_id"/>
<field name="type">other</field>
<field name="user_type" ref="conf_account_type_expense"/>
</record>
<!-- Profit and Loss -->
@ -431,6 +446,8 @@
<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"/>
<field name="property_account_income_opening" ref="conf_o_income"/>
<field name="property_account_expense_opening" ref="conf_o_expense"/>
<field name="property_reserve_and_surplus_account" ref="conf_a_reserve_and_surplus"/>
</record>

View File

@ -483,6 +483,19 @@
<field eval="3" name="padding"/>
<field name="prefix">CSH/%(year)s/</field>
</record>
<record id="sequence_opening_journal" model="ir.sequence">
<field name="name">Opening Entries Journal</field>
<field name="code">account.journal</field>
<field eval="3" name="padding"/>
<field name="prefix">OPEJ/%(year)s/</field>
</record>
<record id="sequence_miscellaneous_journal" model="ir.sequence">
<field name="name">Miscellaneous Journal</field>
<field name="code">account.journal</field>
<field eval="3" name="padding"/>
<field name="prefix">MISJ/%(year)s/</field>
</record>
<!--
Account Statement Sequences
-->

View File

@ -163,6 +163,14 @@
<field name="user_type" ref="account_type_asset"/>
</record>
<record id="o_income" model="account.account">
<field name="code">X11006</field>
<field name="name">Opening Income - (test)</field>
<field ref="cas" name="parent_id"/>
<field name="type">other</field>
<field name="user_type" ref="account_type_income"/>
</record>
<record model="account.account" id="liabilities_view">
<field name="name">Liabilities - (test)</field>
<field name="code">X11</field>
@ -205,6 +213,14 @@
<field name="user_type" ref="account_type_liability"/>
</record>
<record id="o_expense" model="account.account">
<field name="code">X1114</field>
<field name="name">Opening Expense - (test)</field>
<field ref="cli" name="parent_id"/>
<field name="type">other</field>
<field name="user_type" ref="account_type_expense"/>
</record>
<!-- Profit and Loss -->
<record id="gpf" model="account.account">
@ -421,7 +437,26 @@
<field name="analytic_journal_id" ref="sit"/>
<field name="user_id" ref="base.user_root"/>
</record>
<record id="miscellaneous_journal" model="account.journal">
<field name="name">Miscellaneous Journal - (test)</field>
<field name="code">TMIS</field>
<field name="type">general</field>
<field name="view_id" ref="account_journal_view"/>
<field name="sequence_id" ref="sequence_miscellaneous_journal"/>
<field name="analytic_journal_id" ref="sit"/>
<field name="user_id" ref="base.user_root"/>
</record>
<record id="opening_journal" model="account.journal">
<field name="name">Opening Entries Journal - (test)</field>
<field name="code">TOEJ</field>
<field name="type">situation</field>
<field name="view_id" ref="account_journal_view"/>
<field name="sequence_id" ref="sequence_opening_journal"/>
<field model="account.account" name="default_debit_account_id" ref="o_income"/>
<field model="account.account" name="default_credit_account_id" ref="o_expense"/>
<field eval="True" name="centralisation"/>
<field name="user_id" ref="base.user_root"/>
</record>
<!--
Product income and expense accounts, default parameters
-->

View File

@ -382,7 +382,6 @@ class account_installer(osv.osv_memory):
data = mod_obj.browse(cr, uid, data_id[0], context=context)
view_id = data.res_id
seq_id = obj_sequence.search(cr,uid,[('name', '=', 'Account Journal')], context=context)[0]
if seq_journal:
seq_sale = {
'name': 'Sale Journal',
@ -416,12 +415,29 @@ class account_installer(osv.osv_memory):
'company_id': company_id.id
}
seq_id_purchase_refund = obj_sequence.create(cr, uid, seq_refund_purchase, context=context)
seq_opening_journal = {
'name': 'Opening Entries Journal',
'code': 'account.journal',
'prefix': 'OPEJ/%(year)s/',
'padding': 3,
'company_id': company_id.id
}
seq_id_opening = obj_sequence.create(cr, uid, seq_opening_journal, context=context)
seq_miscellaneous_journal = {
'name': 'Miscellaneous Journal',
'code': 'account.journal',
'prefix': 'MISJ/%(year)s/',
'padding': 3,
'company_id': company_id.id
}
seq_id_miscellaneous = obj_sequence.create(cr, uid, seq_miscellaneous_journal, context=context)
else:
seq_id_sale = seq_id
seq_id_purchase = seq_id
seq_id_sale_refund = seq_id
seq_id_purchase_refund = seq_id
seq_id_opening = seq_id
seq_id_miscellaneous = seq_id
vals_journal['view_id'] = view_id
#Sales Journal
@ -508,6 +524,41 @@ class account_installer(osv.osv_memory):
})
obj_journal.create(cr, uid, vals_journal, context=context)
# Miscellaneous Journal
data_id = mod_obj.search(cr, uid, [('model','=','account.journal.view'), ('name','=','account_journal_view')], context=context)
data = mod_obj.browse(cr, uid, data_id[0], context=context)
view_id_misc = data.res_id
analitical_miscellaneous_ids = analytic_journal_obj.search(cr, uid, [('type', '=', 'situation')], context=context)
analitical_journal_miscellaneous = analitical_miscellaneous_ids and analitical_miscellaneous_ids[0] or False
vals_journal = {
'view_id': view_id_misc,
'name': _('Miscellaneous Journal'),
'type': 'general',
'code': _('MISC'),
'sequence_id': seq_id_miscellaneous,
'analytic_journal_id': analitical_journal_miscellaneous,
'company_id': company_id.id
}
obj_journal.create(cr, uid, vals_journal, context=context)
# Opening Entries Journal
if obj_multi.property_account_income_opening and obj_multi.property_account_expense_opening:
vals_journal = {
'view_id': view_id_misc,
'name': _('Opening Entries Journal'),
'type': 'situation',
'code': _('OPEJ'),
'sequence_id': seq_id_opening,
'company_id': company_id.id,
'centralisation': True,
'default_credit_account_id': acc_template_ref[obj_multi.property_account_income_opening.id],
'default_debit_account_id': acc_template_ref[obj_multi.property_account_expense_opening.id]
}
obj_journal.create(cr, uid, vals_journal, context=context)
# Bank Journals
view_id_cash = obj_acc_journal_view.search(cr, uid, [('name', '=', 'Bank/Cash Journal View')], context=context)[0] #TOFIX: Why put fixed name ?
view_id_cur = obj_acc_journal_view.search(cr, uid, [('name', '=', 'Bank/Cash Journal (Multi-Currency) View')], context=context)[0] #TOFIX: why put fixed name?