From 0fdc4ae6d3e336a0d880b3cba4cd6b2f9e5607c4 Mon Sep 17 00:00:00 2001 From: "DBR (OpenERP)" Date: Mon, 1 Nov 2010 12:05:10 +0530 Subject: [PATCH 01/19] [IMP]: Changes in icons bzr revid: dbr@tinyerp.com-20101101063510-u2htyfa060xobnwk --- addons/account/account_view.xml | 4 ++-- addons/account/project/project_view.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index 8e4453d382a..ff04697a60b 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -380,7 +380,7 @@ - + @@ -1689,7 +1689,7 @@ - + diff --git a/addons/account/project/project_view.xml b/addons/account/project/project_view.xml index 8df9e00be0f..69c0df65014 100644 --- a/addons/account/project/project_view.xml +++ b/addons/account/project/project_view.xml @@ -196,7 +196,7 @@ - + From 07eaa79f21e6ed505cbd275cff4500399ea82763 Mon Sep 17 00:00:00 2001 From: Mustufa Rangwala Date: Tue, 16 Nov 2010 13:30:18 +0530 Subject: [PATCH 02/19] [FIX] Account: account.tax.template without prince_include field lp bug: https://launchpad.net/bugs/539717 fixed bzr revid: mra@mra-laptop-20101116080018-0eo8k08qrub52ywn --- addons/account/account.py | 7 +++++-- addons/account/account_view.xml | 1 + addons/account/installer.py | 3 ++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/addons/account/account.py b/addons/account/account.py index e35676e08a5..03d9397df75 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -2454,7 +2454,8 @@ class account_tax_template(osv.osv): 'ref_tax_sign': fields.float('Tax Code Sign', help="Usually 1 or -1."), 'include_base_amount': fields.boolean('Include in Base Amount', help="Set if the amount of tax must be included in the base amount before computing the next taxes."), 'description': fields.char('Internal Name', size=32), - 'type_tax_use': fields.selection([('sale','Sale'),('purchase','Purchase'),('all','All')], 'Tax Use In', required=True,) + 'type_tax_use': fields.selection([('sale','Sale'),('purchase','Purchase'),('all','All')], 'Tax Use In', required=True,), + 'price_include': fields.boolean('Tax Included in Price', help="Check this if the price you use on the product and invoices includes this tax."), } def name_get(self, cr, uid, ids, context={}): @@ -2485,6 +2486,7 @@ class account_tax_template(osv.osv): 'base_sign': 1, 'include_base_amount': False, 'type_tax_use': 'all', + 'price_include': 0, } _order = 'sequence' @@ -2658,7 +2660,8 @@ class wizard_multi_charts_accounts(osv.osv_memory): 'include_base_amount': tax.include_base_amount, 'description':tax.description, 'company_id': company_id, - 'type_tax_use': tax.type_tax_use + 'type_tax_use': tax.type_tax_use, + 'price_include': tax.price_include } new_tax = obj_acc_tax.create(cr, uid, vals_tax) tax_template_to_tax[tax.id] = new_tax diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index 6fe2081c696..0a35300c11c 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -2258,6 +2258,7 @@ + diff --git a/addons/account/installer.py b/addons/account/installer.py index aa9a022d0c1..b1be04f7c70 100644 --- a/addons/account/installer.py +++ b/addons/account/installer.py @@ -188,7 +188,8 @@ class account_installer(osv.osv_memory): 'include_base_amount': tax.include_base_amount, 'description': tax.description, 'company_id': company_id.id, - 'type_tax_use': tax.type_tax_use + 'type_tax_use': tax.type_tax_use, + 'price_include': tax.price_include } new_tax = obj_acc_tax.create(cr, uid, vals_tax, context=context) #as the accounts have not been created yet, we have to wait before filling these fields From d3f5955317583a2e0d11a9d815e37949a9880806 Mon Sep 17 00:00:00 2001 From: "qdp-launchpad@tinyerp.com" <> Date: Tue, 16 Nov 2010 09:34:20 +0100 Subject: [PATCH 03/19] [FIX] account, account.move.line query_get: fixed the initial balance computation in order to check only the selected fiscalyear bzr revid: qdp-launchpad@tinyerp.com-20101116083420-rpr5nohjgsb851fk --- addons/account/account_move_line.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index 94c4acf24aa..cdb692f454a 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -47,11 +47,8 @@ class account_move_line(osv.osv): if not context.get('fiscalyear', False): fiscalyear_ids = fiscalyear_obj.search(cr, uid, [('state', '=', 'draft')]) else: - if initial_bal: - fiscalyear_date_start = fiscalyear_obj.read(cr, uid, context['fiscalyear'], ['date_start'])['date_start'] - fiscalyear_ids = fiscalyear_obj.search(cr, uid, [('date_stop', '<', fiscalyear_date_start), ('state', '=', 'draft')], context=context) - else: - fiscalyear_ids = [context['fiscalyear']] + #for initial balance as well as for normal query, we check only the selected FY because the best practice is to generate the FY opening entries + fiscalyear_ids = [context['fiscalyear']] fiscalyear_clause = (','.join([str(x) for x in fiscalyear_ids])) or '0' state = context.get('state', False) @@ -1264,4 +1261,4 @@ class account_move_line(osv.osv): account_move_line() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 602815a5adcdd7d92cfe88ee9efad5b97a89e1ef Mon Sep 17 00:00:00 2001 From: "Anup (OpenERP)" Date: Tue, 16 Nov 2010 14:56:50 +0530 Subject: [PATCH 04/19] [FIX](Maintenance) Exportation fixed for o2m and m2m bzr revid: ach@tinyerp.com-20101116092650-cdzcqn5tc7hq5l3m --- bin/osv/orm.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bin/osv/orm.py b/bin/osv/orm.py index d4c66683999..496d569a29c 100644 --- a/bin/osv/orm.py +++ b/bin/osv/orm.py @@ -556,8 +556,8 @@ class orm_template(object): lines = [] data = map(lambda x: '', range(len(fields))) + done = [] for fpos in range(len(fields)): - done = [] f = fields[fpos] if f: r = row @@ -602,7 +602,8 @@ class orm_template(object): fields2 = map(lambda x: (x[:i+1]==f[:i+1] and x[i+1:]) \ or [], fields) if fields2 in done: - break + if [x for x in fields2 if x]: + break done.append(fields2) for row2 in r: lines2 = self.__export_row(cr, uid, row2, fields2, From 3a50c2e24c4754bfa5a8e361ebdb3ce5bb127600 Mon Sep 17 00:00:00 2001 From: "qdp-launchpad@tinyerp.com" <> Date: Tue, 16 Nov 2010 13:08:34 +0100 Subject: [PATCH 05/19] [FIX] account, demo data: fixed the user type of creditors and debtors accounts lp bug: https://launchpad.net/bugs/662538 fixed bzr revid: qdp-launchpad@tinyerp.com-20101116120834-nfql6vmuwnfu7j1c --- addons/account/demo/account_minimal.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/account/demo/account_minimal.xml b/addons/account/demo/account_minimal.xml index 01a14fbc4d0..e4048f69a9c 100644 --- a/addons/account/demo/account_minimal.xml +++ b/addons/account/demo/account_minimal.xml @@ -136,7 +136,7 @@ receivable - + @@ -186,7 +186,7 @@ payable - + From 014cd444001a872958e9df945a3b814b08583290 Mon Sep 17 00:00:00 2001 From: "qdp-launchpad@tinyerp.com" <> Date: Tue, 16 Nov 2010 13:16:58 +0100 Subject: [PATCH 06/19] [IMP] account, fiscalyear end of year entries generation: small misc improvments bzr revid: qdp-launchpad@tinyerp.com-20101116121658-31enzyskxpceo312 --- addons/account/test/account_fiscalyear_close.yml | 8 ++++---- addons/account/test/price_accuracy00.yml | 2 -- addons/account/wizard/account_fiscalyear_close.py | 10 ++++------ 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/addons/account/test/account_fiscalyear_close.yml b/addons/account/test/account_fiscalyear_close.yml index c69e11abd6b..109b098d6a7 100644 --- a/addons/account/test/account_fiscalyear_close.yml +++ b/addons/account/test/account_fiscalyear_close.yml @@ -8,14 +8,14 @@ date_stop: !eval "'%s-12-31' %(datetime.now().year+1)" name: !eval "'Fiscal Year %s' %(datetime.now().year+1)" - - I create a period for the month of january for the new fiscalyear + I create a period for the opening entries for the new fiscalyear - !record {model: account.period, id: account_period_jan11}: company_id: base.main_company date_start: !eval "'%s-01-01'% (datetime.now().year+1)" - date_stop: !eval "'%s-12-31'% (datetime.now().year+1)" + date_stop: !eval "'%s-01-01'% (datetime.now().year+1)" fiscalyear_id: account_fiscalyear_fiscalyear0 - name: !eval "'Jan%s' %(datetime.now().year+1)" + name: !eval "'OP %s' %(datetime.now().year+1)" special: 1 - @@ -91,4 +91,4 @@ # self.action_open_window(cr, uid, [ref("account_move_journal_2")], {"lang": 'en_US', # "active_model": "ir.ui.menu", "active_ids": [ref("account.menu_action_move_journal_line_form")], # "tz": False, "active_id": ref("account.menu_action_move_journal_line_form"), -# }) \ No newline at end of file +# }) diff --git a/addons/account/test/price_accuracy00.yml b/addons/account/test/price_accuracy00.yml index 81023395141..135dcf1ec60 100644 --- a/addons/account/test/price_accuracy00.yml +++ b/addons/account/test/price_accuracy00.yml @@ -14,8 +14,6 @@ !record {model: account.tax, id: tax196}: name: Tax 19.6% amount: &tax 0.196 - account_collected_id: account.a_recv - account_paid_id: account.a_recv - And we define an invoice with one invoice line with a tax of *tax - diff --git a/addons/account/wizard/account_fiscalyear_close.py b/addons/account/wizard/account_fiscalyear_close.py index 4ab6201b507..42383341828 100644 --- a/addons/account/wizard/account_fiscalyear_close.py +++ b/addons/account/wizard/account_fiscalyear_close.py @@ -33,14 +33,12 @@ class account_fiscalyear_close(osv.osv_memory): 'Fiscal Year to close', required=True, help="Select a Fiscal year to close"), 'fy2_id': fields.many2one('account.fiscalyear', \ 'New Fiscal Year', required=True), - 'journal_id': fields.many2one('account.journal', \ - 'Opening Entries Journal', required=True, help='The best practice here is to use a journal dedicated to contain the opening entries of all fiscal years. Note that you should define it with default debit/credit accounts and with a centralized counterpart.'), - 'period_id': fields.many2one('account.period', \ - 'Opening Entries Period', required=True), + 'journal_id': fields.many2one('account.journal', 'Opening Entries Journal', domain="[('type','=','situation')]", required=True, help='The best practice here is to use a journal dedicated to contain the opening entries of all fiscal years. Note that you should define it with default debit/credit accounts, of type \'situation\' and with a centralized counterpart.'), + 'period_id': fields.many2one('account.period', 'Opening Entries Period', required=True), 'report_name': fields.char('Name of new entries',size=64, required=True, help="Give name of the new entries"), } _defaults = { - 'report_name':'End of Fiscal Year Entry', + 'report_name': _('End of Fiscal Year Entry'), } def data_save(self, cr, uid, ids, context=None): @@ -221,4 +219,4 @@ class account_fiscalyear_close(osv.osv_memory): account_fiscalyear_close() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 6a3324a7a0fdd8b1e5fdc916bfe3846b4832d42a Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Tue, 16 Nov 2010 13:38:44 +0100 Subject: [PATCH 07/19] [IMP] tools.translate: various improvements to tranlations export/import, courtesy of P. Christeas: - better support for multiline labels - better support for multiple addons paths bzr revid: odo@openerp.com-20101116123844-mo9mljrzduzs90gg --- bin/tools/translate.py | 109 ++++++++++++++++++++++++++--------------- 1 file changed, 69 insertions(+), 40 deletions(-) diff --git a/bin/tools/translate.py b/bin/tools/translate.py index c22b2ca53ca..c75153cdde8 100644 --- a/bin/tools/translate.py +++ b/bin/tools/translate.py @@ -200,6 +200,23 @@ class GettextAlias(object): _ = GettextAlias() +def quote(s): + """Returns quoted PO term string, with special PO characters escaped""" + assert r"\n" not in s, "Translation terms may not include escaped newlines ('\\n'), please use only literal newlines" + return '"%s"' % s.replace('\\','\\\\') \ + .replace('"','\\"') \ + .replace('\n', '\\n"\n"') + +re_escaped_char = re.compile(r"(\\.)") +re_escaped_replacements = {'n': '\n', } + +def _sub_replacement(match_obj): + return re_escaped_replacements.get(match_obj.group(1)[1], match_obj.group(1)[1]) + +def unquote(str): + """Returns unquoted PO term string, with special PO characters unescaped""" + return re_escaped_char.sub(_sub_replacement, str[1:-1]) + # class to handle po files class TinyPoFile(object): def __init__(self, buffer): @@ -231,11 +248,6 @@ class TinyPoFile(object): return (self.lines_count - len(self.lines)) def next(self): - def unquote(str): - return str[1:-1].replace("\\n", "\n") \ - .replace("\\\\ ", "\\ ") \ - .replace('\\"', '"') - type = name = res_id = source = trad = None if self.tnrs: @@ -337,11 +349,6 @@ class TinyPoFile(object): ) def write(self, modules, tnrs, source, trad): - def quote(s): - return '"%s"' % s.replace('"','\\"') \ - .replace('\n', '\\n"\n"') \ - .replace(' \\ ',' \\\\ ') - plurial = len(modules) > 1 and 's' or '' self.buffer.write("#. module%s: %s\n" % (plurial, ', '.join(modules))) @@ -654,29 +661,21 @@ def trans_generate(lang, modules, dbname=None): # parse source code for _() calls def get_module_from_path(path, mod_paths=None): -# if not mod_paths: -## First, construct a list of possible paths -# def_path = os.path.abspath(os.path.join(tools.config['root_path'], 'addons')) # default addons path (base) -# ad_paths= map(lambda m: os.path.abspath(m.strip()),tools.config['addons_path'].split(',')) -# mod_paths=[def_path] -# for adp in ad_paths: -# mod_paths.append(adp) -# if not adp.startswith('/'): -# mod_paths.append(os.path.join(def_path,adp)) -# elif adp.startswith(def_path): -# mod_paths.append(adp[len(def_path)+1:]) -# for mp in mod_paths: -# if path.startswith(mp) and (os.path.dirname(path) != mp): -# path = path[len(mp)+1:] -# return path.split(os.path.sep)[0] - path_dir = os.path.dirname(path[1:]) - if path_dir: - if os.path.exists(os.path.join(tools.config['addons_path'],path[1:])): - return path.split(os.path.sep)[1] - else: - root_addons = os.path.join(tools.config['root_path'], 'addons') - if os.path.exists(os.path.join(root_addons,path[1:])): - return path.split(os.path.sep)[1] + if not mod_paths: + # First, construct a list of possible paths + def_path = os.path.abspath(os.path.join(tools.config['root_path'], 'addons')) # default addons path (base) + ad_paths= map(lambda m: os.path.abspath(m.strip()),tools.config['addons_path'].split(',')) + mod_paths=[def_path] + for adp in ad_paths: + mod_paths.append(adp) + if not os.path.isabs(adp): + mod_paths.append(adp) + elif adp.startswith(def_path): + mod_paths.append(adp[len(def_path)+1:]) + for mp in mod_paths: + if path.startswith(mp) and (os.path.dirname(path) != mp): + path = path[len(mp)+1:] + return path.split(os.path.sep)[0] return 'base' # files that are not in a module are considered as being in 'base' module modobj = pool.get('ir.module.module') @@ -685,25 +684,55 @@ def trans_generate(lang, modules, dbname=None): root_path = os.path.join(tools.config['root_path'], 'addons') - if root_path in tools.config['addons_path'] : - path_list = [root_path] + apaths = map(os.path.abspath, map(str.strip, tools.config['addons_path'].split(','))) + if root_path in apaths: + path_list = apaths else : - path_list = [root_path,tools.config['addons_path']] + path_list = [root_path,] + apaths + + logger.notifyChannel("i18n", netsvc.LOG_DEBUG, "Scanning modules at paths: %s" % (' '.join(path_list),)) + + mod_paths = [] + join_dquotes = re.compile(r'([^\\])"[\s\\]*"', re.DOTALL) + join_quotes = re.compile(r'([^\\])\'[\s\\]*\'', re.DOTALL) + re_dquotes = re.compile(r'[^a-zA-Z0-9_]_\([\s]*"(.+?)"[\s]*?\)', re.DOTALL) + re_quotes = re.compile(r'[^a-zA-Z0-9_]_\([\s]*\'(.+?)\'[\s]*?\)', re.DOTALL) def export_code_terms_from_file(fname, path, root, terms_type): fabsolutepath = join(root, fname) frelativepath = fabsolutepath[len(path):] - module = get_module_from_path(frelativepath) + module = get_module_from_path(fabsolutepath, mod_paths=mod_paths) is_mod_installed = module in installed_modules if (('all' in modules) or (module in modules)) and is_mod_installed: + logger.notifyChannel("i18n", netsvc.LOG_DEBUG, "Scanning code of %s at module: %s" % (frelativepath, module)) code_string = tools.file_open(fabsolutepath, subdir='').read() - iter = re.finditer('[^a-zA-Z0-9_]_\([\s]*["\'](.+?)["\'][\s]*\)', code_string, re.S) if module in installed_modules: frelativepath = str("addons" + frelativepath) - for i in iter: - push_translation(module, terms_type, frelativepath, 0, encode(i.group(1))) + ite = re_dquotes.finditer(code_string) + for i in ite: + src = i.group(1) + if src.startswith('""'): + assert src.endswith('""'), "Incorrect usage of _(..) function (should contain only literal strings!) in file %s near: %s" % (frelativepath, src[:30]) + src = src[2:-2] + else: + src = join_dquotes.sub(r'\1', src) + # now, since we did a binary read of a python source file, we + # have to expand pythonic escapes like the interpreter does. + src = src.decode('string_escape') + push_translation(module, terms_type, frelativepath, 0, encode(src)) + ite = re_quotes.finditer(code_string) + for i in ite: + src = i.group(1) + if src.startswith("''"): + assert src.endswith("''"), "Incorrect usage of _(..) function (should contain only literal strings!) in file %s near: %s" % (frelativepath, src[:30]) + src = src[2:-2] + else: + src = join_quotes.sub(r'\1', src) + src = src.decode('string_escape') + push_translation(module, terms_type, frelativepath, 0, encode(src)) for path in path_list: + logger.notifyChannel("i18n", netsvc.LOG_DEBUG, "Scanning files of modules at %s" % path) for root, dummy, files in tools.osutil.walksymlinks(path): for fname in itertools.chain(fnmatch.filter(files, '*.py')): export_code_terms_from_file(fname, path, root, 'code') From 0c489cf1fa4ebea448c52e428b6f01cedb5f54b4 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Tue, 16 Nov 2010 13:43:28 +0100 Subject: [PATCH 08/19] [ADD] test: added smoke test for tools.translate.quote and unquote bzr revid: odo@openerp.com-20101116124328-1ez3w3jxvf5v3ilt --- bin/test/__init__.py | 1 + bin/test/test_translate.py | 48 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 bin/test/test_translate.py diff --git a/bin/test/__init__.py b/bin/test/__init__.py index 86872258874..248f468a34c 100644 --- a/bin/test/__init__.py +++ b/bin/test/__init__.py @@ -20,3 +20,4 @@ ############################################################################## from test_osv import * +from test_translate import * diff --git a/bin/test/test_translate.py b/bin/test/test_translate.py new file mode 100644 index 00000000000..2e67884409b --- /dev/null +++ b/bin/test/test_translate.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2010 OpenERP S.A. http://www.openerp.com +# +# 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 unittest +from tools.translate import quote, unquote + +class TranslationToolsTestCase(unittest.TestCase): + + def test_quote_unquote(self): + + def test_string(str): + quoted = quote(str) + #print "\n1:", repr(str) + #print "2:", repr(quoted) + unquoted = unquote("".join(quoted.split('"\n"'))) + #print "3:", repr(unquoted) + self.assertEquals(str, unquoted) + + test_string("""test \nall kinds\n \n o\r + \\\\ nope\n\n" + """) + + # The ones with 1+ backslashes directly followed by + # a newline or literal N can fail... we would need a + # state-machine parser to handle these, but this would + # be much slower so it's better to avoid them at the moment + self.assertRaises(AssertionError, quote, """test \nall kinds\n\no\r + \\\\nope\n\n" + """) + From e96e07e24431f0986cef43f0dd3d4b138966bdf9 Mon Sep 17 00:00:00 2001 From: "sma (Tiny)" Date: Tue, 16 Nov 2010 18:23:38 +0530 Subject: [PATCH 09/19] Added _description attribute for model Res.groups. lp bug: https://launchpad.net/bugs/672552 fixed bzr revid: sma@tinyerp.com-20101116125338-ryuhc33tg1lg1iuj --- bin/addons/base/res/res_user.py | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/addons/base/res/res_user.py b/bin/addons/base/res/res_user.py index cdd0d8329e1..6f9cdad2518 100644 --- a/bin/addons/base/res/res_user.py +++ b/bin/addons/base/res/res_user.py @@ -33,6 +33,7 @@ import time class groups(osv.osv): _name = "res.groups" _order = 'name' + _description = "Access Groups" _columns = { 'name': fields.char('Group Name', size=64, required=True), 'model_access': fields.one2many('ir.model.access', 'group_id', 'Access Controls'), From 9cc22d7bb5fc8f1a19c25f5aa2326a187ba7dac8 Mon Sep 17 00:00:00 2001 From: "AMP (OpenERP)" Date: Tue, 16 Nov 2010 19:07:57 +0530 Subject: [PATCH 10/19] [MOD/IMP] account : Creating the Toiltip fro accounting all pdf reports bzr revid: amp@tinyerp.com-20101116133757-9t97tvpkhehomb3n --- .../account_report_account_balance_view.xml | 14 ++++++++---- .../account_report_balance_sheet_view.xml | 18 ++++++++++----- .../account_report_central_journal_view.xml | 2 +- .../wizard/account_report_common_view.xml | 2 ++ .../account_report_general_journal_view.xml | 14 ++++++++---- .../account_report_general_ledger_view.xml | 22 ++++++++++++------- .../account_report_partner_balance_view.xml | 16 +++++++++----- .../account_report_partner_ledger_view.xml | 22 ++++++++++++------- .../account_report_print_journal_view.xml | 16 +++++++++----- .../account_report_profit_loss_view.xml | 10 +++++++-- 10 files changed, 93 insertions(+), 43 deletions(-) diff --git a/addons/account/wizard/account_report_account_balance_view.xml b/addons/account/wizard/account_report_account_balance_view.xml index eb31f4e20f0..9438a6f9216 100644 --- a/addons/account/wizard/account_report_account_balance_view.xml +++ b/addons/account/wizard/account_report_account_balance_view.xml @@ -9,10 +9,16 @@ form - - - - + + + + + + + + + diff --git a/addons/account/wizard/account_report_balance_sheet_view.xml b/addons/account/wizard/account_report_balance_sheet_view.xml index 7166923bf78..97b73784f43 100644 --- a/addons/account/wizard/account_report_balance_sheet_view.xml +++ b/addons/account/wizard/account_report_balance_sheet_view.xml @@ -8,12 +8,18 @@ form - - - - - - + + + + + + + + + + + diff --git a/addons/account/wizard/account_report_central_journal_view.xml b/addons/account/wizard/account_report_central_journal_view.xml index ca7103c685e..b139f0f2c43 100644 --- a/addons/account/wizard/account_report_central_journal_view.xml +++ b/addons/account/wizard/account_report_central_journal_view.xml @@ -26,7 +26,7 @@ form
+