Browse Source

Merge pull request #203 from lepistone/partner-no-zero

add an option in partner balance for non-zero only
pull/130/merge
Alexandre Fayolle 9 years ago
committed by GitHub
parent
commit
02719c76d9
  1. 19
      account_financial_report_webkit/report/common_partner_balance_reports.py
  2. 76
      account_financial_report_webkit/wizard/partner_balance_wizard.py
  3. 2
      account_financial_report_webkit/wizard/partner_balance_wizard_view.xml

19
account_financial_report_webkit/report/common_partner_balance_reports.py

@ -23,6 +23,8 @@
from collections import defaultdict from collections import defaultdict
from operator import add from operator import add
from openerp.tools.float_utils import float_is_zero
from .common_balance_reports import CommonBalanceReportHeaderWebkit from .common_balance_reports import CommonBalanceReportHeaderWebkit
from .common_partner_reports import CommonPartnersReportHeaderWebkit from .common_partner_reports import CommonPartnersReportHeaderWebkit
@ -36,7 +38,8 @@ class CommonPartnerBalanceReportHeaderWebkit(CommonBalanceReportHeaderWebkit,
def _get_account_partners_details(self, account_by_ids, main_filter, def _get_account_partners_details(self, account_by_ids, main_filter,
target_move, start, stop, target_move, start, stop,
initial_balance_mode, initial_balance_mode,
partner_filter_ids=False):
partner_filter_ids=False,
display_partner='all'):
res = {} res = {}
filter_from = False filter_from = False
if main_filter in ('filter_period', 'filter_no', 'filter_opening'): if main_filter in ('filter_period', 'filter_no', 'filter_opening'):
@ -80,6 +83,13 @@ class CommonPartnerBalanceReportHeaderWebkit(CommonBalanceReportHeaderWebkit,
get('init_balance', 0.0) + \ get('init_balance', 0.0) + \
details[partner_id].get('debit', 0.0) - \ details[partner_id].get('debit', 0.0) - \
details[partner_id].get('credit', 0.0) details[partner_id].get('credit', 0.0)
if display_partner == 'non-zero_balance':
details = {
k: v
for k, v in details.iteritems()
if not float_is_zero(v['balance'], precision_digits=5)
}
res[account_id] = details res[account_id] = details
return res return res
@ -201,7 +211,9 @@ class CommonPartnerBalanceReportHeaderWebkit(CommonBalanceReportHeaderWebkit,
partner_details_by_ids = self._get_account_partners_details( partner_details_by_ids = self._get_account_partners_details(
accounts_by_ids, details_filter, accounts_by_ids, details_filter,
target_move, start, stop, initial_balance_mode, target_move, start, stop, initial_balance_mode,
partner_filter_ids=partner_filter_ids)
partner_filter_ids=partner_filter_ids,
display_partner=data['form']['display_partner']
)
for account_id in account_ids: for account_id in account_ids:
accounts_details_by_ids[account_id][ accounts_details_by_ids[account_id][
@ -263,7 +275,8 @@ class CommonPartnerBalanceReportHeaderWebkit(CommonBalanceReportHeaderWebkit,
partner_details_by_ids = self._get_account_partners_details( partner_details_by_ids = self._get_account_partners_details(
accounts_by_ids, main_filter, target_move, start, stop, accounts_by_ids, main_filter, target_move, start, stop,
initial_balance_mode, partner_filter_ids=partner_ids)
initial_balance_mode, partner_filter_ids=partner_ids,
display_partner=data['form']['display_partner'])
comparison_params = [] comparison_params = []
comp_accounts_by_ids = [] comp_accounts_by_ids = []

76
account_financial_report_webkit/wizard/partner_balance_wizard.py

@ -1,28 +1,11 @@
# -*- encoding: utf-8 -*-
##############################################################################
#
# Author: Guewen Baconnier
# Copyright Camptocamp SA 2011
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
# -*- coding: utf-8 -*-
# Author: Guewen Baconnier, Leonardo Pistone
# © 2011-2016 Camptocamp
from openerp.osv import fields, orm
from openerp import fields, models, api
class AccountPartnerBalanceWizard(orm.TransientModel):
class AccountPartnerBalanceWizard(models.TransientModel):
"""Will launch partner balance report and pass required args""" """Will launch partner balance report and pass required args"""
@ -30,34 +13,39 @@ class AccountPartnerBalanceWizard(orm.TransientModel):
_name = "partner.balance.webkit" _name = "partner.balance.webkit"
_description = "Partner Balance Report" _description = "Partner Balance Report"
_columns = {
'result_selection': fields.selection(
[('customer', 'Receivable Accounts'),
result_selection = fields.Selection(
[
('customer', 'Receivable Accounts'),
('supplier', 'Payable Accounts'), ('supplier', 'Payable Accounts'),
('customer_supplier', 'Receivable and Payable Accounts')],
"Partner's", required=True),
'partner_ids': fields.many2many(
('customer_supplier', 'Receivable and Payable Accounts')
],
"Partner's", required=True, default='customer_supplier')
partner_ids = fields.Many2many(
'res.partner', string='Filter on partner', 'res.partner', string='Filter on partner',
help="Only selected partners will be printed. \
Leave empty to print all partners."),
}
_defaults = {
'result_selection': 'customer_supplier',
}
def pre_print_report(self, cr, uid, ids, data, context=None):
data = super(AccountPartnerBalanceWizard, self).\
pre_print_report(cr, uid, ids, data, context)
vals = self.read(cr, uid, ids,
['result_selection', 'partner_ids'],
context=context)[0]
help="Only selected partners will be printed. "
"Leave empty to print all partners.")
# same field in the module account
display_partner = fields.Selection(
[
('non-zero_balance', 'With non-zero balance'),
('all', 'All Partners')
], 'Display Partners', default='all')
@api.multi
def pre_print_report(self, data):
self.ensure_one()
data = super(AccountPartnerBalanceWizard, self).pre_print_report(data)
vals = self.read(['result_selection', 'partner_ids',
'display_partner'])[0]
data['form'].update(vals) data['form'].update(vals)
return data return data
def _print_report(self, cursor, uid, ids, data, context=None):
@api.multi
def _print_report(self, data):
# we update form with display account value # we update form with display account value
data = self.pre_print_report(cursor, uid, ids, data, context=context)
data = self.pre_print_report(data)
return {'type': 'ir.actions.report.xml', return {'type': 'ir.actions.report.xml',
'report_name': 'account.account_report_partner_balance_webkit', 'report_name': 'account.account_report_partner_balance_webkit',

2
account_financial_report_webkit/wizard/partner_balance_wizard_view.xml

@ -22,6 +22,8 @@
<field name="target_move" position="after"> <field name="target_move" position="after">
<newline/> <newline/>
<field name="result_selection" colspan="4"/> <field name="result_selection" colspan="4"/>
<newline/>
<field name="display_partner" colspan="4"/>
</field> </field>
<page name="filters" position="after"> <page name="filters" position="after">
<page string="Accounts Filters" name="accounts"> <page string="Accounts Filters" name="accounts">

Loading…
Cancel
Save