account: add multi company to partner balance report

bzr revid: ced-4ced091928f76125f35c01c26b5b7a8681915d80
This commit is contained in:
ced 2007-07-10 15:24:54 +00:00
parent 8efc139282
commit e6eb14b7d1
3 changed files with 81 additions and 58 deletions

View File

@ -42,12 +42,18 @@ class partner_balance(report_sxw.rml_parse):
'sum_scredit': self._sum_scredit,
'solde_debit': self._solde_balance_debit,
'solde_credit': self._solde_balance_credit,
'get_company': self._get_company,
'get_currency': self._get_currency,
})
def preprocess(self, objects, data, ids):
self.cr.execute('select distinct partner_id from account_move_line where partner_id is not null and date>=%s and date<=%s and period_id in (SELECT id FROM account_period WHERE fiscalyear_id=%d)', (data['form']['date1'], data['form']['date2'], data['form']['fiscalyear']))
self.cr.execute('select distinct line.partner_id \
from account_move_line AS line, account_account AS account \
where line.partner_id is not null and line.date>=%s and line.date<=%s \
and line.period_id in (SELECT id FROM account_period WHERE fiscalyear_id=%d) \
AND line.account_id = account.id AND account.company_id = %d', (data['form']['date1'], data['form']['date2'], data['form']['fiscalyear'], data['form']['company_id']))
new_ids = [id for (id,) in self.cr.fetchall()]
self.cr.execute("SELECT a.id FROM account_account a LEFT JOIN account_account_type t ON (a.type=t.code) WHERE t.partner_account=TRUE")
self.cr.execute("SELECT a.id FROM account_account a LEFT JOIN account_account_type t ON (a.type=t.code) WHERE t.partner_account=TRUE AND a.company_id = %d", (data['form']['company_id'],))
self.account_ids = ','.join([str(a) for (a,) in self.cr.fetchall()])
self.partner_ids = ','.join(map(str, new_ids))
objects = self.pool.get('res.partner').browse(self.cr, self.uid, new_ids)
@ -168,6 +174,12 @@ class partner_balance(report_sxw.rml_parse):
def _solde_balance_credit(self):
debit, credit = self._sum_debit(), self._sum_credit()
return credit > debit and credit - debit
report_sxw.report_sxw('report.account.partner.balance', 'res.partner', 'addons/account/report/partner_balance.rml',parser=partner_balance)
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.partner.balance', 'res.partner', 'addons/account/report/partner_balance.rml',parser=partner_balance, header=False)

View File

