account: fix multi company in aged trial balance

bzr revid: ced-3e84eef5a9e33743baf35770a8dadd5447feb376
This commit is contained in:
ced 2007-07-10 15:24:40 +00:00
parent 6c238ec856
commit d3e7cc769a
3 changed files with 91 additions and 46 deletions

View File

@ -38,6 +38,8 @@ class aged_trial_report(report_sxw.rml_parse):
'get_total': self._get_total,
'get_before': self._get_before,
'get_for_period': self._get_for_period,
'get_company': self._get_company,
'get_currency': self._get_currency,
})
def _add_header(self, node):
@ -50,25 +52,37 @@ class aged_trial_report(report_sxw.rml_parse):
WHERE (line.account_id=account_account.id) AND (line.reconcile_id IS NULL) \
AND (line.partner_id=res_partner.id) AND (line.state<>'draft') \
AND (line.period_id in (SELECT id FROM account_period WHERE fiscalyear_id=%d))\
ORDER BY res_partner.name" % (form['fiscalyear'],))
AND (account_account.company_id = %d) \
ORDER BY res_partner.name", (form['fiscalyear'], form['company_id']))
partners = self.cr.dictfetchall()
for partner in partners:
values = {}
self.cr.execute("SELECT SUM(debit-credit) FROM account_move_line AS line, account_account \
WHERE (line.account_id=account_account.id) AND (account_account.type IN ('payable','receivable')) \
AND (date<'%s') AND (partner_id=%d) AND (reconcile_id IS NULL) AND (line.state<>'draft') AND (line.period_id in (SELECT id FROM account_period WHERE fiscalyear_id=%d))" % (form['0']['start'], partner['id'], form['fiscalyear']))
self.cr.execute("SELECT SUM(debit-credit) \
FROM account_move_line AS line, account_account \
WHERE (line.account_id=account_account.id) AND (account_account.type IN ('payable','receivable')) \
AND (date<%s) AND (partner_id=%d) \
AND (reconcile_id IS NULL) AND (line.state<>'draft') \
AND (line.period_id in (SELECT id FROM account_period WHERE fiscalyear_id=%d)) \
AND (account_account.company_id = %d)", (form['0']['start'], partner['id'], form['fiscalyear'], form['company_id']))
before = self.cr.fetchone()
values['before'] = before and before[0] or ""
for i in range(5):
self.cr.execute("SELECT SUM(debit-credit) FROM account_move_line AS line, account_account \
WHERE (line.account_id=account_account.id) AND (account_account.type IN ('payable','receivable')) \
AND (date>='%s') AND (date<='%s') AND (partner_id=%d) AND (reconcile_id IS NULL) AND line.state<>'draft' AND (line.period_id in (SELECT id FROM account_period WHERE fiscalyear_id=%d))" % (form[str(i)]['start'], form[str(i)]['stop'], partner['id'], form['fiscalyear']))
self.cr.execute("SELECT SUM(debit-credit) \
FROM account_move_line AS line, account_account \
WHERE (line.account_id=account_account.id) AND (account_account.type IN ('payable','receivable')) \
AND (date >= %s) AND (date <= %s) \
AND (partner_id=%d) AND (reconcile_id IS NULL) \
AND line.state<>'draft' AND (line.period_id in (SELECT id FROM account_period WHERE fiscalyear_id=%d)) \
AND (account_account.company_id = %d)", (form[str(i)]['start'], form[str(i)]['stop'], partner['id'], form['fiscalyear'], form['company_id']))
during = self.cr.fetchone()
values[str(i)] = during and during[0] or ""
self.cr.execute("SELECT SUM(debit-credit) FROM account_move_line AS line, account_account \
WHERE (line.account_id=account_account.id) AND (account_account.type IN ('payable','receivable')) \
AND (partner_id=%d) AND (reconcile_id IS NULL) AND (line.state<>'draft') AND (line.period_id in (SELECT id FROM account_period WHERE fiscalyear_id=%d))" % (partner['id'], form['fiscalyear']))
self.cr.execute("SELECT SUM(debit-credit) \
FROM account_move_line AS line, account_account \
WHERE (line.account_id=account_account.id) AND (account_account.type IN ('payable','receivable')) \
AND (partner_id = %d) AND (reconcile_id IS NULL) \
AND (line.state <> 'draft') AND (line.period_id in (SELECT id FROM account_period WHERE fiscalyear_id=%d)) \
AND (account_account.company_id = %d)", (partner['id'], form['fiscalyear'], form['company_id']))
total = self.cr.fetchone()
values['total'] = total and total[0] or 0.0
values['name'] = partner['name']
@ -86,25 +100,44 @@ class aged_trial_report(report_sxw.rml_parse):
totals[str(i)] += float(r[str(i)] or 0.0)
return res
def _get_total(self, fiscalyear):
self.cr.execute("SELECT SUM(debit-credit) FROM account_move_line AS line, account_account \
WHERE (line.account_id=account_account.id) AND (account_account.type IN ('payable','receivable')) AND reconcile_id IS NULL AND (line.state<>'draft') and partner_id is not null AND (line.period_id in (SELECT id FROM account_period WHERE fiscalyear_id=%d))" % (fiscalyear,))
def _get_total(self, fiscalyear, company_id):
self.cr.execute("SELECT SUM(debit-credit) \
FROM account_move_line AS line, account_account \
WHERE (line.account_id=account_account.id) AND (account_account.type IN ('payable','receivable')) \
AND reconcile_id IS NULL AND (line.state<>'draft') \
AND partner_id is not null AND (line.period_id in (SELECT id FROM account_period WHERE fiscalyear_id=%d)) \
AND (account_account.company_id = %d)", (fiscalyear, company_id))
total = self.cr.fetchone()
return total and total[0] or 0.0
def _get_before(self, date, fiscalyear):
self.cr.execute("SELECT SUM(debit-credit) FROM account_move_line AS line, account_account \
WHERE (line.account_id=account_account.id) AND (account_account.type IN ('payable','receivable')) AND reconcile_id IS NULL AND (date<'%s') and (line.state<>'draft') and partner_id is not null AND (line.period_id in (SELECT id FROM account_period WHERE fiscalyear_id=%d))" % (date, fiscalyear))
def _get_before(self, date, fiscalyear, company_id):
self.cr.execute("SELECT SUM(debit-credit) \
FROM account_move_line AS line, account_account \
WHERE (line.account_id=account_account.id) AND (account_account.type IN ('payable','receivable')) \
AND reconcile_id IS NULL AND (date < %s) \
AND (line.state <> 'draft') AND partner_id is not null \
AND (line.period_id in (SELECT id FROM account_period WHERE fiscalyear_id = %d)) \
AND (account_account.company_id = %d)", (date, fiscalyear, company_id))
before = self.cr.fetchone()
return before and before[0] or 0.0
def _get_for_period(self, period, fiscalyear):
self.cr.execute("SELECT SUM(debit-credit) FROM account_move_line AS line, account_account \
WHERE (line.account_id=account_account.id) AND (account_account.type IN ('payable','receivable')) \
AND reconcile_id IS NULL AND (date>='%s') AND (date<='%s') and (line.state<>'draft') and partner_id is not null AND (line.period_id in (SELECT id FROM account_period WHERE fiscalyear_id=%d))" % (period['start'], period['stop'], fiscalyear))
def _get_for_period(self, period, fiscalyear, company_id):
self.cr.execute("SELECT SUM(debit-credit) \
FROM account_move_line AS line, account_account \
WHERE (line.account_id=account_account.id) AND (account_account.type IN ('payable','receivable')) \
AND reconcile_id IS NULL AND (date >= %s) AND (date <= %s) \
AND (line.state<>'draft') AND partner_id is not null \
AND (line.period_id in (SELECT id FROM account_period WHERE fiscalyear_id = %d)) \
AND (account_account.company_id = %d)", (period['start'], period['stop'], fiscalyear, company_id))
period = self.cr.fetchone()
return period and period[0] or 0.0
def _get_company(self, form):
return pooler.get_pool(self.cr.dbname).get('res.company').browse(self.cr, self.uid, form['company_id']).name
def _get_currency(self, form):
return pooler.get_pool(self.cr.dbname).get('res.company').browse(self.cr, self.uid, form['company_id']).currency_id.name
report_sxw.report_sxw(
'report.account.aged.trial.balance',
'res.partner',

View File

@ -41,11 +41,11 @@
<paraStyle name="P2" fontName="Times-Roman" fontSize="10.0" leading="13" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P3" fontName="Times-Roman" alignment="CENTER" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P4" fontName="Times-Roman" fontSize="11.0" leading="14" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P5" fontName="Times-Roman" alignment="CENTER"/>
<paraStyle name="P5" fontName="Times-Roman" alignment="CENTER" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P6" fontName="Times-Roman" alignment="CENTER" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P7" fontName="Times-Roman" alignment="CENTER" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P7" fontName="Times-Roman" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P8" fontName="Times-Roman" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P9" fontName="Times-Roman" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P9" fontName="Times-Roman" alignment="CENTER"/>
<paraStyle name="P10" fontName="Times-Roman" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Standard" fontName="Times-Roman"/>
<paraStyle name="Text body" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
@ -74,7 +74,7 @@
</tr>
<tr>
<td>
<para style="Table Contents">[[ company.name ]]</para>
<para style="Table Contents">[[ get_company(data['form']) ]]</para>
</td>
<td>
<para style="P3">
@ -82,42 +82,42 @@
</para>
</td>
<td>
<para style="P4">Currency: [[ company.currency_id.name ]]</para>
<para style="P4">Currency: [[ get_currency(data['form']) ]]</para>
</td>
</tr>
</blockTable>
<para style="Standard">
<font color="white"> </font>
</para>
<para style="P5">Printing date: [[ time.strftime('%Y-%m-%d') ]] at [[ time.strftime('%H:%M:%S') ]]</para>
<para style="P5">
<para style="P9">Printing date: [[ time.strftime('%Y-%m-%d') ]] at [[ time.strftime('%H:%M:%S') ]]</para>
<para style="P9">
<font color="white"> </font>
</para>
<blockTable colWidths="218.0,71.0,71.0,71.0,71.0,71.0,71.0,85.0" style="Tableau1">
<tr>
<td>
<para style="P6">Partners</para>
<para style="P5">Partners</para>
</td>
<td>
<para style="P7">[[ data['form']['4']['name'] ]]</para>
<para style="P6">[[ data['form']['4']['name'] ]]</para>
</td>
<td>
<para style="P7">[[ data['form']['3']['name'] ]]</para>
<para style="P6">[[ data['form']['3']['name'] ]]</para>
</td>
<td>
<para style="P7">[[ data['form']['2']['name'] ]]</para>
<para style="P6">[[ data['form']['2']['name'] ]]</para>
</td>
<td>
<para style="P7">[[ data['form']['1']['name'] ]]</para>
<para style="P6">[[ data['form']['1']['name'] ]]</para>
</td>
<td>
<para style="P7">[[ data['form']['0']['name'] ]]</para>
<para style="P6">[[ data['form']['0']['name'] ]]</para>
</td>
<td>
<para style="P7">Before [[ data['form']['0']['start'] ]]</para>
<para style="P6">Before [[ data['form']['0']['start'] ]]</para>
</td>
<td>
<para style="P6">Total</para>
<para style="P5">Total</para>
</td>
</tr>
</blockTable>
@ -153,32 +153,32 @@
<blockTable colWidths="218.0,71.0,71.0,71.0,71.0,71.0,71.0,85.0" style="Tableau3">
<tr>
<td>
<para style="P6">Account total</para>
<para style="P5">Account total</para>
</td>
<td>
<para style="P9">[[ '%.2f' % get_for_period(data['form']['4'], data['form']['fiscalyear']) ]]</para>
<para style="P7">[[ '%.2f' % get_for_period(data['form']['4'], data['form']['fiscalyear'], data['form']['company_id']) ]]</para>
</td>
<td>
<para style="P9">[[ '%.2f' % get_for_period(data['form']['3'], data['form']['fiscalyear']) ]]</para>
<para style="P7">[[ '%.2f' % get_for_period(data['form']['3'], data['form']['fiscalyear'], data['form']['company_id']) ]]</para>
</td>
<td>
<para style="P9">[[ '%.2f' % get_for_period(data['form']['2'], data['form']['fiscalyear']) ]]</para>
<para style="P7">[[ '%.2f' % get_for_period(data['form']['2'], data['form']['fiscalyear'], data['form']['company_id']) ]]</para>
</td>
<td>
<para style="P9">[['%.2f' % get_for_period(data['form']['1'], data['form']['fiscalyear']) ]]</para>
<para style="P7">[['%.2f' % get_for_period(data['form']['1'], data['form']['fiscalyear'], data['form']['company_id']) ]]</para>
</td>
<td>
<para style="P9">[[ '%.2f' % get_for_period(data['form']['0'], data['form']['fiscalyear']) ]]</para>
<para style="P7">[[ '%.2f' % get_for_period(data['form']['0'], data['form']['fiscalyear'], data['form']['company_id']) ]]</para>
</td>
<td>
<para style="P9">[[ '%.2f' % get_before(data['form']['0']['start'], data['form']['fiscalyear']) ]]</para>
<para style="P7">[[ '%.2f' % get_before(data['form']['0']['start'], data['form']['fiscalyear'], data['form']['company_id']) ]]</para>
</td>
<td>
<para style="P10">[[ '%.2f' % get_total( data['form']['fiscalyear']) ]]</para>
<para style="P10">[[ '%.2f' % get_total( data['form']['fiscalyear'], data['form']['company_id']) ]]</para>
</td>
</tr>
</blockTable>
<para style="P5">
<para style="P9">
<font color="white"> </font>
</para>
</story>

View File

@ -35,13 +35,16 @@ from mx.DateTime import *
_aged_trial_form = """<?xml version="1.0"?>
<form string="Aged Trial Balance">
<field name="company_id"/>
<newline/>
<field name="fiscalyear"/>
<newline/>
<field name="period_length"/>
</form>"""
_aged_trial_fields = {
'fiscalyear': {'string': 'Fiscal year', 'type': 'many2one', 'relation': 'account.fiscalyear', 'required': True},
'company_id': {'string': 'Company', 'type': 'many2one', 'relation': 'res.company', 'required': True},
'fiscalyear': {'string': 'Fiscal year', 'type': 'many2one', 'relation': 'account.fiscalyear', 'required': True},
'period_length': {'string': 'Period length (days)', 'type': 'integer', 'required': True, 'default': lambda *a:30},
}
@ -65,8 +68,17 @@ class wizard_report(wizard.interface):
def _get_defaults(self, cr, uid, data, context):
fiscalyear_obj = pooler.get_pool(cr.dbname).get('account.fiscalyear')
data['form']['fiscalyear'] = fiscalyear_obj.find(cr, uid)
user = pooler.get_pool(cr.dbname).get('res.users').browse(cr, uid, uid, context=context)
if user.company_id:
company_id = user.company_id.id
else:
company_id = pooler.get_pool(cr.dbname).get('res.company').search(cr, uid, [('parent_id', '=', False)])[0]
data['form']['company_id'] = company_id
return data['form']
states = {
'init': {
'actions': [_get_defaults],