account: add multi company to third party ledger report

bzr revid: ced-15f14615f0c7b315036d06c1dc53038a3b298630
This commit is contained in:
ced 2007-07-10 15:24:59 +00:00
parent e6eb14b7d1
commit 997d69a667
3 changed files with 76 additions and 53 deletions

View File

@ -38,20 +38,23 @@ class third_party_ledger(report_sxw.rml_parse):
'sum_debit_partner': self._sum_debit_partner,
'sum_credit_partner': self._sum_credit_partner,
'sum_debit': self._sum_debit,
'sum_credit': self._sum_credit
'sum_credit': self._sum_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 state<>'draft' AND period_id in (SELECT id FROM account_period WHERE fiscalyear_id=%d)",
(data['form']['date1'], data['form']['date2'], data['form']['fiscalyear']))
"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.state<>'draft' 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")
"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)
@ -123,5 +126,12 @@ class third_party_ledger(report_sxw.rml_parse):
"AND period_id in (SELECT id FROM account_period WHERE fiscalyear_id=%d)",
(self.datas['form']['date1'], self.datas['form']['date2'], self.datas['form']['fiscalyear']))
return self.cr.fetchone()[0] or 0.0
report_sxw.report_sxw('report.account.third_party_ledger', 'res.partner', 'addons/account/report/third_party_ledger.rml',parser=third_party_ledger)
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.third_party_ledger', 'res.partner', 'addons/account/report/third_party_ledger.rml',parser=third_party_ledger, header=False)

View File

@ -16,6 +16,9 @@
<blockBackground colorName="#e6e6e6" start="0,0" stop="0,0"/>
<blockBackground colorName="#e6e6e6" start="1,0" stop="1,0"/>
<blockBackground colorName="#e6e6e6" start="2,0" stop="2,0"/>
<blockBackground colorName="#e6e6e6" start="0,1" stop="0,1"/>
<blockBackground colorName="#e6e6e6" start="1,1" stop="1,1"/>
<blockBackground colorName="#e6e6e6" start="2,1" stop="2,1"/>
</blockTableStyle>
<blockTableStyle id="Table2">
<blockAlignment value="LEFT"/>
@ -40,19 +43,19 @@
</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"/>
<paraStyle name="P7" fontName="Times-Roman" fontSize="11.0" leading="14" alignment="CENTER" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P8" fontName="Times-Roman" fontSize="8.0" leading="10" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P9" fontName="Times-Bold" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P10" rightIndent="17.0" leftIndent="-0.0" fontName="Times-Roman" fontSize="8.0" leading="10" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P11" fontName="Times-Roman" fontSize="8.0" leading="10" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P12" fontName="Times-Roman" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P13" fontName="Times-Roman" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P14" fontName="Times-Roman" fontSize="11.0" leading="14" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P15" fontName="Times-Roman" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P3" fontName="Times-Roman" fontSize="8.0" leading="10" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P4" fontName="Times-Roman" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P5" fontName="Times-Roman" fontSize="8.0" leading="10" alignment="RIGHT" 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" fontSize="11.0" leading="14" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P8" fontName="Times-Roman" fontSize="11.0" leading="14" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P9" fontName="Times-Roman" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P10" fontName="Times-Roman" alignment="CENTER"/>
<paraStyle name="P11" fontName="Times-Roman" fontSize="11.0" leading="14"/>
<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" fontName="Times-Bold" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P15" rightIndent="17.0" leftIndent="-0.0" fontName="Times-Roman" 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"/>
@ -73,51 +76,51 @@
<para style="P1">Third party ledger</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">Complete</para>
<para style="P6">Complete</para>
</td>
<td>
<para style="P4"><i>Currency:</i> [[ company.currency_id.name ]]</para>
<para style="P7"><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="P6">
<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="P11">
<font color="white"> </font>
</para>
<blockTable colWidths="45.0,36.0,50.0,145.0,69.0,72.0,64.0" repeatRows="1" style="Table2">
<tr>
<td>
<para style="P7">Date</para>
<para style="P12">Date</para>
</td>
<td>
<para style="P7">J. code</para>
<para style="P12">J. code</para>
</td>
<td>
<para style="P7">Voucher Nb</para>
<para style="P12">Voucher Nb</para>
</td>
<td>
<para style="P7">Entry label</para>
<para style="P12">Entry label</para>
</td>
<td>
<para style="P7">Debit</para>
<para style="P12">Debit</para>
</td>
<td>
<para style="P7">Credit</para>
<para style="P12">Credit</para>
</td>
<td>
<para style="P7">Progressive balance</para>
<para style="P12">Progressive balance</para>
</td>
</tr>
</blockTable>
@ -125,49 +128,49 @@
<font color="white"> </font>
</para>
<section>
<para style="P8">[[ repeatIn(objects, 'p') ]]</para>
<para style="P9">[[ p.ref ]] [[ p.name ]]</para>
<para style="P13">[[ repeatIn(objects, 'p') ]]</para>
<para style="P14">[[ p.ref ]] [[ p.name ]]</para>
<blockTable colWidths="45.0,37.0,50.0,145.0,69.0,72.0,63.0" style="Table3">
<tr>
<td>
<para style="P10"><font face="Times-Roman">[[ repeatIn(lines(p), 'line') ]]</font>[[ line['date'] ]]</para>
<para style="P15"><font face="Times-Roman">[[ repeatIn(lines(p), 'line') ]]</font>[[ line['date'] ]]</para>
</td>
<td>
<para style="P11">[[ line['code'] ]]</para>
<para style="P3">[[ line['code'] ]]</para>
</td>
<td>
<para style="P11">[[ line['ref'] ]]</para>
<para style="P3">[[ line['ref'] ]]</para>
</td>
<td>
<para style="P12">[[ line['name'] ]]</para>
<para style="P4">[[ line['name'] ]]</para>
</td>
<td>
<para style="P13">[[ line['debit'] and '%.2f' % line['debit'] or '' ]]</para>
<para style="P5">[[ line['debit'] and '%.2f' % line['debit'] or '' ]]</para>
</td>
<td>
<para style="P13">[[ line['credit'] and '%.2f' % line['credit'] or '' ]]</para>
<para style="P5">[[ line['credit'] and '%.2f' % line['credit'] or '' ]]</para>
</td>
<td>
<para style="P13">[[ line['progress'] and '%.2f' % line['progress'] or '' ]]</para>
<para style="P5">[[ line['progress'] and '%.2f' % line['progress'] or '' ]]</para>
</td>
</tr>
</blockTable>
<blockTable colWidths="277.0,69.0,72.0,63.0" style="Table5">
<tr>
<td>
<para style="P14">Total for [[ p.ref ]] </para>
<para style="P14">
<para style="P8">Total for [[ p.ref ]] </para>
<para style="P8">
<font color="white"> </font>
</para>
</td>
<td>
<para style="P15">[[ '%.2f' % sum_debit_partner(p) ]]</para>
<para style="P9">[[ '%.2f' % sum_debit_partner(p) ]]</para>
</td>
<td>
<para style="P15">[[ '%.2f' % sum_credit_partner(p) ]]</para>
<para style="P9">[[ '%.2f' % sum_credit_partner(p) ]]</para>
</td>
<td>
<para style="P15">[[ '%.2f' %(sum_debit_partner(p) - sum_credit_partner(p)) ]]</para>
<para style="P9">[[ '%.2f' %(sum_debit_partner(p) - sum_credit_partner(p)) ]]</para>
</td>
</tr>
</blockTable>
@ -181,16 +184,16 @@
<blockTable colWidths="277.0,69.0,72.0,63.0" style="Table4">
<tr>
<td>
<para style="P14">Balance brought forward</para>
<para style="P8">Balance brought forward</para>
</td>
<td>
<para style="P15">[[ '%.2f' % sum_debit() ]]</para>
<para style="P9">[[ '%.2f' % sum_debit() ]]</para>
</td>
<td>
<para style="P15">[[ '%.2f' % sum_credit() ]]</para>
<para style="P9">[[ '%.2f' % sum_credit() ]]</para>
</td>
<td>
<para style="P15">[[ '%.2f' %(sum_debit() - sum_credit()) ]]</para>
<para style="P9">[[ '%.2f' %(sum_debit() - sum_credit()) ]]</para>
</td>
</tr>
</blockTable>

View File

@ -31,13 +31,15 @@ import pooler
dates_form = '''<?xml version="1.0"?>
<form string="Select period">
<field name="fiscalyear"/>
<field name="company_id" colspan="4"/>
<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 +49,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 = {