@ -44,18 +44,18 @@
</initialize>
<paraStyle name="P1" fontName="Times-Roman" fontSize="20.0" leading="25" alignment="CENTER" spaceBefore="0.0" spaceAfter="6.0"/>
<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="P6" fontName="Times-Roman" fontSize="11.0" leading="14" alignment="CENTER" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P7" fontName="Times-Roman" fontSize="8.0" leading="10" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P8" rightIndent="17.0" leftIndent="-0.0" fontName="Times-Bold" fontSize="8.0" leading="10" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P9" fontName="Times-Roman" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P10" fontName="Times-Roman" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P11" fontName="Times-Roman" fontSize="11.0" leading="14" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P12" fontName="Times-Roman" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P13" fontName="Times-Roman" fontSize="8.0" leading="10"/>
<paraStyle name="P14" fontName="Times-Roman" alignment="LEFT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P3" fontName="Times-Roman" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P4" fontName="Times-Roman" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P5" fontName="Times-Roman" alignment="CENTER" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P6" fontName="Times-Roman" fontSize="11.0" leading="14" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P7" fontName="Times-Roman" fontSize="11.0" leading="14" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P8" fontName="Times-Roman" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P9" fontName="Times-Roman" alignment="LEFT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P10" fontName="Times-Roman" alignment="CENTER"/>
<paraStyle name="P11" fontName="Times-Roman" fontSize="8.0" leading="10"/>
<paraStyle name="P12" fontName="Times-Roman" fontSize="11.0" leading="14" alignment="CENTER" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P13" fontName="Times-Roman" fontSize="8.0" leading="10" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P14" rightIndent="17.0" leftIndent="-0.0" fontName="Times-Bold" fontSize="8.0" leading="10" 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"/>
<paraStyle name="List" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
@ -76,101 +76,101 @@
<para style="P1">Third party balance</para>
</td>
<td>
<para style="P2"><i>From</i> [[ data['form']['date1'] ]]</para>
<para style="P2"><i>to</i> [[ data['form']['date2'] ]]</para>
<para style="P2"><font face="Times-Roman">From</font> [[ data['form']['date1'] ]]</para>
<para style="P2"><font face="Times-Roman">to</font> [[ data['form']['date2'] ]]</para>
</td>
</tr>
<tr>
<td>
<para style="Table Contents">[[ company.name ]]</para>
<para style="Table Contents">[[ get_company(data['form']) ]]</para>
</td>
<td>
<para style="P3">
<para style="P5">
<font color="white"> </font>
</para>
</td>
<td>
<para style="P4"><i>Currency:</i> [[ company.currency_id.name ]]</para>
<para style="P6"><font face="Times-Roman">Currency:</font> [[ get_currency(data['form']) ]]</para>
</td>
</tr>
</blockTable>
<para style="Standard">
<font color="white"> </font>
</para>
<para style="P5"><i>Printing date:</i> [[ time.strftime('%Y-%m-%d') ]] <i>at</i> [[ time.strftime('%H:%M:%S') ]]</para>
<para style="P5">
<para style="P10"><font face="Times-Roman">Printing date:</font> [[ time.strftime('%Y-%m-%d') ]] <font face="Times-Roman">at</font> [[ time.strftime('%H:%M:%S') ]]</para>
<para style="P10">
<font color="white"> </font>
</para>
<blockTable colWidths="60.0,137.0,118.0,109.0,58.0" repeatRows="1" style="Table6">
<tr>
<td>
<para style="P6">Account number</para>
<para style="P12">Account number</para>
</td>
<td>
<para style="P6">Account name</para>
<para style="P12">Account name</para>
</td>
<td>
<para style="P6">Transactions</para>
<para style="P12">Transactions</para>
</td>
<td>
<para style="P6">Balances</para>
<para style="P12">Balances</para>
</td>
<td>
<para style="P6">In dispute</para>
<para style="P12">In dispute</para>
</td>
</tr>
</blockTable>
<blockTable colWidths="197.0,60.0,58.0,55.0,54.0,58.0" repeatRows="1" style="Table2">
<blockTable colWidths="197.0,60.0,58.0,56.0,54.0,58.0" repeatRows="1" style="Table2">
<tr>
<td>
<para style="P6">
<para style="P12">
<font color="white"> </font>
</para>
</td>
<td>
<para style="P6">Debit</para>
<para style="P12">Debit</para>
</td>
<td>
<para style="P6">Credit</para>
<para style="P12">Credit</para>
</td>
<td>
<para style="P6">Debit</para>
<para style="P12">Debit</para>
</td>
<td>
<para style="P6">Credit</para>
<para style="P12">Credit</para>
</td>
<td>
<para style="P6">
<para style="P12">
<font color="white"> </font>
</para>
</td>
</tr>
</blockTable>
<para style="P7">
<para style="P13">
<font color="white"> </font>
</para>
<blockTable colWidths="61.0,137.0,60.0,58.0,55.0,54.0,57.0" style="Table3">
<tr>
<td>
<para style="P8">[[ repeatIn(lines(), 'a') ]]<font face="Times-Roman">[[ a['ref'] ]]</font></para>
<para style="P14">[[ repeatIn(lines(), 'a') ]]<font face="Times-Roman">[[ a['ref'] ]]</font></para>
</td>
<td>
<para style="P9">[[ a['name'] ]]</para>
<para style="P3">[[ a['name'] ]]</para>
</td>
<td>
<para style="P10">[[ '%.2f' % a['debit'] ]]</para>
<para style="P4">[[ '%.2f' % a['debit'] ]]</para>
</td>
<td>
<para style="P10">[[ '%.2f' % a['credit'] ]]</para>
<para style="P4">[[ '%.2f' % a['credit'] ]]</para>
</td>
<td>
<para style="P10">[[ '%.2f' % a['sdebit'] ]]</para>
<para style="P4">[[ '%.2f' % a['sdebit'] ]]</para>
</td>
<td>
<para style="P10">[[ '%.2f' % a['scredit'] ]]</para>
<para style="P4">[[ '%.2f' % a['scredit'] ]]</para>
</td>
<td>
<para style="P10">[[ '%.2f' % (a['enlitige'] or 0.0) ]]</para>
<para style="P4">[[ '%.2f' % (a['enlitige'] or 0.0) ]]</para>
</td>
</tr>
</blockTable>
@ -180,53 +180,53 @@
<blockTable colWidths="198.0,60.0,58.0,56.0,53.0,57.0" style="Table4">
<tr>
<td>
<para style="P11">Grand total</para>
<para style="P7">Grand total</para>
</td>
<td>
<para style="P12">[[ '%.2f' % sum_debit() ]]</para>
<para style="P8">[[ '%.2f' % sum_debit() ]]</para>
</td>
<td>
<para style="P12">[[ '%.2f' % sum_credit() ]]</para>
<para style="P8">[[ '%.2f' % sum_credit() ]]</para>
</td>
<td>
<para style="P12">[[ '%.2f' % sum_sdebit() ]]</para>
<para style="P8">[[ '%.2f' % sum_sdebit() ]]</para>
</td>
<td>
<para style="P12">[[ '%.2f' % sum_scredit() ]]</para>
<para style="P8">[[ '%.2f' % sum_scredit() ]]</para>
</td>
<td>
<para style="P12">[[ '%.2f' % sum_litige() ]]</para>
<para style="P8">[[ '%.2f' % sum_litige() ]]</para>
</td>
</tr>
<tr>
<td>
<para style="P11">Balance</para>
<para style="P7">Balance</para>
</td>
<td>
<para style="P12">
<para style="P8">
<font color="white"> </font>
</para>
</td>
<td>
<para style="P12">
<para style="P8">
<font color="white"> </font>
</para>
</td>
<td>
<para style="P12">[[ '%.2f' % solde_debit() ]]</para>
<para style="P8">[[ '%.2f' % solde_debit() ]]</para>
</td>
<td>
<para style="P12">[[ '%.2f' % solde_credit() ]]</para>
<para style="P8">[[ '%.2f' % solde_credit() ]]</para>
</td>
<td>
<para style="P12">
<para style="P8">
<font color="white"> </font>
</para>
</td>
</tr>
</blockTable>
<para style="P13"/>
<para style="P14">
<para style="P11"/>
<para style="P9">
<font color="white"> </font>
</para>
</story>

View File

@ -31,13 +31,16 @@ import pooler
dates_form = '''<?xml version="1.0"?>
<form string="Select period">
<field name="fiscalyear"/>
<field name="company_id" colspan="4"/>
<newline/>
<field name="fiscalyear" colspan="4"/>
<newline/>
<field name="date1"/>
<field name="date2"/>
</form>'''
dates_fields = {
'company_id': {'string': 'Company', 'type': 'many2one', 'relation': 'res.company', 'required': True},
'fiscalyear': {'string': 'Fiscal year', 'type': 'many2one', 'relation': 'account.fiscalyear', 'required': True},
'date1': {'string':'Start of period', 'type':'date', 'required':True, 'default': lambda *a: time.strftime('%Y-01-01')},
'date2': {'string':'End of period', 'type':'date', 'required':True, 'default': lambda *a: time.strftime('%Y-%m-%d')},
@ -47,6 +50,14 @@ 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 = {