diff --git a/account_financial_report_webkit/__openerp__.py b/account_financial_report_webkit/__openerp__.py
index d756e2b3..b15ad080 100644
--- a/account_financial_report_webkit/__openerp__.py
+++ b/account_financial_report_webkit/__openerp__.py
@@ -18,12 +18,13 @@
# along with this program. If not, see .
#
##############################################################################
-# TODO refactor helper in order to act more like mixin
-# By using properties we will have a more simple signature in fuctions
{
- 'name': 'Webkit based extended report financial report',
+ 'name': 'Financial Reports - Webkit',
'description': """
-This module replace the following standard openerp financial reports :
+Financial Reports - Webkit
+==========================
+
+This module adds or replaces the following standard OpenERP financial reports:
- General ledger
- Trial Balance (simple or comparative view)
- Partner ledger
@@ -32,72 +33,102 @@ This module replace the following standard openerp financial reports :
Main improvements per report:
+-----------------------------
+
+The General ledger: details of all entries posted in your books sorted by account.
+
+* Filter by account is available in the wizard (no need to go to the
+ Chart of Accounts to do this anymore) or by View account (the report
+ will display all regular children accounts) i.e. you can select all
+ P&L accounts.
+* The report only prints accounts with moves OR with a non
+ null balance. No more endless report with empty accounts (field:
+ display account is hidden)
+* initial balance computation on the fly if no open entry posted
+* Thanks to a new checkbox in the account form, you will have the
+ possibility to centralize any account you like. This means you do
+ not want to see all entries posted under the account ‘VAT on sales’;
+ you will only see aggregated amounts by periods.
+* Counterpart account is displayed for each transaction (3 accounts max.)
+ to ease searching.
+* Better ergonomy on the wizard: important information is displayed in
+ the top part, filters are in the middle, and options are in the
+ bottom or on a separate tab. There is more specific filtering on
+ separate tabs. No more unique wizard layout for all financial
+ reports (we have removed the journal tab for the GL report)
+* improved report style
+
+The partner ledger: details of entries relative to payable &
+receivable accounts posted in your books sorted by account and
+partner.
+
+* Filter by partner now available
+* Now you can see Accounts then Partner with subtotals for each
+ account allowing you to check you data with trial balance and
+ partner balance for instance. Accounts are ordered in the same way as
+ in the Chart of account
+* Period have been added (date only is not filled in since date can be
+ outside period)
+* Reconciliation code added
+* Subtotal by account
+* Alphabetical sorting (same as in partner balance)
+
+Open invoice report : other version of the partner ledger showing
+unreconciled / partially reconciled entries.
+
+* Possibility to print unreconciled transactions only at any date in
+ the past (thanks to the new field: `last_rec_date` which computes
+ the last move line reconciliation date). No more pain to get open
+ invoices at the last closing date.
+* no initial balance computed because the report shows open invoices
+ from previous years.
- * The General ledger: details of all entries posted in your books sorted by account.
- - Filter by account in the wizard (no need to go to the Chart of account to do this anymore)
- or by view account (the report will display all regular children account) ie: you can select all P&L accounts.
- - The report will now print only account with movements OR with a balance not null. No more endless
- report with accounts with no data. (field: display account is hidden)
- - initial balance calculation on the fly if no open entry posted
- - Thanks to a new checkbox in account form, you will have possibility to centralize any accounts you like.
- Ie: you do not want to see all entries posted under the account ‘VAT on sales’; you will only see aggregated amounts by periods.
- - Counterpart account displayed for each transaction (3 accounts max.) to ease searching.
- - Better ergonomy on the wizard: important information at the top, filters in the middle, options
- at the bottom or separate tab, more specific filtering on a other tabs. No more unique wizard layout
- for all financial reports (ie: we have removed the journal tab for the GL report)
- - improved report style
-
- * The partner ledger: details of entries relative to payable & receivable accounts posted in your books sorted by account and partner.
- - Filter by partner now possible
- - Now you can see accounts then Partner with subtotals for each account allowing you to check you data
- with trial balance and partner balance for instance & accounts are ordered the same way than in the Chart of account
- - period have been added (date only is uncompleted since date can be outside period)
- - Reconciliation code added
- - subtotal by account
- - alpha sorting (same in partner balance)
-
- * Open invoice report : other version of the partner ledger showing unreconciled / partially reconcies entries
-(added on the 20/01/2012)
- - Possibility to print unreconciled transactions only at any date in the past (thanks to the brand-new field:
- last_rec_date which calculated the last move line reconciled date). No more pain to get open invoices at the last closing date.
- - no initial balance calculated because the report shows open invoices from previous years.
-
- * The Trial balance: list of account with balances
- - you can either see the column : Initial balance , debit, credit , end balance or compare balances over 4 periods of your choice
- - You can select the filter opening to get the opening trial balance only
- - If you create a extra virtual charts (using consolidated account) of account for your P&L and your balance sheet,
- you can print your statutory accounts (with comparision over years for ex.)
- - If you compare 2 periods, you will get differences in value and % also
-
- * The Partner balance: list of account with balances
- - subtotal by account & partner
- - alpha sorting (same in partner balance)
+The Trial balance: list of accounts with balances
+
+* You can either see the columns: initial balance, debit, credit,
+ end balance or compare balances over 4 periods of your choice
+* You can select the "opening" filter to get the opening trial balance
+ only
+* If you create an extra virtual chart (using consolidated account) of
+ accounts for your P&L and your balance sheet, you can print your
+ statutory accounts (with comparison over years for instance)
+* If you compare 2 periods, you will get the differences in values and
+ in percent
+
+The Partner balance: list of account with balances
+
+* Subtotal by account and partner
+* Alphabetical sorting (same as in partner balance)
Limitations:
-In order to run properly this module make sure you have installed the librairie ‘wkhtmltopdf’
-for the pdf rendering (this library path must be added to you company settings).
+------------
+
+In order to run properly this module makes sure you have installed the
+library `wkhtmltopdf` for the pdf rendering (the library path must be
+set in a System Parameter `webkit_path`).
Initial balances in these reports are based either on opening entry
-posted in the opening period or calculated on the fly. So make sure,
-your past accounting opening entries are in a opening period.
-Initials balances are not calculated when using date filter (since a
-date can be outside its logical period and IB could be different by
-date Vs IB by period) The opening period is assumed to be the 01.01 of
-the year with an opening flag and the first period of the year must
-starts also the 01.01
-
-Totals for amount in currencies are affective if the partner belong to
+posted in the opening period or computed on the fly. So make sure
+that your past accounting opening entries are in an opening period.
+Initials balances are not computed when using the Date filter (since a
+date can be outside its logical period and the initial balance could
+be different when computed by data or by initial balance for the
+period). The opening period is assumed to be the Jan. 1st of the year
+with an opening flag and the first period of the year must start also
+on Jan 1st.
+
+Totals for amounts in currencies are effective if the partner belongs to
an account with a secondary currency.
-html headers and footers are deactivated for these reports because of
-an issue of wkhtmltopdf :
-http://code.google.com/p/wkhtmltopdf/issues/detail?id=656 Instead, the
-header and footer are created as text with arguments passed to
+HTML headers and footers are deactivated for these reports because of
+an issue in wkhtmltopdf
+(http://code.google.com/p/wkhtmltopdf/issues/detail?id=656) Instead,
+the header and footer are created as text with arguments passed to
wkhtmltopdf. The texts are defined inside the report classes.
-
""",
'version': '1.0',
'author': 'Camptocamp',
+ 'license': 'AGPL-3',
'category': 'Finance',
'website': 'http://www.camptocamp.com',
'images': [
@@ -107,7 +138,6 @@ wkhtmltopdf. The texts are defined inside the report classes.
'init_xml': [],
'demo_xml' : [],
'update_xml': ['account_view.xml',
- 'account_move_line_view.xml',
'data/financial_webkit_header.xml',
'report/report.xml',
'wizard/wizard.xml',
@@ -118,7 +148,6 @@ wkhtmltopdf. The texts are defined inside the report classes.
'wizard/partner_balance_wizard_view.xml',
'wizard/open_invoices_wizard_view.xml',
'report_menus.xml',
-# 'wizard/profit_loss_wizard_view.xml',
],
# tests order matter
'test': ['tests/general_ledger.yml',
@@ -129,4 +158,5 @@ wkhtmltopdf. The texts are defined inside the report classes.
#'tests/account_move_line.yml'
'active': False,
'installable': True,
+ 'application': True,
}
diff --git a/account_financial_report_webkit/account.py b/account_financial_report_webkit/account.py
index d7d28f30..97a63797 100644
--- a/account_financial_report_webkit/account.py
+++ b/account_financial_report_webkit/account.py
@@ -3,7 +3,7 @@
#
# Copyright (c) 2011 Camptocamp SA (http://www.camptocamp.com)
#
-# Author : Guewen Baconnier (Camptocamp)
+# Author: Guewen Baconnier (Camptocamp)
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsability of assessing all potential
@@ -28,18 +28,20 @@
#
##############################################################################
-from osv import osv, fields
+from openerp.osv import fields, orm
-class AccountAccount(osv.osv):
+class AccountAccount(orm.Model):
_inherit = 'account.account'
_columns = {
- 'centralized': fields.boolean('Centralized', help="If flagged, no details will be displayed in the General Ledger report (the webkit one only), only centralized amounts per period.")
+ 'centralized': fields.boolean(
+ 'Centralized',
+ help="If flagged, no details will be displayed in "
+ "the General Ledger report (the webkit one only), "
+ "only centralized amounts per period.")
}
_defaults = {
'centralized': False,
}
-
-AccountAccount()
diff --git a/account_financial_report_webkit/account_move_line.py b/account_financial_report_webkit/account_move_line.py
index 2e96728f..617908bc 100644
--- a/account_financial_report_webkit/account_move_line.py
+++ b/account_financial_report_webkit/account_move_line.py
@@ -19,34 +19,33 @@
#
##############################################################################
-from osv import fields, osv
-from tools.translate import _
+from openerp.osv import fields, orm
+from openerp.tools.translate import _
-class AccountMoveLine(osv.osv):
+class AccountMoveLine(orm.Model):
"""Overriding Account move line in order to add last_rec_date.
Last rec date is the date of the last reconciliation (full or partial) account move line"""
_inherit = 'account.move.line'
-
+
def init(self, cr):
##We do not want to catch error as if sql is not run it will give invalid data
cr.execute("UPDATE account_move_line as acm "
- " SET last_rec_date ="
+ " SET last_rec_date ="
" (SELECT date from account_move_line"
" WHERE reconcile_id = acm.reconcile_id"
" AND reconcile_id IS NOT NULL"
" ORDER BY date DESC LIMIT 1)"
" WHERE last_rec_date is null;")
-
+
cr.execute("UPDATE account_move_line as acm "
- " SET last_rec_date ="
+ " SET last_rec_date ="
" (SELECT date from account_move_line"
" WHERE reconcile_partial_id = acm.reconcile_partial_id"
" AND reconcile_partial_id IS NOT NULL"
" ORDER BY date DESC LIMIT 1)"
" WHERE last_rec_date is null;")
-
-
+
def _get_move_line_from_line_rec(self, cr, uid, ids, context=None):
moves = []
for reconcile in self.pool.get('account.move.reconcile').browse(cr, uid, ids, context=context):
@@ -55,7 +54,7 @@ class AccountMoveLine(osv.osv):
for move_line in reconcile.line_id:
moves.append(move_line.id)
return list(set(moves))
-
+
def _get_last_rec_date(self, cursor, uid, ids, name, args, context=None):
if not isinstance(ids, list):
ids = [ids]
@@ -79,11 +78,8 @@ class AccountMoveLine(osv.osv):
method=True,
string='Last reconciliation date',
store={'account.move.line': (lambda self, cr, uid, ids, c={}: ids, ['date'], 20),
- 'account.move.reconcile': (_get_move_line_from_line_rec, None ,20)},
+ 'account.move.reconcile': (_get_move_line_from_line_rec, None, 20)},
type='date',
multi='all',
help="the date of the last reconciliation (full or partial) account move line"),
-
}
-
-AccountMoveLine()
diff --git a/account_financial_report_webkit/account_move_line_view.xml b/account_financial_report_webkit/account_move_line_view.xml
deleted file mode 100644
index a99a8e9d..00000000
--- a/account_financial_report_webkit/account_move_line_view.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
- last_rec_date_form
- account.move.line
-
-
-
- form
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/account_financial_report_webkit/account_view.xml b/account_financial_report_webkit/account_view.xml
index 60666774..ed56b119 100644
--- a/account_financial_report_webkit/account_view.xml
+++ b/account_financial_report_webkit/account_view.xml
@@ -5,7 +5,6 @@
account.account.form.webkitaccount.account
- form
diff --git a/account_financial_report_webkit/report/__init__.py b/account_financial_report_webkit/report/__init__.py
index d7d7cf9a..0934d98f 100644
--- a/account_financial_report_webkit/report/__init__.py
+++ b/account_financial_report_webkit/report/__init__.py
@@ -8,4 +8,3 @@ from . import webkit_parser_header_fix
from . import trial_balance
from . import partner_balance
from . import open_invoices
-#from . import account_report_profit_loss
diff --git a/account_financial_report_webkit/report/common_balance_reports.py b/account_financial_report_webkit/report/common_balance_reports.py
index 53700aba..7d0945a7 100644
--- a/account_financial_report_webkit/report/common_balance_reports.py
+++ b/account_financial_report_webkit/report/common_balance_reports.py
@@ -22,7 +22,7 @@
from operator import add
-from common_reports import CommonReportHeaderWebkit
+from .common_reports import CommonReportHeaderWebkit
class CommonBalanceReportHeaderWebkit(CommonReportHeaderWebkit):
@@ -73,12 +73,17 @@ class CommonBalanceReportHeaderWebkit(CommonReportHeaderWebkit):
'all_fiscalyear': True})
if use_period_ids:
- ctx.update({'periods': period_ids,})
+ ctx.update({'periods': period_ids})
elif main_filter == 'filter_date':
ctx.update({'date_from': start,
'date_to': stop})
- accounts = account_obj.read(self.cursor, self.uid, account_ids, ['type','code','name','debit','credit', 'balance', 'parent_id','level','child_id'], ctx)
+ accounts = account_obj.read(
+ self.cursor,
+ self.uid,
+ account_ids,
+ ['type', 'code', 'name', 'debit', 'credit', 'balance', 'parent_id', 'level', 'child_id'],
+ ctx)
accounts_by_id = {}
for account in accounts:
@@ -86,7 +91,10 @@ class CommonBalanceReportHeaderWebkit(CommonReportHeaderWebkit):
# sum for top level views accounts
child_ids = account_obj._get_children_and_consol(self.cursor, self.uid, account['id'], ctx)
if child_ids:
- child_init_balances = [init_bal['init_balance'] for acnt_id, init_bal in init_balance.iteritems() if acnt_id in child_ids ]
+ child_init_balances = [
+ init_bal['init_balance']
+ for acnt_id, init_bal in init_balance.iteritems()
+ if acnt_id in child_ids]
top_init_balance = reduce(add, child_init_balances)
account['init_balance'] = top_init_balance
else:
@@ -154,7 +162,7 @@ class CommonBalanceReportHeaderWebkit(CommonReportHeaderWebkit):
return {'diff': diff, 'percent_diff': percent_diff}
def _comp_filters(self, data, comparison_number):
- """
+ """
@param data: data of the report
@param comparison_number: number of comparisons
@return: list of comparison filters, nb of comparisons used and comparison mode (no_comparison, single, multiple)
@@ -162,7 +170,7 @@ class CommonBalanceReportHeaderWebkit(CommonReportHeaderWebkit):
comp_filters = []
for index in range(comparison_number):
comp_filters.append(self._get_form_param("comp%s_filter" % (index,), data, default='filter_no'))
-
+
nb_comparisons = len([comp_filter for comp_filter in comp_filters if comp_filter != 'filter_no'])
if not nb_comparisons:
comparison_mode = 'no_comparison'
diff --git a/account_financial_report_webkit/report/common_partner_balance_reports.py b/account_financial_report_webkit/report/common_partner_balance_reports.py
index c0dba07d..eeec0c53 100644
--- a/account_financial_report_webkit/report/common_partner_balance_reports.py
+++ b/account_financial_report_webkit/report/common_partner_balance_reports.py
@@ -23,8 +23,8 @@
from collections import defaultdict
from operator import add
-from common_balance_reports import CommonBalanceReportHeaderWebkit
-from common_partner_reports import CommonPartnersReportHeaderWebkit
+from .common_balance_reports import CommonBalanceReportHeaderWebkit
+from .common_partner_reports import CommonPartnersReportHeaderWebkit
class CommonPartnerBalanceReportHeaderWebkit(CommonBalanceReportHeaderWebkit, CommonPartnersReportHeaderWebkit):
@@ -95,21 +95,22 @@ class CommonPartnerBalanceReportHeaderWebkit(CommonBalanceReportHeaderWebkit, Co
FROM account_move_line"""
sql_joins = ''
sql_where = "WHERE account_move_line.account_id = %(account_id)s AND account_move_line.state = 'valid' "
- sql_conditions, search_params = getattr(self, '_get_query_params_from_'+filter_from+'s')(start, stop, mode=mode)
+ method = getattr(self, '_get_query_params_from_' + filter_from + 's')
+ sql_conditions, search_params = method(start, stop, mode=mode)
sql_where += sql_conditions
if partner_filter_ids:
sql_where += " AND account_move_line.partner_id in %(partner_ids)s"
- search_params.update({'partner_ids': tuple(partner_filter_ids),})
+ search_params.update({'partner_ids': tuple(partner_filter_ids)})
if target_move == 'posted':
sql_joins += "INNER JOIN account_move ON account_move_line.move_id = account_move.id"
sql_where += " AND account_move.state = %(target_move)s"
- search_params.update({'target_move': target_move,})
+ search_params.update({'target_move': target_move})
sql_groupby = "GROUP BY account_move_line.partner_id"
- search_params.update({'account_id': account_id,})
+ search_params.update({'account_id': account_id})
query = ' '.join((sql_select, sql_joins, sql_where, sql_groupby))
self.cursor.execute(query, search_params)
diff --git a/account_financial_report_webkit/report/common_partner_reports.py b/account_financial_report_webkit/report/common_partner_reports.py
index deb5122d..38113353 100644
--- a/account_financial_report_webkit/report/common_partner_reports.py
+++ b/account_financial_report_webkit/report/common_partner_reports.py
@@ -26,7 +26,7 @@ from collections import defaultdict
from datetime import datetime
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT
-from common_reports import CommonReportHeaderWebkit
+from .common_reports import CommonReportHeaderWebkit
class CommonPartnersReportHeaderWebkit(CommonReportHeaderWebkit):
@@ -164,7 +164,8 @@ class CommonPartnersReportHeaderWebkit(CommonReportHeaderWebkit):
sql_where = " WHERE account_move_line.account_id = %(account_ids)s " \
" AND account_move_line.state = 'valid' "
- sql_conditions, search_params = getattr(self, '_get_query_params_from_'+filter_from+'s')(start, stop)
+ method = getattr(self, '_get_query_params_from_' + filter_from + 's')
+ sql_conditions, search_params = method(start, stop)
sql_where += sql_conditions
@@ -178,7 +179,7 @@ class CommonPartnersReportHeaderWebkit(CommonReportHeaderWebkit):
if target_move == 'posted':
sql_joins += "INNER JOIN account_move ON account_move_line.move_id = account_move.id"
sql_where += " AND account_move.state = %(target_move)s"
- search_params.update({'target_move': target_move,})
+ search_params.update({'target_move': target_move})
search_params.update({
'account_ids': account_id,
@@ -247,9 +248,11 @@ class CommonPartnersReportHeaderWebkit(CommonReportHeaderWebkit):
if not period_ids:
period_ids = [-1]
- search_param = {'date_start': start_period.date_start,
- 'period_ids': tuple(period_ids),
- 'account_ids': tuple(account_ids),}
+ search_param = {
+ 'date_start': start_period.date_start,
+ 'period_ids': tuple(period_ids),
+ 'account_ids': tuple(account_ids),
+ }
sql = ("SELECT ml.id, ml.account_id, ml.partner_id "
"FROM account_move_line ml "
"INNER JOIN account_account a "
@@ -325,4 +328,3 @@ class CommonPartnersReportHeaderWebkit(CommonReportHeaderWebkit):
if not res:
return []
return res
-
diff --git a/account_financial_report_webkit/report/common_reports.py b/account_financial_report_webkit/report/common_reports.py
index ab37d18d..a09b734a 100644
--- a/account_financial_report_webkit/report/common_reports.py
+++ b/account_financial_report_webkit/report/common_reports.py
@@ -24,25 +24,25 @@
import logging
+from openerp.osv import osv
+from openerp.tools.translate import _
from openerp.addons.account.report.common_report_header import common_report_header
-from osv import osv
-from tools.translate import _
-
_logger = logging.getLogger('financial.reports.webkit')
+
class CommonReportHeaderWebkit(common_report_header):
"""Define common helper for financial report"""
####################From getter helper #####################################
def get_start_period_br(self, data):
- return self._get_info(data,'period_from', 'account.period')
+ return self._get_info(data, 'period_from', 'account.period')
def get_end_period_br(self, data):
- return self._get_info(data,'period_to', 'account.period')
+ return self._get_info(data, 'period_to', 'account.period')
def get_fiscalyear_br(self, data):
- return self._get_info(data,'fiscalyear_id', 'account.fiscalyear')
+ return self._get_info(data, 'fiscalyear_id', 'account.fiscalyear')
def _get_chart_account_id_br(self, data):
return self._get_info(data, 'chart_account_id', 'account.account')
@@ -109,8 +109,6 @@ class CommonReportHeaderWebkit(common_report_header):
def _get_form_param(self, param, data, default=False):
return data.get('form', {}).get(param, default)
-
-
####################Account and account line filter helper #################
def sort_accounts_with_structure(self, root_account_ids, account_ids, context=None):
@@ -119,11 +117,11 @@ class CommonReportHeaderWebkit(common_report_header):
def recursive_sort_by_code(accounts, parent):
sorted_accounts = []
# add all accounts with same parent
- level_accounts = [account for account in accounts
+ level_accounts = [account for account in accounts
if account['parent_id'] and account['parent_id'][0] == parent['id']]
# add consolidation children of parent, as they are logically on the same level
if parent.get('child_consol_ids'):
- level_accounts.extend([account for account in accounts
+ level_accounts.extend([account for account in accounts
if account['id'] in parent['child_consol_ids']])
# stop recursion if no children found
if not level_accounts:
@@ -143,7 +141,7 @@ class CommonReportHeaderWebkit(common_report_header):
account_ids,
['id', 'parent_id', 'level', 'code', 'child_consol_ids'],
context=context)
-
+
sorted_accounts = []
root_accounts_data = [account_data for account_data in accounts_data
@@ -221,7 +219,7 @@ class CommonReportHeaderWebkit(common_report_header):
def get_included_opening_period(self, period):
"""Return the opening included in normal period we use the assumption
that there is only one opening period per fiscal year"""
- period_obj = self.pool.get('account.period')
+ period_obj = self.pool.get('account.period')
return period_obj.search(self.cursor, self.uid,
[('special', '=', True),
('date_start', '>=', period.date_start),
@@ -285,7 +283,7 @@ class CommonReportHeaderWebkit(common_report_header):
if not include_opening:
periods_search += [('special', '=', False)]
- if fiscalyear :
+ if fiscalyear:
periods_search.append(('fiscalyear_id', '=', fiscalyear.id))
periods = period_obj.search(self.cursor, self.uid, periods_search)
if include_opening and opening_period_id:
@@ -305,12 +303,12 @@ class CommonReportHeaderWebkit(common_report_header):
period_obj = self.pool.get('account.period')
p_id = period_obj.search(self.cursor,
self.uid,
- [('special','=', special),
+ [('special', '=', special),
('fiscalyear_id', '=', fiscalyear.id)],
limit=1,
order='date_start %s' % (order,))
if not p_id:
- raise osv.except_osv(_('No period found'),'')
+ raise osv.except_osv(_('No period found'), '')
return period_obj.browse(self.cursor, self.uid, p_id[0])
####################Initial Balance helper #################################
@@ -401,7 +399,7 @@ class CommonReportHeaderWebkit(common_report_header):
def _get_move_ids_from_dates(self, account_id, date_start, date_stop, target_move, mode='include_opening'):
# TODO imporve perfomance by setting opening period as a property
move_line_obj = self.pool.get('account.move.line')
- search_period = [('date', '>=', date_start),
+ search_period = [('date', '>=', date_start),
('date', '<=', date_stop),
('account_id', '=', account_id)]
@@ -424,7 +422,7 @@ class CommonReportHeaderWebkit(common_report_header):
if main_filter in ('filter_period', 'filter_no'):
return self._get_move_ids_from_periods(account_id, start, stop, target_move)
-
+
elif main_filter == 'filter_date':
return self._get_move_ids_from_dates(account_id, start, stop, target_move)
else:
@@ -435,7 +433,7 @@ class CommonReportHeaderWebkit(common_report_header):
return []
if not isinstance(move_line_ids, list):
move_line_ids = [move_line_ids]
- monster ="""
+ monster = """
SELECT l.id AS id,
l.date AS ldate,
j.code AS jcode ,
@@ -473,7 +471,7 @@ FROM account_move_line l
monster += (" ORDER BY %s" % (order,))
try:
self.cursor.execute(monster, (tuple(move_line_ids),))
- res= self.cursor.dictfetchall()
+ res = self.cursor.dictfetchall()
except Exception, exc:
self.cursor.rollback()
raise
@@ -500,8 +498,8 @@ WHERE move_id in %s"""
try:
self.cursor.execute(sql, (account_id, limit, tuple(move_ids)))
- res= self.cursor.fetchall()
- except Exception, exc:
+ res = self.cursor.fetchall()
+ except Exception as exc:
self.cursor.rollback()
raise
return res and dict(res) or {}
diff --git a/account_financial_report_webkit/report/general_ledger.py b/account_financial_report_webkit/report/general_ledger.py
index 5244ea07..535f8499 100644
--- a/account_financial_report_webkit/report/general_ledger.py
+++ b/account_financial_report_webkit/report/general_ledger.py
@@ -19,15 +19,16 @@
#
##############################################################################
-from report import report_sxw
-from tools.translate import _
-import pooler
from operator import itemgetter
from itertools import groupby
from datetime import datetime
-from common_reports import CommonReportHeaderWebkit
-from webkit_parser_header_fix import HeaderFooterTextWebKitParser
+from openerp.report import report_sxw
+from openerp import pooler
+from openerp.tools.translate import _
+from .common_reports import CommonReportHeaderWebkit
+from .webkit_parser_header_fix import HeaderFooterTextWebKitParser
+
class GeneralLedgerWebkit(report_sxw.rml_parse, CommonReportHeaderWebkit):
@@ -35,7 +36,7 @@ class GeneralLedgerWebkit(report_sxw.rml_parse, CommonReportHeaderWebkit):
super(GeneralLedgerWebkit, self).__init__(cursor, uid, name, context=context)
self.pool = pooler.get_pool(self.cr.dbname)
self.cursor = self.cr
-
+
company = self.pool.get('res.users').browse(self.cr, uid, uid, context=context).company_id
header_report_name = ' - '.join((_('GENERAL LEDGER'), company.name, company.currency_id.name))
@@ -158,14 +159,14 @@ class GeneralLedgerWebkit(report_sxw.rml_parse, CommonReportHeaderWebkit):
period_obj = self.pool.get('account.period')
# we need to sort the lines per period in order to use groupby
# unique ids of each used period id in lines
- period_ids = list(set([line['lperiod_id'] for line in ledger_lines ]))
+ period_ids = list(set([line['lperiod_id'] for line in ledger_lines]))
# search on account.period in order to sort them by date_start
sorted_period_ids = period_obj.search(self.cr, self.uid,
[('id', 'in', period_ids)],
order='special desc, date_start',
context=context)
sorted_ledger_lines = sorted(ledger_lines, key=lambda x: sorted_period_ids.index(x['lperiod_id']))
-
+
for period_id, lines_per_period_iterator in groupby(sorted_ledger_lines, itemgetter('lperiod_id')):
lines_per_period = list(lines_per_period_iterator)
if not lines_per_period:
diff --git a/account_financial_report_webkit/report/open_invoices.py b/account_financial_report_webkit/report/open_invoices.py
index a6bd720f..c49c82f4 100644
--- a/account_financial_report_webkit/report/open_invoices.py
+++ b/account_financial_report_webkit/report/open_invoices.py
@@ -18,7 +18,6 @@
# along with this program. If not, see .
#
##############################################################################
-import pooler
from collections import defaultdict
from report import report_sxw
@@ -27,21 +26,23 @@ from itertools import groupby
from operator import itemgetter
from mako.template import Template
-from tools.translate import _
+import openerp.addons
+from openerp import pooler
from openerp.osv import osv
-from common_partner_reports import CommonPartnersReportHeaderWebkit
-from webkit_parser_header_fix import HeaderFooterTextWebKitParser
+from openerp.tools.translate import _
from openerp.addons.report_webkit import report_helper
-import addons
+from .common_partner_reports import CommonPartnersReportHeaderWebkit
+from .webkit_parser_header_fix import HeaderFooterTextWebKitParser
def get_mako_template(obj, *args):
- template_path = addons.get_module_resource(*args)
+ template_path = openerp.addons.get_module_resource(*args)
return Template(filename=template_path, input_encoding='utf-8')
report_helper.WebKitHelper.get_mako_template = get_mako_template
+
class PartnersOpenInvoicesWebkit(report_sxw.rml_parse, CommonPartnersReportHeaderWebkit):
def __init__(self, cursor, uid, name, context):
@@ -57,7 +58,7 @@ class PartnersOpenInvoicesWebkit(report_sxw.rml_parse, CommonPartnersReportHeade
self.localcontext.update({
'cr': cursor,
'uid': uid,
- 'report_name':_('Open Invoices Report'),
+ 'report_name': _('Open Invoices Report'),
'display_account_raw': self._get_display_account_raw,
'filter_form': self._get_filter,
'target_move': self._get_target_move,
@@ -77,7 +78,6 @@ class PartnersOpenInvoicesWebkit(report_sxw.rml_parse, CommonPartnersReportHeade
],
})
-
def _group_lines_by_currency(self, account_br):
account_br.grouped_ledger_lines = {}
if not account_br.ledger_lines:
@@ -87,8 +87,8 @@ class PartnersOpenInvoicesWebkit(report_sxw.rml_parse, CommonPartnersReportHeade
plane_lines.sort(key=itemgetter('currency_code'))
for curr, lines in groupby(plane_lines, key=itemgetter('currency_code')):
tmp = [x for x in lines]
- account_br.grouped_ledger_lines[part_id].append((curr, tmp)) #I want to reiter many times
-
+ account_br.grouped_ledger_lines[part_id].append((curr, tmp)) # I want to reiter many times
+
def set_context(self, objects, data, ids, report_type=None):
"""Populate a ledger_lines attribute on each browse record that will be used
by mako template"""
diff --git a/account_financial_report_webkit/report/partner_balance.py b/account_financial_report_webkit/report/partner_balance.py
index 3c760764..6034f36c 100644
--- a/account_financial_report_webkit/report/partner_balance.py
+++ b/account_financial_report_webkit/report/partner_balance.py
@@ -20,13 +20,13 @@
##############################################################################
-from report import report_sxw
-from tools.translate import _
-import pooler
from datetime import datetime
-from common_partner_balance_reports import CommonPartnerBalanceReportHeaderWebkit
-from webkit_parser_header_fix import HeaderFooterTextWebKitParser
+from openerp import pooler
+from openerp.report import report_sxw
+from openerp.tools.translate import _
+from .common_partner_balance_reports import CommonPartnerBalanceReportHeaderWebkit
+from .webkit_parser_header_fix import HeaderFooterTextWebKitParser
class PartnerBalanceWebkit(report_sxw.rml_parse, CommonPartnerBalanceReportHeaderWebkit):
@@ -35,7 +35,7 @@ class PartnerBalanceWebkit(report_sxw.rml_parse, CommonPartnerBalanceReportHeade
super(PartnerBalanceWebkit, self).__init__(cursor, uid, name, context=context)
self.pool = pooler.get_pool(self.cr.dbname)
self.cursor = self.cr
-
+
company = self.pool.get('res.users').browse(self.cr, uid, uid, context=context).company_id
header_report_name = ' - '.join((_('PARTNER BALANCE'), company.name, company.currency_id.name))
diff --git a/account_financial_report_webkit/report/partners_ledger.py b/account_financial_report_webkit/report/partners_ledger.py
index ea261be5..97284458 100644
--- a/account_financial_report_webkit/report/partners_ledger.py
+++ b/account_financial_report_webkit/report/partners_ledger.py
@@ -18,16 +18,16 @@
# along with this program. If not, see .
#
##############################################################################
-import pooler
from collections import defaultdict
-from report import report_sxw
-from osv import osv
-from tools.translate import _
from datetime import datetime
-from common_partner_reports import CommonPartnersReportHeaderWebkit
-from webkit_parser_header_fix import HeaderFooterTextWebKitParser
+from openerp import pooler
+from openerp.osv import osv
+from openerp.report import report_sxw
+from openerp.tools.translate import _
+from .common_partner_reports import CommonPartnersReportHeaderWebkit
+from .webkit_parser_header_fix import HeaderFooterTextWebKitParser
class PartnersLedgerWebkit(report_sxw.rml_parse, CommonPartnersReportHeaderWebkit):
@@ -45,7 +45,7 @@ class PartnersLedgerWebkit(report_sxw.rml_parse, CommonPartnersReportHeaderWebki
self.localcontext.update({
'cr': cursor,
'uid': uid,
- 'report_name':_('Partner Ledger'),
+ 'report_name': _('Partner Ledger'),
'display_account_raw': self._get_display_account_raw,
'filter_form': self._get_filter,
'target_move': self._get_target_move,
@@ -121,7 +121,7 @@ class PartnersLedgerWebkit(report_sxw.rml_parse, CommonPartnersReportHeaderWebki
# when the opening period is included in the selected range of periods and
# the opening period contains move lines, we must not compute the initial balance from previous periods
# but only display the move lines of the opening period
- # we identify them as :
+ # we identify them as:
# - 'initial_balance' means compute the sums of move lines from previous periods
# - 'opening_balance' means display the move lines of the opening period
init_balance = main_filter in ('filter_no', 'filter_period')
diff --git a/account_financial_report_webkit/report/profit_loss.py b/account_financial_report_webkit/report/profit_loss.py
deleted file mode 100644
index d53362e0..00000000
--- a/account_financial_report_webkit/report/profit_loss.py
+++ /dev/null
@@ -1,115 +0,0 @@
-# -*- 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 .
-#
-##############################################################################
-
-import pooler
-
-from report import report_sxw
-from tools.translate import _
-from datetime import datetime
-from common_balance_reports import CommonBalanceReportHeaderWebkit
-from webkit_parser_header_fix import HeaderFooterTextWebKitParser
-
-
-class ProfitLossWebkit(report_sxw.rml_parse, CommonBalanceReportHeaderWebkit):
-
- def __init__(self, cursor, uid, name, context):
- super(ProfitLossWebkit, self).__init__(cursor, uid, name, context=context)
- self.pool = pooler.get_pool(self.cr.dbname)
- self.cursor = self.cr
-
- company = self.pool.get('res.users').browse(self.cr, uid, uid, context=context).company_id
- header_report_name = ' - '.join((_('PROFIT AND LOSS'), company.name, company.currency_id.name))
-
- footer_date_time = self.formatLang(str(datetime.today()), date_time=True)
-
- self.localcontext.update({
- 'cr': cursor,
- 'uid': uid,
- 'report_name': _('Profit and Loss'),
- 'display_account': self._get_display_account,
- 'display_account_raw': self._get_display_account_raw,
- 'filter_form': self._get_filter,
- 'target_move': self._get_target_move,
- 'display_target_move': self._get_display_target_move,
- 'accounts': self._get_accounts_br,
- 'numbers_display': self._get_numbers_display,
- 'level_print': self._get_level_print,
- 'level_bold': self._get_level_bold,
- 'level_italic': self._get_level_italic,
- 'level_size': self._get_level_size,
- 'level_underline': self._get_level_underline,
- 'level_uppercase': self._get_level_uppercase,
- 'additional_args': [
- ('--header-font-name', 'Helvetica'),
- ('--footer-font-name', 'Helvetica'),
- ('--header-font-size', '10'),
- ('--footer-font-size', '6'),
- ('--header-left', header_report_name),
- ('--header-spacing', '2'),
- ('--footer-left', footer_date_time),
- ('--footer-right', ' '.join((_('Page'), '[page]', _('of'), '[topage]'))),
- ('--footer-line',),
- ],
- })
-
- def _get_level_print(self, data, level):
- return self._get_form_param("level%s_print" % (level,), data)
-
- def _get_level_bold(self, data, level):
- return self._get_form_param("level%s_bold" % (level,), data)
-
- def _get_level_italic(self, data, level):
- return self._get_form_param("level%s_italic" % (level,), data)
-
- def _get_level_size(self, data, level):
- return self._get_form_param("level%s_size" % (level,), data)
-
- def _get_level_underline(self, data, level):
- return self._get_form_param("level%s_underline" % (level,), data)
-
- def _get_level_uppercase(self, data, level):
- return self._get_form_param("level%s_uppercase" % (level,), data)
-
- def _update_levels(self, objects):
- # start leveling from 0
- levels = [account['current']['level'] for account in objects]
- min_level = min(levels)
-
- for account in objects:
- account['current']['level'] -= min_level
- return objects
-
- def set_context(self, objects, data, ids, report_type=None):
- """Populate a ledger_lines attribute on each browse record that will be used
- by mako template"""
- objects, new_ids, context_report_values = self.compute_balance_data(data, filter_report_type=['expense', 'income'])
-
- objects = self._update_levels(objects)
-
- self.localcontext.update(context_report_values)
-
- return super(ProfitLossWebkit, self).set_context(objects, data, new_ids,
- report_type=report_type)
-
-HeaderFooterTextWebKitParser('report.account.account_report_profit_loss_webkit',
- 'account.account',
- 'addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako',
- parser=ProfitLossWebkit)
diff --git a/account_financial_report_webkit/report/report.xml b/account_financial_report_webkit/report/report.xml
index b540318a..a003e55f 100644
--- a/account_financial_report_webkit/report/report.xml
+++ b/account_financial_report_webkit/report/report.xml
@@ -111,19 +111,5 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/account_financial_report_webkit/report/templates/account_report_general_ledger.mako b/account_financial_report_webkit/report/templates/account_report_general_ledger.mako
index 6ed7b4a5..1796a51f 100644
--- a/account_financial_report_webkit/report/templates/account_report_general_ledger.mako
+++ b/account_financial_report_webkit/report/templates/account_report_general_ledger.mako
@@ -16,7 +16,7 @@
return text.replace('-', '‑') # replace by a non-breaking hyphen (it will not word-wrap between hyphen and numbers)
%>
- <%setLang(user.context_lang)%>
+ <%setLang(user.lang)%>
<%
initial_balance_text = {'initial_balance': _('Computed'), 'opening_balance': _('Opening Entries'), False: _('No')}
diff --git a/account_financial_report_webkit/report/templates/account_report_open_invoices.mako b/account_financial_report_webkit/report/templates/account_report_open_invoices.mako
index ffe102dc..02dc6952 100644
--- a/account_financial_report_webkit/report/templates/account_report_open_invoices.mako
+++ b/account_financial_report_webkit/report/templates/account_report_open_invoices.mako
@@ -26,7 +26,7 @@
<% context.lookup.put_template('open_invoices_inclusion.mako.html', template1) %>
<% template2 = helper.get_mako_template('account_financial_report_webkit','report', 'templates', 'grouped_by_curr_open_invoices_inclusion.mako.html') %>
<% context.lookup.put_template('grouped_by_curr_open_invoices_inclusion.mako.html', template2) %>
- <%setLang(user.context_lang)%>
+ <%setLang(user.lang)%>
diff --git a/account_financial_report_webkit/report/templates/account_report_partner_balance.mako b/account_financial_report_webkit/report/templates/account_report_partner_balance.mako
index dd3ab367..b54e35ee 100644
--- a/account_financial_report_webkit/report/templates/account_report_partner_balance.mako
+++ b/account_financial_report_webkit/report/templates/account_report_partner_balance.mako
@@ -32,7 +32,7 @@
return any([line.get('balance') for line in all_comparison_lines])
%>
- <%setLang(user.context_lang)%>
+ <%setLang(user.lang)%>
<%
initial_balance_text = {'initial_balance': _('Computed'), 'opening_balance': _('Opening Entries'), False: _('No')}
diff --git a/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako b/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako
index 9182b7ed..22fdc3a2 100644
--- a/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako
+++ b/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako
@@ -17,7 +17,7 @@
return text.replace('-', '‑') # replace by a non-breaking hyphen (it will not word-wrap between hyphen and numbers)
%>
- <%setLang(user.context_lang)%>
+ <%setLang(user.lang)%>
<%
initial_balance_text = {'initial_balance': _('Computed'), 'opening_balance': _('Opening Entries'), False: _('No')}
diff --git a/account_financial_report_webkit/report/templates/account_report_profit_loss.mako b/account_financial_report_webkit/report/templates/account_report_profit_loss.mako
index 494b310f..f0f6bcf8 100644
--- a/account_financial_report_webkit/report/templates/account_report_profit_loss.mako
+++ b/account_financial_report_webkit/report/templates/account_report_profit_loss.mako
@@ -32,7 +32,7 @@
${output}
%def>
- <%setLang(user.context_lang)%>
+ <%setLang(user.lang)%>
diff --git a/account_financial_report_webkit/report/templates/account_report_trial_balance.mako b/account_financial_report_webkit/report/templates/account_report_trial_balance.mako
index 8efd7647..c938ea4a 100644
--- a/account_financial_report_webkit/report/templates/account_report_trial_balance.mako
+++ b/account_financial_report_webkit/report/templates/account_report_trial_balance.mako
@@ -41,7 +41,7 @@
return text.replace('-', '‑') # replace by a non-breaking hyphen (it will not word-wrap between hyphen and numbers)
%>
- <%setLang(user.context_lang)%>
+ <%setLang(user.lang)%>
<%
initial_balance_text = {'initial_balance': _('Computed'), 'opening_balance': _('Opening Entries'), False: _('No')}
diff --git a/account_financial_report_webkit/report/trial_balance.py b/account_financial_report_webkit/report/trial_balance.py
index c596f080..db62d54f 100644
--- a/account_financial_report_webkit/report/trial_balance.py
+++ b/account_financial_report_webkit/report/trial_balance.py
@@ -20,24 +20,26 @@
##############################################################################
-from report import report_sxw
-from tools.translate import _
-import pooler
from datetime import datetime
-from common_balance_reports import CommonBalanceReportHeaderWebkit
-from webkit_parser_header_fix import HeaderFooterTextWebKitParser
+from openerp import pooler
+from openerp.report import report_sxw
+from openerp.tools.translate import _
+from .common_balance_reports import CommonBalanceReportHeaderWebkit
+from .webkit_parser_header_fix import HeaderFooterTextWebKitParser
+
def sign(number):
return cmp(number, 0)
+
class TrialBalanceWebkit(report_sxw.rml_parse, CommonBalanceReportHeaderWebkit):
def __init__(self, cursor, uid, name, context):
super(TrialBalanceWebkit, self).__init__(cursor, uid, name, context=context)
self.pool = pooler.get_pool(self.cr.dbname)
self.cursor = self.cr
-
+
company = self.pool.get('res.users').browse(self.cr, uid, uid, context=context).company_id
header_report_name = ' - '.join((_('TRIAL BALANCE'), company.name, company.currency_id.name))
diff --git a/account_financial_report_webkit/report/webkit_parser_header_fix.py b/account_financial_report_webkit/report/webkit_parser_header_fix.py
index da186ee0..7240604a 100644
--- a/account_financial_report_webkit/report/webkit_parser_header_fix.py
+++ b/account_financial_report_webkit/report/webkit_parser_header_fix.py
@@ -3,7 +3,7 @@
#
# Copyright (c) 2011 Camptocamp SA (http://www.camptocamp.com)
#
-# Author : Guewen Baconnier (Camptocamp)
+# Author: Guewen Baconnier (Camptocamp)
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsability of assessing all potential
@@ -34,19 +34,19 @@ import time
import pooler
import tools
import logging
-import openerp.addons
from mako import exceptions
-from osv.osv import except_osv
-from tools.translate import _
+from openerp.osv.osv import except_osv
+from openerp.tools.translate import _
+from openerp import addons
from openerp.addons.report_webkit import webkit_report
from openerp.addons.report_webkit.webkit_report import mako_template
from openerp.addons.report_webkit.report_helper import WebKitHelper
_logger = logging.getLogger('financial.reports.webkit')
-# Class used only as a workaround to bug :
+# Class used only as a workaround to bug:
# http://code.google.com/p/wkhtmltopdf/issues/detail?id=656
# html headers and footers do not work on big files (hundreds of pages) so we replace them by
@@ -54,7 +54,7 @@ _logger = logging.getLogger('financial.reports.webkit')
# this class has to be removed once the bug is fixed
# in your report class, to print headers and footers as text, you have to add them in the localcontext with a key 'additional_args'
-# for instance :
+# for instance:
# header_report_name = _('PARTNER LEDGER')
# footer_date_time = self.formatLang(str(datetime.today()), date_time=True)
# self.localcontext.update({
@@ -79,7 +79,6 @@ class HeaderFooterTextWebKitParser(webkit_report.WebKitParser):
webkit_header = report_xml.webkit_header
tmp_dir = tempfile.gettempdir()
out_filename = tempfile.mktemp(suffix=".pdf", prefix="webkit.tmp.")
- files = []
file_to_del = [out_filename]
if comm_path:
command = [comm_path]
@@ -90,17 +89,17 @@ class HeaderFooterTextWebKitParser(webkit_report.WebKitParser):
# default to UTF-8 encoding. Use to override.
command.extend(['--encoding', 'utf-8'])
- if webkit_header.margin_top :
+ if webkit_header.margin_top:
command.extend(['--margin-top', str(webkit_header.margin_top).replace(',', '.')])
- if webkit_header.margin_bottom :
+ if webkit_header.margin_bottom:
command.extend(['--margin-bottom', str(webkit_header.margin_bottom).replace(',', '.')])
- if webkit_header.margin_left :
+ if webkit_header.margin_left:
command.extend(['--margin-left', str(webkit_header.margin_left).replace(',', '.')])
- if webkit_header.margin_right :
+ if webkit_header.margin_right:
command.extend(['--margin-right', str(webkit_header.margin_right).replace(',', '.')])
- if webkit_header.orientation :
+ if webkit_header.orientation:
command.extend(['--orientation', str(webkit_header.orientation).replace(',', '.')])
- if webkit_header.format :
+ if webkit_header.format:
command.extend(['--page-size', str(webkit_header.format).replace(',', '.')])
if self.parser_instance.localcontext.get('additional_args', False):
@@ -108,7 +107,7 @@ class HeaderFooterTextWebKitParser(webkit_report.WebKitParser):
command.extend(arg)
count = 0
- for html in html_list :
+ for html in html_list:
html_file = file(os.path.join(tmp_dir, str(time.time()) + str(count) +'.body.html'), 'w')
count += 1
html_file.write(html)
@@ -120,8 +119,8 @@ class HeaderFooterTextWebKitParser(webkit_report.WebKitParser):
file_to_del.append(stderr_path)
try:
status = subprocess.call(command, stderr=stderr_fd)
- os.close(stderr_fd) # force flush
- stderr_fd = None # avoid closing again in finally
+ os.close(stderr_fd) # ensure flush before reading
+ stderr_fd = None # avoid closing again in finally block
fobj = open(stderr_path, 'r')
error_message = fobj.read()
fobj.close()
@@ -166,13 +165,13 @@ class HeaderFooterTextWebKitParser(webkit_report.WebKitParser):
template = False
- if report_xml.report_file :
- path =openerp.addons.get_module_resource(report_xml.report_file)
- if os.path.exists(path) :
+ if report_xml.report_file:
+ path = addons.get_module_resource(*report_xml.report_file.split(os.path.sep))
+ if os.path.exists(path):
template = file(path).read()
- if not template and report_xml.report_webkit_data :
+ if not template and report_xml.report_webkit_data:
template = report_xml.report_webkit_data
- if not template :
+ if not template:
raise except_osv(_('Error!'), _('Webkit Report template not found !'))
header = report_xml.webkit_header.html
footer = report_xml.webkit_header.footer_html
@@ -183,7 +182,7 @@ class HeaderFooterTextWebKitParser(webkit_report.WebKitParser):
)
css = report_xml.webkit_header.css
- if not css :
+ if not css:
css = ''
user = self.pool.get('res.users').browse(cursor, uid, uid)
@@ -193,7 +192,7 @@ class HeaderFooterTextWebKitParser(webkit_report.WebKitParser):
if report_xml.precise_mode:
for obj in objs:
self.parser_instance.localcontext['objects'] = [obj]
- try :
+ try:
html = body_mako_tpl.render(helper=helper,
css=css,
_=self.translate_call,
@@ -204,7 +203,7 @@ class HeaderFooterTextWebKitParser(webkit_report.WebKitParser):
_logger.error(msg)
raise except_osv(_('Webkit render'), msg)
else:
- try :
+ try:
html = body_mako_tpl.render(helper=helper,
css=css,
_=self.translate_call,
@@ -218,8 +217,8 @@ class HeaderFooterTextWebKitParser(webkit_report.WebKitParser):
# NO html footer and header because we write them as text with wkhtmltopdf
head = foot = False
- if report_xml.webkit_debug :
- try :
+ if report_xml.webkit_debug:
+ try:
deb = body_mako_tpl.render(helper=helper,
css=css,
_debug=tools.ustr("\n".join(htmls)),
diff --git a/account_financial_report_webkit/static/src/img/icon.png b/account_financial_report_webkit/static/src/img/icon.png
new file mode 100644
index 00000000..272d0294
Binary files /dev/null and b/account_financial_report_webkit/static/src/img/icon.png differ
diff --git a/account_financial_report_webkit/wizard/__init__.py b/account_financial_report_webkit/wizard/__init__.py
index 9e184891..6d5a6f1b 100644
--- a/account_financial_report_webkit/wizard/__init__.py
+++ b/account_financial_report_webkit/wizard/__init__.py
@@ -24,4 +24,3 @@ from . import partners_ledger_wizard
from . import trial_balance_wizard
from . import partner_balance_wizard
from . import open_invoices_wizard
-#from . import account_report_profit_loss_wizard
diff --git a/account_financial_report_webkit/wizard/balance_common.py b/account_financial_report_webkit/wizard/balance_common.py
index bee3949b..5225b671 100644
--- a/account_financial_report_webkit/wizard/balance_common.py
+++ b/account_financial_report_webkit/wizard/balance_common.py
@@ -3,7 +3,7 @@
#
# Copyright (c) 2011 Camptocamp SA (http://www.camptocamp.com)
#
-# Author : Guewen Baconnier (Camptocamp)
+# Author: Guewen Baconnier (Camptocamp)
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsability of assessing all potential
@@ -30,10 +30,11 @@
import time
-from osv import fields, osv
from lxml import etree
-from tools.translate import _
from datetime import datetime
+from openerp.osv import fields, orm
+from openerp.tools.translate import _
+
def previous_year_date(date, nb_prev=1):
if not date:
@@ -44,7 +45,8 @@ def previous_year_date(date, nb_prev=1):
day=parsed_date.day)
return previous_date
-class AccountBalanceCommonWizard(osv.osv_memory):
+
+class AccountBalanceCommonWizard(orm.TransientModel):
"""Will launch trial balance report and pass required args"""
_inherit = "account.common.account.report"
@@ -54,7 +56,7 @@ class AccountBalanceCommonWizard(osv.osv_memory):
# an update module should be done if changed
# in order to create fields in db
COMPARISON_LEVEL = 3
-
+
COMPARE_SELECTION = [('filter_no', 'No Comparison'),
('filter_year', 'Fiscal Year'),
('filter_date', 'Date'),
@@ -63,7 +65,7 @@ class AccountBalanceCommonWizard(osv.osv_memory):
M2O_DYNAMIC_FIELDS = [f % index for f in ["comp%s_fiscalyear_id",
"comp%s_period_from",
- "comp%s_period_to",]
+ "comp%s_period_to"]
for index in range(COMPARISON_LEVEL)]
SIMPLE_DYNAMIC_FIELDS = [f % index for f in ["comp%s_filter",
"comp%s_date_from",
@@ -83,17 +85,21 @@ class AccountBalanceCommonWizard(osv.osv_memory):
'filter': fields.selection([('filter_no', 'No Filters'),
('filter_date', 'Date'),
('filter_period', 'Periods'),
- ('filter_opening', 'Opening Only')], "Filter by", required=True, help='Filter by date : no opening balance will be displayed. (opening balance can only be calculated based on period to be correct).'),
+ ('filter_opening', 'Opening Only')],
+ "Filter by",
+ required=True,
+ help='Filter by date: no opening balance will be displayed. '
+ '(opening balance can only be computed based on period to be correct).'),
}
for index in range(COMPARISON_LEVEL):
_columns.update(
- {"comp%s_filter" % (index,): fields.selection(COMPARE_SELECTION, string='Compare By', required=True),
- "comp%s_fiscalyear_id" % (index,): fields.many2one('account.fiscalyear', 'Fiscal Year'),
- "comp%s_period_from" % (index,): fields.many2one('account.period', 'Start Period'),
- "comp%s_period_to" % (index,): fields.many2one('account.period', 'End Period'),
- "comp%s_date_from" % (index,): fields.date("Start Date"),
- "comp%s_date_to" % (index,): fields.date("End Date"),})
+ {"comp%s_filter" % index: fields.selection(COMPARE_SELECTION, string='Compare By', required=True),
+ "comp%s_fiscalyear_id" % index: fields.many2one('account.fiscalyear', 'Fiscal Year'),
+ "comp%s_period_from" % index: fields.many2one('account.period', 'Start Period'),
+ "comp%s_period_to" % index: fields.many2one('account.period', 'End Period'),
+ "comp%s_date_from" % index: fields.date("Start Date"),
+ "comp%s_date_to" % index: fields.date("End Date")})
_defaults = {
'account_ids': _get_account_ids,
@@ -141,27 +147,62 @@ class AccountBalanceCommonWizard(osv.osv_memory):
if placeholder:
placeholder = placeholder[0]
for index in range(self.COMPARISON_LEVEL):
- page = etree.Element('page', {'name': "comp%s" % (index,), 'string': _("Comparison %s") % (index+1,)})
- page.append(etree.Element('field', {'name': "comp%s_filter" % (index,),
- 'colspan': '4',
- 'on_change': "onchange_comp_filter(%(index)s, filter, comp%(index)s_filter, fiscalyear_id, date_from, date_to)" % {'index': index}}))
- page.append(etree.Element('field', {'name': "comp%s_fiscalyear_id" % (index,),
- 'colspan': '4',
- 'attrs': "{'required': [('comp%(index)s_filter','in',('filter_year','filter_opening'))], 'readonly':[('comp%(index)s_filter','not in',('filter_year','filter_opening'))]}" % {'index': index}}))
- page.append(etree.Element('separator', {'string': _('Dates'), 'colspan':'4'}))
- page.append(etree.Element('field', {'name': "comp%s_date_from" % (index,), 'colspan':'4',
- 'attrs': "{'required': [('comp%(index)s_filter','=','filter_date')], 'readonly':[('comp%(index)s_filter','!=','filter_date')]}" % {'index': index}}))
- page.append(etree.Element('field', {'name': "comp%s_date_to" % (index,), 'colspan':'4',
- 'attrs': "{'required': [('comp%(index)s_filter','=','filter_date')], 'readonly':[('comp%(index)s_filter','!=','filter_date')]}" % {'index': index}}))
- page.append(etree.Element('separator', {'string': _('Periods'), 'colspan':'4'}))
- page.append(etree.Element('field', {'name': "comp%s_period_from" % (index,),
- 'colspan': '4',
- 'attrs': "{'required': [('comp%(index)s_filter','=','filter_period')], 'readonly':[('comp%(index)s_filter','!=','filter_period')]}" % {'index': index},
- 'domain': "[('special', '=', False)]"}))
- page.append(etree.Element('field', {'name': "comp%s_period_to" % (index,),
- 'colspan': '4',
- 'attrs': "{'required': [('comp%(index)s_filter','=','filter_period')], 'readonly':[('comp%(index)s_filter','!=','filter_period')]}" % {'index': index},
- 'domain': "[('special', '=', False)]"}))
+ page = etree.Element(
+ 'page',
+ {'name': "comp%s" % index,
+ 'string': _("Comparison %s") % (index + 1, )})
+ group = etree.Element('group')
+ page.append(group)
+
+ def modifiers_and_append(elem):
+ orm.setup_modifiers(elem)
+ group.append(elem)
+
+ modifiers_and_append(etree.Element(
+ 'field',
+ {'name': "comp%s_filter" % index,
+ 'on_change': "onchange_comp_filter(%(index)s, filter, comp%(index)s_filter, fiscalyear_id, date_from, date_to)" % {'index': index}}))
+ modifiers_and_append(etree.Element(
+ 'field',
+ {'name': "comp%s_fiscalyear_id" % index,
+ 'attrs':
+ "{'required': [('comp%(index)s_filter','in',('filter_year','filter_opening'))]," \
+ " 'invisible': [('comp%(index)s_filter','not in',('filter_year','filter_opening'))]}" % {'index': index}}))
+
+ dates_attrs = "{'required': [('comp%(index)s_filter','=','filter_date')], " \
+ " 'invisible': [('comp%(index)s_filter','!=','filter_date')]}" % {'index': index}
+ modifiers_and_append(etree.Element(
+ 'separator',
+ {'string': _('Dates'),
+ 'colspan': '4',
+ 'attrs': dates_attrs}))
+ modifiers_and_append(etree.Element(
+ 'field',
+ {'name': "comp%s_date_from" % index,
+ 'attrs': dates_attrs}))
+ modifiers_and_append(etree.Element(
+ 'field',
+ {'name': "comp%s_date_to" % index,
+ 'attrs': dates_attrs}))
+
+ periods_attrs = "{'required': [('comp%(index)s_filter','=','filter_period')]," \
+ " 'invisible': [('comp%(index)s_filter','!=','filter_period')]}" % {'index': index}
+ periods_domain = "[('special', '=', False)]"
+ modifiers_and_append(etree.Element(
+ 'separator',
+ {'string': _('Periods'),
+ 'colspan': '4',
+ 'attrs': periods_attrs}))
+ modifiers_and_append(etree.Element(
+ 'field',
+ {'name': "comp%s_period_from" % index,
+ 'attrs': periods_attrs,
+ 'domain': periods_domain}))
+ modifiers_and_append(etree.Element(
+ 'field',
+ {'name': "comp%s_period_to" % index,
+ 'attrs': periods_attrs,
+ 'domain': periods_domain}))
placeholder.addprevious(page)
placeholder.getparent().remove(placeholder)
@@ -171,7 +212,7 @@ class AccountBalanceCommonWizard(osv.osv_memory):
def onchange_filter(self, cr, uid, ids, filter='filter_no', fiscalyear_id=False, context=None):
res = {}
if filter == 'filter_no':
- res['value'] = {'period_from': False, 'period_to': False, 'date_from': False ,'date_to': False}
+ res['value'] = {'period_from': False, 'period_to': False, 'date_from': False, 'date_to': False}
if filter == 'filter_date':
if fiscalyear_id:
fyear = self.pool.get('account.fiscalyear').browse(cr, uid, fiscalyear_id, context=context)
@@ -199,7 +240,7 @@ class AccountBalanceCommonWizard(osv.osv_memory):
AND COALESCE(p.special, FALSE) = FALSE
ORDER BY p.date_stop DESC
LIMIT 1) AS period_stop''', (fiscalyear_id, fiscalyear_id))
- periods = [i[0] for i in cr.fetchall()]
+ periods = [i[0] for i in cr.fetchall()]
if periods:
start_period = end_period = periods[0]
if len(periods) > 1:
@@ -226,15 +267,28 @@ class AccountBalanceCommonWizard(osv.osv_memory):
date_to_field = "comp%s_date_to" % (index,)
if comp_filter == 'filter_no':
- res['value'] = {fy_id_field: False, period_from_field: False, period_to_field: False, date_from_field: False ,date_to_field: False}
+ res['value'] = {
+ fy_id_field: False,
+ period_from_field: False,
+ period_to_field: False,
+ date_from_field: False,
+ date_to_field: False
+ }
if comp_filter in ('filter_year', 'filter_opening'):
- res['value'] = {fy_id_field: last_fiscalyear_id, period_from_field: False, period_to_field: False, date_from_field: False ,date_to_field: False}
+ res['value'] = {
+ fy_id_field: last_fiscalyear_id,
+ period_from_field: False,
+ period_to_field: False,
+ date_from_field: False,
+ date_to_field: False
+ }
if comp_filter == 'filter_date':
dates = {}
if main_filter == 'filter_date':
dates = {
'date_start': previous_year_date(start_date, index + 1).strftime('%Y-%m-%d'),
- 'date_stop': previous_year_date(stop_date, index + 1).strftime('%Y-%m-%d'),}
+ 'date_stop': previous_year_date(stop_date, index + 1).strftime('%Y-%m-%d'),
+ }
elif last_fiscalyear_id:
dates = fy_obj.read(cr, uid, last_fiscalyear_id, ['date_start', 'date_stop'], context=context)
@@ -258,7 +312,7 @@ class AccountBalanceCommonWizard(osv.osv_memory):
AND COALESCE(p.special, FALSE) = FALSE
ORDER BY p.date_stop DESC
LIMIT 1) AS period_stop''', {'fiscalyear': last_fiscalyear_id})
- periods = [i[0] for i in cr.fetchall()]
+ periods = [i[0] for i in cr.fetchall()]
if periods and len(periods) > 1:
start_period = end_period = periods[0]
if len(periods) > 1:
@@ -279,7 +333,7 @@ class AccountBalanceCommonWizard(osv.osv_memory):
# will be used to attach the report on the main account
data['ids'] = [data['form']['chart_account_id']]
- fields_to_read = ['account_ids',]
+ fields_to_read = ['account_ids', ]
fields_to_read += self.DYNAMIC_FIELDS
vals = self.read(cr, uid, ids, fields_to_read, context=context)[0]
@@ -291,5 +345,3 @@ class AccountBalanceCommonWizard(osv.osv_memory):
vals['max_comparison'] = self.COMPARISON_LEVEL
data['form'].update(vals)
return data
-
-AccountBalanceCommonWizard()
diff --git a/account_financial_report_webkit/wizard/balance_common_view.xml b/account_financial_report_webkit/wizard/balance_common_view.xml
index dc3e4f04..b73ed8f4 100644
--- a/account_financial_report_webkit/wizard/balance_common_view.xml
+++ b/account_financial_report_webkit/wizard/balance_common_view.xml
@@ -4,7 +4,7 @@
diff --git a/account_financial_report_webkit/wizard/general_ledger_wizard.py b/account_financial_report_webkit/wizard/general_ledger_wizard.py
index 863c1d98..79766563 100644
--- a/account_financial_report_webkit/wizard/general_ledger_wizard.py
+++ b/account_financial_report_webkit/wizard/general_ledger_wizard.py
@@ -21,12 +21,11 @@
import time
-from osv import fields, osv
+from openerp.osv import fields, orm
-class AccountReportGeneralLedgerWizard(osv.osv_memory):
- """Will launch general ledger report and pass requiered args"""
-
+class AccountReportGeneralLedgerWizard(orm.TransientModel):
+ """Will launch general ledger report and pass required args"""
_inherit = "account.common.account.report"
_name = "general.ledger.webkit"
@@ -69,11 +68,9 @@ class AccountReportGeneralLedgerWizard(osv.osv_memory):
def pre_print_report(self, cr, uid, ids, data, context=None):
data = super(AccountReportGeneralLedgerWizard, self).pre_print_report(cr, uid, ids, data, context)
- if context is None:
- context = {}
# will be used to attach the report on the main account
data['ids'] = [data['form']['chart_account_id']]
- vals = self.read(cr, uid, ids,
+ vals = self.read(cr, uid, ids,
['amount_currency',
'display_account',
'account_ids',
@@ -85,7 +82,12 @@ class AccountReportGeneralLedgerWizard(osv.osv_memory):
def onchange_filter(self, cr, uid, ids, filter='filter_no', fiscalyear_id=False, context=None):
res = {}
if filter == 'filter_no':
- res['value'] = {'period_from': False, 'period_to': False, 'date_from': False ,'date_to': False}
+ res['value'] = {
+ 'period_from': False,
+ 'period_to': False,
+ 'date_from': False,
+ 'date_to': False,
+ }
if filter == 'filter_date':
if fiscalyear_id:
fyear = self.pool.get('account.fiscalyear').browse(cr, uid, fiscalyear_id, context=context)
@@ -93,7 +95,12 @@ class AccountReportGeneralLedgerWizard(osv.osv_memory):
date_to = fyear.date_stop > time.strftime('%Y-%m-%d') and time.strftime('%Y-%m-%d') or fyear.date_stop
else:
date_from, date_to = time.strftime('%Y-01-01'), time.strftime('%Y-%m-%d')
- res['value'] = {'period_from': False, 'period_to': False, 'date_from': date_from, 'date_to': date_to}
+ res['value'] = {
+ 'period_from': False,
+ 'period_to': False,
+ 'date_from': date_from,
+ 'date_to': date_to
+ }
if filter == 'filter_period' and fiscalyear_id:
start_period = end_period = False
cr.execute('''
@@ -113,7 +120,7 @@ class AccountReportGeneralLedgerWizard(osv.osv_memory):
AND COALESCE(p.special, FALSE) = FALSE
ORDER BY p.date_stop DESC
LIMIT 1) AS period_stop''', (fiscalyear_id, fiscalyear_id))
- periods = [i[0] for i in cr.fetchall()]
+ periods = [i[0] for i in cr.fetchall()]
if periods:
start_period = end_period = periods[0]
if len(periods) > 1:
@@ -122,11 +129,8 @@ class AccountReportGeneralLedgerWizard(osv.osv_memory):
return res
def _print_report(self, cursor, uid, ids, data, context=None):
- context = context or {}
# we update form with display account value
data = self.pre_print_report(cursor, uid, ids, data, context=context)
return {'type': 'ir.actions.report.xml',
'report_name': 'account.account_report_general_ledger_webkit',
'datas': data}
-
-AccountReportGeneralLedgerWizard()
diff --git a/account_financial_report_webkit/wizard/general_ledger_wizard_view.xml b/account_financial_report_webkit/wizard/general_ledger_wizard_view.xml
index a7bce96d..c0083163 100644
--- a/account_financial_report_webkit/wizard/general_ledger_wizard_view.xml
+++ b/account_financial_report_webkit/wizard/general_ledger_wizard_view.xml
@@ -5,7 +5,6 @@
General Ledgergeneral.ledger.webkit
- form
@@ -32,8 +31,10 @@
-
-
+
+
+
+
@@ -55,7 +56,6 @@
General Ledgergeneral.ledger.webkit
- form
diff --git a/account_financial_report_webkit/wizard/open_invoices_wizard.py b/account_financial_report_webkit/wizard/open_invoices_wizard.py
index 30284a19..4e18a8b7 100644
--- a/account_financial_report_webkit/wizard/open_invoices_wizard.py
+++ b/account_financial_report_webkit/wizard/open_invoices_wizard.py
@@ -18,10 +18,10 @@
# along with this program. If not, see .
#
##############################################################################
-from osv import fields, osv
+from openerp.osv import fields, orm
-class AccountReportOpenInvoicesWizard(osv.osv_memory):
+class AccountReportOpenInvoicesWizard(orm.TransientModel):
"""Will launch partner ledger report and pass required args"""
_inherit = "partners.ledger.webkit"
@@ -29,7 +29,7 @@ class AccountReportOpenInvoicesWizard(osv.osv_memory):
_description = "Open Invoices Report"
_columns = {
- 'group_by_currency':fields.boolean('Group Partner by currency'),
+ 'group_by_currency': fields.boolean('Group Partner by currency'),
'until_date': fields.date("Clearance date",
required=True,
help="""The clearance date is essentially a tool used for debtors provisionning calculation.
@@ -57,38 +57,38 @@ By amending the clearance date, you will be, for instance, able to answer the qu
(_check_until_date, 'Clearance date must be the very last date of the last period or later.', ['until_date']),
]
- def default_until_date(self, cursor, uid, ids, fiscalyear_id=False, period_id=False, date_to=False, context=None):
+ def default_until_date(self, cr, uid, ids, fiscalyear_id=False, period_id=False, date_to=False, context=None):
res_date = False
# first priority: period or date filters
if period_id:
- res_date = self.pool.get('account.period').read(cursor, uid, period_id, ['date_stop'], context=context)['date_stop']
+ res_date = self.pool.get('account.period').read(cr, uid, period_id, ['date_stop'], context=context)['date_stop']
elif date_to:
res_date = date_to
elif fiscalyear_id:
- res_date = self.pool.get('account.fiscalyear').read(cursor, uid, fiscalyear_id, ['date_stop'], context=context)['date_stop']
+ res_date = self.pool.get('account.fiscalyear').read(cr, uid, fiscalyear_id, ['date_stop'], context=context)['date_stop']
return res_date
- def onchange_fiscalyear(self, cursor, uid, ids, fiscalyear=False, period_id=False, date_to=False, until_date=False, context=None):
+ def onchange_fiscalyear(self, cr, uid, ids, fiscalyear=False, period_id=False, date_to=False, until_date=False, context=None):
res = {'value': {}}
- res['value']['until_date'] = self.default_until_date(cursor, uid, ids,
+ res['value']['until_date'] = self.default_until_date(cr, uid, ids,
fiscalyear_id=fiscalyear,
period_id=period_id,
date_to=date_to,
context=context)
return res
- def onchange_date_to(self, cursor, uid, ids, fiscalyear=False, period_id=False, date_to=False, until_date=False, context=None):
+ def onchange_date_to(self, cr, uid, ids, fiscalyear=False, period_id=False, date_to=False, until_date=False, context=None):
res = {'value': {}}
- res['value']['until_date'] = self.default_until_date(cursor, uid, ids,
+ res['value']['until_date'] = self.default_until_date(cr, uid, ids,
fiscalyear_id=fiscalyear,
period_id=period_id,
date_to=date_to,
context=context)
return res
- def onchange_period_to(self, cursor, uid, ids, fiscalyear=False, period_id=False, date_to=False, until_date=False, context=None):
+ def onchange_period_to(self, cr, uid, ids, fiscalyear=False, period_id=False, date_to=False, until_date=False, context=None):
res = {'value': {}}
- res['value']['until_date'] = self.default_until_date(cursor, uid, ids,
+ res['value']['until_date'] = self.default_until_date(cr, uid, ids,
fiscalyear_id=fiscalyear,
period_id=period_id,
date_to=date_to,
@@ -107,20 +107,15 @@ By amending the clearance date, you will be, for instance, able to answer the qu
def pre_print_report(self, cr, uid, ids, data, context=None):
data = super(AccountReportOpenInvoicesWizard, self).pre_print_report(cr, uid, ids, data, context)
- if context is None:
- context = {}
vals = self.read(cr, uid, ids,
['until_date', 'group_by_currency'],
context=context)[0]
data['form'].update(vals)
return data
- def _print_report(self, cursor, uid, ids, data, context=None):
- context = context or {}
+ def _print_report(self, cr, uid, ids, data, context=None):
# we update form with display account value
- data = self.pre_print_report(cursor, uid, ids, data, context=context)
+ data = self.pre_print_report(cr, uid, ids, data, context=context)
return {'type': 'ir.actions.report.xml',
'report_name': 'account.account_report_open_invoices_webkit',
'datas': data}
-
-AccountReportOpenInvoicesWizard()
diff --git a/account_financial_report_webkit/wizard/open_invoices_wizard_view.xml b/account_financial_report_webkit/wizard/open_invoices_wizard_view.xml
index aa1dfad2..48cf0721 100644
--- a/account_financial_report_webkit/wizard/open_invoices_wizard_view.xml
+++ b/account_financial_report_webkit/wizard/open_invoices_wizard_view.xml
@@ -5,7 +5,6 @@
Open Invoices Reportopen.invoices.webkit
- form
@@ -17,6 +16,7 @@
4
+
diff --git a/account_financial_report_webkit/wizard/partner_balance_wizard.py b/account_financial_report_webkit/wizard/partner_balance_wizard.py
index fb2964b1..755278d8 100644
--- a/account_financial_report_webkit/wizard/partner_balance_wizard.py
+++ b/account_financial_report_webkit/wizard/partner_balance_wizard.py
@@ -19,10 +19,10 @@
#
##############################################################################
-from osv import fields, osv
+from openerp.osv import fields, orm
-class AccountPartnerBalanceWizard(osv.osv_memory):
+class AccountPartnerBalanceWizard(orm.TransientModel):
"""Will launch partner balance report and pass required args"""
_inherit = "account.common.balance.report"
@@ -30,9 +30,9 @@ class AccountPartnerBalanceWizard(osv.osv_memory):
_description = "Partner Balance Report"
_columns = {
- 'result_selection': fields.selection([('customer','Receivable Accounts'),
- ('supplier','Payable Accounts'),
- ('customer_supplier','Receivable and Payable Accounts')],
+ 'result_selection': fields.selection([('customer', 'Receivable Accounts'),
+ ('supplier', 'Payable Accounts'),
+ ('customer_supplier', 'Receivable and Payable Accounts')],
"Partner's", required=True),
'partner_ids': fields.many2many('res.partner', string='Filter on partner',
help="Only selected partners will be printed. Leave empty to print all partners."),
@@ -44,8 +44,6 @@ class AccountPartnerBalanceWizard(osv.osv_memory):
def pre_print_report(self, cr, uid, ids, data, context=None):
data = super(AccountPartnerBalanceWizard, self).pre_print_report(cr, uid, ids, data, context)
- if context is None:
- context = {}
vals = self.read(cr, uid, ids,
['result_selection', 'partner_ids'],
context=context)[0]
@@ -53,12 +51,9 @@ class AccountPartnerBalanceWizard(osv.osv_memory):
return data
def _print_report(self, cursor, uid, ids, data, context=None):
- context = context or {}
# we update form with display account value
data = self.pre_print_report(cursor, uid, ids, data, context=context)
return {'type': 'ir.actions.report.xml',
'report_name': 'account.account_report_partner_balance_webkit',
'datas': data}
-
-AccountPartnerBalanceWizard()
diff --git a/account_financial_report_webkit/wizard/partner_balance_wizard_view.xml b/account_financial_report_webkit/wizard/partner_balance_wizard_view.xml
index e1dfdc3f..7d3c0f0f 100644
--- a/account_financial_report_webkit/wizard/partner_balance_wizard_view.xml
+++ b/account_financial_report_webkit/wizard/partner_balance_wizard_view.xml
@@ -4,12 +4,11 @@
Partner Balancepartner.balance.webkit
- form
@@ -21,6 +20,7 @@
4
+
@@ -38,7 +38,7 @@
-
+
diff --git a/account_financial_report_webkit/wizard/partners_ledger_wizard.py b/account_financial_report_webkit/wizard/partners_ledger_wizard.py
index e8af5c5d..b4204a56 100644
--- a/account_financial_report_webkit/wizard/partners_ledger_wizard.py
+++ b/account_financial_report_webkit/wizard/partners_ledger_wizard.py
@@ -20,10 +20,10 @@
##############################################################################
import time
-from osv import fields, osv
+from openerp.osv import fields, orm
-class AccountReportPartnersLedgerWizard(osv.osv_memory):
+class AccountReportPartnersLedgerWizard(orm.TransientModel):
"""Will launch partner ledger report and pass required args"""
_inherit = "account.common.partner.report"
@@ -34,10 +34,13 @@ class AccountReportPartnersLedgerWizard(osv.osv_memory):
'amount_currency': fields.boolean("With Currency",
help="It adds the currency column"),
'partner_ids': fields.many2many('res.partner', string='Filter on partner',
- help="Only selected partners will be printed. Leave empty to print all partners."),
+ help="Only selected partners will be printed. "
+ "Leave empty to print all partners."),
'filter': fields.selection([('filter_no', 'No Filters'),
('filter_date', 'Date'),
- ('filter_period', 'Periods')], "Filter by", required=True, help='Filter by date : no opening balance will be displayed. (opening balance can only be calculated based on period to be correct).'),
+ ('filter_period', 'Periods')], "Filter by", required=True,
+ help='Filter by date: no opening balance will be displayed. '
+ '(opening balance can only be computed based on period to be correct).'),
}
_defaults = {
'amount_currency': False,
@@ -51,13 +54,17 @@ class AccountReportPartnersLedgerWizard(osv.osv_memory):
return True
_constraints = [
- (_check_fiscalyear, 'When no Fiscal year is selected, you must choose to filter by periods or by date.', ['filter']),
+ (_check_fiscalyear,
+ 'When no Fiscal year is selected, you must choose to '
+ 'filter by periods or by date.',
+ ['filter']),
]
def onchange_filter(self, cr, uid, ids, filter='filter_no', fiscalyear_id=False, context=None):
res = {}
if filter == 'filter_no':
- res['value'] = {'period_from': False, 'period_to': False, 'date_from': False ,'date_to': False}
+ res['value'] = {'period_from': False, 'period_to': False, 'date_from': False, 'date_to': False}
+
if filter == 'filter_date':
if fiscalyear_id:
fyear = self.pool.get('account.fiscalyear').browse(cr, uid, fiscalyear_id, context=context)
@@ -85,7 +92,7 @@ class AccountReportPartnersLedgerWizard(osv.osv_memory):
AND COALESCE(p.special, FALSE) = FALSE
ORDER BY p.date_stop DESC
LIMIT 1) AS period_stop''', (fiscalyear_id, fiscalyear_id))
- periods = [i[0] for i in cr.fetchall()]
+ periods = [i[0] for i in cr.fetchall()]
if periods:
start_period = end_period = periods[0]
if len(periods) > 1:
@@ -100,17 +107,14 @@ class AccountReportPartnersLedgerWizard(osv.osv_memory):
# will be used to attach the report on the main account
data['ids'] = [data['form']['chart_account_id']]
vals = self.read(cr, uid, ids,
- ['amount_currency', 'partner_ids',],
+ ['amount_currency', 'partner_ids'],
context=context)[0]
data['form'].update(vals)
return data
def _print_report(self, cursor, uid, ids, data, context=None):
- context = context or {}
# we update form with display account value
data = self.pre_print_report(cursor, uid, ids, data, context=context)
return {'type': 'ir.actions.report.xml',
'report_name': 'account.account_report_partners_ledger_webkit',
'datas': data}
-
-AccountReportPartnersLedgerWizard()
diff --git a/account_financial_report_webkit/wizard/partners_ledger_wizard_view.xml b/account_financial_report_webkit/wizard/partners_ledger_wizard_view.xml
index fa165c59..204ec02f 100644
--- a/account_financial_report_webkit/wizard/partners_ledger_wizard_view.xml
+++ b/account_financial_report_webkit/wizard/partners_ledger_wizard_view.xml
@@ -5,7 +5,6 @@
Partner Ledgerpartners.ledger.webkit
- form
@@ -17,6 +16,7 @@
4
+
@@ -25,7 +25,9 @@
-
+
+
+
diff --git a/account_financial_report_webkit/wizard/profit_loss_wizard.py b/account_financial_report_webkit/wizard/profit_loss_wizard.py
deleted file mode 100644
index 25d758d9..00000000
--- a/account_financial_report_webkit/wizard/profit_loss_wizard.py
+++ /dev/null
@@ -1,166 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# Copyright (c) 2011 Camptocamp SA (http://www.camptocamp.com)
-#
-# Author : Guewen Baconnier (Camptocamp)
-#
-# WARNING: This program as such is intended to be used by professional
-# programmers who take the whole responsability of assessing all potential
-# consequences resulting from its eventual inadequacies and bugs
-# End users who are looking for a ready-to-use solution with commercial
-# garantees and support are strongly adviced to contract a Free Software
-# Service Company
-#
-# This program is Free Software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-##############################################################################
-
-from lxml import etree
-from tools.translate import _
-from osv import fields, osv
-
-LEVEL_STYLES = 6
-
-DEFAULT_STYLES = {
- 'print': [True, True, True, True, True, True],
- 'size': [12, 11, 10, 9, 9, 9],
- 'bold': [True, True, True, False, False, False],
- 'italic': [False, False, False, False, False, False],
- 'underline': [False, False, False, False, False, False],
- 'uppercase': [True, True, False, False, False, False],
-}
-
-class AccountProfitAndLossLedgerWizard(osv.osv_memory):
- """Will launch trial balance report and pass required args"""
-
- _inherit = "account.common.balance.report"
- _name = "profit.loss.webkit"
- _description = "Profit and Loss Report"
-
- _columns = {
- 'numbers_display': fields.selection([('normal', 'Normal'), ('round', 'Round (No decimal)'), ('kilo', 'Kilo')], 'Numbers Display', required=True)
- }
-
- _defaults = {
- 'numbers_display': 'normal',
- }
-
- def view_init(self, cr, uid, fields_list, context=None):
- """
- Creates view dynamically and adding fields at runtime.
- @param self: The object pointer.
- @param cr: A database cursor
- @param uid: ID of the user currently logged in
- @param context: A standard dictionary
- @return: New arch of view with new columns.
- """
- res = super(AccountProfitAndLossLedgerWizard, self).view_init(cr, uid, fields_list, context=context)
- for index in range(LEVEL_STYLES):
- # create columns for each comparison page
- self._columns.update({
- "level%s_print" % (index,):
- fields.boolean('Print'),
- "level%s_size" % (index,):
- fields.integer('Size', required=True),
- "level%s_bold" % (index,):
- fields.boolean('Bold'),
- "level%s_italic" % (index,):
- fields.boolean('Italic'),
- "level%s_underline" % (index,):
- fields.boolean('Underline'),
- "level%s_uppercase" % (index,):
- fields.boolean('Uppercase'),
- })
- return res
-
- def default_get(self, cr, uid, fields, context=None):
- """
- To get default values for the object.
-
- @param self: The object pointer.
- @param cr: A database cursor
- @param uid: ID of the user currently logged in
- @param fields: List of fields for which we want default values
- @param context: A standard dictionary
-
- @return: A dictionary which of fields with values.
-
- """
- res = super(AccountProfitAndLossLedgerWizard, self).default_get(cr, uid, fields, context=context)
-
- for key, values in DEFAULT_STYLES.iteritems():
- for index in range(LEVEL_STYLES):
- field = "level%s_%s" % (index, key)
- if not res.get(field, False):
- res[field] = values[index]
- return res
-
- def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
- res = super(AccountProfitAndLossLedgerWizard, self).fields_view_get(cr, uid, view_id, view_type, context=context, toolbar=toolbar, submenu=submenu)
-
- eview = etree.fromstring(res['arch'])
- placeholder = eview.xpath("//group[@name='levels']")
- if placeholder:
- placeholder = placeholder[0]
- for index in range(LEVEL_STYLES):
- # add fields
- res['fields']["level%s_print" % (index,)] = {'string': "Print", 'type': 'boolean'}
- res['fields']["level%s_size" % (index,)] = {'string': "Size", 'type': 'integer', 'required': True}
- res['fields']["level%s_bold" % (index,)] = {'string': "Bold", 'type': 'boolean',}
- res['fields']["level%s_italic" % (index,)] = {'string': "Italic", 'type': 'boolean',}
- res['fields']["level%s_underline" % (index,)] = {'string': "Underline", 'type': 'boolean',}
- res['fields']["level%s_uppercase" % (index,)] = {'string': "Uppercase", 'type': 'boolean'}
-
- common_attrs = "{'readonly': [('level%(index)s_print', '=', False)]}" % {'index': index}
- group = etree.Element('group', {'name': "group_level_%s" % (index,), 'colspan':'4', 'col': '10'})
- group.append(etree.Element('separator', {'string': _('Level %s') % (index+1,), 'colspan':'2'}))
- group.append(etree.Element('field', {'name': "level%s_print" % (index,), 'colspan': '8'}))
- group.append(etree.Element('field', {'name': "level%s_size" % (index,), 'attrs': common_attrs}))
- group.append(etree.Element('field', {'name': "level%s_bold" % (index,), 'attrs': common_attrs}))
- group.append(etree.Element('field', {'name': "level%s_italic" % (index,), 'attrs': common_attrs}))
- group.append(etree.Element('field', {'name': "level%s_underline" % (index,), 'attrs': common_attrs}))
- group.append(etree.Element('field', {'name': "level%s_uppercase" % (index,), 'attrs': common_attrs}))
-
- placeholder.append(group)
- res['arch'] = etree.tostring(eview)
- return res
-
- def _print_report(self, cursor, uid, ids, data, context=None):
- context = context or {}
- # we update form with display account value
- data = self.pre_print_report(cursor, uid, ids, data, context=context)
-
- fields_to_read = ['numbers_display',]
-
- # comparison fields
- for index in range(LEVEL_STYLES):
- fields_to_read.extend([
- "level%s_print" % (index,),
- "level%s_size" % (index,),
- "level%s_bold" % (index,),
- "level%s_italic" % (index,),
- "level%s_underline" % (index,),
- "level%s_uppercase" % (index,),
- ])
-
- vals = self.read(cursor, uid, ids, fields_to_read,context=context)[0]
-
- data['form'].update(vals)
- return {'type': 'ir.actions.report.xml',
- 'report_name': 'account.account_report_profit_loss_webkit',
- 'datas': data}
-
-AccountProfitAndLossLedgerWizard()
diff --git a/account_financial_report_webkit/wizard/profit_loss_wizard_view.xml b/account_financial_report_webkit/wizard/profit_loss_wizard_view.xml
deleted file mode 100644
index 0f5c63fa..00000000
--- a/account_financial_report_webkit/wizard/profit_loss_wizard_view.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
-
-
- Profit and Loss Webkit
- profit.loss.webkit
- form
-
-
-
-
-
-
-
-
- 4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- True
-
-
-
-
-
-
- Profit and Loss Webkit
- ir.actions.act_window
- profit.loss.webkit
- form
- form
-
- new
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/account_financial_report_webkit/wizard/trial_balance_wizard_view.xml b/account_financial_report_webkit/wizard/trial_balance_wizard_view.xml
index cfdf39e8..871f837a 100644
--- a/account_financial_report_webkit/wizard/trial_balance_wizard_view.xml
+++ b/account_financial_report_webkit/wizard/trial_balance_wizard_view.xml
@@ -4,12 +4,11 @@
Trial Balancetrial.balance.webkit
- form