Sebastien LANGE
11 years ago
11 changed files with 1065 additions and 310 deletions
-
1account_financial_report_webkit/__openerp__.py
-
781account_financial_report_webkit/i18n/fr.po
-
1account_financial_report_webkit/report/__init__.py
-
3account_financial_report_webkit/report/common_reports.py
-
145account_financial_report_webkit/report/print_journal.py
-
20account_financial_report_webkit/report/report.xml
-
169account_financial_report_webkit/report/templates/account_report_print_journal.mako
-
9account_financial_report_webkit/report_menus.xml
-
3account_financial_report_webkit/wizard/__init__.py
-
140account_financial_report_webkit/wizard/print_journal.py
-
101account_financial_report_webkit/wizard/print_journal_view.xml
781
account_financial_report_webkit/i18n/fr.po
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,145 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################## |
||||
|
# |
||||
|
# account_financial_report_webkit module for OpenERP, Webkit based extended report financial report |
||||
|
# Copyright (C) 2012 SYLEAM Info Services (<http://www.syleam.fr/>) |
||||
|
# Sebastien LANGE <sebastien.lange@syleam.fr> |
||||
|
# |
||||
|
# This file is a part of account_financial_report_webkit |
||||
|
# |
||||
|
# account_financial_report_webkit 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. |
||||
|
# |
||||
|
# account_financial_report_webkit 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 report import report_sxw |
||||
|
from tools.translate import _ |
||||
|
import pooler |
||||
|
from datetime import datetime |
||||
|
|
||||
|
from common_reports import CommonReportHeaderWebkit |
||||
|
from webkit_parser_header_fix import HeaderFooterTextWebKitParser |
||||
|
|
||||
|
class PrintJournalWebkit(report_sxw.rml_parse, CommonReportHeaderWebkit): |
||||
|
|
||||
|
def __init__(self, cursor, uid, name, context): |
||||
|
super(PrintJournalWebkit, 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((_('JOURNALS'), 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':_('Journals'), |
||||
|
'display_account_raw': self._get_display_account_raw, |
||||
|
'filter_form': self._get_filter, |
||||
|
'target_move': self._get_target_move, |
||||
|
'initial_balance': self._get_initial_balance, |
||||
|
'amount_currency': self._get_amount_currency, |
||||
|
'display_partner_account': self._get_display_partner_account, |
||||
|
'display_target_move': self._get_display_target_move, |
||||
|
'journals': self._get_journals_br, |
||||
|
'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 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""" |
||||
|
|
||||
|
# Reading form |
||||
|
main_filter = self._get_form_param('filter', data, default='filter_no') |
||||
|
target_move = self._get_form_param('target_move', data, default='all') |
||||
|
start_date = self._get_form_param('date_from', data) |
||||
|
stop_date = self._get_form_param('date_to', data) |
||||
|
start_period = self.get_start_period_br(data) |
||||
|
stop_period = self.get_end_period_br(data) |
||||
|
fiscalyear = self.get_fiscalyear_br(data) |
||||
|
journal_ids = self._get_form_param('journal_ids', data) |
||||
|
chart_account = self._get_chart_account_id_br(data) |
||||
|
account_period_obj = self.pool.get('account.period') |
||||
|
|
||||
|
domain= [('journal_id', 'in', journal_ids)] |
||||
|
if main_filter == 'filter_no': |
||||
|
domain += [ |
||||
|
('date', '>=', self.get_first_fiscalyear_period(fiscalyear).date_start), |
||||
|
('date', '<=', self.get_last_fiscalyear_period(fiscalyear).date_stop), |
||||
|
] |
||||
|
# computation of move lines |
||||
|
elif main_filter == 'filter_date': |
||||
|
domain += [ |
||||
|
('date', '>=', start_date), |
||||
|
('date', '<=', stop_date), |
||||
|
] |
||||
|
elif main_filter == 'filter_period': |
||||
|
period_ids = account_period_obj.build_ctx_periods(self.cursor, self.uid, start_period.id, stop_period.id) |
||||
|
domain = [ |
||||
|
('period_id', 'in', period_ids), |
||||
|
] |
||||
|
if target_move == 'posted': |
||||
|
domain += [('state', '=', 'posted')] |
||||
|
account_journal_period_obj = self.pool.get('account.journal.period') |
||||
|
new_ids = account_journal_period_obj.search(self.cursor, self.uid, [ |
||||
|
('journal_id', 'in', journal_ids), |
||||
|
('period_id', 'in', period_ids), |
||||
|
]) |
||||
|
objects = account_journal_period_obj.browse(self.cursor, self.uid, new_ids) |
||||
|
# Sort by journal and period |
||||
|
objects.sort(key=lambda a: (a.journal_id.code, a.period_id.date_start)) |
||||
|
move_obj = self.pool.get('account.move') |
||||
|
for journal_period in objects: |
||||
|
domain_arg = [ |
||||
|
('journal_id', '=', journal_period.journal_id.id), |
||||
|
('period_id', '=', journal_period.period_id.id), |
||||
|
] |
||||
|
if target_move == 'posted': |
||||
|
domain_arg += [('state', '=', 'posted')] |
||||
|
move_ids = move_obj.search(self.cursor, self.uid, domain_arg, order="name") |
||||
|
journal_period.moves = move_obj.browse(self.cursor, self.uid, move_ids) |
||||
|
# Sort account move line by account accountant |
||||
|
for move in journal_period.moves: |
||||
|
move.line_id.sort(key=lambda a: (a.date, a.account_id.code)) |
||||
|
|
||||
|
self.localcontext.update({ |
||||
|
'fiscalyear': fiscalyear, |
||||
|
'start_date': start_date, |
||||
|
'stop_date': stop_date, |
||||
|
'start_period': start_period, |
||||
|
'stop_period': stop_period, |
||||
|
'chart_account': chart_account, |
||||
|
}) |
||||
|
|
||||
|
return super(PrintJournalWebkit, self).set_context(objects, data, new_ids, report_type=report_type) |
||||
|
|
||||
|
|
||||
|
|
||||
|
HeaderFooterTextWebKitParser('report.account.account_report_print_journal_webkit', |
||||
|
'account.journal.period', |
||||
|
'addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako', |
||||
|
parser=PrintJournalWebkit) |
||||
|
|
||||
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
@ -0,0 +1,169 @@ |
|||||
|
<!DOCTYPE html SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
||||
|
<html xmlns="http://www.w3.org/1999/xhtml"> |
||||
|
<head> |
||||
|
<style type="text/css"> |
||||
|
.overflow_ellipsis { |
||||
|
text-overflow: ellipsis; |
||||
|
overflow: hidden; |
||||
|
white-space: nowrap; |
||||
|
} |
||||
|
${css} |
||||
|
</style> |
||||
|
</head> |
||||
|
<body> |
||||
|
<%! |
||||
|
def amount(text): |
||||
|
return text.replace('-', '‑') # replace by a non-breaking hyphen (it will not word-wrap between hyphen and numbers) |
||||
|
%> |
||||
|
|
||||
|
<%setLang(user.lang)%> |
||||
|
|
||||
|
<div class="act_as_table data_table"> |
||||
|
<div class="act_as_row labels"> |
||||
|
<div class="act_as_cell">${_('Chart of Account')}</div> |
||||
|
<div class="act_as_cell">${_('Fiscal Year')}</div> |
||||
|
<div class="act_as_cell"> |
||||
|
%if filter_form(data) == 'filter_date': |
||||
|
${_('Dates Filter')} |
||||
|
%else: |
||||
|
${_('Periods Filter')} |
||||
|
%endif |
||||
|
</div> |
||||
|
<div class="act_as_cell">${_('Journal Filter')}</div> |
||||
|
<div class="act_as_cell">${_('Target Moves')}</div> |
||||
|
</div> |
||||
|
<div class="act_as_row"> |
||||
|
<div class="act_as_cell">${ chart_account.name }</div> |
||||
|
<div class="act_as_cell">${ fiscalyear.name if fiscalyear else '-' }</div> |
||||
|
<div class="act_as_cell"> |
||||
|
${_('From:')} |
||||
|
%if filter_form(data) == 'filter_date': |
||||
|
${formatLang(start_date, date=True) if start_date else u'' } |
||||
|
%else: |
||||
|
${start_period.name if start_period else u''} |
||||
|
%endif |
||||
|
${_('To:')} |
||||
|
%if filter_form(data) == 'filter_date': |
||||
|
${ formatLang(stop_date, date=True) if stop_date else u'' } |
||||
|
%else: |
||||
|
${stop_period.name if stop_period else u'' } |
||||
|
%endif |
||||
|
</div> |
||||
|
<div class="act_as_cell"> |
||||
|
%if journals(data): |
||||
|
${', '.join([journal.name for journal in journals(data)])} |
||||
|
%else: |
||||
|
${_('All')} |
||||
|
%endif |
||||
|
|
||||
|
</div> |
||||
|
<div class="act_as_cell">${ display_target_move(data) }</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
%for journal_period in objects: |
||||
|
<% |
||||
|
account_total_debit = 0.0 |
||||
|
account_total_credit = 0.0 |
||||
|
account_total_currency = 0.0 |
||||
|
%> |
||||
|
|
||||
|
<div class="account_title bg" style="width: 1080px; margin-top: 20px; font-size: 12px;">${journal_period.journal_id.name} - ${journal_period.period_id.name}</div> |
||||
|
|
||||
|
<!-- we use div with css instead of table for tabular data because div do not cut rows at half at page breaks --> |
||||
|
<div class="act_as_table list_table" style="margin-top: 5px;"> |
||||
|
<div class="act_as_thead"> |
||||
|
<div class="act_as_row labels"> |
||||
|
## date |
||||
|
<div class="act_as_cell first_column">${_('Date')}</div> |
||||
|
## move |
||||
|
<div class="act_as_cell">${_('Entry')}</div> |
||||
|
## account code |
||||
|
<div class="act_as_cell">${_('Account')}</div> |
||||
|
## date |
||||
|
<div class="act_as_cell">${_('Due Date')}</div> |
||||
|
## partner |
||||
|
<div class="act_as_cell" style="width: 280px;">${_('Partner')}</div> |
||||
|
## label |
||||
|
<div class="act_as_cell" style="width: 310px;">${_('Label')}</div> |
||||
|
## debit |
||||
|
<div class="act_as_cell amount">${_('Debit')}</div> |
||||
|
## credit |
||||
|
<div class="act_as_cell amount">${_('Credit')}</div> |
||||
|
%if amount_currency(data): |
||||
|
## currency balance |
||||
|
<div class="act_as_cell amount sep_left">${_('Curr. Balance')}</div> |
||||
|
## curency code |
||||
|
<div class="act_as_cell amount" style="text-align: right;">${_('Curr.')}</div> |
||||
|
%endif |
||||
|
</div> |
||||
|
</div> |
||||
|
%for move in journal_period.moves: |
||||
|
<% |
||||
|
new_move = True |
||||
|
%> |
||||
|
|
||||
|
%for line in move.line_id: |
||||
|
<div class="act_as_tbody"> |
||||
|
<% |
||||
|
account_total_debit += line.debit or 0.0 |
||||
|
account_total_credit += line.credit or 0.0 |
||||
|
%> |
||||
|
<div class="act_as_row lines"> |
||||
|
## date |
||||
|
<div class="act_as_cell first_column">${formatLang(move.date, date=True) if new_move else ''}</div> |
||||
|
## move |
||||
|
<div class="act_as_cell">${move.name if new_move else ''}</div> |
||||
|
## account code |
||||
|
<div class="act_as_cell">${line.account_id.code}</div> |
||||
|
## date |
||||
|
<div class="act_as_cell">${formatLang(line.date_maturity or '', date=True)}</div> |
||||
|
## partner |
||||
|
<div class="act_as_cell overflow_ellipsis" style="width: 280px;">${line.partner_id.name if new_move else ''}</div> |
||||
|
## label |
||||
|
<div class="act_as_cell overflow_ellipsis" style="width: 310px;">${line.name}</div> |
||||
|
## debit |
||||
|
<div class="act_as_cell amount">${formatLang(line.debit) if line.debit else ''}</div> |
||||
|
## credit |
||||
|
<div class="act_as_cell amount">${formatLang(line.credit) if line.credit else ''}</div> |
||||
|
%if amount_currency(data): |
||||
|
## currency balance |
||||
|
<div class="act_as_cell amount sep_left">${formatLang(line.amount_currency) if line.amount_currency else ''}</div> |
||||
|
## curency code |
||||
|
<div class="act_as_cell amount" style="text-align: right;">${line.currency_id.symbol or ''}</div> |
||||
|
%endif |
||||
|
</div> |
||||
|
<% |
||||
|
new_move = False |
||||
|
%> |
||||
|
</div> |
||||
|
%endfor |
||||
|
%endfor |
||||
|
<div class="act_as_row lines labels"> |
||||
|
## date |
||||
|
<div class="act_as_cell first_column"></div> |
||||
|
## move |
||||
|
<div class="act_as_cell"></div> |
||||
|
## account code |
||||
|
<div class="act_as_cell"></div> |
||||
|
## date |
||||
|
<div class="act_as_cell"></div> |
||||
|
## partner |
||||
|
<div class="act_as_cell" style="width: 280px;"></div> |
||||
|
## label |
||||
|
<div class="act_as_cell" style="width: 310px;"></div> |
||||
|
## debit |
||||
|
<div class="act_as_cell amount">${formatLang(account_total_debit) | amount }</div> |
||||
|
## credit |
||||
|
<div class="act_as_cell amount">${formatLang(account_total_credit) | amount }</div> |
||||
|
%if amount_currency(data): |
||||
|
## currency balance |
||||
|
<div class="act_as_cell amount sep_left"></div> |
||||
|
## currency code |
||||
|
<div class="act_as_cell" style="text-align: right; right;"></div> |
||||
|
%endif |
||||
|
</div> |
||||
|
</div> |
||||
|
%endfor |
||||
|
</body> |
||||
|
</html> |
@ -0,0 +1,140 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################## |
||||
|
# |
||||
|
# account_financial_report_webkit module for OpenERP |
||||
|
# Copyright (C) 2012 SYLEAM Info Services (<http://www.syleam.fr/>) |
||||
|
# Sebastien LANGE <sebastien.lange@syleam.fr> |
||||
|
# |
||||
|
# This file is a part of account_financial_report_webkit |
||||
|
# |
||||
|
# account_financial_report_webkit 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. |
||||
|
# |
||||
|
# account_financial_report_webkit 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 osv import osv |
||||
|
from osv import fields |
||||
|
import time |
||||
|
from lxml import etree |
||||
|
|
||||
|
|
||||
|
class AccountReportPrintJournalWizard(osv.osv_memory): |
||||
|
"""Will launch print journal report and pass requiered args""" |
||||
|
|
||||
|
|
||||
|
_inherit = "account.common.account.report" |
||||
|
_name = "print.journal.webkit" |
||||
|
_description = "Journals Report" |
||||
|
|
||||
|
_columns = { |
||||
|
'amount_currency': fields.boolean("With Currency", help="It adds the currency column"), |
||||
|
} |
||||
|
|
||||
|
_defaults = { |
||||
|
'amount_currency': False, |
||||
|
'journal_ids': False, |
||||
|
'filter': 'filter_period', |
||||
|
} |
||||
|
|
||||
|
def _check_fiscalyear(self, cr, uid, ids, context=None): |
||||
|
obj = self.read(cr, uid, ids[0], ['fiscalyear_id', 'filter'], context=context) |
||||
|
if not obj['fiscalyear_id'] and obj['filter'] == 'filter_no': |
||||
|
return False |
||||
|
return True |
||||
|
|
||||
|
_constraints = [ |
||||
|
(_check_fiscalyear, 'When no Fiscal year is selected, you must choose to filter by periods or by date.', ['filter']), |
||||
|
] |
||||
|
|
||||
|
def pre_print_report(self, cr, uid, ids, data, context=None): |
||||
|
data = super(AccountReportPrintJournalWizard, self).pre_print_report(cr, uid, ids, data, 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, |
||||
|
['amount_currency', |
||||
|
'display_account', |
||||
|
'journal_ids'], |
||||
|
context=context)[0] |
||||
|
data['form'].update(vals) |
||||
|
return data |
||||
|
|
||||
|
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} |
||||
|
if filter == 'filter_date': |
||||
|
if fiscalyear_id: |
||||
|
fyear = self.pool.get('account.fiscalyear').browse(cr, uid, fiscalyear_id, context=context) |
||||
|
date_from = fyear.date_start |
||||
|
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} |
||||
|
if filter == 'filter_period' and fiscalyear_id: |
||||
|
start_period = end_period = False |
||||
|
cr.execute(''' |
||||
|
SELECT * FROM (SELECT p.id |
||||
|
FROM account_period p |
||||
|
LEFT JOIN account_fiscalyear f ON (p.fiscalyear_id = f.id) |
||||
|
WHERE f.id = %s |
||||
|
AND COALESCE(p.special, FALSE) = FALSE |
||||
|
ORDER BY p.date_start ASC |
||||
|
LIMIT 1) AS period_start |
||||
|
UNION ALL |
||||
|
SELECT * FROM (SELECT p.id |
||||
|
FROM account_period p |
||||
|
LEFT JOIN account_fiscalyear f ON (p.fiscalyear_id = f.id) |
||||
|
WHERE f.id = %s |
||||
|
AND p.date_start < NOW() |
||||
|
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()] |
||||
|
if periods: |
||||
|
start_period = end_period = periods[0] |
||||
|
if len(periods) > 1: |
||||
|
end_period = periods[1] |
||||
|
res['value'] = {'period_from': start_period, 'period_to': end_period, 'date_from': False, 'date_to': False} |
||||
|
return res |
||||
|
|
||||
|
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): |
||||
|
''' |
||||
|
used to set the domain on 'journal_ids' field: we exclude or only propose the journals of type |
||||
|
sale/purchase (+refund) accordingly to the presence of the key 'sale_purchase_only' in the context. |
||||
|
''' |
||||
|
if context is None: |
||||
|
context = {} |
||||
|
res = super(AccountReportPrintJournalWizard, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=submenu) |
||||
|
doc = etree.XML(res['arch']) |
||||
|
|
||||
|
if context.get('sale_purchase_only'): |
||||
|
domain ="[('type', 'in', ('sale','purchase','sale_refund','purchase_refund'))]" |
||||
|
else: |
||||
|
domain ="[('type', 'not in', ('sale','purchase','sale_refund','purchase_refund'))]" |
||||
|
nodes = doc.xpath("//field[@name='journal_ids']") |
||||
|
for node in nodes: |
||||
|
node.set('domain', domain) |
||||
|
res['arch'] = etree.tostring(doc) |
||||
|
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_print_journal_webkit', |
||||
|
'datas': data} |
||||
|
|
||||
|
AccountReportPrintJournalWizard() |
||||
|
|
||||
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
@ -0,0 +1,101 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<openerp> |
||||
|
<data> |
||||
|
############################################################################## |
||||
|
# |
||||
|
# account_financial_report_webkit module for OpenERP, Webkit based extended report financial report |
||||
|
# Copyright (C) 2012 SYLEAM Info Services ([http://www.syleam.fr/]) |
||||
|
# Sebastien LANGE [sebastien.lange@syleam.fr] |
||||
|
# |
||||
|
# This file is a part of account_financial_report_webkit |
||||
|
# |
||||
|
# account_financial_report_webkit 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. |
||||
|
# |
||||
|
# account_financial_report_webkit 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/]. |
||||
|
# |
||||
|
############################################################################## |
||||
|
|
||||
|
<record id="account_report_print_journal_view_webkit" model="ir.ui.view"> |
||||
|
<field name="name">Journals</field> |
||||
|
<field name="model">print.journal.webkit</field> |
||||
|
<field name="type">form</field> |
||||
|
<field name="inherit_id" ref="account.account_common_report_view"/> |
||||
|
<field name="arch" type="xml"> |
||||
|
<data> |
||||
|
<xpath expr="/form/label[@string='']" position="replace"> |
||||
|
<separator string="Journals" colspan="4"/> |
||||
|
<label nolabel="1" colspan="4" string="This report allows you to print or generate a pdf of your print journal with details of all your account journals"/> |
||||
|
</xpath> |
||||
|
<xpath expr="//field[@name='target_move']" position="after"> |
||||
|
<field name="amount_currency"/> |
||||
|
<newline/> |
||||
|
<field name="filter" on_change="onchange_filter(filter, fiscalyear_id)" colspan="4" invisible="1"/> |
||||
|
<separator string="Periods" colspan="4"/> |
||||
|
<field name="period_from" domain="[('fiscalyear_id', '=', fiscalyear_id)]" required="1" colspan="4"/> |
||||
|
<field name="period_to" domain="[('fiscalyear_id', '=', fiscalyear_id)]" required="1" colspan="4"/> |
||||
|
<separator string="Journals" colspan="4"/> |
||||
|
<field name="journal_ids" colspan="4" nolabel="1"/> |
||||
|
</xpath> |
||||
|
<xpath expr="//page[@name='filters']" position="replace"> |
||||
|
</xpath> |
||||
|
<xpath expr="//page[@name='journal_ids']" position="replace"> |
||||
|
</xpath> |
||||
|
</data> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="account_report_print_journal_view_inherit" model="ir.ui.view"> |
||||
|
<field name="name">Journals</field> |
||||
|
<field name="model">print.journal.webkit</field> |
||||
|
<field name="type">form</field> |
||||
|
<field name="inherit_id" ref="account.account_report_print_journal"/> |
||||
|
<field name="arch" type="xml"> |
||||
|
<field name="fiscalyear_id" position="replace"> |
||||
|
<field name="fiscalyear_id" on_change="onchange_fiscalyear(fiscalyear_id)"/> |
||||
|
</field> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="action_account_print_journal_menu_webkit" model="ir.actions.act_window"> |
||||
|
<field name="name">Journals</field> |
||||
|
<field name="type">ir.actions.act_window</field> |
||||
|
<field name="res_model">print.journal.webkit</field> |
||||
|
<field name="view_type">form</field> |
||||
|
<field name="view_mode">form</field> |
||||
|
<field name="view_id" ref="account_report_print_journal_view_webkit"/> |
||||
|
<field name="target">new</field> |
||||
|
</record> |
||||
|
|
||||
|
<record model="ir.values" id="action_account_print_journal_values_webkit"> |
||||
|
<field name="model_id" ref="account.model_account_account"/> |
||||
|
<field name="object" eval="1"/> |
||||
|
<field name="name">Journals</field> |
||||
|
<field name="key2">client_print_multi</field> |
||||
|
<field name="value" |
||||
|
eval="'ir.actions.act_window,' +str(ref('action_account_print_journal_menu_webkit'))"/> |
||||
|
<field name="key">action</field> |
||||
|
<field name="model">account.journal.period</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="action_account_print_journal_sale_purchase_menu_webkit" model="ir.actions.act_window"> |
||||
|
<field name="name">Journals</field> |
||||
|
<field name="type">ir.actions.act_window</field> |
||||
|
<field name="res_model">print.journal.webkit</field> |
||||
|
<field name="view_type">form</field> |
||||
|
<field name="view_mode">form</field> |
||||
|
<field name="view_id" ref="account_report_print_journal_view_webkit"/> |
||||
|
<field name="context">{'sale_purchase_only':True}</field> |
||||
|
<field name="target">new</field> |
||||
|
</record> |
||||
|
|
||||
|
</data> |
||||
|
</openerp> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue