[REF] account: partner balance refactoring, code cleaning

bzr revid: qdp-launchpad@tinyerp.com-20100928150447-v58cnqamog9dcnia
This commit is contained in:
qdp-launchpad@tinyerp.com 2010-09-28 17:04:47 +02:00
parent 4c5d3e446f
commit 64e487d8fc
2 changed files with 8 additions and 115 deletions

View File

@ -22,7 +22,7 @@
import time
import re
import copy
from tools.translate import _
from report import report_sxw
from common_report_header import common_report_header
@ -39,14 +39,7 @@ class partner_balance(report_sxw.rml_parse, common_report_header):
'sum_debit': self._sum_debit,
'sum_credit': self._sum_credit,
'sum_litige': self._sum_litige,
'sum_sdebit': self._sum_sdebit,
'sum_scredit': self._sum_scredit,
'solde_debit': self._solde_balance_debit,
'solde_credit': self._solde_balance_credit,
'get_currency': self._get_currency,
'comma_me' : self.comma_me,
'get_fiscalyear': self._get_fiscalyear,
'get_periods':self.get_periods,
'get_journal': self._get_journal,
'get_filter': self._get_filter,
'get_account': self._get_account,
@ -61,41 +54,6 @@ class partner_balance(report_sxw.rml_parse, common_report_header):
# Date Management
#
def get_periods(self, form):
result = ''
if form.has_key('periods') and form['periods']:
period_ids = form['periods']
per_ids = self.pool.get('account.period').browse(self.cr, self.uid, form['periods'])
for r in per_ids:
if r == per_ids[len(per_ids)-1]:
result += r.name + ". "
else:
result += r.name + ", "
else:
fy_obj = self.pool.get('account.fiscalyear').browse(self.cr, self.uid, form['fiscalyear'])
res = fy_obj.period_ids
len_res = len(res)
for r in res:
if r == res[len_res-1]:
result += r.name + ". "
else:
result += r.name + ", "
return str(result and result[:-1]) or 'ALL'
def comma_me(self, amount):
if type(amount) is float :
amount = str('%.2f'%amount)
else :
amount = str(amount)
if (amount == '0'):
return ' '
orig = amount
new = re.sub("^(-?\d+)(\d{3})", "\g<1>'\g<2>", amount)
if orig == new:
return new
else:
return self.comma_me(new)
def set_context(self, objects, data, ids, report_type=None):
## Compute Code
#
@ -221,7 +179,7 @@ class partner_balance(report_sxw.rml_parse, common_report_header):
for rec in full_account:
if not rec.get('name', False):
rec.update({'name': 'Unknown Partner'})
rec.update({'name': _('Unknown Partner')})
## We will now compute Total
subtotal_row = self._add_subtotal(full_account)
@ -257,12 +215,12 @@ class partner_balance(report_sxw.rml_parse, common_report_header):
new_header['ref'] = ''
new_header['name'] = r['account_name']
new_header['code'] = r['code']
new_header['debit'] = r['credit'] #tot_credit
new_header['credit'] = r['debit'] #tot_debit
new_header['debit'] = r['debit']
new_header['credit'] = r['credit']
new_header['scredit'] = tot_scredit
new_header['sdebit'] = tot_sdebit
new_header['enlitige'] = tot_enlitige
new_header['balance'] = float(tot_sdebit) - float(tot_scredit)
new_header['balance'] = r['debit'] - r['credit']
new_header['type'] = 3
##
completearray.append(new_header)
@ -437,71 +395,6 @@ class partner_balance(report_sxw.rml_parse, common_report_header):
# temp_res += float(self.cr.fetchone()[0] or 0.0)
return temp_res
def _sum_sdebit(self):
move_state = ['draft','posted']
if self.target_move == 'posted':
move_state = ['posted']
if not self.ids:
return 0.0
result_tmp = 0.0
a = 0.0
self.cr.execute(
"SELECT CASE WHEN sum(debit) > sum(credit) " \
"THEN sum(debit) - sum(credit) " \
"ELSE 0 " \
"END " \
"FROM account_move_line AS l " \
"JOIN account_move am ON (am.id = l.move_id)" \
"WHERE l.account_id IN %s" \
"AND am.state IN %s" \
"AND " + self.query + " " \
"GROUP BY l.partner_id",
(tuple(self.account_ids), tuple(move_state),))
a = self.cr.fetchone()[0]
if self.cr.fetchone() != None:
result_tmp = result_tmp + (a or 0.0)
else:
result_tmp = 0.0
return result_tmp
def _sum_scredit(self):
move_state = ['draft','posted']
if self.target_move == 'posted':
move_state = ['posted']
if not self.ids:
return 0.0
result_tmp = 0.0
a = 0.0
self.cr.execute(
"SELECT CASE WHEN sum(debit) < sum(credit) " \
"THEN sum(credit) - sum(debit) " \
"ELSE 0 " \
"END " \
"FROM account_move_line AS l " \
"WHERE l.account_id IN %s" \
"JOIN account_move am ON (am.id = l.move_id)" \
"AND am.state IN %s" \
"AND " + self.query + " " \
"GROUP BY l.partner_id",
(tuple(self.account_ids), tuple(move_state), ))
a = self.cr.fetchone()[0] or 0.0
if self.cr.fetchone() != None:
result_tmp = result_tmp + (a or 0.0)
else:
result_tmp = 0.0
return result_tmp
def _solde_balance_debit(self):
debit, credit = self._sum_debit(), self._sum_credit()
return debit > credit and debit - credit
def _solde_balance_credit(self):
debit, credit = self._sum_debit(), self._sum_credit()
return credit > debit and credit - debit
def _get_partners(self):
if self.result_selection == 'customer':
return 'Receivable Accounts'
@ -513,4 +406,4 @@ class partner_balance(report_sxw.rml_parse, common_report_header):
report_sxw.report_sxw('report.account.partner.balance', 'res.partner', 'account/report/account_partner_balance.rml',parser=partner_balance, header="internal")
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,5 +1,5 @@
<?xml version="1.0"?>
<document filename="HipHop.pdf">
<document filename="partner_balance.pdf">
<template pageSize="(595.0,842.0)" title="Partner Balance" author="OpenERP S.A. (sales@openerp.com)" allowSplitting="20">
<pageTemplate id="first">
<frame id="first" x1="57.0" y1="57.0" width="481" height="728"/>
@ -241,7 +241,7 @@
<td><para style="P8"></para></td>
<td><para style="P8"><u>[[ formatLang(sum_debit()) ]] </u></para></td>
<td><para style="P8"><u>[[ formatLang(sum_credit()) ]]</u></para></td>
<td><para style="P8"><u>[[ formatLang((solde_debit()-solde_credit())) ]] [[ company.currency_id.symbol ]]</u></para></td>
<td><para style="P8"><u>[[ formatLang((sum_debit()-sum_credit())) ]] [[ company.currency_id.symbol ]]</u></para></td>
<td><para style="P8"><u>[[ formatLang(sum_litige()) ]] [[ company.currency_id.symbol ]]</u></para></td>
</tr>
<tr>