Merge pull request #203 from lepistone/partner-no-zero
add an option in partner balance for non-zero onlypull/130/merge
commit
02719c76d9
|
@ -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 = []
|
||||||
|
|
|
@ -1,28 +1,11 @@
|
||||||
# -*- encoding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
##############################################################################
|
# Author: Guewen Baconnier, Leonardo Pistone
|
||||||
#
|
# © 2011-2016 Camptocamp
|
||||||
# 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/>.
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
|
|
||||||
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(
|
||||||
'result_selection': fields.selection(
|
[
|
||||||
[('customer', 'Receivable Accounts'),
|
('customer', 'Receivable Accounts'),
|
||||||
('supplier', 'Payable Accounts'),
|
('supplier', 'Payable Accounts'),
|
||||||
('customer_supplier', 'Receivable and Payable Accounts')],
|
('customer_supplier', 'Receivable and Payable Accounts')
|
||||||
"Partner's", required=True),
|
],
|
||||||
'partner_ids': fields.many2many(
|
"Partner's", required=True, default='customer_supplier')
|
||||||
'res.partner', string='Filter on partner',
|
partner_ids = fields.Many2many(
|
||||||
help="Only selected partners will be printed. \
|
'res.partner', string='Filter on partner',
|
||||||
Leave empty to print all partners."),
|
help="Only selected partners will be printed. "
|
||||||
}
|
"Leave empty to print all partners.")
|
||||||
|
|
||||||
_defaults = {
|
# same field in the module account
|
||||||
'result_selection': 'customer_supplier',
|
display_partner = fields.Selection(
|
||||||
}
|
[
|
||||||
|
('non-zero_balance', 'With non-zero balance'),
|
||||||
|
('all', 'All Partners')
|
||||||
|
], 'Display Partners', default='all')
|
||||||
|
|
||||||
def pre_print_report(self, cr, uid, ids, data, context=None):
|
@api.multi
|
||||||
data = super(AccountPartnerBalanceWizard, self).\
|
def pre_print_report(self, data):
|
||||||
pre_print_report(cr, uid, ids, data, context)
|
self.ensure_one()
|
||||||
vals = self.read(cr, uid, ids,
|
|
||||||
['result_selection', 'partner_ids'],
|
data = super(AccountPartnerBalanceWizard, self).pre_print_report(data)
|
||||||
context=context)[0]
|
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',
|
||||||
|
|
|
@ -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…
Reference in New Issue