From 076a128839cd5dc32d788230dc2bc75ded091585 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Mon, 28 Aug 2017 16:57:47 +0200 Subject: [PATCH] [REM] account_journal_report_xls: Replaced by account_journal_report --- account_journal_report_xls/README.rst | 14 - account_journal_report_xls/__init__.py | 30 - account_journal_report_xls/__openerp__.py | 44 - account_journal_report_xls/account_journal.py | 89 -- .../i18n/account_journal_report_xls.pot | 309 ------ account_journal_report_xls/i18n/fr.po | 311 ------ account_journal_report_xls/i18n/nl.po | 311 ------ account_journal_report_xls/report/__init__.py | 24 - .../report/nov_account_journal.py | 358 ------- .../report/nov_account_journal.rml | 286 ------ .../report/nov_account_journal_xls.py | 408 -------- .../static/description/icon.png | Bin 22273 -> 0 bytes .../static/description/icon.svg | 962 ------------------ .../export_csv_journal_by_fiscal_year.yml | 83 -- .../tests/export_csv_journal_by_period.yml | 107 -- .../tests/print_journal_by_fiscal_year.yml | 83 -- .../tests/print_journal_by_period.yml | 107 -- account_journal_report_xls/wizard/__init__.py | 23 - .../wizard/print_journal_wizard.py | 199 ---- .../wizard/print_journal_wizard.xml | 80 -- 20 files changed, 3828 deletions(-) delete mode 100644 account_journal_report_xls/README.rst delete mode 100644 account_journal_report_xls/__init__.py delete mode 100644 account_journal_report_xls/__openerp__.py delete mode 100644 account_journal_report_xls/account_journal.py delete mode 100644 account_journal_report_xls/i18n/account_journal_report_xls.pot delete mode 100644 account_journal_report_xls/i18n/fr.po delete mode 100644 account_journal_report_xls/i18n/nl.po delete mode 100644 account_journal_report_xls/report/__init__.py delete mode 100644 account_journal_report_xls/report/nov_account_journal.py delete mode 100644 account_journal_report_xls/report/nov_account_journal.rml delete mode 100644 account_journal_report_xls/report/nov_account_journal_xls.py delete mode 100644 account_journal_report_xls/static/description/icon.png delete mode 100644 account_journal_report_xls/static/description/icon.svg delete mode 100644 account_journal_report_xls/tests/export_csv_journal_by_fiscal_year.yml delete mode 100644 account_journal_report_xls/tests/export_csv_journal_by_period.yml delete mode 100644 account_journal_report_xls/tests/print_journal_by_fiscal_year.yml delete mode 100644 account_journal_report_xls/tests/print_journal_by_period.yml delete mode 100644 account_journal_report_xls/wizard/__init__.py delete mode 100644 account_journal_report_xls/wizard/print_journal_wizard.py delete mode 100644 account_journal_report_xls/wizard/print_journal_wizard.xml diff --git a/account_journal_report_xls/README.rst b/account_journal_report_xls/README.rst deleted file mode 100644 index 94b8b750..00000000 --- a/account_journal_report_xls/README.rst +++ /dev/null @@ -1,14 +0,0 @@ -Journal Reports -=============== - -This module adds journal reports by period and by fiscal year with - -* entries printed per move -* option to group entries with same general account & VAT case -* vat info per entry -* vat summary - -These reports are available in PDF and XLS format. - -This module depends upon the 'report_xls' module, -cf. https://github.com/OCA/reporting-engine diff --git a/account_journal_report_xls/__init__.py b/account_journal_report_xls/__init__.py deleted file mode 100644 index 6368e57d..00000000 --- a/account_journal_report_xls/__init__.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# -# Copyright (c) 2014 Noviat nv/sa (www.noviat.com). All rights reserved. -# -# 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 . -# -############################################################################## - -try: - from . import account_journal - from . import wizard - from . import report -except ImportError: - import logging - logging.getLogger('openerp.module').warning('''report_xls not available in - addons path. account_financial_report_webkit_xls will not be usable''') diff --git a/account_journal_report_xls/__openerp__.py b/account_journal_report_xls/__openerp__.py deleted file mode 100644 index 7b689aed..00000000 --- a/account_journal_report_xls/__openerp__.py +++ /dev/null @@ -1,44 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# -# Copyright (c) 2014 Noviat nv/sa (www.noviat.com). All rights reserved. -# -# 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 . -# -############################################################################## - -{ - 'name': 'Financial Journal reports', - 'version': '8.0.0.2.0', - 'license': 'AGPL-3', - 'author': "Noviat,Odoo Community Association (OCA)", - 'category': 'Accounting & Finance', - 'depends': [ - 'account_voucher', - 'report_xls', - ], - 'demo': [], - 'data': [ - 'wizard/print_journal_wizard.xml', - ], - 'test': [ - 'tests/print_journal_by_fiscal_year.yml', - 'tests/print_journal_by_period.yml', - 'tests/export_csv_journal_by_fiscal_year.yml', - 'tests/export_csv_journal_by_period.yml', - ], - 'installable': False, -} diff --git a/account_journal_report_xls/account_journal.py b/account_journal_report_xls/account_journal.py deleted file mode 100644 index e426ec9d..00000000 --- a/account_journal_report_xls/account_journal.py +++ /dev/null @@ -1,89 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# -# Copyright (c) 2013 Noviat nv/sa (www.noviat.com). All rights reserved. -# -# 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 . -# -############################################################################## - -from openerp.osv import orm - - -class account_journal(orm.Model): - _inherit = 'account.journal' - - # allow inherited modules to extend the query - def _report_xls_query_extra(self, cr, uid, context=None): - select_extra = "" - join_extra = "" - where_extra = "" - return (select_extra, join_extra, where_extra) - - # allow inherited modules to add document references - def _report_xls_document_extra(self, cr, uid, context): - return "''" - - # override list in inherited module to add/drop columns or change order - def _report_xls_fields(self, cr, uid, context=None): - res = [ - 'move_name', # account.move,name - 'move_date', # account.move,date - 'acc_code', # account.account,code - ] - if context.get('print_by') == 'fiscalyear': - res += [ - 'period', # account.period,code or name - ] - res += [ - 'partner_name', # res.partner,name - 'aml_name', # account.move.line,name - 'tax_code', # account.tax.code,code - 'tax_amount', # account.move.line,tax_amount - 'debit', # account.move.line,debit - 'credit', # account.move.line,credit - 'balance', # debit-credit - 'docname', # origin document if any - # 'date_maturity', # account.move.line,date_maturity - # 'reconcile', # account.move.line,reconcile_id.name - # 'reconcile_partial', - # account.move.line,reconcile_partial_id.name - # 'partner_ref', # res.partner,ref - # 'move_ref', # account.move,ref - # 'move_id', # account.move,id - # 'acc_name', # account.account,name - # 'journal', # account.journal,name - # 'journal_code', # account.journal,code - # 'analytic_account', # account.analytic.account,name - # 'analytic_account_code', # account.analytic.account,code - ] - return res - - # Change/Add Template entries - def _report_xls_template(self, cr, uid, context=None): - """ - Template updates, e.g. - - my_change = { - 'move_name':{ - 'header': [1, 20, 'text', _render("_('My Move Title')")], - 'lines': [1, 0, 'text', _render("l['move_name'] != '/' and - l['move_name'] or ('*'+str(l['move_id']))")], - 'totals': [1, 0, 'text', None]}, - } - return my_change - """ - return {} diff --git a/account_journal_report_xls/i18n/account_journal_report_xls.pot b/account_journal_report_xls/i18n/account_journal_report_xls.pot deleted file mode 100644 index 24ddae8b..00000000 --- a/account_journal_report_xls/i18n/account_journal_report_xls.pot +++ /dev/null @@ -1,309 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_journal_report_xls -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-19 13:34+0000\n" -"PO-Revision-Date: 2014-11-19 13:34+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: account_journal_report_xls -#: selection:account.print.journal.xls,target_move:0 -msgid "All Entries" -msgstr "" - -#. module: account_journal_report_xls -#: selection:account.print.journal.xls,target_move:0 -msgid "All Posted Entries" -msgstr "" - -#. module: account_journal_report_xls -#: code:addons/account_journal_report_xls/report/nov_account_journal.py:97 -#, python-format -msgid "Amount" -msgstr "" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,chart_account_id:0 -msgid "Chart of Account" -msgstr "" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,company_id:0 -msgid "Company" -msgstr "" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,create_uid:0 -msgid "Created by" -msgstr "" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,create_date:0 -msgid "Created on" -msgstr "" - -#. module: account_journal_report_xls -#: code:addons/account_journal_report_xls/report/nov_account_journal.py:98 -#, python-format -msgid "Credit" -msgstr "" - -#. module: account_journal_report_xls -#: code:addons/account_journal_report_xls/report/nov_account_journal.py:97 -#, python-format -msgid "Currency" -msgstr "" - -#. module: account_journal_report_xls -#: code:addons/account_journal_report_xls/report/nov_account_journal_xls.py:381 -#, python-format -msgid "Customisation Error!" -msgstr "" - -#. module: account_journal_report_xls -#: selection:account.print.journal.xls,filter:0 -#: selection:account.print.journal.xls,sort_selection:0 -msgid "Date" -msgstr "" - -#. module: account_journal_report_xls -#: code:addons/account_journal_report_xls/report/nov_account_journal.py:98 -#, python-format -msgid "Debit" -msgstr "" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,date_to:0 -msgid "End Date" -msgstr "" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,period_to:0 -msgid "End Period" -msgstr "" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,sort_selection:0 -msgid "Entries Sorted by" -msgstr "" - -#. module: account_journal_report_xls -#: view:account.print.journal.xls:account_journal_report_xls.view_print_journal_xls -msgid "Export" -msgstr "" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,filter:0 -msgid "Filter by" -msgstr "" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,fiscalyear_id:0 -#: code:addons/account_journal_report_xls/report/nov_account_journal.py:93 -#, python-format -msgid "Fiscal Year" -msgstr "" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,group_entries:0 -msgid "Group Entries" -msgstr "" - -#. module: account_journal_report_xls -#: help:account.print.journal.xls,group_entries:0 -msgid "Group entries with same General Account & Tax Code." -msgstr "" - -#. module: account_journal_report_xls -#: code:addons/account_journal_report_xls/report/nov_account_journal.py:270 -#, python-format -msgid "Grouped Entries" -msgstr "" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,id:0 -msgid "ID" -msgstr "" - -#. module: account_journal_report_xls -#: code:addons/account_journal_report_xls/report/nov_account_journal.py:209 -#, python-format -msgid "Invoice" -msgstr "" - -#. module: account_journal_report_xls -#: model:ir.model,name:account_journal_report_xls.model_account_journal -msgid "Journal" -msgstr "" - -#. module: account_journal_report_xls -#: selection:account.print.journal.xls,sort_selection:0 -msgid "Journal Entry Number" -msgstr "" - -#. module: account_journal_report_xls -#: code:addons/account_journal_report_xls/report/nov_account_journal_xls.py:244 -#, python-format -msgid "Journal Overview" -msgstr "" - -#. module: account_journal_report_xls -#: model:ir.actions.act_window,name:account_journal_report_xls.action_print_journal_by_fiscalyear_xls -#: model:ir.ui.menu,name:account_journal_report_xls.menu_print_journal_by_fiscalyear_xls -msgid "Journal by Fiscal Year" -msgstr "" - -#. module: account_journal_report_xls -#: model:ir.actions.act_window,name:account_journal_report_xls.action_print_journal_by_period_xls -#: model:ir.ui.menu,name:account_journal_report_xls.menu_print_journal_by_period_xls -msgid "Journal by Period" -msgstr "" - -#. module: account_journal_report_xls -#: view:account.print.journal.xls:account_journal_report_xls.view_print_journal_xls -#: field:account.print.journal.xls,journal_ids:0 -msgid "Journals" -msgstr "" - -#. module: account_journal_report_xls -#: help:account.print.journal.xls,fiscalyear_id:0 -msgid "Keep empty for all open fiscal year" -msgstr "" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,write_uid:0 -msgid "Last Updated by" -msgstr "" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,write_date:0 -msgid "Last Updated on" -msgstr "" - -#. module: account_journal_report_xls -#: code:addons/account_journal_report_xls/wizard/print_journal_wizard.py:160 -#: code:addons/account_journal_report_xls/wizard/print_journal_wizard.py:184 -#, python-format -msgid "No Data Available" -msgstr "" - -#. module: account_journal_report_xls -#: selection:account.print.journal.xls,filter:0 -msgid "No Filters" -msgstr "" - -#. module: account_journal_report_xls -#: code:addons/account_journal_report_xls/wizard/print_journal_wizard.py:161 -#: code:addons/account_journal_report_xls/wizard/print_journal_wizard.py:185 -#, python-format -msgid "No records found for your selection!" -msgstr "" - -#. module: account_journal_report_xls -#: code:addons/account_journal_report_xls/report/nov_account_journal.py:92 -#, python-format -msgid "Period" -msgstr "" - -#. module: account_journal_report_xls -#: view:account.print.journal.xls:account_journal_report_xls.view_print_journal_xls -#: selection:account.print.journal.xls,filter:0 -msgid "Periods" -msgstr "" - -#. module: account_journal_report_xls -#: view:account.print.journal.xls:account_journal_report_xls.view_print_journal_xls -msgid "Print" -msgstr "" - -#. module: account_journal_report_xls -#: help:account.print.journal.xls,amount_currency:0 -msgid "Print Report with the currency column if the currency differs from the company currency." -msgstr "" - -#. module: account_journal_report_xls -#: model:ir.model,name:account_journal_report_xls.model_account_print_journal_xls -msgid "Print/Export Journal" -msgstr "" - -#. module: account_journal_report_xls -#: code:addons/account_journal_report_xls/report/nov_account_journal_xls.py:327 -#, python-format -msgid "Programming Error!" -msgstr "" - -#. module: account_journal_report_xls -#: help:account.print.journal.xls,chart_account_id:0 -msgid "Select Charts of Accounts" -msgstr "" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,date_from:0 -msgid "Start Date" -msgstr "" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,period_from:0 -msgid "Start Period" -msgstr "" - -#. module: account_journal_report_xls -#: code:addons/account_journal_report_xls/report/nov_account_journal.py:213 -#, python-format -msgid "Statement" -msgstr "" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,target_move:0 -msgid "Target Moves" -msgstr "" - -#. module: account_journal_report_xls -#: code:addons/account_journal_report_xls/report/nov_account_journal_xls.py:382 -#, python-format -msgid "The 'Balance' field is a calculated XLS field requiring the presence of the 'Debit' and 'Credit' fields !" -msgstr "" - -#. module: account_journal_report_xls -#: view:account.print.journal.xls:account_journal_report_xls.view_print_journal_xls -msgid "This report allows you to generate a pdf or xls of your journals" -msgstr "" - -#. module: account_journal_report_xls -#: code:addons/account_journal_report_xls/report/nov_account_journal_xls.py:314 -#, python-format -msgid "VAT Declaration" -msgstr "" - -#. module: account_journal_report_xls -#: code:addons/account_journal_report_xls/report/nov_account_journal.py:210 -#: code:addons/account_journal_report_xls/report/nov_account_journal.py:214 -#, python-format -msgid "Voucher" -msgstr "" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,amount_currency:0 -msgid "With Currency" -msgstr "" - -#. module: account_journal_report_xls -#: view:account.print.journal.xls:account_journal_report_xls.view_print_journal_xls -msgid "onchange_fiscalyear_id(fiscalyear_id, context)" -msgstr "" - -#. module: account_journal_report_xls -#: code:addons/account_journal_report_xls/report/nov_account_journal_xls.py:328 -#, python-format -msgid "vat_summary_cols_number should be < cols_number !" -msgstr "" - diff --git a/account_journal_report_xls/i18n/fr.po b/account_journal_report_xls/i18n/fr.po deleted file mode 100644 index f01ca711..00000000 --- a/account_journal_report_xls/i18n/fr.po +++ /dev/null @@ -1,311 +0,0 @@ -# French translation of OpenERP Server 6.1. -# This file contains the translation of the following modules: -# * account_journal_report_xls -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.1\n" -"Report-Msgid-Bugs-To: support@noviat.be\n" -"POT-Creation-Date: 2014-01-19 17:16:37.990000\n" -"PO-Revision-Date: 2014-01-19 17:16:37.990000\n" -"Last-Translator: Luc De Meyer (Noviat nv/sa)\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#. module: account_journal_report_xls -#: model:ir.actions.act_window,name:account_journal_report_xls.action_print_journal_by_period_xls -msgid "Journal by Period" -msgstr "Journal détaillé par période" - -#. module: account_journal_report_xls -#: model:ir.actions.act_window,name:account_journal_report_xls.action_print_journal_by_fiscalyear_xls -msgid "Journal by Fiscal Year" -msgstr "Journal détaillé par exercice fiscal" - -#. module: account_journal_report_xls -#: model:ir.ui.menu,name:account_journal_report_xls.menu_print_journal_by_period_xls -msgid "Journal by Period" -msgstr "Journal détaillé par période" - -#. module: account_journal_report_xls -#: model:ir.ui.menu,name:account_journal_report_xls.menu_print_journal_by_fiscalyear_xls -msgid "Journal by Fiscal Year" -msgstr "Journal détaillé par exercice fiscal" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,chart_account_id:0 -msgid "Chart of Account" -msgstr "Plan comptable" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,fiscalyear_id:0 -msgid "Fiscal Year" -msgstr "Exercice fiscal" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,target_move:0 -msgid "Target Moves" -msgstr "Mouvements ciblés" - -#. module: account_journal_report_xls -#: selection:account.print.journal.xls,target_move:0 -msgid "All Posted Entries" -msgstr "Toutes les écritures passées" - -#. module: account_journal_report_xls -#: selection:account.print.journal.xls,target_move:0 -msgid "All Entries" -msgstr "Toutes les écritures" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,sort_selection:0 -msgid "Entries Sorted by" -msgstr "Écritures triées par" - -#. module: account_journal_report_xls -#: selection:account.print.journal.xls,sort_selection:0 -msgid "Journal Entry Number" -msgstr "N° écriture dans le journal" - -#. module: account_journal_report_xls -#: selection:account.print.journal.xls,sort_selection:0 -msgid "Date" -msgstr "Date" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,amount_currency:0 -msgid "With Currency" -msgstr "Avec devise" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,group_entries:0 -msgid "Group Entries" -msgstr "Group Entries" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,period_from:0 -msgid "Start Period" -msgstr "Première période" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,period_to:0 -msgid "End Period" -msgstr "Dernière période" - -#. module: account_journal_report_xls -#: code:addons/account_journal_report_xls/wizard/print_journal_wizard.py:10 -msgid "No records found for your selection!" -msgstr "Aucun enregistrement trouvé pour votre sélection!" - -#. module: account_journal_report_xls -#: code:addons/account_journal_report_xls/wizard/print_journal_wizard.py:11 -msgid "No Data Available" -msgstr "Aucune donnée disponible" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Period" -msgstr "Période" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Fiscal Year" -msgstr "Exercice fiscal" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Journal Overview" -msgstr "Journal détaillé" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Journal Items" -msgstr "Écritures comptables" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Entry" -msgstr "Écriture" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Name" -msgstr "Nom" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Reference" -msgstr "Référence" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Effective Date" -msgstr "Date" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Period" -msgstr "Période" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Date" -msgstr "Date" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Account" -msgstr "Compte" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Account Name" -msgstr "Description compte " - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Journal" -msgstr "Journal" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Description" -msgstr "Description" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Partner" -msgstr "Partenaire" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Partner Reference" -msgstr "Réf. Partenaire" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Maturity Date" -msgstr "Date d'échéance" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Debit" -msgstr "Débit" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Credit" -msgstr "Crédit" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Balance" -msgstr "Solde" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Rec." -msgstr "Let." - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Part. Rec." -msgstr "Let. Part." - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Tax Code" -msgstr "Case TVA" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Tax/Base Amount" -msgstr "Montant TVA/Base" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "VAT" -msgstr "TVA" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "VAT Amount" -msgstr "Montant TVA" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Amount" -msgstr "Montant" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Currency" -msgstr "Devise" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Am. Currency" -msgstr "Montant devise" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Curr." -msgstr "Dev." - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Comp. Curr." -msgstr "Dev. Soc." - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Analytic Account" -msgstr "Compte analytique" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Document" -msgstr "Document" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Entry Reference" -msgstr "Écriture réf." - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Entry Id" -msgstr "Écriture id" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "VAT Declaration" -msgstr "Déclaration TVA" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Case" -msgstr "Case" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Invoice" -msgstr "Facture" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Voucher" -msgstr "Voucher" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Statement" -msgstr "Relevé" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Grouped Entries" -msgstr "Écritures groupées" - diff --git a/account_journal_report_xls/i18n/nl.po b/account_journal_report_xls/i18n/nl.po deleted file mode 100644 index e9ace14a..00000000 --- a/account_journal_report_xls/i18n/nl.po +++ /dev/null @@ -1,311 +0,0 @@ -# Dutch translation of OpenERP Server 6.1. -# This file contains the translation of the following modules: -# * account_journal_report_xls -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.1\n" -"Report-Msgid-Bugs-To: support@noviat.be\n" -"POT-Creation-Date: 2014-01-19 17:16:37.980000\n" -"PO-Revision-Date: 2014-01-19 17:16:37.980000\n" -"Last-Translator: Luc De Meyer (Noviat nv/sa)\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#. module: account_journal_report_xls -#: model:ir.actions.act_window,name:account_journal_report_xls.action_print_journal_by_period_xls -msgid "Journal by Period" -msgstr "Dagboekoverzicht per periode" - -#. module: account_journal_report_xls -#: model:ir.actions.act_window,name:account_journal_report_xls.action_print_journal_by_fiscalyear_xls -msgid "Journal by Fiscal Year" -msgstr "Dagboekoverzicht per boekjaar" - -#. module: account_journal_report_xls -#: model:ir.ui.menu,name:account_journal_report_xls.menu_print_journal_by_period_xls -msgid "Journal by Period" -msgstr "Dagboekoverzicht per periode" - -#. module: account_journal_report_xls -#: model:ir.ui.menu,name:account_journal_report_xls.menu_print_journal_by_fiscalyear_xls -msgid "Journal by Fiscal Year" -msgstr "Dagboekoverzicht per boekjaar" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,chart_account_id:0 -msgid "Chart of Account" -msgstr "Rekeningschema" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,fiscalyear_id:0 -msgid "Fiscal Year" -msgstr "Boekjaar" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,target_move:0 -msgid "Target Moves" -msgstr "Boekingen" - -#. module: account_journal_report_xls -#: selection:account.print.journal.xls,target_move:0 -msgid "All Posted Entries" -msgstr "Alle goedgekeurde boekingen" - -#. module: account_journal_report_xls -#: selection:account.print.journal.xls,target_move:0 -msgid "All Entries" -msgstr "Alle boekingen" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,sort_selection:0 -msgid "Entries Sorted by" -msgstr "Boekingen gesorteerd op" - -#. module: account_journal_report_xls -#: selection:account.print.journal.xls,sort_selection:0 -msgid "Journal Entry Number" -msgstr "Nummer journaalpost" - -#. module: account_journal_report_xls -#: selection:account.print.journal.xls,sort_selection:0 -msgid "Date" -msgstr "Datum" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,amount_currency:0 -msgid "With Currency" -msgstr "Met valuta" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,group_entries:0 -msgid "Group Entries" -msgstr "Groepeer dagboekregels" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,period_from:0 -msgid "Start Period" -msgstr "Beginperiode" - -#. module: account_journal_report_xls -#: field:account.print.journal.xls,period_to:0 -msgid "End Period" -msgstr "Eindperiode" - -#. module: account_journal_report_xls -#: code:addons/account_journal_report_xls/wizard/print_journal_wizard.py:10 -msgid "No records found for your selection!" -msgstr "Geen records gevonden voor uw keuze!" - -#. module: account_journal_report_xls -#: code:addons/account_journal_report_xls/wizard/print_journal_wizard.py:11 -msgid "No Data Available" -msgstr "Geen gegevens beschikbaar" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Period" -msgstr "Periode" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Fiscal Year" -msgstr "Boekjaar" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Journal Overview" -msgstr "Dagboekoverzicht" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Journal Items" -msgstr "Boekingsregels" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Entry" -msgstr "Boeking" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Name" -msgstr "Naam" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Reference" -msgstr "Referentie" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Effective Date" -msgstr "Datum" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Period" -msgstr "Periode" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Date" -msgstr "Datum" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Account" -msgstr "Rekening" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Account Name" -msgstr "Omschrijving rekening" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Journal" -msgstr "Dagboek" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Description" -msgstr "Omschrijving" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Partner" -msgstr "Partner" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Partner Reference" -msgstr "Ref. Partner" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Maturity Date" -msgstr "Vervaldatum" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Debit" -msgstr "Debet" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Credit" -msgstr "Credit" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Balance" -msgstr "Saldo" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Rec." -msgstr "Rec." - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Part. Rec." -msgstr "Rec. Part." - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Tax Code" -msgstr "BTW vak" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Tax/Base Amount" -msgstr "Bedrag BTW/Mvh" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "VAT" -msgstr "BTW" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "VAT Amount" -msgstr "Bedrag BTW" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Amount" -msgstr "Bedrag" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Currency" -msgstr "Valuta" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Am. Currency" -msgstr "Bedrag valuta" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Curr." -msgstr "Val." - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Comp. Curr." -msgstr "Bedr. Val." - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Analytic Account" -msgstr "Kostenplaats" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Document" -msgstr "Document" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Entry Reference" -msgstr "Boeking ref." - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Entry Id" -msgstr "Boeking id" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "VAT Declaration" -msgstr "BTW aangifte" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Case" -msgstr "Vak" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Invoice" -msgstr "Factuur" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Voucher" -msgstr "Voucher" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Statement" -msgstr "Uitreksel" - -#. module: account_journal_report_xls -#: report:nov.account.journal.print:0 -msgid "Grouped Entries" -msgstr "Gegroepeerde boekingsregels" - diff --git a/account_journal_report_xls/report/__init__.py b/account_journal_report_xls/report/__init__.py deleted file mode 100644 index 91ffb7bf..00000000 --- a/account_journal_report_xls/report/__init__.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# -# Copyright (c) 2013 Noviat nv/sa (www.noviat.com). All rights reserved. -# -# 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 . -# -############################################################################## - -from . import nov_account_journal -from . import nov_account_journal_xls diff --git a/account_journal_report_xls/report/nov_account_journal.py b/account_journal_report_xls/report/nov_account_journal.py deleted file mode 100644 index f400d14e..00000000 --- a/account_journal_report_xls/report/nov_account_journal.py +++ /dev/null @@ -1,358 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# -# Copyright (c) 2014 Noviat nv/sa (www.noviat.com). All rights reserved. -# -# 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 time -from openerp.report import report_sxw -from openerp.tools.translate import translate -import logging -_logger = logging.getLogger(__name__) - -_ir_translation_name = 'nov.account.journal.print' - - -class nov_journal_print(report_sxw.rml_parse): - - def set_context(self, objects, data, ids, report_type=None): - # _logger.warn('set_context, objects = %s, data = %s, - # ids = %s', objects, data, ids) - super(nov_journal_print, self).set_context(objects, data, ids) - j_obj = self.pool.get('account.journal') - p_obj = self.pool.get('account.period') - fy_obj = self.pool.get('account.fiscalyear') - self.sort_selection = data['sort_selection'] - if data['target_move'] == 'posted': - self.move_states = ['posted'] - else: - self.move_states = ['draft', 'posted'] - self.display_currency = self.localcontext[ - 'display_currency'] = data['display_currency'] - self.group_entries = data['group_entries'] - self.print_by = data['print_by'] - self.report_type = report_type - if self.print_by == 'period': - journal_period_ids = data['journal_period_ids'] - objects = [] - for jp in journal_period_ids: - journal = j_obj.browse(self.cr, self.uid, jp[0], self.context) - periods = p_obj.browse(self.cr, self.uid, jp[1], self.context) - objects.extend([(journal, period) for period in periods]) - self.localcontext['objects'] = self.objects = objects - else: - journal_fy_ids = data['journal_fy_ids'] - objects = [] - for jf in journal_fy_ids: - journal = j_obj.browse(self.cr, self.uid, jf[0], self.context) - fiscalyear = fy_obj.browse( - self.cr, self.uid, jf[1], self.context) - objects.append((journal, fiscalyear)) - self.localcontext['objects'] = self.objects = objects - - def __init__(self, cr, uid, name, context): - if context is None: - context = {} - super(nov_journal_print, self).__init__(cr, uid, name, context=context) - self.localcontext.update({ - 'time': time, - 'title': self._title, - 'amount_title': self._amount_title, - 'lines': self._lines, - 'sum1': self._sum1, - 'sum2': self._sum2, - 'tax_codes': self._tax_codes, - 'sum_vat': self._sum_vat, - '_': self._, - }) - self.context = context - - def _(self, src): - lang = self.context.get('lang', 'en_US') - return translate(self.cr, _ir_translation_name, 'report', lang, src) \ - or src - - def _title(self, object): - return ((self.print_by == 'period' and self._('Period') or - self._('Fiscal Year')) + ' ' + object[1].name, object[0].name) - - def _amount_title(self): - return self.display_currency and \ - (self._('Amount'), self._('Currency')) or ( - self._('Debit'), self._('Credit')) - - def _lines(self, object): - j_obj = self.pool['account.journal'] - _ = self._ - journal = object[0] - journal_id = journal.id - if self.print_by == 'period': - period = object[1] - period_id = period.id - period_ids = [period_id] - # update status period - ids_journal_period = self.pool['account.journal.period'].\ - search(self.cr, self.uid, [('journal_id', '=', journal_id), - ('period_id', '=', period_id)]) - if ids_journal_period: - self.cr.execute( - '''update account_journal_period set state=%s - where journal_id=%s and period_id=%s and state=%s''', - ('printed', journal_id, period_id, 'draft')) - else: - self.pool.get('account.journal.period').create( - self.cr, self.uid, - {'name': (journal.code or journal.name) + ':' + - (period.name or ''), - 'journal_id': journal.id, - 'period_id': period.id, - 'state': 'printed', - }) - _logger.error("""The Entry for Period '%s', Journal '%s' was - missing in 'account.journal.period' and - has been fixed now !""", - period.name, journal.name) - else: - fiscalyear = object[1] - period_ids = [x.id for x in fiscalyear.period_ids] - - select_extra, join_extra, where_extra = j_obj._report_xls_query_extra( - self.cr, self.uid, self.context) - - # SQL select for performance reasons, as a consequence, there are no - # field value translations. - # If performance is no issue, you can adapt the _report_xls_template in - # an inherited module to add field value translations. - self.cr.execute("SELECT l.move_id AS move_id, l.id AS aml_id, " - "am.name AS move_name, " - "coalesce(am.ref,'') AS move_ref, " - "am.date AS move_date, " - "aa.id AS account_id, aa.code AS acc_code, " - "aa.name AS acc_name, " - "aj.name AS journal, aj.code AS journal_code, " - "coalesce(rp.name,'') AS partner_name, " - "coalesce(rp.ref,'') AS partner_ref, " - "rp.id AS partner_id, " - "coalesce(l.name,'') AS aml_name, " - "l.date_maturity AS date_maturity, " - "coalesce(ap.code, ap.name) AS period, " - "coalesce(atc.code,'') AS tax_code, " - "atc.id AS tax_code_id, " - "coalesce(l.tax_amount,0.0) AS tax_amount, " - "coalesce(l.debit,0.0) AS debit, " - "coalesce(l.credit,0.0) AS credit, " - "coalesce(amr.name,'') AS reconcile, " - "coalesce(amrp.name,'') AS reconcile_partial, " - "ana.name AS an_acc_name, " - "coalesce(ana.code,'') AS an_acc_code, " - "coalesce(l.amount_currency,0.0) AS amount_currency, " - "rc.id AS currency_id, rc.name AS currency_name, " - "rc.symbol AS currency_symbol, " - "coalesce(ai.internal_number,'-') AS inv_number, " - "coalesce(abs.name,'-') AS st_number, " - "coalesce(av.number,'-') AS voucher_number " + - select_extra + - "FROM account_move_line l " - "INNER JOIN account_move am ON l.move_id = am.id " - "INNER JOIN account_account aa " - "ON l.account_id = aa.id " - "INNER JOIN account_journal aj " - "ON l.journal_id = aj.id " - "INNER JOIN account_period ap ON l.period_id = ap.id " - "LEFT OUTER JOIN account_invoice ai " - "ON ai.move_id = am.id " - "LEFT OUTER JOIN account_voucher av " - "ON av.move_id = am.id " - "LEFT OUTER JOIN account_bank_statement abs " - "ON l.statement_id = abs.id " - "LEFT OUTER JOIN res_partner rp " - "ON l.partner_id = rp.id " - "LEFT OUTER JOIN account_tax_code atc " - "ON l.tax_code_id = atc.id " - "LEFT OUTER JOIN account_move_reconcile amr " - "ON l.reconcile_id = amr.id " - "LEFT OUTER JOIN account_move_reconcile amrp " - "ON l.reconcile_partial_id = amrp.id " - "LEFT OUTER JOIN account_analytic_account ana " - "ON l.analytic_account_id = ana.id " - "LEFT OUTER JOIN res_currency rc " - "ON l.currency_id = rc.id " + join_extra + - "WHERE l.period_id IN %s AND l.journal_id = %s " - "AND am.state IN %s " + where_extra + - "ORDER BY " + self.sort_selection + - ", move_date, move_id, acc_code", - (tuple(period_ids), journal_id, - tuple(self.move_states))) - lines = self.cr.dictfetchall() - - # add reference of corresponding origin document - if journal.type in ('sale', 'sale_refund', 'purchase', - 'purchase_refund'): - [x.update({'docname': (_('Invoice') + ': ' + x['inv_number']) or - (_('Voucher') + ': ' + x['voucher_number']) or '-'}) - for x in lines] - elif journal.type in ('bank', 'cash'): - [x.update({'docname': (_('Statement') + ': ' + x['st_number']) or - (_('Voucher') + ': ' + x['voucher_number']) or '-'}) - for x in lines] - else: - code_string = j_obj._report_xls_document_extra( - self.cr, self.uid, self.context) - # _logger.warn('code_string= %s', code_string) - [x.update({'docname': eval(code_string) or '-'}) for x in lines] - - # group lines - if self.group_entries: - lines = self._group_lines(lines) - - # format debit, credit, amount_currency for pdf report - if self.display_currency and self.report_type == 'pdf': - curr_obj = self.pool.get('res.currency') - [x.update({ - 'amount1': self.formatLang(x['debit'] - x['credit']), - 'amount2': self.formatLang( - x['amount_currency'], monetary=True, - currency_obj=curr_obj.browse(self.cr, - self.uid, x['currency_id'])), - }) for x in lines] - else: - [x.update({'amount1': self.formatLang(x['debit']), - 'amount2': self.formatLang(x['credit'])}) - for x in lines] - - # insert a flag in every move_line to indicate the end of a move - # this flag will be used to draw a full line between moves - for cnt in range(len(lines) - 1): - if lines[cnt]['move_id'] != lines[cnt + 1]['move_id']: - lines[cnt]['draw_line'] = 1 - else: - lines[cnt]['draw_line'] = 0 - lines[-1]['draw_line'] = 1 - - return lines - - def _group_lines(self, lines_in): - - _ = self._ - - def group_move(lines_in): - if len(lines_in) == 1: - return lines_in - lines_grouped = {} - for line in lines_in: - key = (line['account_id'], - line['tax_code_id'], - line['partner_id']) - if key not in lines_grouped: - lines_grouped[key] = line - else: - lines_grouped[key]['debit'] += line['debit'] - lines_grouped[key]['credit'] += line['credit'] - lines_grouped[key]['tax_amount'] += line['tax_amount'] - lines_grouped[key]['aml_name'] = _('Grouped Entries') - lines_out = lines_grouped.values() - lines_out.sort(key=lambda x: x['acc_code']) - return lines_out - - lines_out = [] - grouped_lines = [lines_in[0]] - move_id = lines_in[0]['move_id'] - line_cnt = len(lines_in) - for i in range(1, line_cnt): - line = lines_in[i] - if line['move_id'] == move_id: - grouped_lines.append(line) - if i == line_cnt - 1: - lines_out += group_move(grouped_lines) - else: - lines_out += group_move(grouped_lines) - grouped_lines = [line] - move_id = line['move_id'] - - return lines_out - - def _tax_codes(self, object): - journal_id = object[0].id - if self.print_by == 'period': - period_id = object[1].id - period_ids = [period_id] - else: - fiscalyear = object[1] - period_ids = [x.id for x in fiscalyear.period_ids] - self.cr.execute( - "SELECT distinct tax_code_id FROM account_move_line l " - "INNER JOIN account_move am ON l.move_id = am.id " - "WHERE l.period_id in %s AND l.journal_id=%s " - "AND l.tax_code_id IS NOT NULL AND am.state IN %s", - (tuple(period_ids), journal_id, tuple(self.move_states))) - ids = map(lambda x: x[0], self.cr.fetchall()) - if ids: - self.cr.execute( - 'SELECT id FROM account_tax_code WHERE id IN %s ORDER BY code', - (tuple(ids),)) - tax_code_ids = map(lambda x: x[0], self.cr.fetchall()) - else: - tax_code_ids = [] - tax_codes = self.pool.get('account.tax.code').browse( - self.cr, self.uid, tax_code_ids, self.context) - return tax_codes - - def _totals(self, field, object, tax_code_id=None): - journal_id = object[0].id - if self.print_by == 'period': - period_id = object[1].id - period_ids = [period_id] - else: - fiscalyear = object[1] - period_ids = [x.id for x in fiscalyear.period_ids] - select = "SELECT sum(" + field + ") FROM account_move_line l " \ - "INNER JOIN account_move am ON l.move_id = am.id " \ - "WHERE l.period_id IN %s AND l.journal_id=%s AND am.state IN %s" - if field == 'tax_amount': - select += " AND tax_code_id=%s" % tax_code_id - self.cr.execute( - select, (tuple(period_ids), journal_id, tuple(self.move_states))) - return self.cr.fetchone()[0] or 0.0 - - def _sum1(self, object): - return self._totals('debit', object) - - def _sum2(self, object): - if self.display_currency: - return '' - else: - return self._totals('credit', object) - - def _sum_vat(self, object, tax_code): - return self._totals('tax_amount', object, tax_code.id) - - def formatLang(self, value, digits=None, date=False, date_time=False, - grouping=True, monetary=False, dp=False, - currency_obj=False): - if isinstance(value, (float, int)) and not value: - return '' - else: - return super(nov_journal_print, self).formatLang( - value, digits, - date, date_time, grouping, monetary, dp, currency_obj) - -report_sxw.report_sxw( - 'report.nov.account.journal.print', 'account.journal', - 'addons/account_journal_report_xls/report/nov_account_journal.rml', - parser=nov_journal_print, header=False) diff --git a/account_journal_report_xls/report/nov_account_journal.rml b/account_journal_report_xls/report/nov_account_journal.rml deleted file mode 100644 index 48070b70..00000000 --- a/account_journal_report_xls/report/nov_account_journal.rml +++ /dev/null @@ -1,286 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- [[ repeatIn(objects, 'o') ]] -
- - [[ o!=objects[0] and ' ' or removeParentNode('section') ]] -
- - - - [[ company.name ]] - - - [[ title(o)[0] ]] - - - [[ title(o)[1] ]] - - - Journal Overview [[ '- ' + company.currency_id.name ]] - - - - - - - - - - - - - - - - - - - - - [[ formatLang(sum1(o)) ]] - - - - - [[ formatLang(sum2(o)) ]] - - - - - - - - - - - - - - - - - Entry - - - Date - - - Account - - - Partner - - - Description - - - VAT - - - [[ amount_title()[0] ]] - - - [[ amount_title()[1] ]] - - - -
- [[ repeatIn(lines(o), 'l') ]] - - - - [[ l['move_name'] != '/' and l['move_name'] or ('*'+str(l['move_id'])) ]] - - - [[ l['move_date'] ]] - - - [[ l['acc_code'] ]] - - - [[ l['partner_name'] ]] - - - [[ l['aml_name'] ]] - - - [[ l['tax_code'] and (l['tax_code'] + ':') ]] - - - [[ l['tax_code'] and formatLang(l['tax_amount']) ]] - - - [[ l['amount1'] ]] - - - [[ l['amount2'] ]] - - - - - - - [[ l['draw_line'] and removeParentNode('blockTable') ]] - - - - - - - [[ not l['draw_line'] and removeParentNode('blockTable') ]] - - - -
- - - - - - - VAT Declaration - - - - - - -
- [[ repeatIn(tax_codes(o), 't') ]] - - - - [[ t.code + ': ' ]] - - - [[ formatLang(sum_vat(o,t)) ]] - - - - - - - - [[ t.name ]] - - - -
-
-
-
- diff --git a/account_journal_report_xls/report/nov_account_journal_xls.py b/account_journal_report_xls/report/nov_account_journal_xls.py deleted file mode 100644 index 75fe9215..00000000 --- a/account_journal_report_xls/report/nov_account_journal_xls.py +++ /dev/null @@ -1,408 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# -# Copyright (c) 2013 Noviat nv/sa (www.noviat.com). All rights reserved. -# -# 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 xlwt -from datetime import datetime -from openerp.osv import orm -from openerp.addons.report_xls.report_xls import report_xls -from openerp.addons.report_xls.utils import rowcol_to_cell, _render -from .nov_account_journal import nov_journal_print -from openerp.tools.translate import _ -import logging -_logger = logging.getLogger(__name__) - - -class account_journal_xls_parser(nov_journal_print): - - def __init__(self, cr, uid, name, context): - super(account_journal_xls_parser, self).__init__(cr, uid, name, - context=context) - journal_obj = self.pool.get('account.journal') - self.context = context - wanted_list = journal_obj._report_xls_fields(cr, uid, context) - template_changes = journal_obj._report_xls_template(cr, uid, context) - self.localcontext.update({ - 'datetime': datetime, - 'wanted_list': wanted_list, - 'template_changes': template_changes, - }) - - -class account_journal_xls(report_xls): - - def __init__(self, name, table, rml=False, parser=False, header=True, - store=False): - super(account_journal_xls, self).__init__( - name, table, rml, parser, header, store) - - # Cell Styles - _xs = self.xls_styles - # header - rh_cell_format = _xs['bold'] + _xs['fill'] + _xs['borders_all'] - self.rh_cell_style = xlwt.easyxf(rh_cell_format) - self.rh_cell_style_center = xlwt.easyxf(rh_cell_format + _xs['center']) - self.rh_cell_style_right = xlwt.easyxf(rh_cell_format + _xs['right']) - # lines - aml_cell_format = _xs['borders_all'] - self.aml_cell_style = xlwt.easyxf(aml_cell_format) - self.aml_cell_style_center = xlwt.easyxf( - aml_cell_format + _xs['center']) - self.aml_cell_style_date = xlwt.easyxf( - aml_cell_format + _xs['left'], - num_format_str=report_xls.date_format) - self.aml_cell_style_decimal = xlwt.easyxf( - aml_cell_format + _xs['right'], - num_format_str=report_xls.decimal_format) - # totals - rt_cell_format = _xs['bold'] + _xs['fill'] + _xs['borders_all'] - self.rt_cell_style = xlwt.easyxf(rt_cell_format) - self.rt_cell_style_right = xlwt.easyxf(rt_cell_format + _xs['right']) - self.rt_cell_style_decimal = xlwt.easyxf( - rt_cell_format + _xs['right'], - num_format_str=report_xls.decimal_format) - - # XLS Template Journal Items - self.col_specs_lines_template = { - 'move_name': { - 'header': [1, 20, 'text', _render("_('Entry')")], - 'lines': - [1, 0, 'text', - _render("l['move_name'] != '/' and l['move_name'] \ - or ('*'+str(l['move_id']))")], - 'totals': [1, 0, 'text', None]}, - 'move_date': { - 'header': [1, 13, 'text', _render("_('Date')")], - 'lines': - [1, 0, 'date', - _render("datetime.strptime(l['move_date'],'%Y-%m-%d')"), - None, self.aml_cell_style_date], - 'totals': [1, 0, 'text', None]}, - 'acc_code': { - 'header': [1, 12, 'text', _render("_('Account')")], - 'lines': [1, 0, 'text', _render("l['acc_code']")], - 'totals': [1, 0, 'text', None]}, - 'acc_name': { - 'header': [1, 36, 'text', _render("_('Account Name')")], - 'lines': [1, 0, 'text', _render("l['acc_name']")], - 'totals': [1, 0, 'text', None]}, - 'aml_name': { - 'header': [1, 42, 'text', _render("_('Description')")], - 'lines': [1, 0, 'text', _render("l['aml_name']")], - 'totals': [1, 0, 'text', None]}, - 'period': { - 'header': [1, 12, 'text', _render("_('Period')")], - 'lines': [1, 0, 'text', _render("l['period']")], - 'totals': [1, 0, 'text', None]}, - 'journal': { - 'header': [1, 20, 'text', _render("_('Journal')")], - 'lines': [1, 0, 'text', _render("l['journal']")], - 'totals': [1, 0, 'text', None]}, - 'journal_code': { - 'header': [1, 10, 'text', _render("_('Journal')")], - 'lines': [1, 0, 'text', _render("l['journal_code']")], - 'totals': [1, 0, 'text', None]}, - 'analytic_account': { - 'header': [1, 20, 'text', _render("_('Analytic Account')")], - 'lines': [1, 0, 'text', _render("l['an_acc_name']")], - 'totals': [1, 0, 'text', None]}, - 'analytic_account_code': { - 'header': [1, 20, 'text', _render("_('Analytic Account')")], - 'lines': [1, 0, 'text', _render("l['an_acc_code']")], - 'totals': [1, 0, 'text', None]}, - 'partner_name': { - 'header': [1, 36, 'text', _render("_('Partner')")], - 'lines': [1, 0, 'text', _render("l['partner_name']")], - 'totals': [1, 0, 'text', None]}, - 'partner_ref': { - 'header': [1, 36, 'text', _render("_('Partner Reference')")], - 'lines': [1, 0, 'text', _render("l['partner_ref']")], - 'totals': [1, 0, 'text', None]}, - 'date_maturity': { - 'header': [1, 13, 'text', _render("_('Maturity Date')")], - 'lines': - [1, 0, - _render("l['date_maturity'] and 'date' or 'text'"), - _render( - "l['date_maturity'] and datetime.\ - strptime(l['date_maturity'],'%Y-%m-%d') or None"), - None, self.aml_cell_style_date], - 'totals': [1, 0, 'text', None]}, - 'debit': { - 'header': [1, 18, 'text', _render("_('Debit')"), None, - self.rh_cell_style_right], - 'lines': [1, 0, 'number', _render("l['debit']"), None, - self.aml_cell_style_decimal], - 'totals': [1, 0, 'number', None, _render("debit_formula"), - self.rt_cell_style_decimal]}, - 'credit': { - 'header': [1, 18, 'text', _render("_('Credit')"), None, - self.rh_cell_style_right], - 'lines': [1, 0, 'number', _render("l['credit']"), None, - self.aml_cell_style_decimal], - 'totals': [1, 0, 'number', None, _render("credit_formula"), - self.rt_cell_style_decimal]}, - 'balance': { - 'header': [1, 18, 'text', _render("_('Balance')"), None, - self.rh_cell_style_right], - 'lines': [1, 0, 'number', None, _render("bal_formula"), - self.aml_cell_style_decimal], - 'totals': [1, 0, 'number', None, _render("bal_formula"), - self.rt_cell_style_decimal]}, - 'reconcile': { - 'header': [1, 12, 'text', _render("_('Rec.')"), None, - self.rh_cell_style_center], - 'lines': [1, 0, 'text', _render("l['reconcile']"), None, - self.aml_cell_style_center], - 'totals': [1, 0, 'text', None]}, - 'reconcile_partial': { - 'header': [1, 12, 'text', _render("_('Part. Rec.')"), None, - self.rh_cell_style_center], - 'lines': [1, 0, 'text', _render("l['reconcile_partial']"), - None, self.aml_cell_style_center], - 'totals': [1, 0, 'text', None]}, - 'tax_code': { - 'header': [1, 6, 'text', _render("_('VAT')"), None, - self.rh_cell_style_center], - 'lines': [1, 0, 'text', _render("l['tax_code']"), None, - self.aml_cell_style_center], - 'totals': [1, 0, 'text', None]}, - 'tax_amount': { - 'header': [1, 18, 'text', _render("_('VAT Amount')"), None, - self.rh_cell_style_right], - 'lines': [1, 0, 'number', _render("l['tax_amount']"), None, - self.aml_cell_style_decimal], - 'totals': [1, 0, 'text', None]}, - 'amount_currency': { - 'header': [1, 18, 'text', _render("_('Am. Currency')"), None, - self.rh_cell_style_right], - 'lines': - [1, 0, - _render("l['amount_currency'] and 'number' or 'text'"), - _render("l['amount_currency'] or None"), - None, self.aml_cell_style_decimal], - 'totals': [1, 0, 'text', None]}, - 'currency_name': { - 'header': [1, 6, 'text', _render("_('Curr.')"), None, - self.rh_cell_style_center], - 'lines': [1, 0, 'text', _render("l['currency_name']"), None, - self.aml_cell_style_center], - 'totals': [1, 0, 'text', None]}, - 'docname': { - 'header': [1, 35, 'text', _render("_('Document')")], - 'lines': [1, 0, 'text', _render("l['docname']")], - 'totals': [1, 0, 'text', None]}, - 'move_ref': { - 'header': [1, 25, 'text', _render("_('Entry Reference')")], - 'lines': [1, 0, 'text', _render("l['move_ref']")], - 'totals': [1, 0, 'text', None]}, - 'move_id': { - 'header': [1, 10, 'text', _render("_('Entry Id')")], - 'lines': [1, 0, 'text', _render("str(l['move_id'])")], - 'totals': [1, 0, 'text', None]}, - } - - # XLS Template VAT Summary - self.col_specs_vat_summary_template = { - 'tax_case_name': { - 'header': [1, 45, 'text', _render("_('Description')")], - 'tax_totals': [1, 0, 'text', _render("t.name")]}, - 'tax_code': { - 'header': [1, 6, 'text', _render("_('Case')")], - 'tax_totals': [1, 0, 'text', _render("t.code")]}, - 'tax_amount': { - 'header': [1, 18, 'text', _render("_('Amount')"), None, - self.rh_cell_style_right], - 'tax_totals': [1, 0, 'number', _render("sum_vat(o,t)"), None, - self.aml_cell_style_decimal]}, - } - - def _journal_title(self, o, ws, _p, row_pos, _xs): - cell_style = xlwt.easyxf(_xs['xls_title']) - report_name = (10 * ' ').join([ - _p.company.name, - _p.title(o)[0], - _p.title(o)[1], - _p._("Journal Overview") + ' - ' + _p.company.currency_id.name, - ]) - c_specs = [ - ('report_name', 1, 0, 'text', report_name), - ] - row_data = self.xls_row_template(c_specs, [x[0] for x in c_specs]) - row_pos = self.xls_write_row( - ws, row_pos, row_data, row_style=cell_style) - return row_pos + 1 - - def _journal_lines(self, o, ws, _p, row_pos, _xs): - - wanted_list = self.wanted_list - debit_pos = self.debit_pos - credit_pos = self.credit_pos - - # Column headers - c_specs = map(lambda x: self.render( - x, self.col_specs_lines_template, 'header', - render_space={'_': _p._}), wanted_list) - row_data = self.xls_row_template(c_specs, [x[0] for x in c_specs]) - row_pos = self.xls_write_row( - ws, row_pos, row_data, row_style=self.rh_cell_style, - set_column_size=True) - ws.set_horz_split_pos(row_pos) - - # account move lines - aml_start_pos = row_pos - aml_cnt = len(_p.lines(o)) - cnt = 0 - for l in _p.lines(o): - cnt += 1 - debit_cell = rowcol_to_cell(row_pos, debit_pos) - credit_cell = rowcol_to_cell(row_pos, credit_pos) - bal_formula = debit_cell + '-' + credit_cell - _logger.debug('dummy call - %s', bal_formula) - c_specs = map( - lambda x: self.render(x, self.col_specs_lines_template, - 'lines'), wanted_list) - row_data = self.xls_row_template(c_specs, [x[0] for x in c_specs]) - row_pos = self.xls_write_row( - ws, row_pos, row_data, row_style=self.aml_cell_style) - if l['draw_line'] and cnt != aml_cnt: - row_pos += 1 - - # Totals - debit_start = rowcol_to_cell(aml_start_pos, debit_pos) - debit_stop = rowcol_to_cell(row_pos - 1, debit_pos) - debit_formula = 'SUM(%s:%s)' % (debit_start, debit_stop) - _logger.debug('dummy call - %s', debit_formula) - credit_start = rowcol_to_cell(aml_start_pos, credit_pos) - credit_stop = rowcol_to_cell(row_pos - 1, credit_pos) - credit_formula = 'SUM(%s:%s)' % (credit_start, credit_stop) - _logger.debug('dummy call - %s', credit_formula) - debit_cell = rowcol_to_cell(row_pos, debit_pos) - credit_cell = rowcol_to_cell(row_pos, credit_pos) - bal_formula = debit_cell + '-' + credit_cell - c_specs = map(lambda x: self.render( - x, self.col_specs_lines_template, 'totals'), wanted_list) - row_data = self.xls_row_template(c_specs, [x[0] for x in c_specs]) - row_pos = self.xls_write_row( - ws, row_pos, row_data, row_style=self.rt_cell_style_right) - return row_pos + 1 - - def _journal_vat_summary(self, o, ws, _p, row_pos, _xs): - - if not _p.tax_codes(o): - return row_pos - - title_cell_style = xlwt.easyxf(_xs['bold']) - c_specs = [('summary_title', 1, 0, 'text', _p._("VAT Declaration"))] - row_data = self.xls_row_template(c_specs, [x[0] for x in c_specs]) - row_pos = self.xls_write_row( - ws, row_pos, row_data, row_style=title_cell_style) + 1 - - wanted_list = self.wanted_list - vat_summary_wanted_list = ['tax_case_name', 'tax_code', 'tax_amount'] - - # calculate col_span - cols_number = len(wanted_list) - vat_summary_cols_number = len(vat_summary_wanted_list) - if vat_summary_cols_number > cols_number: - raise orm.except_orm( - _('Programming Error!'), - _("vat_summary_cols_number should be < cols_number !")) - index = 0 - for i in range(vat_summary_cols_number): - col = vat_summary_wanted_list[i] - col_size = self.col_specs_lines_template[ - wanted_list[index]]['header'][1] - templ_col_size = self.col_specs_vat_summary_template[ - col]['header'][1] - # _logger.warn("col=%s, col_size=%s, templ_col_size=%s", - # col, col_size, templ_col_size) - col_span = 1 - if templ_col_size > col_size: - new_size = col_size - while templ_col_size > new_size: - col_span += 1 - index += 1 - new_size += self.col_specs_lines_template[ - wanted_list[index]]['header'][1] - self.col_specs_vat_summary_template[col]['header'][0] = col_span - self.col_specs_vat_summary_template[ - col]['tax_totals'][0] = col_span - index += 1 - - c_specs = map(lambda x: self.render( - x, self.col_specs_vat_summary_template, 'header'), - vat_summary_wanted_list) - row_data = self.xls_row_template(c_specs, [x[0] for x in c_specs]) - row_pos = self.xls_write_row( - ws, row_pos, row_data, row_style=self.rh_cell_style) - - for t in _p.tax_codes(o): - c_specs = map(lambda x: self.render( - x, self.col_specs_vat_summary_template, 'tax_totals'), - vat_summary_wanted_list) - row_data = self.xls_row_template(c_specs, [x[0] for x in c_specs]) - row_pos = self.xls_write_row( - ws, row_pos, row_data, row_style=self.aml_cell_style) - - return row_pos - - def generate_xls_report(self, _p, _xs, data, objects, wb): - - wanted_list = _p.wanted_list - if _p.display_currency: - wanted_list += ['amount_currency', 'currency_name'] - self.wanted_list = wanted_list - self.col_specs_lines_template.update(_p.template_changes) - - self.debit_pos = 'debit' in wanted_list and wanted_list.index('debit') - self.credit_pos = 'credit' in wanted_list and wanted_list.index( - 'credit') - if not (self.credit_pos and self.debit_pos) and 'balance' \ - in wanted_list: - raise orm.except_orm(_('Customisation Error!'), - _("The 'Balance' field is a calculated XLS \ - field requiring the presence of the \ - 'Debit' and 'Credit' fields !")) - - for o in objects: - - sheet_name = ' - '.join([o[1].code, o[0].code] - )[:31].replace('/', '-') - sheet_name = sheet_name[:31].replace('/', '-') - ws = wb.add_sheet(sheet_name) - ws.panes_frozen = True - ws.remove_splits = True - ws.portrait = 0 # Landscape - ws.fit_width_to_pages = 1 - row_pos = 0 - - # set print header/footer - ws.header_str = self.xls_headers['standard'] - ws.footer_str = self.xls_footers['standard'] - - # Data - row_pos = self._journal_title(o, ws, _p, row_pos, _xs) - row_pos = self._journal_lines(o, ws, _p, row_pos, _xs) - row_pos = self._journal_vat_summary(o, ws, _p, row_pos, _xs) - -account_journal_xls('report.nov.account.journal.xls', 'account.journal.period', - parser=account_journal_xls_parser) diff --git a/account_journal_report_xls/static/description/icon.png b/account_journal_report_xls/static/description/icon.png deleted file mode 100644 index 117bce095a5e7697e3a505b23d56278de11cd00a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22273 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 gEORYK15x^a0a$ - - - - - - - spain_provinces - - - - spain - geography - - - - - sherrera - - - - - sherrera - - - - - sherrera - - - - image/svg+xml - - - en - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/account_journal_report_xls/tests/export_csv_journal_by_fiscal_year.yml b/account_journal_report_xls/tests/export_csv_journal_by_fiscal_year.yml deleted file mode 100644 index 0275c402..00000000 --- a/account_journal_report_xls/tests/export_csv_journal_by_fiscal_year.yml +++ /dev/null @@ -1,83 +0,0 @@ -- - In order to test the Excel General Ledger webkit wizard I will print report on all the journals -- - !python {model: account.account}: | - ctx = {} - data_dict = {'chart_account_id': ref('account.chart0'), - 'journal_ids': self.pool['account.journal'].search(cr, uid, []), - } - ctx.update({'model': 'account.account', - 'active_ids': [ref('account.chart0')], - 'active_id': ref('account.chart0')}) - from openerp.tools import test_reports - test_reports.try_report_action( - cr, uid, - 'account_journal_report_xls.action_print_journal_by_fiscalyear_xls', - wiz_data=data_dict, - context=ctx, - wiz_buttons='xls_export', - our_module='account_journal_report_xls') - -- - In order to test the Excel General Ledger webkit wizard I will print report with entries sorted by date -- - !python {model: account.account}: | - ctx = {} - data_dict = {'chart_account_id': ref('account.chart0'), - 'journal_ids': self.pool['account.journal'].search(cr, uid, []), - 'sort_selection': 'l.date', - } - ctx.update({'model': 'account.account', - 'active_ids': [ref('account.chart0')], - 'active_id': ref('account.chart0')}) - from openerp.tools import test_reports - test_reports.try_report_action( - cr, uid, - 'account_journal_report_xls.action_print_journal_by_fiscalyear_xls', - wiz_data=data_dict, - context=ctx, - wiz_buttons='xls_export', - our_module='account_journal_report_xls') - -- - In order to test the Excel General Ledger webkit wizard I will print report without grouped entries -- - !python {model: account.account}: | - ctx = {} - data_dict = {'chart_account_id': ref('account.chart0'), - 'journal_ids': self.pool['account.journal'].search(cr, uid, []), - 'group_entries': False, - } - ctx.update({'model': 'account.account', - 'active_ids': [ref('account.chart0')], - 'active_id': ref('account.chart0')}) - from openerp.tools import test_reports - test_reports.try_report_action( - cr, uid, - 'account_journal_report_xls.action_print_journal_by_fiscalyear_xls', - wiz_data=data_dict, - context=ctx, - wiz_buttons='xls_export', - our_module='account_journal_report_xls') - -- - In order to test the Excel General Ledger webkit wizard I will print report with currency -- - !python {model: account.account}: | - ctx = {} - data_dict = {'chart_account_id': ref('account.chart0'), - 'journal_ids': self.pool['account.journal'].search(cr, uid, []), - 'amount_currency': False, - } - ctx.update({'model': 'account.account', - 'active_ids': [ref('account.chart0')], - 'active_id': ref('account.chart0')}) - from openerp.tools import test_reports - test_reports.try_report_action( - cr, uid, - 'account_journal_report_xls.action_print_journal_by_fiscalyear_xls', - wiz_data=data_dict, - context=ctx, - wiz_buttons='xls_export', - our_module='account_journal_report_xls') - diff --git a/account_journal_report_xls/tests/export_csv_journal_by_period.yml b/account_journal_report_xls/tests/export_csv_journal_by_period.yml deleted file mode 100644 index bc2e0f07..00000000 --- a/account_journal_report_xls/tests/export_csv_journal_by_period.yml +++ /dev/null @@ -1,107 +0,0 @@ -- - In order to test the Excel General Ledger webkit wizard I will print report on all the journals -- - !python {model: account.account}: | - ctx = {} - fiscalyear_id = self.pool['account.fiscalyear'].search(cr, uid, [])[0] - wizard = self.pool['account.print.journal.xls'] - period_ids = wizard.fy_period_ids(cr, uid, fiscalyear_id) - data_dict = {'chart_account_id': ref('account.chart0'), - 'journal_ids': self.pool['account.journal'].search(cr, uid, []), - 'fiscalyear_id': fiscalyear_id, - 'period_from': period_ids[0], - 'period_to': period_ids[-1], - } - ctx.update({'model': 'account.account', - 'active_ids': [ref('account.chart0')], - 'active_id': ref('account.chart0')}) - from openerp.tools import test_reports - test_reports.try_report_action( - cr, uid, - 'account_journal_report_xls.action_print_journal_by_period_xls', - wiz_data=data_dict, - context=ctx, - wiz_buttons='xls_export', - our_module='account_journal_report_xls') - -- - In order to test the Excel General Ledger webkit wizard I will print report with entries sorted by date -- - !python {model: account.account}: | - ctx = {} - fiscalyear_id = self.pool['account.fiscalyear'].search(cr, uid, [])[0] - wizard = self.pool['account.print.journal.xls'] - period_ids = wizard.fy_period_ids(cr, uid, fiscalyear_id) - data_dict = {'chart_account_id': ref('account.chart0'), - 'journal_ids': self.pool['account.journal'].search(cr, uid, []), - 'sort_selection': 'l.date', - 'fiscalyear_id': fiscalyear_id, - 'period_from': period_ids[0], - 'period_to': period_ids[-1], - } - ctx.update({'model': 'account.account', - 'active_ids': [ref('account.chart0')], - 'active_id': ref('account.chart0')}) - from openerp.tools import test_reports - test_reports.try_report_action( - cr, uid, - 'account_journal_report_xls.action_print_journal_by_period_xls', - wiz_data=data_dict, - context=ctx, - wiz_buttons='xls_export', - our_module='account_journal_report_xls') - -- - In order to test the Excel General Ledger webkit wizard I will print report without grouped entries -- - !python {model: account.account}: | - ctx = {} - fiscalyear_id = self.pool['account.fiscalyear'].search(cr, uid, [])[0] - wizard = self.pool['account.print.journal.xls'] - period_ids = wizard.fy_period_ids(cr, uid, fiscalyear_id) - data_dict = {'chart_account_id': ref('account.chart0'), - 'journal_ids': self.pool['account.journal'].search(cr, uid, []), - 'group_entries': False, - 'fiscalyear_id': fiscalyear_id, - 'period_from': period_ids[0], - 'period_to': period_ids[-1], - } - ctx.update({'model': 'account.account', - 'active_ids': [ref('account.chart0')], - 'active_id': ref('account.chart0')}) - from openerp.tools import test_reports - test_reports.try_report_action( - cr, uid, - 'account_journal_report_xls.action_print_journal_by_period_xls', - wiz_data=data_dict, - context=ctx, - wiz_buttons='xls_export', - our_module='account_journal_report_xls') - -- - In order to test the Excel General Ledger webkit wizard I will print report with currency -- - !python {model: account.account}: | - ctx = {} - fiscalyear_id = self.pool['account.fiscalyear'].search(cr, uid, [])[0] - wizard = self.pool['account.print.journal.xls'] - period_ids = wizard.fy_period_ids(cr, uid, fiscalyear_id) - data_dict = {'chart_account_id': ref('account.chart0'), - 'journal_ids': self.pool['account.journal'].search(cr, uid, []), - 'amount_currency': False, - 'fiscalyear_id': fiscalyear_id, - 'period_from': period_ids[0], - 'period_to': period_ids[-1], - } - ctx.update({'model': 'account.account', - 'active_ids': [ref('account.chart0')], - 'active_id': ref('account.chart0')}) - from openerp.tools import test_reports - test_reports.try_report_action( - cr, uid, - 'account_journal_report_xls.action_print_journal_by_period_xls', - wiz_data=data_dict, - context=ctx, - wiz_buttons='xls_export', - our_module='account_journal_report_xls') - diff --git a/account_journal_report_xls/tests/print_journal_by_fiscal_year.yml b/account_journal_report_xls/tests/print_journal_by_fiscal_year.yml deleted file mode 100644 index 27d6826f..00000000 --- a/account_journal_report_xls/tests/print_journal_by_fiscal_year.yml +++ /dev/null @@ -1,83 +0,0 @@ -- - In order to test the Excel General Ledger webkit wizard I will print report on all the journals -- - !python {model: account.account}: | - ctx = {} - data_dict = {'chart_account_id': ref('account.chart0'), - 'journal_ids': self.pool['account.journal'].search(cr, uid, []), - } - ctx.update({'model': 'account.account', - 'active_ids': [ref('account.chart0')], - 'active_id': ref('account.chart0')}) - from openerp.tools import test_reports - test_reports.try_report_action( - cr, uid, - 'account_journal_report_xls.action_print_journal_by_fiscalyear_xls', - wiz_data=data_dict, - context=ctx, - wiz_buttons='print_report', - our_module='account_journal_report_xls') - -- - In order to test the Excel General Ledger webkit wizard I will print report with entries sorted by date -- - !python {model: account.account}: | - ctx = {} - data_dict = {'chart_account_id': ref('account.chart0'), - 'journal_ids': self.pool['account.journal'].search(cr, uid, []), - 'sort_selection': 'l.date', - } - ctx.update({'model': 'account.account', - 'active_ids': [ref('account.chart0')], - 'active_id': ref('account.chart0')}) - from openerp.tools import test_reports - test_reports.try_report_action( - cr, uid, - 'account_journal_report_xls.action_print_journal_by_fiscalyear_xls', - wiz_data=data_dict, - context=ctx, - wiz_buttons='print_report', - our_module='account_journal_report_xls') - -- - In order to test the Excel General Ledger webkit wizard I will print report without grouped entries -- - !python {model: account.account}: | - ctx = {} - data_dict = {'chart_account_id': ref('account.chart0'), - 'journal_ids': self.pool['account.journal'].search(cr, uid, []), - 'group_entries': False, - } - ctx.update({'model': 'account.account', - 'active_ids': [ref('account.chart0')], - 'active_id': ref('account.chart0')}) - from openerp.tools import test_reports - test_reports.try_report_action( - cr, uid, - 'account_journal_report_xls.action_print_journal_by_fiscalyear_xls', - wiz_data=data_dict, - context=ctx, - wiz_buttons='print_report', - our_module='account_journal_report_xls') - -- - In order to test the Excel General Ledger webkit wizard I will print report with currency -- - !python {model: account.account}: | - ctx = {} - data_dict = {'chart_account_id': ref('account.chart0'), - 'journal_ids': self.pool['account.journal'].search(cr, uid, []), - 'amount_currency': False, - } - ctx.update({'model': 'account.account', - 'active_ids': [ref('account.chart0')], - 'active_id': ref('account.chart0')}) - from openerp.tools import test_reports - test_reports.try_report_action( - cr, uid, - 'account_journal_report_xls.action_print_journal_by_fiscalyear_xls', - wiz_data=data_dict, - context=ctx, - wiz_buttons='print_report', - our_module='account_journal_report_xls') - diff --git a/account_journal_report_xls/tests/print_journal_by_period.yml b/account_journal_report_xls/tests/print_journal_by_period.yml deleted file mode 100644 index eb36060c..00000000 --- a/account_journal_report_xls/tests/print_journal_by_period.yml +++ /dev/null @@ -1,107 +0,0 @@ -- - In order to test the Excel General Ledger webkit wizard I will print report on all the journals -- - !python {model: account.account}: | - ctx = {} - fiscalyear_id = self.pool['account.fiscalyear'].search(cr, uid, [])[0] - wizard = self.pool['account.print.journal.xls'] - period_ids = wizard.fy_period_ids(cr, uid, fiscalyear_id) - data_dict = {'chart_account_id': ref('account.chart0'), - 'journal_ids': self.pool['account.journal'].search(cr, uid, []), - 'fiscalyear_id': fiscalyear_id, - 'period_from': period_ids[0], - 'period_to': period_ids[-1], - } - ctx.update({'model': 'account.account', - 'active_ids': [ref('account.chart0')], - 'active_id': ref('account.chart0')}) - from openerp.tools import test_reports - test_reports.try_report_action( - cr, uid, - 'account_journal_report_xls.action_print_journal_by_period_xls', - wiz_data=data_dict, - context=ctx, - wiz_buttons='print_report', - our_module='account_journal_report_xls') - -- - In order to test the Excel General Ledger webkit wizard I will print report with entries sorted by date -- - !python {model: account.account}: | - ctx = {} - fiscalyear_id = self.pool['account.fiscalyear'].search(cr, uid, [])[0] - wizard = self.pool['account.print.journal.xls'] - period_ids = wizard.fy_period_ids(cr, uid, fiscalyear_id) - data_dict = {'chart_account_id': ref('account.chart0'), - 'journal_ids': self.pool['account.journal'].search(cr, uid, []), - 'sort_selection': 'l.date', - 'fiscalyear_id': fiscalyear_id, - 'period_from': period_ids[0], - 'period_to': period_ids[-1], - } - ctx.update({'model': 'account.account', - 'active_ids': [ref('account.chart0')], - 'active_id': ref('account.chart0')}) - from openerp.tools import test_reports - test_reports.try_report_action( - cr, uid, - 'account_journal_report_xls.action_print_journal_by_period_xls', - wiz_data=data_dict, - context=ctx, - wiz_buttons='print_report', - our_module='account_journal_report_xls') - -- - In order to test the Excel General Ledger webkit wizard I will print report without grouped entries -- - !python {model: account.account}: | - ctx = {} - fiscalyear_id = self.pool['account.fiscalyear'].search(cr, uid, [])[0] - wizard = self.pool['account.print.journal.xls'] - period_ids = wizard.fy_period_ids(cr, uid, fiscalyear_id) - data_dict = {'chart_account_id': ref('account.chart0'), - 'journal_ids': self.pool['account.journal'].search(cr, uid, []), - 'group_entries': False, - 'fiscalyear_id': fiscalyear_id, - 'period_from': period_ids[0], - 'period_to': period_ids[-1], - } - ctx.update({'model': 'account.account', - 'active_ids': [ref('account.chart0')], - 'active_id': ref('account.chart0')}) - from openerp.tools import test_reports - test_reports.try_report_action( - cr, uid, - 'account_journal_report_xls.action_print_journal_by_period_xls', - wiz_data=data_dict, - context=ctx, - wiz_buttons='print_report', - our_module='account_journal_report_xls') - -- - In order to test the Excel General Ledger webkit wizard I will print report with currency -- - !python {model: account.account}: | - ctx = {} - fiscalyear_id = self.pool['account.fiscalyear'].search(cr, uid, [])[0] - wizard = self.pool['account.print.journal.xls'] - period_ids = wizard.fy_period_ids(cr, uid, fiscalyear_id) - data_dict = {'chart_account_id': ref('account.chart0'), - 'journal_ids': self.pool['account.journal'].search(cr, uid, []), - 'amount_currency': False, - 'fiscalyear_id': fiscalyear_id, - 'period_from': period_ids[0], - 'period_to': period_ids[-1], - } - ctx.update({'model': 'account.account', - 'active_ids': [ref('account.chart0')], - 'active_id': ref('account.chart0')}) - from openerp.tools import test_reports - test_reports.try_report_action( - cr, uid, - 'account_journal_report_xls.action_print_journal_by_period_xls', - wiz_data=data_dict, - context=ctx, - wiz_buttons='print_report', - our_module='account_journal_report_xls') - diff --git a/account_journal_report_xls/wizard/__init__.py b/account_journal_report_xls/wizard/__init__.py deleted file mode 100644 index 406a7a8f..00000000 --- a/account_journal_report_xls/wizard/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# -# Copyright (c) 2014 Noviat nv/sa (www.noviat.com). All rights reserved. -# -# 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 . -# -############################################################################## - -from . import print_journal_wizard diff --git a/account_journal_report_xls/wizard/print_journal_wizard.py b/account_journal_report_xls/wizard/print_journal_wizard.py deleted file mode 100644 index cc2ab4a2..00000000 --- a/account_journal_report_xls/wizard/print_journal_wizard.py +++ /dev/null @@ -1,199 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# -# Copyright (c) 2014 Noviat nv/sa (www.noviat.com). All rights reserved. -# -# 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 . -# -############################################################################## - -from openerp.tools.translate import _ -from openerp.osv import orm, fields -from openerp.addons.account.wizard.account_report_common_journal \ - import account_common_journal_report -import logging -_logger = logging.getLogger(__name__) - - -class account_print_journal_xls(orm.TransientModel): - _inherit = 'account.print.journal' - _name = 'account.print.journal.xls' - _description = 'Print/Export Journal' - _columns = { - 'journal_ids': fields.many2many( - 'account.journal', - 'account_print_journal_xls_journal_rel', - 'journal_xls_id', - 'journal_id', - string='Journals', - required=True), - 'group_entries': fields.boolean( - 'Group Entries', - help="Group entries with same General Account & Tax Code."), - } - _defaults = { - 'group_entries': True, - } - - def fields_get(self, cr, uid, fields=None, context=None): - res = super(account_print_journal_xls, self).fields_get( - cr, uid, fields, context) - if context.get('print_by') == 'fiscalyear': - if 'fiscalyear_id' in res: - res['fiscalyear_id']['required'] = True - if 'period_from' in res: - res['period_from']['readonly'] = True - if 'period_to' in res: - res['period_to']['readonly'] = True - else: - if 'period_from' in res: - res['period_from']['required'] = True - if 'period_to' in res: - res['period_to']['required'] = True - return res - - def fy_period_ids(self, cr, uid, fiscalyear_id): - """ returns all periods from a fiscalyear sorted by date """ - fy_period_ids = [] - cr.execute(''' - SELECT id, coalesce(special, False) AS special - FROM account_period - WHERE fiscalyear_id=%s ORDER BY date_start, special DESC''', - (fiscalyear_id,)) - res = cr.fetchall() - if res: - fy_period_ids = [x[0] for x in res] - return fy_period_ids - - def onchange_fiscalyear_id(self, cr, uid, ids, fiscalyear_id=False, - context=None): - res = {'value': {}} - if context.get('print_by') == 'fiscalyear': - # get period_from/to with opening/close periods - fy_period_ids = self.fy_period_ids(cr, uid, fiscalyear_id) - if fy_period_ids: - res['value']['period_from'] = fy_period_ids[0] - res['value']['period_to'] = fy_period_ids[-1] - return res - - def fields_view_get(self, cr, uid, view_id=None, view_type='form', - context=None, toolbar=False, submenu=False): - """ skip account.common.journal.report,fields_view_get - (adds domain filter on journal type) """ - return super(account_common_journal_report, self).\ - fields_view_get(cr, uid, view_id, view_type, context, toolbar, - submenu) - - def xls_export(self, cr, uid, ids, context=None): - return self.print_report(cr, uid, ids, context=context) - - def print_report(self, cr, uid, ids, context=None): - if context is None: - context = {} - move_obj = self.pool.get('account.move') - print_by = context.get('print_by') - wiz_form = self.browse(cr, uid, ids)[0] - fiscalyear_id = wiz_form.fiscalyear_id.id - company_id = wiz_form.company_id.id - - if print_by == 'fiscalyear': - wiz_period_ids = self.fy_period_ids(cr, uid, fiscalyear_id) - else: - period_from = wiz_form.period_from - period_to = wiz_form.period_to - cr.execute(""" - SELECT id, coalesce(special, False) AS special - FROM account_period ap - WHERE ap.date_start>=%s AND ap.date_stop<=%s AND company_id=%s - ORDER BY date_start, special DESC""", - (period_from.date_start, - period_to.date_stop, - company_id)) - wiz_period_ids = map(lambda x: x[0], cr.fetchall()) - wiz_journal_ids = [j.id for j in wiz_form.journal_ids] - - # sort journals - cr.execute('SELECT id FROM account_journal ' - 'WHERE id IN %s ORDER BY type DESC', - (tuple(wiz_journal_ids),)) - wiz_journal_ids = map(lambda x: x[0], cr.fetchall()) - - datas = { - 'model': 'account.journal', - 'print_by': print_by, - 'sort_selection': wiz_form.sort_selection, - 'target_move': wiz_form.target_move, - 'display_currency': wiz_form.amount_currency, - 'group_entries': wiz_form.group_entries, - } - - if wiz_form.target_move == 'posted': - move_states = ['posted'] - else: - move_states = ['draft', 'posted'] - - if print_by == 'fiscalyear': - journal_fy_ids = [] - for journal_id in wiz_journal_ids: - aml_ids = move_obj.search(cr, uid, - [('journal_id', '=', journal_id), - ('period_id', 'in', wiz_period_ids), - ('state', 'in', move_states)], - limit=1) - if aml_ids: - journal_fy_ids.append((journal_id, fiscalyear_id)) - if not journal_fy_ids: - raise orm.except_orm( - _('No Data Available'), - _('No records found for your selection!')) - datas.update({ - 'ids': [x[0] for x in journal_fy_ids], - 'journal_fy_ids': journal_fy_ids, - }) - else: - # perform account.move.line query in stead of - # 'account.journal.period' since this table is not always reliable - journal_period_ids = [] - for journal_id in wiz_journal_ids: - period_ids = [] - for period_id in wiz_period_ids: - aml_ids = move_obj.search(cr, uid, - [('journal_id', '=', journal_id), - ('period_id', '=', period_id), - ('state', 'in', move_states)], - limit=1) - if aml_ids: - period_ids.append(period_id) - if period_ids: - journal_period_ids.append((journal_id, period_ids)) - if not journal_period_ids: - raise orm.except_orm( - _('No Data Available'), - _('No records found for your selection!')) - datas.update({ - 'ids': [x[0] for x in journal_period_ids], - 'journal_period_ids': journal_period_ids, - }) - - if context.get('xls_export'): - return {'type': 'ir.actions.report.xml', - 'report_name': 'nov.account.journal.xls', - 'datas': datas} - else: - return { - 'type': 'ir.actions.report.xml', - 'report_name': 'nov.account.journal.print', - 'datas': datas} diff --git a/account_journal_report_xls/wizard/print_journal_wizard.xml b/account_journal_report_xls/wizard/print_journal_wizard.xml deleted file mode 100644 index 6c3496e0..00000000 --- a/account_journal_report_xls/wizard/print_journal_wizard.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - Print/Export Journals - account.print.journal.xls - - - - - onchange_fiscalyear_id(fiscalyear_id, context) - - - - - - - - - - - - - - - - - - - - - - - - Journal by Period - ir.actions.act_window - account.print.journal.xls - form - form - {'print_by':'period'} - - new - - - - - Journal by Fiscal Year - ir.actions.act_window - account.print.journal.xls - form - form - {'print_by':'fiscalyear'} - - new - - - - - 3 - - - - \ No newline at end of file