Purnendu Singh (OpenERP) has proposed merging
lp:~openerp-dev/openobject-addons/trunk-bug-722832-new-psi into
lp:openobject-addons.
Requested reviews:
OpenERP Core Team (openerp)
Related bugs:
Bug #722832 in OpenERP Addons: "Balance Sheet Report - Overall balance
calculation error"
https://bugs.launchpad.net/openobject-addons/+bug/722832
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-722832-new-psi/+merge/77289
Hello,
fixes:
https://bugs.launchpad.net/openobject-addons/+bug/722832
Balance Sheet Report - Overall balance calculation error
1) Balance sheet report imporovements:
a) In case of Net Profit set amount as negative to avoid any confusion.
b) Change in the logic of sum_dr() and sum_cr() methods to get correct
output in both case (Net profit as well as Net Loss), previously in case of
Loss we were getting wrong total on Asset side.
2) instead of account.level, we must count the number of parents of the account
that are displayed on teh report and use that to make the layout.
Thanks,
Purnendu Singh
--
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-722832-new-psi/+merge/77289
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openobject-addons/trunk-bug-722832-new-psi.
=== modified file 'account/report/account_balance_sheet.py'
--- account/report/account_balance_sheet.py 2011-09-21 01:35:11 +0000
+++ account/report/account_balance_sheet.py 2011-09-28 07:12:57 +0000
@@ -44,8 +44,8 @@
'get_currency': self._get_currency,
'sum_dr': self.sum_dr,
'sum_cr': self.sum_cr,
- 'get_data':self.get_data,
- 'get_pl_balance':self.get_pl_balance,
+ 'get_data': self.get_data,
+ 'get_pl_balance': self.get_pl_balance,
'get_fiscalyear': self._get_fiscalyear,
'get_account': self._get_account,
'get_start_period': self.get_start_period,
@@ -53,9 +53,9 @@
'get_sortby': self._get_sortby,
'get_filter': self._get_filter,
'get_journal': self._get_journal,
- 'get_start_date':self._get_start_date,
- 'get_end_date':self._get_end_date,
- 'get_company':self._get_company,
+ 'get_start_date': self._get_start_date,
+ 'get_end_date': self._get_end_date,
+ 'get_company': self._get_company,
'get_target_move': self._get_target_move,
})
self.context = context
@@ -68,13 +68,10 @@
return super(report_balancesheet_horizontal, self).set_context(objects, data, new_ids, report_type=report_type)
def sum_dr(self):
- if self.res_bl['type'] == _('Net Profit'):
- self.result_sum_dr += self.res_bl['balance']*-1
+ self.result_sum_dr += self.res_bl['balance']
return self.result_sum_dr
def sum_cr(self):
- if self.res_bl['type'] == _('Net Loss'):
- self.result_sum_cr += self.res_bl['balance']
return self.result_sum_cr
def get_pl_balance(self):
@@ -119,23 +116,32 @@
if self.res_bl['type'] == _('Net Profit'):
self.res_bl['type'] = _('Net Profit')
+ self.res_bl['balance'] = -self.res_bl['balance']
else:
self.res_bl['type'] = _('Net Loss')
pl_dict = {
'code': self.res_bl['type'],
'name': self.res_bl['type'],
+ 'type': self.res_bl['type'],
'level': False,
- 'balance':self.res_bl['balance'],
+ 'balance': self.res_bl['balance'],
}
for typ in types:
accounts_temp = []
for account in accounts:
if (account.user_type.report_type) and (account.user_type.report_type == typ):
+ level = 0
+ def _compute_level(account, level):
+ if account.parent_id:
+ if not account.parent_id.user_type.report_type == 'none':
+ level += 1
+ level = _compute_level(account.parent_id, level)
+ return level
account_dict = {
'id': account.id,
'code': account.code,
'name': account.name,
- 'level': account.level,
+ 'level': _compute_level(account, level),
'balance': account.balance != 0 and account.balance * account.user_type.sign or account.balance,
'type': account.type,
}
@@ -152,8 +158,8 @@
accounts_temp.append(account_dict)
else:
accounts_temp.append(account_dict)
- if account.id == data['form']['reserve_account_id']:
- pl_dict['level'] = account['level'] + 1
+ if account.id == data['form']['reserve_account_id'][0]:
+ pl_dict['level'] = 0
accounts_temp.append(pl_dict)
self.result[typ] = accounts_temp
@@ -183,12 +189,12 @@
'code': '',
'name': '',
'level': False,
- 'balance':False,
+ 'balance': False,
'type1': cal_list['asset'][i]['type'],
'code1': cal_list['asset'][i]['code'],
'name1': cal_list['asset'][i]['name'],
'level1': cal_list['asset'][i]['level'],
- 'balance1':cal_list['asset'][i]['balance'],
+ 'balance1': cal_list['asset'][i]['balance'],
}
self.result_temp.append(temp)
if i < len(cal_list['liability']):
@@ -197,12 +203,12 @@
'code': cal_list['liability'][i]['code'],
'name': cal_list['liability'][i]['name'],
'level': cal_list['liability'][i]['level'],
- 'balance':cal_list['liability'][i]['balance'],
+ 'balance': cal_list['liability'][i]['balance'],
'type1': '',
'code1': '',
'name1': '',
'level1': False,
- 'balance1':False,
+ 'balance1': False,
}
self.result_temp.append(temp)
return None
=== modified file 'account/report/account_balance_sheet.rml'
--- account/report/account_balance_sheet.rml 2011-09-22 08:58:47 +0000
+++ account/report/account_balance_sheet.rml 2011-09-28 07:12:57 +0000
@@ -124,20 +124,21 @@
<paraStyle name="terp_default_Right_9_Bold" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_2" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
- <paraStyle name="terp_level_1_code" fontName="Helvetica-Bold" fontSize="9.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
- <paraStyle name="terp_level_1_name" fontName="Helvetica-Bold" fontSize="9.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
- <paraStyle name="terp_level_1_balance" fontName="Helvetica-Bold" fontSize="9.0" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
- <paraStyle name="terp_level_2_code" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="0.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
- <paraStyle name="terp_level_2_name" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="10.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
- <paraStyle name="terp_level_2_balance" fontName="Helvetica-Bold" fontSize="8.0" leftIndent=".0" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
- <paraStyle name="terp_level_3_code" fontName="Helvetica" fontSize="8.0" leftIndent="0.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
- <paraStyle name="terp_level_3_code_bold" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="0.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
- <paraStyle name="terp_level_3_name" fontName="Helvetica" fontSize="8.0" leftIndent="20.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
- <paraStyle name="terp_level_3_name_bold" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="20.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
- <paraStyle name="terp_level_3_balance" fontName="Helvetica" fontSize="8.0" leftIndent="0.0" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
- <paraStyle name="terp_level_3_balance_bold" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="0.0" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
- <paraStyle name="terp_level_4_name" fontName="Helvetica" fontSize="8.0" leftIndent="30.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
- <paraStyle name="terp_level_4_name_bold" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="30.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_level_0_code" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="0.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_level_0_name" fontName="Helvetica" fontSize="8.0" leftIndent="10.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_level_0_name_bold" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="10.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_level_0_balance" fontName="Helvetica" fontSize="8.0" leftIndent="0.0" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_level_0_balance_bold" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="0.0" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_level_1_code" fontName="Helvetica" fontSize="8.0" leftIndent="0.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_level_1_code_bold" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="0.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_level_1_name" fontName="Helvetica" fontSize="8.0" leftIndent="20.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_level_1_name_bold" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="20.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_level_1_balance" fontName="Helvetica" fontSize="8.0" leftIndent="0.0" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_level_1_balance_bold" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="0.0" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_level_2_name" fontName="Helvetica" fontSize="8.0" leftIndent="30.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_level_2_name_bold" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="30.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_level_3_name" fontName="Helvetica" fontSize="8.0" leftIndent="40.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_level_3_name_bold" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="40.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<blockTableStyle id="Table1">
<blockTopPadding start="0,0" stop="-1,0" length="15"/>
@@ -237,11 +238,12 @@
</tr>
<tr style="Table3">
[[ repeatIn(get_lines_another('asset'),'a' ) ]]
- [[ setTag('tr','tr',{'style': 'Table'+str(min(3,a['level']))}) ]]
- <td><para style="terp_level_3_code">[[ (a['type'] =='view' and a['level'] >= 3) and setTag('para','para',{'style': 'terp_level_3_code_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_code'}) ]]<i>[[ a['code'] ]]</i></para></td>
- <td><para style="terp_level_3_name">[[ (a['type'] =='view' and a['level'] >= 3) and setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_name_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(4,a['level']))+'_name'}) ]][[ a['name'] ]]</para></td>
- <td>[[ (a['level'] <>2) or removeParentNode('td') ]]<para style="terp_level_3_balance">[[ (a['type'] =='view' and a['level'] >= 3) and setTag('para','para',{'style': 'terp_level_3_balance_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_balance'}) ]][[ formatLang(a['balance'], currency_obj = company.currency_id) ]]</para></td>
- <td>[[ a['level'] == 2 or removeParentNode('td') ]]<para style="terp_level_2_balance"><u>[[ formatLang(a['balance'], currency_obj = company.currency_id) ]]</u></para></td>
+ [[ (a['type'] =='view') and setTag('tr','tr',{'style': 'Table'+str(min(3,a['level']+2))}) or setTag('tr','tr',{'style': 'Table3'}) ]]
+ <td><para style="terp_level_0_code">[[ (a['type'] =='view') and setTag('para','para',{'style': 'terp_level_0_code'}) or setTag('para','para',{'style': 'terp_level_1_code'}) ]]<i>[[ a['code'] ]]</i></para></td>
+ <td><para style="terp_level_0_name">[[ (a['type'] =='view') and setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_name_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_name'}) ]][[ a['name'] ]]</para></td>
+ <td>[[ (a['level'] <>0) or removeParentNode('td') ]]<para style="terp_level_1_balance">[[ (a['type'] =='view') and setTag('para','para',{'style': 'terp_level_1_balance_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(1,a['level']))+'_balance'}) ]][[ formatLang(a['balance'], currency_obj = company.currency_id) ]]</para></td>
+ <td>[[ (a['level'] == 0 and a['type'] == 'view') or removeParentNode('td') ]]<para style="terp_level_0_balance_bold"><u>[[ formatLang(a['balance'], currency_obj = company.currency_id) ]]</u></para></td>
+ <td>[[ (a['level'] == 0 and a['type'] != 'view') or removeParentNode('td') ]]<para style="terp_level_1_balance">[[ formatLang(a['balance'], currency_obj = company.currency_id) ]]</para></td>
</tr>
</blockTable>
<blockTable colWidths="426.0,113.0" style="Table_Net_Profit_Loss">
@@ -279,11 +281,12 @@
</tr>
<tr style="Table3">
[[ repeatIn(get_lines_another('liability'),'a' ) ]]
- [[ setTag('tr','tr',{'style': 'Table'+str(min(3,a['level']))}) ]]
- <td><para style="terp_level_3_code">[[ (a['type'] =='view' and a['level'] >= 3) and setTag('para','para',{'style': 'terp_level_3_code_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_code'}) ]]<i>[[ a['code'] ]]</i></para></td>
- <td><para style="terp_level_3_name">[[ (a['type'] =='view' and a['level'] >= 3) and setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_name_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(4,a['level']))+'_name'}) ]][[ a['name'] ]]</para></td>
- <td>[[ (a['level'] <>2) or removeParentNode('td') ]]<para style="terp_level_3_balance">[[ (a['type'] =='view' and a['level'] >= 3) and setTag('para','para',{'style': 'terp_level_3_balance_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_balance'}) ]][[ formatLang(a['balance'], currency_obj = company.currency_id) ]]</para></td>
- <td>[[ a['level'] == 2 or removeParentNode('td') ]]<para style="terp_level_2_balance"><u>[[ formatLang(a['balance'], currency_obj = company.currency_id) ]]</u></para></td>
+ [[ (a['type'] in ['view', 'Net Profit', 'Net Loss']) and setTag('tr','tr',{'style': 'Table'+str(min(3,a['level']+2))}) or setTag('tr','tr',{'style': 'Table3'}) ]]
+ <td><para style="terp_level_0_code">[[ (a['type'] in ['view', 'Net Profit', 'Net Loss']) and setTag('para','para',{'style': 'terp_level_0_code'}) or setTag('para','para',{'style': 'terp_level_1_code'}) ]]<i>[[ a['code'] ]]</i></para></td>
+ <td><para style="terp_level_0_name">[[ (a['type'] in ['view', 'Net Profit', 'Net Loss']) and setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_name_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_name'}) ]][[ a['name'] ]]</para></td>
+ <td>[[ (a['level'] <>0) or removeParentNode('td') ]]<para style="terp_level_1_balance">[[ (a['type'] in ['view', 'Net Profit', 'Net Loss']) and setTag('para','para',{'style': 'terp_level_1_balance_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(1,a['level']))+'_balance'}) ]][[ formatLang(a['balance'], currency_obj = company.currency_id) ]]</para></td>
+ <td>[[ (a['level'] == 0 and a['type'] in ['view', 'Net Profit', 'Net Loss']) or removeParentNode('td') ]]<para style="terp_level_0_balance_bold"><u>[[ formatLang(a['balance'], currency_obj = company.currency_id) ]]</u></para></td>
+ <td>[[ (a['level'] == 0 and a['type'] not in ['view', 'Net Profit', 'Net Loss']) or removeParentNode('td') ]]<para style="terp_level_1_balance">[[ formatLang(a['balance'], currency_obj = company.currency_id) ]]</para></td>
</tr>
</blockTable>
<blockTable colWidths="426.0,113.0" style="Table_Net_Profit_Loss">
=== modified file 'account/report/account_balance_sheet_horizontal.rml'
--- account/report/account_balance_sheet_horizontal.rml 2011-09-22 08:58:47 +0000
+++ account/report/account_balance_sheet_horizontal.rml 2011-09-28 07:12:57 +0000
@@ -197,33 +197,34 @@
<tr>
<td>
<para style="terp_default_9">
- <font>[[ repeatIn(get_lines(),'a' ) ]] </font>[[ a['code1'] ]]<font>[[ a['level1']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]]</font>
- </para>
- </td>
- <td>
- <para style="terp_default_9">
- <font color="white">[[ '. '*(a['level1']-1) ]]</font><font>[[ a['level1']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a['name1'] ]]</font>
- </para>
- </td>
- <td>
- <para style="terp_default_Right_9">
- <font>[[ a['level1']<4 and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]]</font><font>[[ formatLang(a['balance1'], currency_obj=company.currency_id) ]]</font>
- </para>
- </td>
- <td>
- <para style="terp_default_9">
- [[ a['code'] ]]<font>[[ ( a['level']<4 or a['name']=='Net Profit') and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]]</font>
- </para>
- </td>
- <td>
- <para style="terp_default_9">
- <font color="white">[[ '. '*(a['level']-1) ]]</font>
- <font>[[ ( a['level']<4 or a['name']=='Net Profit') and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a['name'] ]]</font>
- </para>
- </td>
- <td>
- <para style="terp_default_Right_9">
- <font>[[ ( a['level']<4 or a['name']=='Net Profit') and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]]</font>
+ <font>[[ repeatIn(get_lines(),'a' ) ]] </font>[[ a['code1'] ]]<font>[[ a['type1']=='view' and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]]</font>
+ </para>
+ </td>
+ <td>
+ <para style="terp_default_9">
+ <font color="white">[[ '. '*(a['level1']) ]]</font><font>[[ a['type1']=='view' and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a['name1'] ]]</font>
+ </para>
+ </td>
+ <td>
+ <para style="terp_default_Right_9">
+ <font>[[ a['type1']=='view' and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]]</font><font>[[ (a['code1'] and a['name1']) and formatLang(a['balance1'], currency_obj=company.currency_id) or removeParentNode('font') ]]</font>
+ </para>
+ </td>
+ <td>
+ <para style="terp_default_9">
+ <font face="Times-Roman">[[ repeatIn(get_lines(), 'a') ]]</font><font>[[ (a['type'] in ['view', 'Net Profit', 'Net Loss']) and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]]</font>
+ <font>[[ a['code'] ]]</font>
+ </para>
+ </td>
+ <td>
+ <para style="terp_default_9">
+ <font color="white">[[ '. '*(a['level']) ]]</font>
+ <font>[[ (a['type'] in ['view', 'Net Profit', 'Net Loss']) and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a['name'] ]]</font>
+ </para>
+ </td>
+ <td>
+ <para style="terp_default_Right_9">
+ <font>[[ (a['type'] in ['view', 'Net Profit', 'Net Loss']) and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]]</font>
<font>[[(a['code'] and a['name']) and formatLang(a['balance'], currency_obj=company.currency_id) or removeParentNode('font')]]</font>
</para>
</td>
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp