diff --git a/.travis.yml b/.travis.yml index 6ec9ff64..9f948ef8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,14 @@ +sudo: false +cache: pip + addons: apt: - packages: + sources: + - pov-wkhtmltopdf + packages: - expect-dev # provides unbuffer utility - python-lxml # because pip installation is slow + - wkhtmltopdf language: python @@ -10,14 +16,18 @@ python: - "2.7" env: - - VERSION="7.0" ODOO_REPO="odoo/odoo" - - VERSION="7.0" ODOO_REPO="OCA/OCB" + - VERSION="7.0" LINT_CHECK="1" + - VERSION="7.0" ODOO_REPO="odoo/odoo" LINT_CHECK="0" + - VERSION="7.0" ODOO_REPO="OCA/OCB" LINT_CHECK="0" virtualenv: system_site_packages: true +before_install: + - "export DISPLAY=:99.0" + - "sh -e /etc/init.d/xvfb start" + install: - - git clone https://github.com/OCA/reporting-engine ${HOME}/reporting-engine -b ${VERSION} - git clone https://github.com/OCA/maintainer-quality-tools.git ${HOME}/maintainer-quality-tools - git clone https://github.com/OCA/webkit-tools.git ${HOME}/webkit-tools -b ${VERSION} - sudo apt-get install xfonts-75dpi @@ -27,8 +37,7 @@ install: - travis_install_nightly script: - - travis_run_flake8 - travis_run_tests after_success: - coveralls + - travis_after_tests_success diff --git a/account_chart_report/__openerp__.py b/account_chart_report/__openerp__.py index 53762867..3d3ba960 100644 --- a/account_chart_report/__openerp__.py +++ b/account_chart_report/__openerp__.py @@ -25,7 +25,7 @@ 'name': 'Print chart of accounts', 'version': '1.0', 'category': 'Reports/pdf', - 'description': """Print chart of accounts. + 'description': r"""Print chart of accounts. This module add the menu Accounting \ Charts \ Print chart of Accounts and allow to print the selected chart of accounts. diff --git a/account_financial_report_webkit/i18n/account_financial_report_webkit.pot b/account_financial_report_webkit/i18n/account_financial_report_webkit.pot index 25e9392e..f65bb7eb 100644 --- a/account_financial_report_webkit/i18n/account_financial_report_webkit.pot +++ b/account_financial_report_webkit/i18n/account_financial_report_webkit.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: OpenERP Server 7.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-10-08 11:54+0000\n" -"PO-Revision-Date: 2014-10-08 11:54+0000\n" +"POT-Creation-Date: 2015-09-11 19:21+0000\n" +"PO-Revision-Date: 2015-09-11 19:21+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -16,43 +16,42 @@ msgstr "" "Plural-Forms: \n" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:175 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:135 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:150 -msgid "% Difference" +#: view:account.aged.trial.balance.webkit:0 +#: view:open.invoices.webkit:0 +msgid "onchange_date_to(fiscalyear_id, period_to, date_to, until_date)" msgstr "" #. module: account_financial_report_webkit -#: code:_description:0 -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:104 -#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:83 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:105 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:120 -#: model:ir.model,name:account_financial_report_webkit.model_account_account -#, python-format -msgid "Account" +#: help:general.ledger.webkit,account_ids:0 +msgid "Only selected accounts will be printed. Leave empty to\n" +" print all accounts." msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:143 -msgid "Account / Partner Name" +#: field:account.common.balance.report,account_ids:0 +#: field:general.ledger.webkit,account_ids:0 +#: field:partner.balance.webkit,account_ids:0 +#: field:trial.balance.webkit,account_ids:0 +msgid "Filter on accounts" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:41 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:43 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:53 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:38 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:62 -#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:59 -msgid "Accounts Filter" +#: code:addons/account_financial_report_webkit/report/common_reports.py:493 +#, python-format +msgid "Please set a valid time filter" msgstr "" #. module: account_financial_report_webkit #: view:general.ledger.webkit:0 -#: view:partner.balance.webkit:0 -#: view:trial.balance.webkit:0 -msgid "Accounts Filters" +#: view:open.invoices.webkit:0 +#: view:partners.ledger.webkit:0 +msgid "Layout Options" +msgstr "" + +#. module: account_financial_report_webkit +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:220 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:267 +msgid "Cumulated Balance on Account" msgstr "" #. module: account_financial_report_webkit @@ -61,507 +60,405 @@ msgid "Activate Centralization" msgstr "" #. module: account_financial_report_webkit -#: view:account.aged.trial.balance.webkit:0 -#: code:addons/account_financial_report_webkit/report/aged_partner_balance.py:80 -#: code:addons/account_financial_report_webkit/report/aged_partner_balance.py:92 -#: model:ir.actions.report.xml,name:account_financial_report_webkit.account_report_aged_trial_blanance_webkit -#, python-format -msgid "Aged Partner Balance" +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:161 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:168 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:121 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:128 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:136 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:143 +msgid "Balance %s" msgstr "" #. module: account_financial_report_webkit -#: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_aged_trial_balance_menu_webkit -msgid "Aged partner balance" +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:33 +msgid "Journal Filter" msgstr "" #. module: account_financial_report_webkit -#: code:_description:0 -#: model:ir.model,name:account_financial_report_webkit.model_account_aged_trial_balance_webkit -#, python-format -msgid "Aged partner balanced" +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:96 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:103 +msgid "Periods Filter:" msgstr "" #. module: account_financial_report_webkit -#: selection:account.common.balance.report,display_account:0 -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:66 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:79 -#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:57 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:74 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:87 -#: selection:general.ledger.webkit,display_account:0 -#: selection:partner.balance.webkit,display_account:0 -#: selection:print.journal.webkit,display_account:0 -#: selection:trial.balance.webkit,display_account:0 -msgid "All" +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:221 +#, python-format +msgid "No header defined for this Webkit report!" msgstr "" #. module: account_financial_report_webkit -#: selection:account.aged.trial.balance.webkit,target_move:0 -#: selection:account.common.balance.report,target_move:0 -#: code:addons/account_financial_report_webkit/report/common_reports.py:94 -#: selection:general.ledger.webkit,target_move:0 -#: selection:open.invoices.webkit,target_move:0 -#: selection:partner.balance.webkit,target_move:0 -#: selection:partners.ledger.webkit,target_move:0 -#: selection:print.journal.webkit,target_move:0 -#: selection:trial.balance.webkit,target_move:0 -#, python-format -msgid "All Entries" +#: help:account.move.line,last_rec_date:0 +msgid "the date of the last reconciliation (full or partial) account move line" msgstr "" #. module: account_financial_report_webkit -#: selection:account.aged.trial.balance.webkit,target_move:0 -#: selection:account.common.balance.report,target_move:0 -#: code:addons/account_financial_report_webkit/report/common_reports.py:92 -#: selection:general.ledger.webkit,target_move:0 -#: selection:open.invoices.webkit,target_move:0 -#: selection:partner.balance.webkit,target_move:0 -#: selection:partners.ledger.webkit,target_move:0 -#: selection:print.journal.webkit,target_move:0 -#: selection:trial.balance.webkit,target_move:0 -#, python-format -msgid "All Posted Entries" +#: model:ir.actions.report.xml,name:account_financial_report_webkit.account_report_trial_balance_webkit +msgid "Trial Balance Webkit" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/common_reports.py:72 -#, python-format -msgid "All accounts" +#: field:account.aged.trial.balance.webkit,company_id:0 +#: field:account.common.balance.report,company_id:0 +#: field:general.ledger.webkit,company_id:0 +#: field:open.invoices.webkit,company_id:0 +#: field:partner.balance.webkit,company_id:0 +#: field:partners.ledger.webkit,company_id:0 +#: field:print.journal.webkit,company_id:0 +#: field:trial.balance.webkit,company_id:0 +msgid "Company" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:159 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:119 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:134 -msgid "Balance" +#: selection:account.aged.trial.balance.webkit,aging_method:0 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:71 +msgid "Invoice Date" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:161 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:168 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:121 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:128 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:136 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:143 -msgid "Balance %s" +#: view:account.aged.trial.balance.webkit:0 +msgid "This report list partner open balances and indicate when payment is (or was) supposed to be completed" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:170 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:130 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:145 -msgid "Balance C%s" +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:222 +#, python-format +msgid "Please set a header in company settings." msgstr "" #. module: account_financial_report_webkit -#: field:account.account,centralized:0 -msgid "Centralized" +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:143 +msgid "Account / Partner Name" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/general_ledger.py:166 +#: field:account.aged.trial.balance.webkit,journal_ids:0 +#: field:account.common.balance.report,journal_ids:0 +#: code:addons/account_financial_report_webkit/report/print_journal.py:58 +#: field:general.ledger.webkit,journal_ids:0 +#: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_print_journal_menu_webkit +#: model:ir.actions.report.xml,name:account_financial_report_webkit.account_report_print_journal_webkit +#: field:open.invoices.webkit,journal_ids:0 +#: field:partner.balance.webkit,journal_ids:0 +#: field:partners.ledger.webkit,journal_ids:0 +#: view:print.journal.webkit:0 +#: field:print.journal.webkit,journal_ids:0 +#: field:trial.balance.webkit,journal_ids:0 #, python-format -msgid "Centralized Entries" +msgid "Journals" msgstr "" #. module: account_financial_report_webkit -#: field:account.aged.trial.balance.webkit,chart_account_id:0 -#: field:account.common.balance.report,chart_account_id:0 -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:32 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:33 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:44 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:29 -#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:24 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:40 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:53 -#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:49 -#: field:general.ledger.webkit,chart_account_id:0 -#: field:open.invoices.webkit,chart_account_id:0 -#: field:partner.balance.webkit,chart_account_id:0 -#: field:partners.ledger.webkit,chart_account_id:0 -#: field:print.journal.webkit,chart_account_id:0 -#: field:trial.balance.webkit,chart_account_id:0 -msgid "Chart of Account" +#: help:account.aged.trial.balance.webkit,amount_currency:0 +#: help:general.ledger.webkit,amount_currency:0 +#: help:open.invoices.webkit,amount_currency:0 +#: help:partners.ledger.webkit,amount_currency:0 +#: help:print.journal.webkit,amount_currency:0 +msgid "It adds the currency column" msgstr "" #. module: account_financial_report_webkit -#: view:account.aged.trial.balance.webkit:0 -#: view:open.invoices.webkit:0 -msgid "Clearance Analysis Options" +#: selection:account.aged.trial.balance.webkit,result_selection:0 +#: code:addons/account_financial_report_webkit/report/common_reports.py:85 +#: selection:open.invoices.webkit,result_selection:0 +#: selection:partner.balance.webkit,result_selection:0 +#: selection:partners.ledger.webkit,result_selection:0 +#, python-format +msgid "Receivable and Payable Accounts" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:42 -#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:58 -msgid "Clearance Date" +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:104 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:83 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:105 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:120 +#: model:ir.model,name:account_financial_report_webkit.model_account_account +msgid "Account" msgstr "" #. module: account_financial_report_webkit -#: field:account.aged.trial.balance.webkit,until_date:0 -#: field:open.invoices.webkit,until_date:0 -msgid "Clearance date" +#: code:addons/account_financial_report_webkit/report/trial_balance.py:47 +#, python-format +msgid "TRIAL BALANCE" msgstr "" #. module: account_financial_report_webkit -#: constraint:account.aged.trial.balance.webkit:0 -#: constraint:open.invoices.webkit:0 -msgid "Clearance date must be the very last date of the last period or later." +#: selection:account.aged.trial.balance.webkit,aging_method:0 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:85 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:69 +msgid "Due Date" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:118 -msgid "Code" +#: view:account.aged.trial.balance.webkit:0 +#: view:general.ledger.webkit:0 +#: view:open.invoices.webkit:0 +#: view:partner.balance.webkit:0 +#: view:partners.ledger.webkit:0 +#: view:trial.balance.webkit:0 +msgid "Print only" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:145 -msgid "Code / Ref" +#: model:ir.model,name:account_financial_report_webkit.model_partner_balance_webkit +msgid "Partner Balance Report" msgstr "" #. module: account_financial_report_webkit -#: code:_description:0 -#: model:ir.model,name:account_financial_report_webkit.model_account_common_balance_report +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:246 +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:257 +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:273 #, python-format -msgid "Common Balance Report" +msgid "Webkit render" msgstr "" #. module: account_financial_report_webkit -#: field:account.aged.trial.balance.webkit,company_id:0 -#: field:account.common.balance.report,company_id:0 -#: field:general.ledger.webkit,company_id:0 -#: field:open.invoices.webkit,company_id:0 -#: field:partner.balance.webkit,company_id:0 -#: field:partners.ledger.webkit,company_id:0 -#: field:print.journal.webkit,company_id:0 -#: field:trial.balance.webkit,company_id:0 -msgid "Company" +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:216 +#, python-format +msgid "Error!" msgstr "" #. module: account_financial_report_webkit -#: field:account.common.balance.report,comp0_filter:0 -#: field:account.common.balance.report,comp1_filter:0 -#: field:account.common.balance.report,comp2_filter:0 -#: field:partner.balance.webkit,comp0_filter:0 -#: field:partner.balance.webkit,comp1_filter:0 -#: field:partner.balance.webkit,comp2_filter:0 -#: field:trial.balance.webkit,comp0_filter:0 -#: field:trial.balance.webkit,comp1_filter:0 -#: field:trial.balance.webkit,comp2_filter:0 -msgid "Compare By" +#: model:ir.model,name:account_financial_report_webkit.model_trial_balance_webkit +msgid "Trial Balance Report" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:91 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:85 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:98 -#: code:addons/account_financial_report_webkit/wizard/balance_common.py:173 +#: code:addons/account_financial_report_webkit/report/partners_ledger.py:54 +#: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_partners_ledger_menu_webkit +#: view:partners.ledger.webkit:0 #, python-format -msgid "Comparison %s" +msgid "Partner Ledger" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:23 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:39 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:24 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:48 -msgid "Computed" +#: model:ir.actions.report.xml,name:account_financial_report_webkit.account_report_partners_ledger_webkit +msgid "Partner Ledger Webkit" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:112 -msgid "Counter part" +#: field:account.common.balance.report,display_account:0 +#: field:partner.balance.webkit,display_account:0 +#: field:print.journal.webkit,display_account:0 +#: field:trial.balance.webkit,display_account:0 +msgid "Display Accounts" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:116 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:154 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:119 -#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:93 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:114 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:129 -msgid "Credit" +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:207 +msgid "Unallocated" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:118 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:121 -msgid "Cumul. Bal." +#: selection:account.aged.trial.balance.webkit,result_selection:0 +#: code:addons/account_financial_report_webkit/report/common_reports.py:81 +#: selection:open.invoices.webkit,result_selection:0 +#: selection:partner.balance.webkit,result_selection:0 +#: selection:partners.ledger.webkit,result_selection:0 +#, python-format +msgid "Receivable Accounts" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:220 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:267 -msgid "Cumulated Balance on Account" +#: model:ir.actions.report.xml,name:account_financial_report_webkit.account_report_general_ledger_webkit +msgid "General Ledger Webkit" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:233 -msgid "Cumulated Balance on Partner" +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:115 +msgid "Rec." msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:123 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:126 -#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:98 -msgid "Curr." +#: help:account.aged.trial.balance.webkit,filter:0 +#: help:account.common.balance.report,filter:0 +#: help:open.invoices.webkit,filter:0 +#: help:partner.balance.webkit,filter:0 +#: help:partners.ledger.webkit,filter:0 +#: help:trial.balance.webkit,filter:0 +msgid "Filter by date: no opening balance will be displayed. (opening balance can only be computed based on period to be correct)." msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:121 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:124 -#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:96 -msgid "Curr. Balance" +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:108 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:111 +msgid "Reference" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:67 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:61 -#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:83 -msgid "Custom Filter" +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:38 +#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:39 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:50 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:35 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:30 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:59 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:56 +msgid "Periods Filter" msgstr "" #. module: account_financial_report_webkit -#: selection:account.aged.trial.balance.webkit,filter:0 -#: selection:account.common.balance.report,comp0_filter:0 -#: selection:account.common.balance.report,comp1_filter:0 -#: selection:account.common.balance.report,comp2_filter:0 -#: selection:account.common.balance.report,filter:0 -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:96 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:101 -#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:79 -#: selection:general.ledger.webkit,filter:0 -#: selection:open.invoices.webkit,filter:0 -#: selection:partner.balance.webkit,comp0_filter:0 -#: selection:partner.balance.webkit,comp1_filter:0 -#: selection:partner.balance.webkit,comp2_filter:0 -#: selection:partner.balance.webkit,filter:0 -#: selection:partners.ledger.webkit,filter:0 -#: selection:print.journal.webkit,filter:0 -#: selection:trial.balance.webkit,comp0_filter:0 -#: selection:trial.balance.webkit,comp1_filter:0 -#: selection:trial.balance.webkit,comp2_filter:0 -#: selection:trial.balance.webkit,filter:0 -msgid "Date" +#: help:account.aged.trial.balance.webkit,detailed_by_invoice:0 +msgid "Provide an aged partner balance report with invoice details" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:44 -#: code:addons/account_financial_report_webkit/wizard/balance_common.py:203 -#, python-format -msgid "Dates" +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:43 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:152 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:56 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:149 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:40 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:158 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:51 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:109 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:64 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:124 +msgid "Initial Balance" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:88 -msgid "Dates : " +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:167 +#, python-format +msgid "The command 'wkhtmltopdf' failed with error code = %s. Message: %s" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:36 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:37 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:48 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:33 -#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:28 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:57 -#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:53 -msgid "Dates Filter" +#: model:ir.model,name:account_financial_report_webkit.model_general_ledger_webkit +msgid "General Ledger Report" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:94 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:101 -msgid "Dates Filter:" +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:166 +#, python-format +msgid "Webkit error" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:114 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:152 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:117 -#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:91 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:112 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:127 -msgid "Debit" +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:49 +msgid "Displayed Accounts" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:174 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:134 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:149 -msgid "Difference" +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:106 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:109 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:87 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:109 +msgid "Partner" msgstr "" #. module: account_financial_report_webkit -#: field:account.common.balance.report,display_account:0 -#: field:partner.balance.webkit,display_account:0 -#: field:print.journal.webkit,display_account:0 -#: field:trial.balance.webkit,display_account:0 -msgid "Display Accounts" +#: help:account.aged.trial.balance.webkit,chart_account_id:0 +#: help:account.common.balance.report,chart_account_id:0 +#: help:general.ledger.webkit,chart_account_id:0 +#: help:open.invoices.webkit,chart_account_id:0 +#: help:partner.balance.webkit,chart_account_id:0 +#: help:partners.ledger.webkit,chart_account_id:0 +#: help:print.journal.webkit,chart_account_id:0 +#: help:trial.balance.webkit,chart_account_id:0 +msgid "Select Charts of Accounts" msgstr "" #. module: account_financial_report_webkit -#: field:general.ledger.webkit,display_account:0 -msgid "Display accounts" +#: field:account.aged.trial.balance.webkit,filter:0 +#: field:account.common.balance.report,filter:0 +#: field:general.ledger.webkit,filter:0 +#: field:open.invoices.webkit,filter:0 +#: field:partner.balance.webkit,filter:0 +#: field:partners.ledger.webkit,filter:0 +#: field:print.journal.webkit,filter:0 +#: field:trial.balance.webkit,filter:0 +msgid "Filter by" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:49 -msgid "Displayed Accounts" +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:123 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:126 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:98 +msgid "Curr." msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/aged_partner_balance.py:52 -#, python-format -msgid "Due" +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:110 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:113 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:89 +msgid "Label" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:85 -msgid "Due Date" +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:114 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:152 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:117 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:91 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:112 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:127 +msgid "Debit" msgstr "" #. module: account_financial_report_webkit -#: field:account.aged.trial.balance.webkit,date_to:0 -#: field:account.common.balance.report,comp0_date_to:0 -#: field:account.common.balance.report,comp1_date_to:0 -#: field:account.common.balance.report,comp2_date_to:0 -#: field:account.common.balance.report,date_to:0 -#: field:general.ledger.webkit,date_to:0 -#: field:open.invoices.webkit,date_to:0 -#: field:partner.balance.webkit,comp0_date_to:0 -#: field:partner.balance.webkit,comp1_date_to:0 -#: field:partner.balance.webkit,comp2_date_to:0 -#: field:partner.balance.webkit,date_to:0 -#: field:partners.ledger.webkit,date_to:0 -#: field:print.journal.webkit,date_to:0 -#: field:trial.balance.webkit,comp0_date_to:0 -#: field:trial.balance.webkit,comp1_date_to:0 -#: field:trial.balance.webkit,comp2_date_to:0 -#: field:trial.balance.webkit,date_to:0 -msgid "End Date" +#: view:account.aged.trial.balance.webkit:0 +#: view:general.ledger.webkit:0 +#: view:open.invoices.webkit:0 +#: view:partner.balance.webkit:0 +#: view:partners.ledger.webkit:0 +#: view:trial.balance.webkit:0 +msgid "Time Filters" msgstr "" #. module: account_financial_report_webkit -#: field:account.aged.trial.balance.webkit,period_to:0 -#: field:account.common.balance.report,comp0_period_to:0 -#: field:account.common.balance.report,comp1_period_to:0 -#: field:account.common.balance.report,comp2_period_to:0 -#: field:account.common.balance.report,period_to:0 -#: field:general.ledger.webkit,period_to:0 -#: field:open.invoices.webkit,period_to:0 -#: field:partner.balance.webkit,comp0_period_to:0 -#: field:partner.balance.webkit,comp1_period_to:0 -#: field:partner.balance.webkit,comp2_period_to:0 -#: field:partner.balance.webkit,period_to:0 -#: field:partners.ledger.webkit,period_to:0 -#: field:print.journal.webkit,period_to:0 -#: field:trial.balance.webkit,comp0_period_to:0 -#: field:trial.balance.webkit,comp1_period_to:0 -#: field:trial.balance.webkit,comp2_period_to:0 -#: field:trial.balance.webkit,period_to:0 -msgid "End Period" +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:233 +msgid "Cumulated Balance on Partner" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:100 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:105 -#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:81 -msgid "Entry" +#: help:account.common.balance.report,account_ids:0 +#: help:partner.balance.webkit,account_ids:0 +#: help:trial.balance.webkit,account_ids:0 +msgid "Only selected accounts will be printed. Leave empty to print all accounts." msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/common_reports.py:395 -#: code:addons/account_financial_report_webkit/report/open_invoices.py:136 -#: code:addons/account_financial_report_webkit/report/partners_ledger.py:119 +#: code:addons/account_financial_report_webkit/report/common_reports.py:396 #, python-format -msgid "Error" +msgid "No opening period found to compute the opening balances.\n" +"You have to configure a period on the first of January with the special flag." msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:216 -#, python-format -msgid "Error!" -msgstr "" - -#. module: account_financial_report_webkit -#: field:account.aged.trial.balance.webkit,filter:0 -#: field:account.common.balance.report,filter:0 -#: field:general.ledger.webkit,filter:0 -#: field:open.invoices.webkit,filter:0 -#: field:partner.balance.webkit,filter:0 -#: field:partners.ledger.webkit,filter:0 -#: field:print.journal.webkit,filter:0 -#: field:trial.balance.webkit,filter:0 -msgid "Filter by" +#: model:ir.actions.report.xml,name:account_financial_report_webkit.account_report_partner_balance_webkit +msgid "Partner Balance Webkit" msgstr "" #. module: account_financial_report_webkit -#: help:account.aged.trial.balance.webkit,filter:0 -#: help:account.common.balance.report,filter:0 -#: help:open.invoices.webkit,filter:0 -#: help:partner.balance.webkit,filter:0 -#: help:partners.ledger.webkit,filter:0 -#: help:trial.balance.webkit,filter:0 -msgid "Filter by date: no opening balance will be displayed. (opening balance can only be computed based on period to be correct)." +#: code:addons/account_financial_report_webkit/report/aged_partner_balance.py:54 +#, python-format +msgid "Older" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/open_invoices.py:203 -#, python-format -msgid "Filter has to be in filter date, period, or none" +#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:42 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:59 +msgid "Clearance Date" msgstr "" #. module: account_financial_report_webkit -#: field:account.common.balance.report,account_ids:0 -#: field:general.ledger.webkit,account_ids:0 -#: field:partner.balance.webkit,account_ids:0 -#: field:trial.balance.webkit,account_ids:0 -msgid "Filter on accounts" +#: view:partners.ledger.webkit:0 +msgid "This report allows you to print or generate a pdf of your partner ledger with details of all your payable/receivable account" msgstr "" #. module: account_financial_report_webkit -#: field:account.aged.trial.balance.webkit,partner_ids:0 -#: field:open.invoices.webkit,partner_ids:0 -#: field:partner.balance.webkit,partner_ids:0 -#: field:partners.ledger.webkit,partner_ids:0 -msgid "Filter on partner" +#: selection:account.common.balance.report,display_account:0 +#: selection:partner.balance.webkit,display_account:0 +#: selection:print.journal.webkit,display_account:0 +#: selection:trial.balance.webkit,display_account:0 +msgid "With balance is not equal to 0" msgstr "" #. module: account_financial_report_webkit -#: field:account.aged.trial.balance.webkit,fiscalyear_id:0 -#: selection:account.common.balance.report,comp0_filter:0 -#: field:account.common.balance.report,comp0_fiscalyear_id:0 -#: selection:account.common.balance.report,comp1_filter:0 -#: field:account.common.balance.report,comp1_fiscalyear_id:0 -#: selection:account.common.balance.report,comp2_filter:0 -#: field:account.common.balance.report,comp2_fiscalyear_id:0 -#: field:account.common.balance.report,fiscalyear_id:0 -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:33 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:34 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:45 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:30 -#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:25 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:41 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:54 -#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:50 -#: field:general.ledger.webkit,fiscalyear_id:0 -#: field:open.invoices.webkit,fiscalyear_id:0 -#: selection:partner.balance.webkit,comp0_filter:0 -#: field:partner.balance.webkit,comp0_fiscalyear_id:0 -#: selection:partner.balance.webkit,comp1_filter:0 -#: field:partner.balance.webkit,comp1_fiscalyear_id:0 -#: selection:partner.balance.webkit,comp2_filter:0 -#: field:partner.balance.webkit,comp2_fiscalyear_id:0 -#: field:partner.balance.webkit,fiscalyear_id:0 -#: field:partners.ledger.webkit,fiscalyear_id:0 -#: field:print.journal.webkit,fiscalyear_id:0 -#: selection:trial.balance.webkit,comp0_filter:0 -#: field:trial.balance.webkit,comp0_fiscalyear_id:0 -#: selection:trial.balance.webkit,comp1_filter:0 -#: field:trial.balance.webkit,comp1_fiscalyear_id:0 -#: selection:trial.balance.webkit,comp2_filter:0 -#: field:trial.balance.webkit,comp2_fiscalyear_id:0 -#: field:trial.balance.webkit,fiscalyear_id:0 -msgid "Fiscal Year" +#: view:account.aged.trial.balance.webkit:0 +#: view:general.ledger.webkit:0 +#: view:open.invoices.webkit:0 +#: view:partner.balance.webkit:0 +#: view:partners.ledger.webkit:0 +#: view:trial.balance.webkit:0 +msgid "[('fiscalyear_id', '=', fiscalyear_id), ('special', '=', False)]" msgstr "" #. module: account_financial_report_webkit @@ -571,93 +468,115 @@ msgid "Fiscal Year :" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:92 -msgid "Fiscal Year : " +#: view:account.aged.trial.balance.webkit:0 +#: code:addons/account_financial_report_webkit/report/aged_partner_balance.py:80 +#: code:addons/account_financial_report_webkit/report/aged_partner_balance.py:92 +#: model:ir.actions.report.xml,name:account_financial_report_webkit.account_report_aged_trial_blanance_webkit +#, python-format +msgid "Aged Partner Balance" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:49 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:51 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:62 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:46 -#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:40 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:57 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:70 -#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:67 -msgid "From:" +#: code:addons/account_financial_report_webkit/report/common_reports.py:482 +#, python-format +msgid "Must be in include_opening, exclude_opening" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/general_ledger.py:44 -#, python-format -msgid "GENERAL LEDGER" +#: view:account.aged.trial.balance.webkit:0 +#: view:general.ledger.webkit:0 +#: view:open.invoices.webkit:0 +#: view:partner.balance.webkit:0 +#: view:partners.ledger.webkit:0 +#: view:trial.balance.webkit:0 +msgid "True" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/general_ledger.py:52 -#: view:general.ledger.webkit:0 -#: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_general_ledger_menu_webkit -#, python-format -msgid "General Ledger" +#: field:account.aged.trial.balance.webkit,aging_method:0 +msgid "Aged from" msgstr "" #. module: account_financial_report_webkit -#: code:_description:0 -#: model:ir.model,name:account_financial_report_webkit.model_general_ledger_webkit +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:44 +#: code:addons/account_financial_report_webkit/wizard/balance_common.py:204 #, python-format -msgid "General Ledger Report" +msgid "Dates" msgstr "" #. module: account_financial_report_webkit -#: model:ir.actions.report.xml,name:account_financial_report_webkit.account_report_general_ledger_webkit -msgid "General Ledger Webkit" +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:145 +msgid "Code / Ref" msgstr "" #. module: account_financial_report_webkit -#: field:account.aged.trial.balance.webkit,group_by_currency:0 -#: field:open.invoices.webkit,group_by_currency:0 -msgid "Group Partner by currency" +#: code:addons/account_financial_report_webkit/report/trial_balance.py:56 +#: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_trial_balance_menu_webkit +#: view:trial.balance.webkit:0 +#, python-format +msgid "Trial Balance" msgstr "" #. module: account_financial_report_webkit -#: help:account.account,centralized:0 -msgid "If flagged, no details will be displayed in the General Ledger report (the webkit one only), only centralized amounts per period." +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:88 +msgid "Dates : " msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:43 -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:152 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:56 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:149 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:40 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:158 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:51 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:109 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:64 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:124 -msgid "Initial Balance" +#: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_aged_trial_balance_menu_webkit +msgid "Aged partner balance" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:101 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:95 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:108 -msgid "Initial Balance:" +#: field:account.aged.trial.balance.webkit,period_to:0 +#: field:account.common.balance.report,comp0_period_to:0 +#: field:account.common.balance.report,comp1_period_to:0 +#: field:account.common.balance.report,comp2_period_to:0 +#: field:account.common.balance.report,period_to:0 +#: field:general.ledger.webkit,period_to:0 +#: field:open.invoices.webkit,period_to:0 +#: field:partner.balance.webkit,comp0_period_to:0 +#: field:partner.balance.webkit,comp1_period_to:0 +#: field:partner.balance.webkit,comp2_period_to:0 +#: field:partner.balance.webkit,period_to:0 +#: field:partners.ledger.webkit,period_to:0 +#: field:print.journal.webkit,period_to:0 +#: field:trial.balance.webkit,comp0_period_to:0 +#: field:trial.balance.webkit,comp1_period_to:0 +#: field:trial.balance.webkit,comp2_period_to:0 +#: field:trial.balance.webkit,period_to:0 +msgid "End Period" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/common_reports.py:481 -#, python-format -msgid "Invalid query mode" +#: model:ir.model,name:account_financial_report_webkit.model_account_common_balance_report +msgid "Common Balance Report" msgstr "" #. module: account_financial_report_webkit -#: help:account.aged.trial.balance.webkit,amount_currency:0 -#: help:general.ledger.webkit,amount_currency:0 -#: help:open.invoices.webkit,amount_currency:0 -#: help:partners.ledger.webkit,amount_currency:0 -#: help:print.journal.webkit,amount_currency:0 -msgid "It adds the currency column" +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:41 +#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:43 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:53 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:38 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:62 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:60 +msgid "Accounts Filter" +msgstr "" + +#. module: account_financial_report_webkit +#: selection:account.common.balance.report,comp0_filter:0 +#: selection:account.common.balance.report,comp1_filter:0 +#: selection:account.common.balance.report,comp2_filter:0 +#: selection:account.common.balance.report,filter:0 +#: selection:partner.balance.webkit,comp0_filter:0 +#: selection:partner.balance.webkit,comp1_filter:0 +#: selection:partner.balance.webkit,comp2_filter:0 +#: selection:partner.balance.webkit,filter:0 +#: selection:trial.balance.webkit,comp0_filter:0 +#: selection:trial.balance.webkit,comp1_filter:0 +#: selection:trial.balance.webkit,comp2_filter:0 +#: selection:trial.balance.webkit,filter:0 +msgid "Opening Only" msgstr "" #. module: account_financial_report_webkit @@ -667,190 +586,244 @@ msgid "JOURNALS" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:102 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:107 -msgid "Journal" +#: model:ir.model,name:account_financial_report_webkit.model_print_journal_webkit +msgid "Journals Report" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:33 -msgid "Journal Filter" +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:94 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:101 +msgid "Dates Filter:" msgstr "" #. module: account_financial_report_webkit -#: code:_description:0 -#: model:ir.model,name:account_financial_report_webkit.model_account_move_line -#, python-format -msgid "Journal Items" +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:92 +msgid "Fiscal Year : " msgstr "" #. module: account_financial_report_webkit -#: field:account.aged.trial.balance.webkit,journal_ids:0 -#: field:account.common.balance.report,journal_ids:0 -#: code:addons/account_financial_report_webkit/report/print_journal.py:58 -#: field:general.ledger.webkit,journal_ids:0 -#: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_print_journal_menu_webkit -#: model:ir.actions.report.xml,name:account_financial_report_webkit.account_report_print_journal_webkit -#: field:open.invoices.webkit,journal_ids:0 -#: field:partner.balance.webkit,journal_ids:0 -#: field:partners.ledger.webkit,journal_ids:0 -#: view:print.journal.webkit:0 -#: field:print.journal.webkit,journal_ids:0 -#: field:trial.balance.webkit,journal_ids:0 -#, python-format -msgid "Journals" +#: selection:account.common.balance.report,display_account:0 +#: selection:partner.balance.webkit,display_account:0 +#: selection:print.journal.webkit,display_account:0 +#: selection:trial.balance.webkit,display_account:0 +msgid "With movements" msgstr "" #. module: account_financial_report_webkit -#: code:_description:0 -#: model:ir.model,name:account_financial_report_webkit.model_print_journal_webkit -#, python-format -msgid "Journals Report" +#: view:account.aged.trial.balance.webkit:0 +#: view:open.invoices.webkit:0 +msgid "onchange_period_to(fiscalyear_id, period_to, date_to, until_date)" msgstr "" #. module: account_financial_report_webkit -#: help:account.aged.trial.balance.webkit,fiscalyear_id:0 -#: help:account.common.balance.report,fiscalyear_id:0 -#: help:general.ledger.webkit,fiscalyear_id:0 -#: help:open.invoices.webkit,fiscalyear_id:0 -#: help:partner.balance.webkit,fiscalyear_id:0 -#: help:partners.ledger.webkit,fiscalyear_id:0 -#: help:print.journal.webkit,fiscalyear_id:0 -#: help:trial.balance.webkit,fiscalyear_id:0 -msgid "Keep empty for all open fiscal year" +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:118 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:121 +msgid "Cumul. Bal." msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:110 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:113 -#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:89 -msgid "Label" +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:23 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:39 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:24 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:48 +msgid "Computed" msgstr "" #. module: account_financial_report_webkit -#: field:account.move.line,last_rec_date:0 -msgid "Last reconciliation date" +#: code:addons/account_financial_report_webkit/report/aged_partner_balance.py:102 +#: code:addons/account_financial_report_webkit/report/general_ledger.py:70 +#: code:addons/account_financial_report_webkit/report/open_invoices.py:83 +#: code:addons/account_financial_report_webkit/report/partner_balance.py:71 +#: code:addons/account_financial_report_webkit/report/partners_ledger.py:71 +#: code:addons/account_financial_report_webkit/report/print_journal.py:75 +#: code:addons/account_financial_report_webkit/report/trial_balance.py:71 +#, python-format +msgid "of" msgstr "" #. module: account_financial_report_webkit -#: view:general.ledger.webkit:0 -#: view:open.invoices.webkit:0 -#: view:partners.ledger.webkit:0 -msgid "Layout Options" +#: selection:account.aged.trial.balance.webkit,result_selection:0 +#: code:addons/account_financial_report_webkit/report/common_reports.py:83 +#: selection:open.invoices.webkit,result_selection:0 +#: selection:partner.balance.webkit,result_selection:0 +#: selection:partners.ledger.webkit,result_selection:0 +#, python-format +msgid "Payable Accounts" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/common_reports.py:482 +#: code:addons/account_financial_report_webkit/report/open_invoices.py:67 +#: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_open_invoices_menu_webkit +#: model:ir.actions.report.xml,name:account_financial_report_webkit.account_report_open_invoices_webkit +#: model:ir.model,name:account_financial_report_webkit.model_open_invoices_webkit #, python-format -msgid "Must be in include_opening, exclude_opening" +msgid "Open Invoices Report" +msgstr "" + +#. module: account_financial_report_webkit +#: field:account.account,centralized:0 +msgid "Centralized" +msgstr "" + +#. module: account_financial_report_webkit +#: field:general.ledger.webkit,display_account:0 +msgid "Display accounts" +msgstr "" + +#. module: account_financial_report_webkit +#: code:addons/account_financial_report_webkit/report/partner_balance.py:44 +#, python-format +msgid "PARTNER BALANCE" +msgstr "" + +#. module: account_financial_report_webkit +#: field:account.aged.trial.balance.webkit,date_from:0 +#: field:account.common.balance.report,comp0_date_from:0 +#: field:account.common.balance.report,comp1_date_from:0 +#: field:account.common.balance.report,comp2_date_from:0 +#: field:account.common.balance.report,date_from:0 +#: field:general.ledger.webkit,date_from:0 +#: field:open.invoices.webkit,date_from:0 +#: field:partner.balance.webkit,comp0_date_from:0 +#: field:partner.balance.webkit,comp1_date_from:0 +#: field:partner.balance.webkit,comp2_date_from:0 +#: field:partner.balance.webkit,date_from:0 +#: field:partners.ledger.webkit,date_from:0 +#: field:print.journal.webkit,date_from:0 +#: field:trial.balance.webkit,comp0_date_from:0 +#: field:trial.balance.webkit,comp1_date_from:0 +#: field:trial.balance.webkit,comp2_date_from:0 +#: field:trial.balance.webkit,date_from:0 +msgid "Start Date" msgstr "" #. module: account_financial_report_webkit #: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:23 #: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:39 #: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:24 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:78 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:95 #: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:48 -msgid "No" +msgid "Opening Entries" msgstr "" #. module: account_financial_report_webkit -#: selection:account.common.balance.report,comp0_filter:0 -#: selection:account.common.balance.report,comp1_filter:0 -#: selection:account.common.balance.report,comp2_filter:0 -#: selection:partner.balance.webkit,comp0_filter:0 -#: selection:partner.balance.webkit,comp1_filter:0 -#: selection:partner.balance.webkit,comp2_filter:0 -#: selection:trial.balance.webkit,comp0_filter:0 -#: selection:trial.balance.webkit,comp1_filter:0 -#: selection:trial.balance.webkit,comp2_filter:0 -msgid "No Comparison" +#: constraint:print.journal.webkit:0 +msgid "When no Fiscal year is selected, you must choose to filter by periods or by date." msgstr "" #. module: account_financial_report_webkit -#: selection:account.aged.trial.balance.webkit,filter:0 -#: selection:account.common.balance.report,filter:0 -#: selection:general.ledger.webkit,filter:0 -#: selection:open.invoices.webkit,filter:0 -#: selection:partner.balance.webkit,filter:0 -#: selection:partners.ledger.webkit,filter:0 -#: selection:print.journal.webkit,filter:0 -#: selection:trial.balance.webkit,filter:0 -msgid "No Filters" +#: code:addons/account_financial_report_webkit/report/general_ledger.py:44 +#, python-format +msgid "GENERAL LEDGER" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:96 -msgid "No Partner" +#: selection:account.aged.trial.balance.webkit,target_move:0 +#: selection:account.common.balance.report,target_move:0 +#: code:addons/account_financial_report_webkit/report/common_reports.py:94 +#: selection:general.ledger.webkit,target_move:0 +#: selection:open.invoices.webkit,target_move:0 +#: selection:partner.balance.webkit,target_move:0 +#: selection:partners.ledger.webkit,target_move:0 +#: selection:print.journal.webkit,target_move:0 +#: selection:trial.balance.webkit,target_move:0 +#, python-format +msgid "All Entries" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/open_invoices.py:136 -#: code:addons/account_financial_report_webkit/report/partners_ledger.py:119 -#, python-format -msgid "No accounts to print." +#: help:account.account,centralized:0 +msgid "If flagged, no details will be displayed in the General Ledger report (the webkit one only), only centralized amounts per period." msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:160 -#, python-format -msgid "No diagnosis message was provided" +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:200 +msgid "Percents" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:221 -#, python-format -msgid "No header defined for this Webkit report!" +#: field:account.aged.trial.balance.webkit,group_by_currency:0 +#: field:open.invoices.webkit,group_by_currency:0 +msgid "Group Partner by currency" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/common_reports.py:396 -#, python-format -msgid "No opening period found to compute the opening balances.\n" -"You have to configure a period on the first of January with the special flag." +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:23 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:39 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:24 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:78 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:95 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:48 +msgid "No" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/common_reports.py:351 -#, python-format -msgid "No period found" +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:101 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:95 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:108 +msgid "Initial Balance:" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/common_reports.py:493 -#, python-format -msgid "No valid filter" +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:170 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:130 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:145 +msgid "Balance C%s" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/open_invoices.py:57 +#: code:addons/account_financial_report_webkit/report/open_invoices.py:202 #, python-format -msgid "OPEN INVOICES REPORT" +msgid "Filter has to be in filter date, period, or none" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/aged_partner_balance.py:54 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:100 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:105 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:81 +msgid "Entry" +msgstr "" + +#. module: account_financial_report_webkit +#: field:account.move.line,last_rec_date:0 +msgid "Last reconciliation date" +msgstr "" + +#. module: account_financial_report_webkit +#: field:account.aged.trial.balance.webkit,partner_ids:0 +#: field:open.invoices.webkit,partner_ids:0 +#: field:partner.balance.webkit,partner_ids:0 +#: field:partners.ledger.webkit,partner_ids:0 +msgid "Filter on partner" +msgstr "" + +#. module: account_financial_report_webkit +#: code:addons/account_financial_report_webkit/report/general_ledger.py:52 +#: view:general.ledger.webkit:0 +#: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_general_ledger_menu_webkit #, python-format -msgid "Older" +msgid "General Ledger" msgstr "" #. module: account_financial_report_webkit -#: help:general.ledger.webkit,account_ids:0 -msgid "Only selected accounts will be printed. Leave empty to\n" -" print all accounts." +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:51 +msgid "Aged From" msgstr "" #. module: account_financial_report_webkit -#: help:account.common.balance.report,account_ids:0 -#: help:partner.balance.webkit,account_ids:0 -#: help:trial.balance.webkit,account_ids:0 -msgid "Only selected accounts will be printed. Leave empty to print all accounts." +#: view:trial.balance.webkit:0 +msgid "This report allows you to print or generate a pdf of your trial balance allowing you to quickly check the balance of each of your accounts in a single report" msgstr "" #. module: account_financial_report_webkit -#: help:partner.balance.webkit,partner_ids:0 -msgid "Only selected partners will be printed. Leave empty to print all partners." +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:90 +msgid "Periods : " +msgstr "" + +#. module: account_financial_report_webkit +#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:67 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:61 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:91 +msgid "Custom Filter" msgstr "" #. module: account_financial_report_webkit @@ -861,163 +834,227 @@ msgid "Only selected partners will be printed. Leave empty to print all partners msgstr "" #. module: account_financial_report_webkit -#: model:ir.ui.menu,name:account_financial_report_webkit.menu_account_open_invoices +#: view:account.aged.trial.balance.webkit:0 #: view:open.invoices.webkit:0 -msgid "Open Invoices" +msgid "onchange_fiscalyear(fiscalyear_id, period_to, date_to, until_date)" msgstr "" #. module: account_financial_report_webkit -#: code:_description:0 -#: code:addons/account_financial_report_webkit/report/open_invoices.py:67 -#: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_open_invoices_menu_webkit -#: model:ir.actions.report.xml,name:account_financial_report_webkit.account_report_open_invoices_webkit -#: model:ir.model,name:account_financial_report_webkit.model_open_invoices_webkit +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:216 #, python-format -msgid "Open Invoices Report" -msgstr "" - -#. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:23 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:39 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:24 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:48 -msgid "Opening Entries" +msgid "Webkit Report template not found !" msgstr "" #. module: account_financial_report_webkit +#: selection:account.aged.trial.balance.webkit,filter:0 #: selection:account.common.balance.report,comp0_filter:0 #: selection:account.common.balance.report,comp1_filter:0 #: selection:account.common.balance.report,comp2_filter:0 #: selection:account.common.balance.report,filter:0 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:96 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:101 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:79 +#: selection:general.ledger.webkit,filter:0 +#: selection:open.invoices.webkit,filter:0 #: selection:partner.balance.webkit,comp0_filter:0 #: selection:partner.balance.webkit,comp1_filter:0 #: selection:partner.balance.webkit,comp2_filter:0 #: selection:partner.balance.webkit,filter:0 +#: selection:partners.ledger.webkit,filter:0 +#: selection:print.journal.webkit,filter:0 #: selection:trial.balance.webkit,comp0_filter:0 #: selection:trial.balance.webkit,comp1_filter:0 #: selection:trial.balance.webkit,comp2_filter:0 #: selection:trial.balance.webkit,filter:0 -msgid "Opening Only" +msgid "Date" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/aged_partner_balance.py:53 -#, python-format -msgid "Overdue ≤ %s d." +#: help:general.ledger.webkit,centralize:0 +msgid "Uncheck to display all the details of centralized accounts." msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/partner_balance.py:44 -#, python-format -msgid "PARTNER BALANCE" +#: constraint:account.aged.trial.balance.webkit:0 +#: constraint:open.invoices.webkit:0 +#: constraint:partners.ledger.webkit:0 +msgid "When no Fiscal year is selected, you must choose to filter by periods or by date." msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/partners_ledger.py:44 -#, python-format -msgid "PARTNER LEDGER" +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:55 +#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:57 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:68 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:52 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:46 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:63 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:76 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:81 +msgid "To:" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/aged_partner_balance.py:102 -#: code:addons/account_financial_report_webkit/report/general_ledger.py:70 -#: code:addons/account_financial_report_webkit/report/open_invoices.py:83 -#: code:addons/account_financial_report_webkit/report/partner_balance.py:71 -#: code:addons/account_financial_report_webkit/report/partners_ledger.py:71 -#: code:addons/account_financial_report_webkit/report/print_journal.py:75 -#: code:addons/account_financial_report_webkit/report/trial_balance.py:71 -#, python-format -msgid "Page" +#: selection:account.common.balance.report,comp0_filter:0 +#: selection:account.common.balance.report,comp1_filter:0 +#: selection:account.common.balance.report,comp2_filter:0 +#: selection:partner.balance.webkit,comp0_filter:0 +#: selection:partner.balance.webkit,comp1_filter:0 +#: selection:partner.balance.webkit,comp2_filter:0 +#: selection:trial.balance.webkit,comp0_filter:0 +#: selection:trial.balance.webkit,comp1_filter:0 +#: selection:trial.balance.webkit,comp2_filter:0 +msgid "No Comparison" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:106 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:109 -#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:87 -#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:101 -msgid "Partner" +#: model:ir.ui.menu,name:account_financial_report_webkit.menu_account_open_invoices +#: view:open.invoices.webkit:0 +msgid "Open Invoices" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/partner_balance.py:54 -#: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_partner_balance_menu_webkit -#: view:partner.balance.webkit:0 +#: selection:account.aged.trial.balance.webkit,target_move:0 +#: selection:account.common.balance.report,target_move:0 +#: code:addons/account_financial_report_webkit/report/common_reports.py:92 +#: selection:general.ledger.webkit,target_move:0 +#: selection:open.invoices.webkit,target_move:0 +#: selection:partner.balance.webkit,target_move:0 +#: selection:partners.ledger.webkit,target_move:0 +#: selection:print.journal.webkit,target_move:0 +#: selection:trial.balance.webkit,target_move:0 #, python-format -msgid "Partner Balance" +msgid "All Posted Entries" msgstr "" #. module: account_financial_report_webkit -#: code:_description:0 -#: model:ir.model,name:account_financial_report_webkit.model_partner_balance_webkit +#: field:account.aged.trial.balance.webkit,until_date:0 +#: field:open.invoices.webkit,until_date:0 +msgid "Clearance date" +msgstr "" + +#. module: account_financial_report_webkit +#: code:addons/account_financial_report_webkit/report/open_invoices.py:136 +#: code:addons/account_financial_report_webkit/report/partners_ledger.py:119 #, python-format -msgid "Partner Balance Report" +msgid "No accounts to print." msgstr "" #. module: account_financial_report_webkit -#: model:ir.actions.report.xml,name:account_financial_report_webkit.account_report_partner_balance_webkit -msgid "Partner Balance Webkit" +#: help:account.aged.trial.balance.webkit,fiscalyear_id:0 +#: help:account.common.balance.report,fiscalyear_id:0 +#: help:general.ledger.webkit,fiscalyear_id:0 +#: help:open.invoices.webkit,fiscalyear_id:0 +#: help:partner.balance.webkit,fiscalyear_id:0 +#: help:partners.ledger.webkit,fiscalyear_id:0 +#: help:print.journal.webkit,fiscalyear_id:0 +#: help:trial.balance.webkit,fiscalyear_id:0 +msgid "Keep empty for all open fiscal year" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/partners_ledger.py:54 -#: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_partners_ledger_menu_webkit -#: view:partners.ledger.webkit:0 -#, python-format -msgid "Partner Ledger" +#: view:print.journal.webkit:0 +msgid "This report allows you to print or generate a pdf of your print journal with details of all your account journals" msgstr "" #. module: account_financial_report_webkit -#: code:_description:0 -#: model:ir.model,name:account_financial_report_webkit.model_partners_ledger_webkit +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:116 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:154 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:119 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:93 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:114 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:129 +msgid "Credit" +msgstr "" + +#. module: account_financial_report_webkit +#: selection:account.aged.trial.balance.webkit,filter:0 +#: selection:account.common.balance.report,filter:0 +#: selection:general.ledger.webkit,filter:0 +#: selection:open.invoices.webkit,filter:0 +#: selection:partner.balance.webkit,filter:0 +#: selection:partners.ledger.webkit,filter:0 +#: selection:print.journal.webkit,filter:0 +#: selection:trial.balance.webkit,filter:0 +msgid "No Filters" +msgstr "" + +#. module: account_financial_report_webkit +#: code:addons/account_financial_report_webkit/report/common_reports.py:395 +#: code:addons/account_financial_report_webkit/report/open_invoices.py:136 +#: code:addons/account_financial_report_webkit/report/partners_ledger.py:119 #, python-format -msgid "Partner Ledger Report" +msgid "Error" msgstr "" #. module: account_financial_report_webkit -#: model:ir.actions.report.xml,name:account_financial_report_webkit.account_report_partners_ledger_webkit -msgid "Partner Ledger Webkit" +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:159 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:119 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:134 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:117 +msgid "Balance" msgstr "" #. module: account_financial_report_webkit -#: field:account.aged.trial.balance.webkit,result_selection:0 -#: field:open.invoices.webkit,result_selection:0 -#: field:partner.balance.webkit,result_selection:0 -#: field:partners.ledger.webkit,result_selection:0 -msgid "Partner's" +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:112 +msgid "Counter part" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:54 -msgid "Partners Filter" +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:175 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:135 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:150 +msgid "% Difference" msgstr "" #. module: account_financial_report_webkit -#: view:account.aged.trial.balance.webkit:0 -#: view:open.invoices.webkit:0 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:118 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:111 +msgid "Code" +msgstr "" + +#. module: account_financial_report_webkit +#: code:addons/account_financial_report_webkit/report/common_reports.py:351 +#, python-format +msgid "No period found" +msgstr "" + +#. module: account_financial_report_webkit +#: code:addons/account_financial_report_webkit/report/partner_balance.py:54 +#: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_partner_balance_menu_webkit #: view:partner.balance.webkit:0 -#: view:partners.ledger.webkit:0 -msgid "Partners Filters" +#, python-format +msgid "Partner Balance" msgstr "" #. module: account_financial_report_webkit -#: selection:account.aged.trial.balance.webkit,result_selection:0 -#: code:addons/account_financial_report_webkit/report/common_reports.py:83 -#: selection:open.invoices.webkit,result_selection:0 -#: selection:partner.balance.webkit,result_selection:0 -#: selection:partners.ledger.webkit,result_selection:0 +#: code:addons/account_financial_report_webkit/report/general_ledger.py:165 #, python-format -msgid "Payable Accounts" +msgid "Centralized Entries" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:141 -msgid "Percents" +#: view:general.ledger.webkit:0 +#: view:partner.balance.webkit:0 +#: view:trial.balance.webkit:0 +msgid "Accounts Filters" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:98 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:103 -msgid "Period" +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:36 +#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:37 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:48 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:33 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:28 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:57 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:54 +msgid "Dates Filter" +msgstr "" + +#. module: account_financial_report_webkit +#: code:addons/account_financial_report_webkit/report/common_reports.py:74 +#: selection:general.ledger.webkit,display_account:0 +#, python-format +msgid "With transactions or non zero balance" msgstr "" #. module: account_financial_report_webkit @@ -1027,7 +1064,7 @@ msgstr "" #: selection:account.common.balance.report,comp2_filter:0 #: selection:account.common.balance.report,filter:0 #: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:46 -#: code:addons/account_financial_report_webkit/wizard/balance_common.py:223 +#: code:addons/account_financial_report_webkit/wizard/balance_common.py:224 #: selection:general.ledger.webkit,filter:0 #: selection:open.invoices.webkit,filter:0 #: selection:partner.balance.webkit,comp0_filter:0 @@ -1046,424 +1083,400 @@ msgid "Periods" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:90 -msgid "Periods : " +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:114 +msgid "Invoice" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:38 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:39 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:50 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:35 -#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:30 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:59 -#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:55 -msgid "Periods Filter" +#: view:open.invoices.webkit:0 +msgid "This report allows you to print or generate a pdf of your open invoices per partner with details of all your payable/receivable account. Exclude full reconciled journal items." msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:96 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:103 -msgid "Periods Filter:" +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:121 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:124 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:96 +msgid "Curr. Balance" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:222 -#, python-format -msgid "Please set a header in company settings." +#: model:ir.model,name:account_financial_report_webkit.model_account_move_line +msgid "Journal Items" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/common_reports.py:493 +#: code:addons/account_financial_report_webkit/report/common_reports.py:481 #, python-format -msgid "Please set a valid time filter" +msgid "Invalid query mode" msgstr "" #. module: account_financial_report_webkit -#: view:account.aged.trial.balance.webkit:0 -#: view:general.ledger.webkit:0 -#: view:open.invoices.webkit:0 -#: view:partner.balance.webkit:0 -#: view:partners.ledger.webkit:0 -#: view:trial.balance.webkit:0 -msgid "Print only" +#: code:addons/account_financial_report_webkit/report/open_invoices.py:201 +#, python-format +msgid "Unsuported filter" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:115 -msgid "Rec." +#: code:addons/account_financial_report_webkit/report/common_reports.py:72 +#, python-format +msgid "All accounts" msgstr "" #. module: account_financial_report_webkit -#: selection:account.aged.trial.balance.webkit,result_selection:0 -#: code:addons/account_financial_report_webkit/report/common_reports.py:81 -#: selection:open.invoices.webkit,result_selection:0 -#: selection:partner.balance.webkit,result_selection:0 -#: selection:partners.ledger.webkit,result_selection:0 +#: code:addons/account_financial_report_webkit/report/aged_partner_balance.py:52 #, python-format -msgid "Receivable Accounts" +msgid "Current" msgstr "" #. module: account_financial_report_webkit -#: selection:account.aged.trial.balance.webkit,result_selection:0 -#: code:addons/account_financial_report_webkit/report/common_reports.py:85 -#: selection:open.invoices.webkit,result_selection:0 -#: selection:partner.balance.webkit,result_selection:0 -#: selection:partners.ledger.webkit,result_selection:0 -#, python-format -msgid "Receivable and Payable Accounts" +#: help:partner.balance.webkit,partner_ids:0 +msgid "Only selected partners will be printed. Leave empty to print all partners." msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:108 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:111 -msgid "Reference" +#: help:account.aged.trial.balance.webkit,until_date:0 +#: help:open.invoices.webkit,until_date:0 +msgid "The clearance date is essentially a tool used for debtors\n" +" provisionning calculation.\n" +"\n" +"By default, this date is equal to the the end date (ie: 31/12/2011 if you\n" +"select fy 2011).\n" +"\n" +"By amending the clearance date, you will be, for instance, able to answer the\n" +"question : 'based on my last year end debtors open invoices, which invoices\n" +"are still unpaid today (today is my clearance date)?'\n" +"" msgstr "" #. module: account_financial_report_webkit -#: help:account.aged.trial.balance.webkit,chart_account_id:0 -#: help:account.common.balance.report,chart_account_id:0 -#: help:general.ledger.webkit,chart_account_id:0 -#: help:open.invoices.webkit,chart_account_id:0 -#: help:partner.balance.webkit,chart_account_id:0 -#: help:partners.ledger.webkit,chart_account_id:0 -#: help:print.journal.webkit,chart_account_id:0 -#: help:trial.balance.webkit,chart_account_id:0 -msgid "Select Charts of Accounts" +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:160 +#, python-format +msgid "No diagnosis message was provided" msgstr "" #. module: account_financial_report_webkit -#: field:account.aged.trial.balance.webkit,date_from:0 -#: field:account.common.balance.report,comp0_date_from:0 -#: field:account.common.balance.report,comp1_date_from:0 -#: field:account.common.balance.report,comp2_date_from:0 -#: field:account.common.balance.report,date_from:0 -#: field:general.ledger.webkit,date_from:0 -#: field:open.invoices.webkit,date_from:0 -#: field:partner.balance.webkit,comp0_date_from:0 -#: field:partner.balance.webkit,comp1_date_from:0 -#: field:partner.balance.webkit,comp2_date_from:0 -#: field:partner.balance.webkit,date_from:0 -#: field:partners.ledger.webkit,date_from:0 -#: field:print.journal.webkit,date_from:0 -#: field:trial.balance.webkit,comp0_date_from:0 -#: field:trial.balance.webkit,comp1_date_from:0 -#: field:trial.balance.webkit,comp2_date_from:0 -#: field:trial.balance.webkit,date_from:0 -msgid "Start Date" -msgstr "" - -#. module: account_financial_report_webkit -#: field:account.aged.trial.balance.webkit,period_from:0 -#: field:account.common.balance.report,comp0_period_from:0 -#: field:account.common.balance.report,comp1_period_from:0 -#: field:account.common.balance.report,comp2_period_from:0 -#: field:account.common.balance.report,period_from:0 -#: field:general.ledger.webkit,period_from:0 -#: field:open.invoices.webkit,period_from:0 -#: field:partner.balance.webkit,comp0_period_from:0 -#: field:partner.balance.webkit,comp1_period_from:0 -#: field:partner.balance.webkit,comp2_period_from:0 -#: field:partner.balance.webkit,period_from:0 -#: field:partners.ledger.webkit,period_from:0 -#: field:print.journal.webkit,period_from:0 -#: field:trial.balance.webkit,comp0_period_from:0 -#: field:trial.balance.webkit,comp1_period_from:0 -#: field:trial.balance.webkit,comp2_period_from:0 -#: field:trial.balance.webkit,period_from:0 -msgid "Start Period" +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:98 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:103 +msgid "Period" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/trial_balance.py:47 +#: code:addons/account_financial_report_webkit/report/common_reports.py:493 #, python-format -msgid "TRIAL BALANCE" -msgstr "" - -#. module: account_financial_report_webkit -#: field:account.aged.trial.balance.webkit,target_move:0 -#: field:account.common.balance.report,target_move:0 -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:42 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:44 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:55 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:39 -#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:34 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:50 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:63 -#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:60 -#: field:general.ledger.webkit,target_move:0 -#: field:open.invoices.webkit,target_move:0 -#: field:partner.balance.webkit,target_move:0 -#: field:partners.ledger.webkit,target_move:0 -#: field:print.journal.webkit,target_move:0 -#: field:trial.balance.webkit,target_move:0 -msgid "Target Moves" +msgid "No valid filter" msgstr "" #. module: account_financial_report_webkit -#: help:account.aged.trial.balance.webkit,until_date:0 -#: help:open.invoices.webkit,until_date:0 -msgid "" +#: constraint:account.aged.trial.balance.webkit:0 +#: constraint:open.invoices.webkit:0 +msgid "Clearance date must be the very last date of the last period or later." msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:167 -#, python-format -msgid "The command 'wkhtmltopdf' failed with error code = %s. Message: %s" +#: view:partner.balance.webkit:0 +#: view:trial.balance.webkit:0 +msgid "{'required': [('filter', '=', 'filter_opening')]}" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:162 -#, python-format -msgid "The following diagnosis message was provided:\n" -"" +#: view:account.aged.trial.balance.webkit:0 +#: view:open.invoices.webkit:0 +msgid "Clearance Analysis Options" msgstr "" -"" #. module: account_financial_report_webkit -#: view:general.ledger.webkit:0 -msgid "This report allows you to print or generate a pdf of your general ledger with details of all your account journals" +#: model:ir.model,name:account_financial_report_webkit.model_account_aged_trial_balance_webkit +msgid "Aged partner balanced" msgstr "" #. module: account_financial_report_webkit -#: view:open.invoices.webkit:0 -msgid "This report allows you to print or generate a pdf of your open invoices per partner with details of all your payable/receivable account. Exclude full reconciled journal items." +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:102 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:107 +msgid "Journal" msgstr "" #. module: account_financial_report_webkit -#: view:partners.ledger.webkit:0 -msgid "This report allows you to print or generate a pdf of your partner ledger with details of all your payable/receivable account" +#: field:account.aged.trial.balance.webkit,amount_currency:0 +#: field:general.ledger.webkit,amount_currency:0 +#: field:open.invoices.webkit,amount_currency:0 +#: field:partners.ledger.webkit,amount_currency:0 +#: field:print.journal.webkit,amount_currency:0 +msgid "With Currency" msgstr "" #. module: account_financial_report_webkit -#: view:print.journal.webkit:0 -msgid "This report allows you to print or generate a pdf of your print journal with details of all your account journals" +#: field:account.aged.trial.balance.webkit,result_selection:0 +#: field:open.invoices.webkit,result_selection:0 +#: field:partner.balance.webkit,result_selection:0 +#: field:partners.ledger.webkit,result_selection:0 +msgid "Partner's" msgstr "" #. module: account_financial_report_webkit -#: view:trial.balance.webkit:0 -msgid "This report allows you to print or generate a pdf of your trial balance allowing you to quickly check the balance of each of your accounts in a single report" +#: view:general.ledger.webkit:0 +msgid "This report allows you to print or generate a pdf of your general ledger with details of all your account journals" msgstr "" #. module: account_financial_report_webkit -#: view:partner.balance.webkit:0 -msgid "This report is an analysis done by a partner, It is a PDF report containing one line per partner representing the cumulative credit balance" +#: field:account.aged.trial.balance.webkit,chart_account_id:0 +#: field:account.common.balance.report,chart_account_id:0 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:32 +#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:33 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:44 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:29 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:24 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:40 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:53 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:49 +#: field:general.ledger.webkit,chart_account_id:0 +#: field:open.invoices.webkit,chart_account_id:0 +#: field:partner.balance.webkit,chart_account_id:0 +#: field:partners.ledger.webkit,chart_account_id:0 +#: field:print.journal.webkit,chart_account_id:0 +#: field:trial.balance.webkit,chart_account_id:0 +msgid "Chart of Account" msgstr "" #. module: account_financial_report_webkit -#: view:account.aged.trial.balance.webkit:0 -msgid "This report list partner open balances and indicate when payment is (or was) supposed to be completed" +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:174 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:134 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:149 +msgid "Difference" msgstr "" #. module: account_financial_report_webkit -#: view:account.aged.trial.balance.webkit:0 -#: view:general.ledger.webkit:0 -#: view:open.invoices.webkit:0 -#: view:partner.balance.webkit:0 -#: view:partners.ledger.webkit:0 -#: view:trial.balance.webkit:0 -msgid "Time Filters" +#: field:account.aged.trial.balance.webkit,target_move:0 +#: field:account.common.balance.report,target_move:0 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:42 +#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:44 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:55 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:39 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:34 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:50 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:63 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:61 +#: field:general.ledger.webkit,target_move:0 +#: field:open.invoices.webkit,target_move:0 +#: field:partner.balance.webkit,target_move:0 +#: field:partners.ledger.webkit,target_move:0 +#: field:print.journal.webkit,target_move:0 +#: field:trial.balance.webkit,target_move:0 +msgid "Target Moves" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:55 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:57 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:68 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:52 -#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:46 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:63 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:76 -#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:73 -msgid "To:" +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:49 +#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:51 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:62 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:46 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:40 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:57 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:70 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:75 +msgid "From:" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:132 -msgid "Total" +#: field:account.aged.trial.balance.webkit,date_to:0 +#: field:account.common.balance.report,comp0_date_to:0 +#: field:account.common.balance.report,comp1_date_to:0 +#: field:account.common.balance.report,comp2_date_to:0 +#: field:account.common.balance.report,date_to:0 +#: field:general.ledger.webkit,date_to:0 +#: field:open.invoices.webkit,date_to:0 +#: field:partner.balance.webkit,comp0_date_to:0 +#: field:partner.balance.webkit,comp1_date_to:0 +#: field:partner.balance.webkit,comp2_date_to:0 +#: field:partner.balance.webkit,date_to:0 +#: field:partners.ledger.webkit,date_to:0 +#: field:print.journal.webkit,date_to:0 +#: field:trial.balance.webkit,comp0_date_to:0 +#: field:trial.balance.webkit,comp1_date_to:0 +#: field:trial.balance.webkit,comp2_date_to:0 +#: field:trial.balance.webkit,date_to:0 +msgid "End Date" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/trial_balance.py:56 -#: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_trial_balance_menu_webkit -#: view:trial.balance.webkit:0 -#, python-format -msgid "Trial Balance" +#: field:account.aged.trial.balance.webkit,period_from:0 +#: field:account.common.balance.report,comp0_period_from:0 +#: field:account.common.balance.report,comp1_period_from:0 +#: field:account.common.balance.report,comp2_period_from:0 +#: field:account.common.balance.report,period_from:0 +#: field:general.ledger.webkit,period_from:0 +#: field:open.invoices.webkit,period_from:0 +#: field:partner.balance.webkit,comp0_period_from:0 +#: field:partner.balance.webkit,comp1_period_from:0 +#: field:partner.balance.webkit,comp2_period_from:0 +#: field:partner.balance.webkit,period_from:0 +#: field:partners.ledger.webkit,period_from:0 +#: field:print.journal.webkit,period_from:0 +#: field:trial.balance.webkit,comp0_period_from:0 +#: field:trial.balance.webkit,comp1_period_from:0 +#: field:trial.balance.webkit,comp2_period_from:0 +#: field:trial.balance.webkit,period_from:0 +msgid "Start Period" msgstr "" #. module: account_financial_report_webkit -#: code:_description:0 -#: model:ir.model,name:account_financial_report_webkit.model_trial_balance_webkit +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:91 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:85 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:98 +#: code:addons/account_financial_report_webkit/wizard/balance_common.py:174 #, python-format -msgid "Trial Balance Report" +msgid "Comparison %s" msgstr "" #. module: account_financial_report_webkit -#: model:ir.actions.report.xml,name:account_financial_report_webkit.account_report_trial_balance_webkit -msgid "Trial Balance Webkit" +#: model:ir.model,name:account_financial_report_webkit.model_partners_ledger_webkit +msgid "Partner Ledger Report" msgstr "" #. module: account_financial_report_webkit #: view:account.aged.trial.balance.webkit:0 -#: view:general.ledger.webkit:0 #: view:open.invoices.webkit:0 #: view:partner.balance.webkit:0 #: view:partners.ledger.webkit:0 -#: view:trial.balance.webkit:0 -msgid "True" -msgstr "" - -#. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:207 -msgid "Unallocated" -msgstr "" - -#. module: account_financial_report_webkit -#: help:general.ledger.webkit,centralize:0 -msgid "Uncheck to display all the details of centralized accounts." +msgid "Partners Filters" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/open_invoices.py:202 -#, python-format -msgid "Unsuported filter" +#: field:account.aged.trial.balance.webkit,fiscalyear_id:0 +#: selection:account.common.balance.report,comp0_filter:0 +#: field:account.common.balance.report,comp0_fiscalyear_id:0 +#: selection:account.common.balance.report,comp1_filter:0 +#: field:account.common.balance.report,comp1_fiscalyear_id:0 +#: selection:account.common.balance.report,comp2_filter:0 +#: field:account.common.balance.report,comp2_fiscalyear_id:0 +#: field:account.common.balance.report,fiscalyear_id:0 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:33 +#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:34 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:45 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:30 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:25 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:41 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:54 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:50 +#: field:general.ledger.webkit,fiscalyear_id:0 +#: field:open.invoices.webkit,fiscalyear_id:0 +#: selection:partner.balance.webkit,comp0_filter:0 +#: field:partner.balance.webkit,comp0_fiscalyear_id:0 +#: selection:partner.balance.webkit,comp1_filter:0 +#: field:partner.balance.webkit,comp1_fiscalyear_id:0 +#: selection:partner.balance.webkit,comp2_filter:0 +#: field:partner.balance.webkit,comp2_fiscalyear_id:0 +#: field:partner.balance.webkit,fiscalyear_id:0 +#: field:partners.ledger.webkit,fiscalyear_id:0 +#: field:print.journal.webkit,fiscalyear_id:0 +#: selection:trial.balance.webkit,comp0_filter:0 +#: field:trial.balance.webkit,comp0_fiscalyear_id:0 +#: selection:trial.balance.webkit,comp1_filter:0 +#: field:trial.balance.webkit,comp1_fiscalyear_id:0 +#: selection:trial.balance.webkit,comp2_filter:0 +#: field:trial.balance.webkit,comp2_fiscalyear_id:0 +#: field:trial.balance.webkit,fiscalyear_id:0 +msgid "Fiscal Year" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:216 -#, python-format -msgid "Webkit Report template not found !" +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:78 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:95 +msgid "Yes" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:166 -#, python-format -msgid "Webkit error" +#: field:account.aged.trial.balance.webkit,detailed_by_invoice:0 +msgid "Detailed by Invoice" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:246 -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:257 -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:273 +#: code:addons/account_financial_report_webkit/report/aged_partner_balance.py:102 +#: code:addons/account_financial_report_webkit/report/general_ledger.py:70 +#: code:addons/account_financial_report_webkit/report/open_invoices.py:83 +#: code:addons/account_financial_report_webkit/report/partner_balance.py:71 +#: code:addons/account_financial_report_webkit/report/partners_ledger.py:71 +#: code:addons/account_financial_report_webkit/report/print_journal.py:75 +#: code:addons/account_financial_report_webkit/report/trial_balance.py:71 #, python-format -msgid "Webkit render" -msgstr "" - -#. module: account_financial_report_webkit -#: constraint:print.journal.webkit:0 -msgid "When no Fiscal year is selected, you must choose to filter by periods or by date." -msgstr "" - -#. module: account_financial_report_webkit -#: constraint:account.common.balance.report:0 -#: constraint:general.ledger.webkit:0 -#: constraint:partner.balance.webkit:0 -#: constraint:trial.balance.webkit:0 -msgid "When no Fiscal year is selected, you must choose to filter by periods or by date." -msgstr "" - -#. module: account_financial_report_webkit -#: constraint:account.aged.trial.balance.webkit:0 -#: constraint:open.invoices.webkit:0 -#: constraint:partners.ledger.webkit:0 -msgid "When no Fiscal year is selected, you must choose to filter by periods or by date." -msgstr "" - -#. module: account_financial_report_webkit -#: field:account.aged.trial.balance.webkit,amount_currency:0 -#: field:general.ledger.webkit,amount_currency:0 -#: field:open.invoices.webkit,amount_currency:0 -#: field:partners.ledger.webkit,amount_currency:0 -#: field:print.journal.webkit,amount_currency:0 -msgid "With Currency" +msgid "Page" msgstr "" #. module: account_financial_report_webkit -#: selection:account.common.balance.report,display_account:0 -#: selection:partner.balance.webkit,display_account:0 -#: selection:print.journal.webkit,display_account:0 -#: selection:trial.balance.webkit,display_account:0 -msgid "With balance is not equal to 0" +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:54 +msgid "Partners Filter" msgstr "" #. module: account_financial_report_webkit #: selection:account.common.balance.report,display_account:0 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:66 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:79 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:57 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:74 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:87 +#: selection:general.ledger.webkit,display_account:0 #: selection:partner.balance.webkit,display_account:0 #: selection:print.journal.webkit,display_account:0 #: selection:trial.balance.webkit,display_account:0 -msgid "With movements" -msgstr "" - -#. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/common_reports.py:74 -#: selection:general.ledger.webkit,display_account:0 -#, python-format -msgid "With transactions or non zero balance" -msgstr "" - -#. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:78 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:95 -msgid "Yes" +msgid "All" msgstr "" #. module: account_financial_report_webkit -#: view:account.aged.trial.balance.webkit:0 -#: view:general.ledger.webkit:0 -#: view:open.invoices.webkit:0 #: view:partner.balance.webkit:0 -#: view:partners.ledger.webkit:0 -#: view:trial.balance.webkit:0 -msgid "[('fiscalyear_id', '=', fiscalyear_id), ('special', '=', False)]" +msgid "This report is an analysis done by a partner, It is a PDF report containing one line per partner representing the cumulative credit balance" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:105 -msgid "balance" +#: code:addons/account_financial_report_webkit/report/aged_partner_balance.py:53 +#, python-format +msgid "Age ≤ %s d." msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:103 -msgid "code" +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:96 +msgid "No Partner" msgstr "" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/aged_partner_balance.py:102 -#: code:addons/account_financial_report_webkit/report/general_ledger.py:70 -#: code:addons/account_financial_report_webkit/report/open_invoices.py:83 -#: code:addons/account_financial_report_webkit/report/partner_balance.py:71 -#: code:addons/account_financial_report_webkit/report/partners_ledger.py:71 -#: code:addons/account_financial_report_webkit/report/print_journal.py:75 -#: code:addons/account_financial_report_webkit/report/trial_balance.py:71 +#: code:addons/account_financial_report_webkit/report/open_invoices.py:57 #, python-format -msgid "of" +msgid "OPEN INVOICES REPORT" msgstr "" #. module: account_financial_report_webkit -#: view:account.aged.trial.balance.webkit:0 -#: view:open.invoices.webkit:0 -msgid "onchange_date_to(fiscalyear_id, period_to, date_to, until_date)" +#: code:addons/account_financial_report_webkit/report/partners_ledger.py:44 +#, python-format +msgid "PARTNER LEDGER" msgstr "" #. module: account_financial_report_webkit -#: view:account.aged.trial.balance.webkit:0 -#: view:open.invoices.webkit:0 -msgid "onchange_fiscalyear(fiscalyear_id, period_to, date_to, until_date)" +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:162 +#, python-format +msgid "The following diagnosis message was provided:\n" +"" msgstr "" #. module: account_financial_report_webkit -#: view:account.aged.trial.balance.webkit:0 -#: view:open.invoices.webkit:0 -msgid "onchange_period_to(fiscalyear_id, period_to, date_to, until_date)" +#: constraint:account.common.balance.report:0 +#: constraint:general.ledger.webkit:0 +#: constraint:partner.balance.webkit:0 +#: constraint:trial.balance.webkit:0 +msgid "When no Fiscal year is selected, you must choose to filter by periods or by date." msgstr "" #. module: account_financial_report_webkit -#: help:account.move.line,last_rec_date:0 -msgid "the date of the last reconciliation (full or partial) account move line" +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:188 +msgid "Total" msgstr "" #. module: account_financial_report_webkit -#: view:partner.balance.webkit:0 -#: view:trial.balance.webkit:0 -msgid "{'required': [('filter', '=', 'filter_opening')]}" +#: field:account.common.balance.report,comp0_filter:0 +#: field:account.common.balance.report,comp1_filter:0 +#: field:account.common.balance.report,comp2_filter:0 +#: field:partner.balance.webkit,comp0_filter:0 +#: field:partner.balance.webkit,comp1_filter:0 +#: field:partner.balance.webkit,comp2_filter:0 +#: field:trial.balance.webkit,comp0_filter:0 +#: field:trial.balance.webkit,comp1_filter:0 +#: field:trial.balance.webkit,comp2_filter:0 +msgid "Compare By" msgstr "" - diff --git a/account_financial_report_webkit/i18n/fr.po b/account_financial_report_webkit/i18n/fr.po index f676d139..071af222 100644 --- a/account_financial_report_webkit/i18n/fr.po +++ b/account_financial_report_webkit/i18n/fr.po @@ -1,21 +1,35 @@ # Translation of OpenERP Server. # This file contains the translation of the following modules: -# * account_financial_report_webkit +# * account_financial_report_webkit # msgid "" msgstr "" "Project-Id-Version: OpenERP Server 7.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-05-07 07:02+0000\n" -"PO-Revision-Date: 2014-02-01 04:48+0000\n" -"Last-Translator: Joël Grand-Guillaume @ camptocamp " -"\n" +"POT-Creation-Date: 2015-09-11 19:21+0000\n" +"PO-Revision-Date: 2015-09-11 15:27-0500\n" +"Last-Translator: Agathe Mollé \n" "Language-Team: \n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2014-06-19 06:33+0000\n" -"X-Generator: Launchpad (build 17048)\n" +"X-Generator: Poedit 1.5.4\n" + +#. module: account_financial_report_webkit +#: view:account.aged.trial.balance.webkit:0 view:open.invoices.webkit:0 +msgid "onchange_date_to(fiscalyear_id, period_to, date_to, until_date)" +msgstr "" + +#. module: account_financial_report_webkit +#: help:general.ledger.webkit,account_ids:0 +msgid "" +"Only selected accounts will be printed. Leave empty to\n" +" print all accounts." +msgstr "" +"Seuls les comptes sélectionnés seront imprimés. Laisser vide pour les " +"imprimer tous." #. module: account_financial_report_webkit #: field:account.common.balance.report,account_ids:0 @@ -26,22 +40,20 @@ msgid "Filter on accounts" msgstr "Filtre par compte" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/common_reports.py:424 +#: code:addons/account_financial_report_webkit/report/common_reports.py:493 #, python-format msgid "Please set a valid time filter" msgstr "Veuillez selectionner un filtre de temps valide" #. module: account_financial_report_webkit -#: view:general.ledger.webkit:0 -#: view:open.invoices.webkit:0 +#: view:general.ledger.webkit:0 view:open.invoices.webkit:0 #: view:partners.ledger.webkit:0 msgid "Layout Options" msgstr "Options de format" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:203 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:228 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:258 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:220 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:267 msgid "Cumulated Balance on Account" msgstr "Solde cumulé" @@ -51,37 +63,40 @@ msgid "Activate Centralization" msgstr "Centralisation activée" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:154 #: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:161 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:120 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:127 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:135 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:142 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:168 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:121 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:128 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:136 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:143 msgid "Balance %s" msgstr "Solde %s" #. module: account_financial_report_webkit -#: view:account.move.line:0 -msgid "Misc." -msgstr "" +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:33 +msgid "Journal Filter" +msgstr "Filtre de journal" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:92 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:102 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:96 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:103 msgid "Periods Filter:" -msgstr "Filtre par période:" +msgstr "Filtre par période :" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:170 +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:221 #, python-format msgid "No header defined for this Webkit report!" -msgstr "Pas d'en-tête défini pour ce rapport Webkit!" +msgstr "Pas d'en-tête défini pour ce rapport Webkit !" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/open_invoices.py:162 -#, python-format -msgid "Filter has to be in filter date, period, or none" -msgstr "Filtre par date, periode au aucun uniquement" +#: help:account.move.line,last_rec_date:0 +msgid "" +"the date of the last reconciliation (full or partial) " +"account move line" +msgstr "" +"Date du lettrage le plus récent (total ou partiel) c'est à dire du dernier " +"paiement" #. module: account_financial_report_webkit #: model:ir.actions.report.xml,name:account_financial_report_webkit.account_report_trial_balance_webkit @@ -89,46 +104,71 @@ msgid "Trial Balance Webkit" msgstr "Balance des comptes" #. module: account_financial_report_webkit +#: field:account.aged.trial.balance.webkit,company_id:0 #: field:account.common.balance.report,company_id:0 #: field:general.ledger.webkit,company_id:0 #: field:open.invoices.webkit,company_id:0 #: field:partner.balance.webkit,company_id:0 #: field:partners.ledger.webkit,company_id:0 +#: field:print.journal.webkit,company_id:0 #: field:trial.balance.webkit,company_id:0 msgid "Company" -msgstr "Company" +msgstr "Société" #. module: account_financial_report_webkit -#: view:partner.balance.webkit:0 +#: selection:account.aged.trial.balance.webkit,aging_method:0 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:71 +msgid "Invoice Date" +msgstr "Date de facture" + +#. module: account_financial_report_webkit +#: view:account.aged.trial.balance.webkit:0 msgid "" -"This report is an analysis done by a partner, It is a PDF report containing " -"one line per partner representing the cumulative credit balance" -msgstr "Ce rapport montre les soldes ouverts par client ou fourniseurs." +"This report list partner open balances and indicate when payment is (or was) " +"supposed to be completed" +msgstr "" +"Ce rapport liste les balances ouvertes des partenaires et indique quand le " +"paiement doit (ou devait) être complété" + +#. module: account_financial_report_webkit +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:222 +#, python-format +msgid "Please set a header in company settings." +msgstr "Veuillez paramétrer un en-tête dans la société" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:138 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:143 msgid "Account / Partner Name" msgstr "Compte / Partenaire" #. module: account_financial_report_webkit +#: field:account.aged.trial.balance.webkit,journal_ids:0 #: field:account.common.balance.report,journal_ids:0 +#: code:addons/account_financial_report_webkit/report/print_journal.py:58 #: field:general.ledger.webkit,journal_ids:0 +#: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_print_journal_menu_webkit +#: model:ir.actions.report.xml,name:account_financial_report_webkit.account_report_print_journal_webkit #: field:open.invoices.webkit,journal_ids:0 #: field:partner.balance.webkit,journal_ids:0 -#: field:partners.ledger.webkit,journal_ids:0 +#: field:partners.ledger.webkit,journal_ids:0 view:print.journal.webkit:0 +#: field:print.journal.webkit,journal_ids:0 #: field:trial.balance.webkit,journal_ids:0 +#, python-format msgid "Journals" msgstr "Journaux" #. module: account_financial_report_webkit +#: help:account.aged.trial.balance.webkit,amount_currency:0 #: help:general.ledger.webkit,amount_currency:0 #: help:open.invoices.webkit,amount_currency:0 #: help:partners.ledger.webkit,amount_currency:0 +#: help:print.journal.webkit,amount_currency:0 msgid "It adds the currency column" msgstr "Ajoute la colonne devise" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/common_reports.py:75 +#: selection:account.aged.trial.balance.webkit,result_selection:0 +#: code:addons/account_financial_report_webkit/report/common_reports.py:85 #: selection:open.invoices.webkit,result_selection:0 #: selection:partner.balance.webkit,result_selection:0 #: selection:partners.ledger.webkit,result_selection:0 @@ -137,47 +177,49 @@ msgid "Receivable and Payable Accounts" msgstr "Comptes clients et fournisseurs" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:104 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:119 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:104 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:83 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:105 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:120 #: model:ir.model,name:account_financial_report_webkit.model_account_account msgid "Account" msgstr "Comptes" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/trial_balance.py:42 +#: code:addons/account_financial_report_webkit/report/trial_balance.py:47 #, python-format msgid "TRIAL BALANCE" msgstr "BALANCE DES COMPTES" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:118 +#: selection:account.aged.trial.balance.webkit,aging_method:0 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:85 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:69 msgid "Due Date" -msgstr "Due Date" +msgstr "Échéance" #. module: account_financial_report_webkit -#: view:general.ledger.webkit:0 -#: view:open.invoices.webkit:0 -#: view:partner.balance.webkit:0 -#: view:partners.ledger.webkit:0 -#: view:trial.balance.webkit:0 +#: view:account.aged.trial.balance.webkit:0 view:general.ledger.webkit:0 +#: view:open.invoices.webkit:0 view:partner.balance.webkit:0 +#: view:partners.ledger.webkit:0 view:trial.balance.webkit:0 msgid "Print only" -msgstr "Filter sur:" +msgstr "Filter sur :" #. module: account_financial_report_webkit #: model:ir.model,name:account_financial_report_webkit.model_partner_balance_webkit msgid "Partner Balance Report" -msgstr "Partner Balance Report" +msgstr "Rapport de balance des tiers" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:194 -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:205 -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:220 +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:246 +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:257 +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:273 #, python-format msgid "Webkit render" msgstr "Rendu Webkit" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:165 +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:216 #, python-format msgid "Error!" msgstr "Erreur!" @@ -188,9 +230,12 @@ msgid "Trial Balance Report" msgstr "Balance générale" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:117 -msgid "Code" -msgstr "Code" +#: code:addons/account_financial_report_webkit/report/partners_ledger.py:54 +#: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_partners_ledger_menu_webkit +#: view:partners.ledger.webkit:0 +#, python-format +msgid "Partner Ledger" +msgstr "Livre des tiers" #. module: account_financial_report_webkit #: model:ir.actions.report.xml,name:account_financial_report_webkit.account_report_partners_ledger_webkit @@ -200,23 +245,19 @@ msgstr "Livre des tiers" #. module: account_financial_report_webkit #: field:account.common.balance.report,display_account:0 #: field:partner.balance.webkit,display_account:0 +#: field:print.journal.webkit,display_account:0 #: field:trial.balance.webkit,display_account:0 msgid "Display Accounts" msgstr "Display Accounts" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:192 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:207 msgid "Unallocated" msgstr "Non-alloué" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:123 -#, python-format -msgid "Webkit raise an error" -msgstr "" - -#. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/common_reports.py:71 +#: selection:account.aged.trial.balance.webkit,result_selection:0 +#: code:addons/account_financial_report_webkit/report/common_reports.py:81 #: selection:open.invoices.webkit,result_selection:0 #: selection:partner.balance.webkit,result_selection:0 #: selection:partners.ledger.webkit,result_selection:0 @@ -230,51 +271,66 @@ msgid "General Ledger Webkit" msgstr "Grand Livre des comptes" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:116 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:112 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:115 msgid "Rec." msgstr "Let." #. module: account_financial_report_webkit -#: constraint:account.account:0 -msgid "Error ! You can not create recursive accounts." +#: help:account.aged.trial.balance.webkit,filter:0 +#: help:account.common.balance.report,filter:0 +#: help:open.invoices.webkit,filter:0 help:partner.balance.webkit,filter:0 +#: help:partners.ledger.webkit,filter:0 help:trial.balance.webkit,filter:0 +msgid "" +"Filter by date: no opening balance will be displayed. (opening balance can " +"only be computed based on period to be correct)." msgstr "" +"Filtrer par date : aucune balance ouverte ne sera affichée. (une balance " +"ouverte ne peut être calculée qu'à partir de la période pour être correcte)" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:33 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:37 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:46 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:34 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:58 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:108 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:111 +msgid "Reference" +msgstr "Référence" + +#. module: account_financial_report_webkit +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:38 +#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:39 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:50 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:35 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:30 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:59 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:56 msgid "Periods Filter" msgstr "Filtre par période" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/common_reports.py:313 -#, python-format -msgid "No period found" -msgstr "Pas de période trouvée" +#: help:account.aged.trial.balance.webkit,detailed_by_invoice:0 +msgid "Provide an aged partner balance report with invoice details" +msgstr "Génère une balance âgée des tiers avec les détails par facture" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:38 -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:139 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:52 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:142 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:39 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:153 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:50 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:108 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:63 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:123 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:43 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:152 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:56 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:149 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:40 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:158 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:51 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:109 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:64 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:124 msgid "Initial Balance" msgstr "Solde à nouveau" #. module: account_financial_report_webkit -#: constraint:account.move.line:0 +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:167 +#, python-format msgid "" -"The date of your Journal Entry is not in the defined period! You should " -"change the date or remove this constraint from the journal." +"The command 'wkhtmltopdf' failed with error " +"code = %s. Message: %s" msgstr "" +"La commande 'wkhtmltopdf' a échoué avec le code d'erreur = %s. Message : %s" #. module: account_financial_report_webkit #: model:ir.model,name:account_financial_report_webkit.model_general_ledger_webkit @@ -282,139 +338,117 @@ msgid "General Ledger Report" msgstr "Grand livre" #. module: account_financial_report_webkit -#: constraint:open.invoices.webkit:0 -msgid "" -"Clearance date must be the very last date of the last period or later." -msgstr "" -"La date d'apurement doit être postérieure à la date de fin sélectionnée." +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:166 +#, python-format +msgid "Webkit error" +msgstr "Erreur Webkit" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:48 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:49 msgid "Displayed Accounts" msgstr "Comptes filtrés" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:99 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:112 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:108 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:106 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:109 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:87 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:109 msgid "Partner" msgstr "Partenaire" #. module: account_financial_report_webkit +#: help:account.aged.trial.balance.webkit,chart_account_id:0 #: help:account.common.balance.report,chart_account_id:0 #: help:general.ledger.webkit,chart_account_id:0 #: help:open.invoices.webkit,chart_account_id:0 #: help:partner.balance.webkit,chart_account_id:0 #: help:partners.ledger.webkit,chart_account_id:0 +#: help:print.journal.webkit,chart_account_id:0 #: help:trial.balance.webkit,chart_account_id:0 msgid "Select Charts of Accounts" msgstr "Selection du Plan comptable" #. module: account_financial_report_webkit +#: field:account.aged.trial.balance.webkit,filter:0 #: field:account.common.balance.report,filter:0 -#: field:general.ledger.webkit,filter:0 -#: field:open.invoices.webkit,filter:0 -#: field:partner.balance.webkit,filter:0 -#: field:partners.ledger.webkit,filter:0 -#: field:trial.balance.webkit,filter:0 +#: field:general.ledger.webkit,filter:0 field:open.invoices.webkit,filter:0 +#: field:partner.balance.webkit,filter:0 field:partners.ledger.webkit,filter:0 +#: field:print.journal.webkit,filter:0 field:trial.balance.webkit,filter:0 msgid "Filter by" msgstr "Filtrer par" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/partners_ledger.py:48 -#: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_partners_ledger_menu_webkit -#: view:partners.ledger.webkit:0 -#, python-format -msgid "Partner Ledger" -msgstr "Livre des tiers" - -#. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:114 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:129 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:123 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:123 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:126 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:98 msgid "Curr." msgstr "Dev." #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:101 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:114 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:110 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:110 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:113 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:89 msgid "Label" msgstr "Description" #. module: account_financial_report_webkit -#: help:account.common.balance.report,account_ids:0 -#: help:general.ledger.webkit,account_ids:0 -#: help:partner.balance.webkit,account_ids:0 -#: help:trial.balance.webkit,account_ids:0 -msgid "" -"Only selected accounts will be printed. Leave empty to print all accounts." -msgstr "" -"Seuls les comptes selectionnés seront imprimés. Laisser vide pour les " -"imprimer tous." - -#. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:105 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:120 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:145 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:114 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:111 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:126 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:114 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:152 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:117 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:91 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:112 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:127 msgid "Debit" msgstr "Débit" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:171 -#, python-format -msgid "Please set a header in company settings" -msgstr "Veuillez paramétrer un en-tête dans la société" - -#. module: account_financial_report_webkit -#: view:general.ledger.webkit:0 -#: view:open.invoices.webkit:0 -#: view:partner.balance.webkit:0 -#: view:partners.ledger.webkit:0 -#: view:trial.balance.webkit:0 +#: view:account.aged.trial.balance.webkit:0 view:general.ledger.webkit:0 +#: view:open.invoices.webkit:0 view:partner.balance.webkit:0 +#: view:partners.ledger.webkit:0 view:trial.balance.webkit:0 msgid "Time Filters" msgstr "Filtre de temps" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:193 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:224 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:233 msgid "Cumulated Balance on Partner" msgstr "Totaux" +#. module: account_financial_report_webkit +#: help:account.common.balance.report,account_ids:0 +#: help:partner.balance.webkit,account_ids:0 +#: help:trial.balance.webkit,account_ids:0 +msgid "" +"Only selected accounts will be printed. Leave empty to print all " +"accounts." +msgstr "" +"Seuls les comptes sélectionnés seront imprimés. Laisser vide pour les " +"imprimer tous." + +#. module: account_financial_report_webkit +#: code:addons/account_financial_report_webkit/report/common_reports.py:396 +#, python-format +msgid "" +"No opening period found to compute the opening balances.\n" +"You have to configure a period on the first of January with the special flag." +msgstr "" +"Aucune période ouverte trouvée pour calculer les balances ouvertes.\n" +"Vous devez configurer une période pour le premier Janvier avec l'étiquette " +"adéquate." + #. module: account_financial_report_webkit #: model:ir.actions.report.xml,name:account_financial_report_webkit.account_report_partner_balance_webkit msgid "Partner Balance Webkit" msgstr "Balance des tiers" #. module: account_financial_report_webkit -#: help:open.invoices.webkit,until_date:0 -msgid "" -"The clearance date is essentially a tool used for debtors provisionning " -"calculation.\n" -"\n" -"By default, this date is equal to the the end date (ie: 31/12/2011 if you " -"select fy 2011).\n" -"\n" -"By amending the clearance date, you will be, for instance, able to answer " -"the question : 'based on my last year end debtors open invoices, which " -"invoices are still unpaid today (today is my clearance date)?'\n" -msgstr "" -"La date d'apurement est une aide pour le calcule de la provision sur compte " -"client.\n" -"\n" -"Par défaut, elle est égale à la date de fin selectionnée (ex: 31/12/2011 si " -"vous selectionnez 2011).\n" -"\n" -"En la modifant, vous pourrez répondre à la question suivante:'A partir de la " -"listes des factures ouvertes a la fin de l'exercice comptable précedant, " -"lesquelles sont toujours impayées aujourd'hui (aujourd'hui étant la date " -"d'apurement)?'\n" +#: code:addons/account_financial_report_webkit/report/aged_partner_balance.py:54 +#, python-format +msgid "Older" +msgstr "Retard supérieur" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:40 +#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:42 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:59 msgid "Clearance Date" msgstr "Date d'apurement" @@ -430,46 +464,65 @@ msgstr "" #. module: account_financial_report_webkit #: selection:account.common.balance.report,display_account:0 #: selection:partner.balance.webkit,display_account:0 +#: selection:print.journal.webkit,display_account:0 #: selection:trial.balance.webkit,display_account:0 msgid "With balance is not equal to 0" msgstr "Compte dont le solde n'est pas 0" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:94 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:104 +#: view:account.aged.trial.balance.webkit:0 view:general.ledger.webkit:0 +#: view:open.invoices.webkit:0 view:partner.balance.webkit:0 +#: view:partners.ledger.webkit:0 view:trial.balance.webkit:0 +msgid "[('fiscalyear_id', '=', fiscalyear_id), ('special', '=', False)]" +msgstr "" + +#. module: account_financial_report_webkit +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:98 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:105 msgid "Fiscal Year :" msgstr "Excercice comptable :" #. module: account_financial_report_webkit -#: view:open.invoices.webkit:0 -msgid "" -"This report allows you to print or generate a pdf of your open invoices per " -"partner with details of all your payable/receivable account. Exclude full " -"reconciled journal items." -msgstr "" -"Cet état vous permet d'éditer la listes de factures ouvertes à la date de " -"votre choix" +#: view:account.aged.trial.balance.webkit:0 +#: code:addons/account_financial_report_webkit/report/aged_partner_balance.py:80 +#: code:addons/account_financial_report_webkit/report/aged_partner_balance.py:92 +#: model:ir.actions.report.xml,name:account_financial_report_webkit.account_report_aged_trial_blanance_webkit +#, python-format +msgid "Aged Partner Balance" +msgstr "Balance âgée des tiers" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/common_reports.py:416 +#: code:addons/account_financial_report_webkit/report/common_reports.py:482 #, python-format msgid "Must be in include_opening, exclude_opening" msgstr "Doit être dans include_opening, exclude_opening" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:43 -#: code:addons/account_financial_report_webkit/wizard/balance_common.py:151 +#: view:account.aged.trial.balance.webkit:0 view:general.ledger.webkit:0 +#: view:open.invoices.webkit:0 view:partner.balance.webkit:0 +#: view:partners.ledger.webkit:0 view:trial.balance.webkit:0 +msgid "True" +msgstr "Vrai" + +#. module: account_financial_report_webkit +#: field:account.aged.trial.balance.webkit,aging_method:0 +msgid "Aged from" +msgstr "Âge à partir de" + +#. module: account_financial_report_webkit +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:44 +#: code:addons/account_financial_report_webkit/wizard/balance_common.py:204 #, python-format msgid "Dates" msgstr "Dates" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:136 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:145 msgid "Code / Ref" msgstr "Compte / Réf." #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/trial_balance.py:49 +#: code:addons/account_financial_report_webkit/report/trial_balance.py:56 #: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_trial_balance_menu_webkit #: view:trial.balance.webkit:0 #, python-format @@ -477,11 +530,17 @@ msgid "Trial Balance" msgstr "Balance des comptes" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:87 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:88 msgid "Dates : " msgstr "Dates : " #. module: account_financial_report_webkit +#: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_aged_trial_balance_menu_webkit +msgid "Aged partner balance" +msgstr "Balance âgée des tiers" + +#. module: account_financial_report_webkit +#: field:account.aged.trial.balance.webkit,period_to:0 #: field:account.common.balance.report,comp0_period_to:0 #: field:account.common.balance.report,comp1_period_to:0 #: field:account.common.balance.report,comp2_period_to:0 @@ -493,12 +552,13 @@ msgstr "Dates : " #: field:partner.balance.webkit,comp2_period_to:0 #: field:partner.balance.webkit,period_to:0 #: field:partners.ledger.webkit,period_to:0 +#: field:print.journal.webkit,period_to:0 #: field:trial.balance.webkit,comp0_period_to:0 #: field:trial.balance.webkit,comp1_period_to:0 #: field:trial.balance.webkit,comp2_period_to:0 #: field:trial.balance.webkit,period_to:0 msgid "End Period" -msgstr "End Period" +msgstr "Période de fin" #. module: account_financial_report_webkit #: model:ir.model,name:account_financial_report_webkit.model_account_common_balance_report @@ -506,11 +566,12 @@ msgid "Common Balance Report" msgstr "Common Balance Report" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:36 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:41 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:49 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:37 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:61 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:41 +#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:43 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:53 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:38 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:62 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:60 msgid "Accounts Filter" msgstr "Filtre par compte" @@ -531,70 +592,69 @@ msgid "Opening Only" msgstr "Balance d'ouverture" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:65 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:60 -msgid "Custom Filter" -msgstr "Filtre personalisé" +#: code:addons/account_financial_report_webkit/report/print_journal.py:49 +#, python-format +msgid "JOURNALS" +msgstr "JOURNAUX" + +#. module: account_financial_report_webkit +#: model:ir.model,name:account_financial_report_webkit.model_print_journal_webkit +msgid "Journals Report" +msgstr "Rapport des journaux" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:90 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:100 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:94 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:101 msgid "Dates Filter:" msgstr "Filtre Dates:" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:91 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:92 msgid "Fiscal Year : " msgstr "Excercice comptable : " #. module: account_financial_report_webkit #: selection:account.common.balance.report,display_account:0 #: selection:partner.balance.webkit,display_account:0 +#: selection:print.journal.webkit,display_account:0 #: selection:trial.balance.webkit,display_account:0 msgid "With movements" msgstr "Mouvementé" #. module: account_financial_report_webkit -#: constraint:account.common.balance.report:0 -#: constraint:general.ledger.webkit:0 -#: constraint:open.invoices.webkit:0 -#: constraint:partner.balance.webkit:0 -#: constraint:partners.ledger.webkit:0 -#: constraint:trial.balance.webkit:0 -msgid "" -"The fiscalyear, periods or chart of account chosen have to belong to the " -"same company." +#: view:account.aged.trial.balance.webkit:0 view:open.invoices.webkit:0 +msgid "onchange_period_to(fiscalyear_id, period_to, date_to, until_date)" msgstr "" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:109 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:124 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:118 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:118 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:121 msgid "Cumul. Bal." msgstr "Solde Cumul." #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:22 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:35 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:23 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:47 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:23 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:39 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:24 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:48 msgid "Computed" msgstr "Calculé" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/general_ledger.py:64 -#: code:addons/account_financial_report_webkit/report/open_invoices.py:63 -#: code:addons/account_financial_report_webkit/report/partner_balance.py:63 -#: code:addons/account_financial_report_webkit/report/partners_ledger.py:64 -#: code:addons/account_financial_report_webkit/report/profit_loss.py:68 -#: code:addons/account_financial_report_webkit/report/trial_balance.py:64 -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:68 +#: code:addons/account_financial_report_webkit/report/aged_partner_balance.py:102 +#: code:addons/account_financial_report_webkit/report/general_ledger.py:70 +#: code:addons/account_financial_report_webkit/report/open_invoices.py:83 +#: code:addons/account_financial_report_webkit/report/partner_balance.py:71 +#: code:addons/account_financial_report_webkit/report/partners_ledger.py:71 +#: code:addons/account_financial_report_webkit/report/print_journal.py:75 +#: code:addons/account_financial_report_webkit/report/trial_balance.py:71 #, python-format msgid "of" msgstr "de" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/common_reports.py:73 +#: selection:account.aged.trial.balance.webkit,result_selection:0 +#: code:addons/account_financial_report_webkit/report/common_reports.py:83 #: selection:open.invoices.webkit,result_selection:0 #: selection:partner.balance.webkit,result_selection:0 #: selection:partners.ledger.webkit,result_selection:0 @@ -603,7 +663,7 @@ msgid "Payable Accounts" msgstr "Comptes fournisseur" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/open_invoices.py:48 +#: code:addons/account_financial_report_webkit/report/open_invoices.py:67 #: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_open_invoices_menu_webkit #: model:ir.actions.report.xml,name:account_financial_report_webkit.account_report_open_invoices_webkit #: model:ir.model,name:account_financial_report_webkit.model_open_invoices_webkit @@ -622,14 +682,13 @@ msgid "Display accounts" msgstr "Comptes affichés" #. module: account_financial_report_webkit -#: constraint:account.account:0 -msgid "" -"Configuration Error! \n" -"You can not define children to an account with internal type different of " -"\"View\"! " -msgstr "" +#: code:addons/account_financial_report_webkit/report/partner_balance.py:44 +#, python-format +msgid "PARTNER BALANCE" +msgstr "BALANCE DES TIERS" #. module: account_financial_report_webkit +#: field:account.aged.trial.balance.webkit,date_from:0 #: field:account.common.balance.report,comp0_date_from:0 #: field:account.common.balance.report,comp1_date_from:0 #: field:account.common.balance.report,comp2_date_from:0 @@ -641,6 +700,7 @@ msgstr "" #: field:partner.balance.webkit,comp2_date_from:0 #: field:partner.balance.webkit,date_from:0 #: field:partners.ledger.webkit,date_from:0 +#: field:print.journal.webkit,date_from:0 #: field:trial.balance.webkit,comp0_date_from:0 #: field:trial.balance.webkit,comp1_date_from:0 #: field:trial.balance.webkit,comp2_date_from:0 @@ -649,24 +709,41 @@ msgid "Start Date" msgstr "Date Début" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:22 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:35 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:23 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:47 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:23 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:39 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:24 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:48 msgid "Opening Entries" msgstr "Basé sur l'écriture d'ouverture" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/general_ledger.py:40 +#: constraint:print.journal.webkit:0 +msgid "" +"When no Fiscal year is selected, you must " +"choose to filter by periods or by date." +msgstr "" +"Lorsqu'aucun exercice comptable n'est sélectionné, vous devez choisir de " +"filtrer par périodes ou par dates." + +#. module: account_financial_report_webkit +#: code:addons/account_financial_report_webkit/report/general_ledger.py:44 #, python-format msgid "GENERAL LEDGER" msgstr "GRAND LIVRE DES COMPTES" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/wizard/profit_loss_wizard.py:129 +#: selection:account.aged.trial.balance.webkit,target_move:0 +#: selection:account.common.balance.report,target_move:0 +#: code:addons/account_financial_report_webkit/report/common_reports.py:94 +#: selection:general.ledger.webkit,target_move:0 +#: selection:open.invoices.webkit,target_move:0 +#: selection:partner.balance.webkit,target_move:0 +#: selection:partners.ledger.webkit,target_move:0 +#: selection:print.journal.webkit,target_move:0 +#: selection:trial.balance.webkit,target_move:0 #, python-format -msgid "Level %s" -msgstr "" +msgid "All Entries" +msgstr "Ecritures validées + brouillon" #. module: account_financial_report_webkit #: help:account.account,centralized:0 @@ -676,33 +753,52 @@ msgid "" msgstr "Si coché, les mouvements de ce compte seront groupés par période." #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:22 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:35 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:23 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:77 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:94 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:47 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:200 +msgid "Percents" +msgstr "Pourcentages" + +#. module: account_financial_report_webkit +#: field:account.aged.trial.balance.webkit,group_by_currency:0 +#: field:open.invoices.webkit,group_by_currency:0 +msgid "Group Partner by currency" +msgstr "Regrouper les partenaires par devise" + +#. module: account_financial_report_webkit +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:23 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:39 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:24 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:78 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:95 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:48 msgid "No" msgstr "Non" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:97 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:94 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:107 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:101 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:95 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:108 msgid "Initial Balance:" msgstr "Solde à nouveau:" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:163 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:129 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:144 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:170 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:130 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:145 msgid "Balance C%s" msgstr "Solde C%s" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:95 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:108 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:104 +#: code:addons/account_financial_report_webkit/report/open_invoices.py:202 +#, python-format +msgid "" +"Filter has to be in filter date, period, or " +"none" +msgstr "Filtre par date, periode au aucun uniquement" + +#. module: account_financial_report_webkit +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:100 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:105 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:81 msgid "Entry" msgstr "Ecriture" @@ -712,6 +808,7 @@ msgid "Last reconciliation date" msgstr "Last reconciliation date" #. module: account_financial_report_webkit +#: field:account.aged.trial.balance.webkit,partner_ids:0 #: field:open.invoices.webkit,partner_ids:0 #: field:partner.balance.webkit,partner_ids:0 #: field:partners.ledger.webkit,partner_ids:0 @@ -719,13 +816,18 @@ msgid "Filter on partner" msgstr "Filtre sur partenaire" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/general_ledger.py:47 +#: code:addons/account_financial_report_webkit/report/general_ledger.py:52 #: view:general.ledger.webkit:0 #: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_general_ledger_menu_webkit #, python-format msgid "General Ledger" msgstr "Grand livre des comptes" +#. module: account_financial_report_webkit +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:51 +msgid "Aged From" +msgstr "Âge à partir de" + #. module: account_financial_report_webkit #: view:trial.balance.webkit:0 msgid "" @@ -737,24 +839,20 @@ msgstr "" "comparaisons de période (jusqu'à 4 périodes)." #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:89 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:90 msgid "Periods : " msgstr "Periodes : " #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/partner_balance.py:40 -#, python-format -msgid "PARTNER BALANCE" -msgstr "BALANCE DES TIERS" - -#. module: account_financial_report_webkit -#: constraint:account.move.line:0 -msgid "Company must be the same for its related account and period." -msgstr "" +#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:67 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:61 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:91 +msgid "Custom Filter" +msgstr "Filtre personalisé" #. module: account_financial_report_webkit +#: help:account.aged.trial.balance.webkit,partner_ids:0 #: help:open.invoices.webkit,partner_ids:0 -#: help:partner.balance.webkit,partner_ids:0 #: help:partners.ledger.webkit,partner_ids:0 msgid "" "Only selected partners will be printed. Leave empty to print all partners." @@ -763,19 +861,25 @@ msgstr "" "tous." #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:165 +#: view:account.aged.trial.balance.webkit:0 view:open.invoices.webkit:0 +msgid "onchange_fiscalyear(fiscalyear_id, period_to, date_to, until_date)" +msgstr "" + +#. module: account_financial_report_webkit +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:216 #, python-format msgid "Webkit Report template not found !" msgstr "Webkit Report template not found !" #. module: account_financial_report_webkit +#: selection:account.aged.trial.balance.webkit,filter:0 #: selection:account.common.balance.report,comp0_filter:0 #: selection:account.common.balance.report,comp1_filter:0 #: selection:account.common.balance.report,comp2_filter:0 #: selection:account.common.balance.report,filter:0 -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:91 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:104 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:100 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:96 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:101 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:79 #: selection:general.ledger.webkit,filter:0 #: selection:open.invoices.webkit,filter:0 #: selection:partner.balance.webkit,comp0_filter:0 @@ -783,6 +887,7 @@ msgstr "Webkit Report template not found !" #: selection:partner.balance.webkit,comp2_filter:0 #: selection:partner.balance.webkit,filter:0 #: selection:partners.ledger.webkit,filter:0 +#: selection:print.journal.webkit,filter:0 #: selection:trial.balance.webkit,comp0_filter:0 #: selection:trial.balance.webkit,comp1_filter:0 #: selection:trial.balance.webkit,comp2_filter:0 @@ -796,43 +901,39 @@ msgid "Uncheck to display all the details of centralized accounts." msgstr "Décocher pour afficher ne pas activer la centralisation des comptes." #. module: account_financial_report_webkit -#: constraint:account.move.line:0 -msgid "You can not create journal items on an account of type view." -msgstr "" - -#. module: account_financial_report_webkit -#: view:account.move.line:0 -msgid "Internal Note" -msgstr "" - -#. module: account_financial_report_webkit -#: constraint:account.common.balance.report:0 -#: constraint:general.ledger.webkit:0 -#: constraint:open.invoices.webkit:0 -#: constraint:partner.balance.webkit:0 -#: constraint:partners.ledger.webkit:0 -#: constraint:trial.balance.webkit:0 +#: constraint:account.aged.trial.balance.webkit:0 +#: constraint:open.invoices.webkit:0 constraint:partners.ledger.webkit:0 msgid "" "When no Fiscal year is selected, you must choose to filter by periods or by " "date." msgstr "" -"When no Fiscal year is selected, you must choose to filter by periods or by " -"date." - -#. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:50 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:55 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:64 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:51 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:62 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:75 +"Lorsqu'aucun exercice comptable n'est sélectionné, vous devez choisir de " +"filtrer par périodes ou par dates." + +#. module: account_financial_report_webkit +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:55 +#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:57 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:68 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:52 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:46 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:63 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:76 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:81 msgid "To:" msgstr "A:" #. module: account_financial_report_webkit -#: sql_constraint:account.account:0 -msgid "The code of the account must be unique per company !" -msgstr "" +#: selection:account.common.balance.report,comp0_filter:0 +#: selection:account.common.balance.report,comp1_filter:0 +#: selection:account.common.balance.report,comp2_filter:0 +#: selection:partner.balance.webkit,comp0_filter:0 +#: selection:partner.balance.webkit,comp1_filter:0 +#: selection:partner.balance.webkit,comp2_filter:0 +#: selection:trial.balance.webkit,comp0_filter:0 +#: selection:trial.balance.webkit,comp1_filter:0 +#: selection:trial.balance.webkit,comp2_filter:0 +msgid "No Comparison" +msgstr "Pas de comparaison" #. module: account_financial_report_webkit #: model:ir.ui.menu,name:account_financial_report_webkit.menu_account_open_invoices @@ -841,118 +942,117 @@ msgid "Open Invoices" msgstr "Etat des factures ouvertes" #. module: account_financial_report_webkit +#: selection:account.aged.trial.balance.webkit,target_move:0 #: selection:account.common.balance.report,target_move:0 -#: code:addons/account_financial_report_webkit/report/common_reports.py:82 +#: code:addons/account_financial_report_webkit/report/common_reports.py:92 #: selection:general.ledger.webkit,target_move:0 #: selection:open.invoices.webkit,target_move:0 #: selection:partner.balance.webkit,target_move:0 #: selection:partners.ledger.webkit,target_move:0 +#: selection:print.journal.webkit,target_move:0 #: selection:trial.balance.webkit,target_move:0 #, python-format msgid "All Posted Entries" msgstr "Ecritures validées" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:87 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:84 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:97 -#: code:addons/account_financial_report_webkit/wizard/balance_common.py:144 -#, python-format -msgid "Comparison %s" -msgstr "Comparaison %s" +#: field:account.aged.trial.balance.webkit,until_date:0 +#: field:open.invoices.webkit,until_date:0 +msgid "Clearance date" +msgstr "Date d'apurement" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/open_invoices.py:102 -#: code:addons/account_financial_report_webkit/report/partners_ledger.py:102 +#: code:addons/account_financial_report_webkit/report/open_invoices.py:136 +#: code:addons/account_financial_report_webkit/report/partners_ledger.py:119 #, python-format msgid "No accounts to print." msgstr "Aucun compte à imprimer" #. module: account_financial_report_webkit +#: help:account.aged.trial.balance.webkit,fiscalyear_id:0 #: help:account.common.balance.report,fiscalyear_id:0 #: help:general.ledger.webkit,fiscalyear_id:0 #: help:open.invoices.webkit,fiscalyear_id:0 #: help:partner.balance.webkit,fiscalyear_id:0 #: help:partners.ledger.webkit,fiscalyear_id:0 +#: help:print.journal.webkit,fiscalyear_id:0 #: help:trial.balance.webkit,fiscalyear_id:0 msgid "Keep empty for all open fiscal year" msgstr "Laisser vide pour selectionner tout les excercices" #. module: account_financial_report_webkit -#: help:account.move.line,last_rec_date:0 +#: view:print.journal.webkit:0 msgid "" -"the date of the last reconciliation (full or partial) account move line" +"This report allows you to print or generate a pdf of your print journal with " +"details of all your account journals" msgstr "" -"Date du léttrage le plus récent (total ou partiel) c'est à dire du dernier " -"paiement" +"Ce rapport vous permet d'imprimer ou de générer un pdf de votre journal avec " +"les détails de tous les journeaux des comptes." #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:107 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:122 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:147 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:116 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:113 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:128 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:116 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:154 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:119 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:93 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:114 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:129 msgid "Credit" msgstr "Crédit" #. module: account_financial_report_webkit +#: selection:account.aged.trial.balance.webkit,filter:0 #: selection:account.common.balance.report,filter:0 #: selection:general.ledger.webkit,filter:0 #: selection:open.invoices.webkit,filter:0 #: selection:partner.balance.webkit,filter:0 #: selection:partners.ledger.webkit,filter:0 +#: selection:print.journal.webkit,filter:0 #: selection:trial.balance.webkit,filter:0 msgid "No Filters" msgstr "Pas de filtre" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/open_invoices.py:102 -#: code:addons/account_financial_report_webkit/report/partners_ledger.py:102 +#: code:addons/account_financial_report_webkit/report/common_reports.py:395 +#: code:addons/account_financial_report_webkit/report/open_invoices.py:136 +#: code:addons/account_financial_report_webkit/report/partners_ledger.py:119 #, python-format msgid "Error" msgstr "Erreur" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:152 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:118 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:133 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:159 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:119 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:134 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:117 msgid "Balance" msgstr "Solde" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:103 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:112 msgid "Counter part" msgstr "Contrepartie" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:168 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:134 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:149 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:175 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:135 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:150 msgid "% Difference" msgstr "% Différence" #. module: account_financial_report_webkit -#: help:account.common.balance.report,filter:0 -#: help:open.invoices.webkit,filter:0 -#: help:partner.balance.webkit,filter:0 -#: help:partners.ledger.webkit,filter:0 -#: help:trial.balance.webkit,filter:0 -msgid "" -"Filter by date : no opening balance will be displayed. (opening balance can " -"only be calculated based on period to be correct)." -msgstr "" +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:118 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:111 +msgid "Code" +msgstr "Code" #. module: account_financial_report_webkit -#: constraint:account.account:0 -msgid "" -"Configuration Error! \n" -"You can not select an account type with a deferral method different of " -"\"Unreconciled\" for accounts with internal type \"Payable/Receivable\"! " -msgstr "" +#: code:addons/account_financial_report_webkit/report/common_reports.py:351 +#, python-format +msgid "No period found" +msgstr "Pas de période trouvée" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/partner_balance.py:47 +#: code:addons/account_financial_report_webkit/report/partner_balance.py:54 #: model:ir.actions.act_window,name:account_financial_report_webkit.action_account_partner_balance_menu_webkit #: view:partner.balance.webkit:0 #, python-format @@ -960,53 +1060,51 @@ msgid "Partner Balance" msgstr "Balance des tiers" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/general_ledger.py:146 +#: code:addons/account_financial_report_webkit/report/general_ledger.py:165 #, python-format msgid "Centralized Entries" msgstr "Ecritures centralisées" #. module: account_financial_report_webkit -#: view:general.ledger.webkit:0 -#: view:partner.balance.webkit:0 +#: view:general.ledger.webkit:0 view:partner.balance.webkit:0 #: view:trial.balance.webkit:0 msgid "Accounts Filters" msgstr "Filtre par compte" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:31 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:35 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:44 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:32 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:56 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:36 +#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:37 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:48 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:33 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:28 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:57 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:54 msgid "Dates Filter" msgstr "Filtre par date" #. module: account_financial_report_webkit -#: constraint:account.move.line:0 -msgid "You can not create journal items on closed account." -msgstr "" - -#. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/common_reports.py:64 +#: code:addons/account_financial_report_webkit/report/common_reports.py:74 #: selection:general.ledger.webkit,display_account:0 #, python-format msgid "With transactions or non zero balance" msgstr "Compte mouvementé ou dont le solde n'est pas nul" #. module: account_financial_report_webkit +#: selection:account.aged.trial.balance.webkit,filter:0 #: selection:account.common.balance.report,comp0_filter:0 #: selection:account.common.balance.report,comp1_filter:0 #: selection:account.common.balance.report,comp2_filter:0 #: selection:account.common.balance.report,filter:0 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:45 -#: code:addons/account_financial_report_webkit/wizard/balance_common.py:156 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:46 +#: code:addons/account_financial_report_webkit/wizard/balance_common.py:224 #: selection:general.ledger.webkit,filter:0 #: selection:open.invoices.webkit,filter:0 #: selection:partner.balance.webkit,comp0_filter:0 #: selection:partner.balance.webkit,comp1_filter:0 #: selection:partner.balance.webkit,comp2_filter:0 #: selection:partner.balance.webkit,filter:0 -#: selection:partners.ledger.webkit,filter:0 +#: selection:partners.ledger.webkit,filter:0 view:print.journal.webkit:0 +#: selection:print.journal.webkit,filter:0 #: selection:trial.balance.webkit,comp0_filter:0 #: selection:trial.balance.webkit,comp1_filter:0 #: selection:trial.balance.webkit,comp2_filter:0 @@ -1016,9 +1114,24 @@ msgid "Periods" msgstr "Periodes" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:112 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:127 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:121 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:114 +msgid "Invoice" +msgstr "Facture" + +#. module: account_financial_report_webkit +#: view:open.invoices.webkit:0 +msgid "" +"This report allows you to print or generate a pdf of your open invoices per " +"partner with details of all your payable/receivable account. Exclude full " +"reconciled journal items." +msgstr "" +"Cet état vous permet d'éditer la listes de factures ouvertes à la date de " +"votre choix" + +#. module: account_financial_report_webkit +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:121 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:124 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:96 msgid "Curr. Balance" msgstr "Solde Devise" @@ -1028,64 +1141,123 @@ msgid "Journal Items" msgstr "Écritures comptables" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/common_reports.py:416 +#: code:addons/account_financial_report_webkit/report/common_reports.py:481 #, python-format msgid "Invalid query mode" msgstr "Mode de recherche invalide" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/open_invoices.py:161 +#: code:addons/account_financial_report_webkit/report/open_invoices.py:201 #, python-format msgid "Unsuported filter" msgstr "Filter non supporté" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/common_reports.py:62 +#: code:addons/account_financial_report_webkit/report/common_reports.py:72 #, python-format msgid "All accounts" msgstr "Tout les comptes" #. module: account_financial_report_webkit -#: constraint:account.move.line:0 +#: code:addons/account_financial_report_webkit/report/aged_partner_balance.py:52 +#, python-format +msgid "Current" +msgstr "Courant" + +#. module: account_financial_report_webkit +#: help:partner.balance.webkit,partner_ids:0 msgid "" -"The selected account of your Journal Entry forces to provide a secondary " -"currency. You should remove the secondary currency on the account or select " -"a multi-currency view on the journal." +"Only selected partners will be printed. Leave empty to " +"print all partners." msgstr "" +"Sélectionnez les partenaires à imprimer ou laissez vide pour les imprimer " +"tous." #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:93 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:106 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:102 +#: help:account.aged.trial.balance.webkit,until_date:0 +#: help:open.invoices.webkit,until_date:0 +msgid "" +"The clearance date is essentially a tool used for debtors\n" +" provisionning calculation.\n" +"\n" +"By default, this date is equal to the the end date (ie: 31/12/2011 if you\n" +"select fy 2011).\n" +"\n" +"By amending the clearance date, you will be, for instance, able to answer " +"the\n" +"question : 'based on my last year end debtors open invoices, which invoices\n" +"are still unpaid today (today is my clearance date)?'\n" +msgstr "" +"La date d'apurement est une aide pour le calcul de la provision sur compte " +"client.\n" +"\n" +"Par défaut, elle est égale à la date de fin selectionnée (ex: 31/12/2011 si " +"vous selectionnez 2011).\n" +"\n" +"En la modifant, vous pourrez répondre à la question suivante:'A partir de la " +"listes des factures ouvertes a la fin de l'exercice comptable précedant, " +"lesquelles sont toujours impayées aujourd'hui (aujourd'hui étant la date " +"d'apurement)?'\n" + +#. module: account_financial_report_webkit +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:160 +#, python-format +msgid "No diagnosis message was provided" +msgstr "Aucun message de diagnostic n'a été fourni" + +#. module: account_financial_report_webkit +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:98 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:103 msgid "Period" msgstr "Periode" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/common_reports.py:424 +#: code:addons/account_financial_report_webkit/report/common_reports.py:493 #, python-format msgid "No valid filter" msgstr "Pas de filtre valide" #. module: account_financial_report_webkit -#: view:open.invoices.webkit:0 +#: constraint:account.aged.trial.balance.webkit:0 +#: constraint:open.invoices.webkit:0 +msgid "" +"Clearance date must be the very last date of the last period or " +"later." +msgstr "" +"La date d'apurement doit être postérieure à la date de fin sélectionnée." + +#. module: account_financial_report_webkit +#: view:partner.balance.webkit:0 view:trial.balance.webkit:0 +msgid "{'required': [('filter', '=', 'filter_opening')]}" +msgstr "" + +#. module: account_financial_report_webkit +#: view:account.aged.trial.balance.webkit:0 view:open.invoices.webkit:0 msgid "Clearance Analysis Options" msgstr "Option d'analyse d'apurement de compte tiers" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:97 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:110 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:106 +#: model:ir.model,name:account_financial_report_webkit.model_account_aged_trial_balance_webkit +msgid "Aged partner balanced" +msgstr "Balance âgée des tiers" + +#. module: account_financial_report_webkit +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:102 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:107 msgid "Journal" msgstr "Journal" #. module: account_financial_report_webkit +#: field:account.aged.trial.balance.webkit,amount_currency:0 #: field:general.ledger.webkit,amount_currency:0 #: field:open.invoices.webkit,amount_currency:0 #: field:partners.ledger.webkit,amount_currency:0 +#: field:print.journal.webkit,amount_currency:0 msgid "With Currency" msgstr "Avec devise" #. module: account_financial_report_webkit +#: field:account.aged.trial.balance.webkit,result_selection:0 #: field:open.invoices.webkit,result_selection:0 #: field:partner.balance.webkit,result_selection:0 #: field:partners.ledger.webkit,result_selection:0 @@ -1102,72 +1274,76 @@ msgstr "" "(Rq: pensez à centraliser certains comptes pour réduire le nombre de pages)" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/profit_loss.py:39 -#, python-format -msgid "PROFIT AND LOSS" -msgstr "" - -#. module: account_financial_report_webkit +#: field:account.aged.trial.balance.webkit,chart_account_id:0 #: field:account.common.balance.report,chart_account_id:0 -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:27 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:31 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:40 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:28 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:39 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:52 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:32 +#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:33 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:44 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:29 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:24 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:40 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:53 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:49 #: field:general.ledger.webkit,chart_account_id:0 #: field:open.invoices.webkit,chart_account_id:0 #: field:partner.balance.webkit,chart_account_id:0 #: field:partners.ledger.webkit,chart_account_id:0 +#: field:print.journal.webkit,chart_account_id:0 #: field:trial.balance.webkit,chart_account_id:0 msgid "Chart of Account" msgstr "Plan comptable" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:167 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:133 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:148 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:174 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:134 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:149 msgid "Difference" msgstr "Différence" #. module: account_financial_report_webkit +#: field:account.aged.trial.balance.webkit,target_move:0 #: field:account.common.balance.report,target_move:0 -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:37 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:42 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:51 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:38 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:49 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:62 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:42 +#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:44 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:55 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:39 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:34 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:50 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:63 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:61 #: field:general.ledger.webkit,target_move:0 #: field:open.invoices.webkit,target_move:0 #: field:partner.balance.webkit,target_move:0 #: field:partners.ledger.webkit,target_move:0 +#: field:print.journal.webkit,target_move:0 #: field:trial.balance.webkit,target_move:0 msgid "Target Moves" msgstr "Filtre d'écritures" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:44 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:49 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:58 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:45 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:56 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:69 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:49 +#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:51 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:62 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:46 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:40 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:57 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:70 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:75 msgid "From:" msgstr "Depuis:" #. module: account_financial_report_webkit +#: field:account.aged.trial.balance.webkit,date_to:0 #: field:account.common.balance.report,comp0_date_to:0 #: field:account.common.balance.report,comp1_date_to:0 #: field:account.common.balance.report,comp2_date_to:0 #: field:account.common.balance.report,date_to:0 -#: field:general.ledger.webkit,date_to:0 -#: field:open.invoices.webkit,date_to:0 +#: field:general.ledger.webkit,date_to:0 field:open.invoices.webkit,date_to:0 #: field:partner.balance.webkit,comp0_date_to:0 #: field:partner.balance.webkit,comp1_date_to:0 #: field:partner.balance.webkit,comp2_date_to:0 #: field:partner.balance.webkit,date_to:0 -#: field:partners.ledger.webkit,date_to:0 +#: field:partners.ledger.webkit,date_to:0 field:print.journal.webkit,date_to:0 #: field:trial.balance.webkit,comp0_date_to:0 #: field:trial.balance.webkit,comp1_date_to:0 #: field:trial.balance.webkit,comp2_date_to:0 @@ -1176,6 +1352,7 @@ msgid "End Date" msgstr "Date Fin" #. module: account_financial_report_webkit +#: field:account.aged.trial.balance.webkit,period_from:0 #: field:account.common.balance.report,comp0_period_from:0 #: field:account.common.balance.report,comp1_period_from:0 #: field:account.common.balance.report,comp2_period_from:0 @@ -1187,17 +1364,22 @@ msgstr "Date Fin" #: field:partner.balance.webkit,comp2_period_from:0 #: field:partner.balance.webkit,period_from:0 #: field:partners.ledger.webkit,period_from:0 +#: field:print.journal.webkit,period_from:0 #: field:trial.balance.webkit,comp0_period_from:0 #: field:trial.balance.webkit,comp1_period_from:0 #: field:trial.balance.webkit,comp2_period_from:0 #: field:trial.balance.webkit,period_from:0 msgid "Start Period" -msgstr "Start Period" +msgstr "Période de début" #. module: account_financial_report_webkit -#: field:open.invoices.webkit,until_date:0 -msgid "Clearance date" -msgstr "Date d'apurement" +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:91 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:85 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:98 +#: code:addons/account_financial_report_webkit/wizard/balance_common.py:174 +#, python-format +msgid "Comparison %s" +msgstr "Comparaison %s" #. module: account_financial_report_webkit #: model:ir.model,name:account_financial_report_webkit.model_partners_ledger_webkit @@ -1205,13 +1387,13 @@ msgid "Partner Ledger Report" msgstr "Partner Ledger Report" #. module: account_financial_report_webkit -#: view:open.invoices.webkit:0 -#: view:partner.balance.webkit:0 -#: view:partners.ledger.webkit:0 +#: view:account.aged.trial.balance.webkit:0 view:open.invoices.webkit:0 +#: view:partner.balance.webkit:0 view:partners.ledger.webkit:0 msgid "Partners Filters" msgstr "Filtre Partenaire" #. module: account_financial_report_webkit +#: field:account.aged.trial.balance.webkit,fiscalyear_id:0 #: selection:account.common.balance.report,comp0_filter:0 #: field:account.common.balance.report,comp0_fiscalyear_id:0 #: selection:account.common.balance.report,comp1_filter:0 @@ -1219,12 +1401,14 @@ msgstr "Filtre Partenaire" #: selection:account.common.balance.report,comp2_filter:0 #: field:account.common.balance.report,comp2_fiscalyear_id:0 #: field:account.common.balance.report,fiscalyear_id:0 -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:28 -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:32 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:41 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:29 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:40 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:53 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:33 +#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:34 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:45 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:30 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:25 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:41 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:54 +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:50 #: field:general.ledger.webkit,fiscalyear_id:0 #: field:open.invoices.webkit,fiscalyear_id:0 #: selection:partner.balance.webkit,comp0_filter:0 @@ -1235,6 +1419,7 @@ msgstr "Filtre Partenaire" #: field:partner.balance.webkit,comp2_fiscalyear_id:0 #: field:partner.balance.webkit,fiscalyear_id:0 #: field:partners.ledger.webkit,fiscalyear_id:0 +#: field:print.journal.webkit,fiscalyear_id:0 #: selection:trial.balance.webkit,comp0_filter:0 #: field:trial.balance.webkit,comp0_fiscalyear_id:0 #: selection:trial.balance.webkit,comp1_filter:0 @@ -1246,94 +1431,98 @@ msgid "Fiscal Year" msgstr "Excercice comptable" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:77 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:94 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:78 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:95 msgid "Yes" msgstr "Oui" #. module: account_financial_report_webkit -#: selection:account.common.balance.report,comp0_filter:0 -#: selection:account.common.balance.report,comp1_filter:0 -#: selection:account.common.balance.report,comp2_filter:0 -#: selection:partner.balance.webkit,comp0_filter:0 -#: selection:partner.balance.webkit,comp1_filter:0 -#: selection:partner.balance.webkit,comp2_filter:0 -#: selection:trial.balance.webkit,comp0_filter:0 -#: selection:trial.balance.webkit,comp1_filter:0 -#: selection:trial.balance.webkit,comp2_filter:0 -msgid "No Comparison" -msgstr "No Comparison" +#: field:account.aged.trial.balance.webkit,detailed_by_invoice:0 +msgid "Detailed by Invoice" +msgstr "Détaillé par facture" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/general_ledger.py:64 -#: code:addons/account_financial_report_webkit/report/open_invoices.py:63 -#: code:addons/account_financial_report_webkit/report/partner_balance.py:63 -#: code:addons/account_financial_report_webkit/report/partners_ledger.py:64 -#: code:addons/account_financial_report_webkit/report/profit_loss.py:68 -#: code:addons/account_financial_report_webkit/report/trial_balance.py:64 -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:68 +#: code:addons/account_financial_report_webkit/report/aged_partner_balance.py:102 +#: code:addons/account_financial_report_webkit/report/general_ledger.py:70 +#: code:addons/account_financial_report_webkit/report/open_invoices.py:83 +#: code:addons/account_financial_report_webkit/report/partner_balance.py:71 +#: code:addons/account_financial_report_webkit/report/partners_ledger.py:71 +#: code:addons/account_financial_report_webkit/report/print_journal.py:75 +#: code:addons/account_financial_report_webkit/report/trial_balance.py:71 #, python-format msgid "Page" msgstr "Page" #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:50 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:54 msgid "Partners Filter" msgstr "Filtre Partenaire" #. module: account_financial_report_webkit #: selection:account.common.balance.report,display_account:0 -#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:61 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:75 -#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:73 -#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:86 +#: report:addons/account_financial_report_webkit/report/templates/account_report_general_ledger.mako:66 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partner_balance.mako:79 +#: report:addons/account_financial_report_webkit/report/templates/account_report_print_journal.mako:57 +#: report:addons/account_financial_report_webkit/report/templates/account_report_profit_loss.mako:74 +#: report:addons/account_financial_report_webkit/report/templates/account_report_trial_balance.mako:87 #: selection:general.ledger.webkit,display_account:0 #: selection:partner.balance.webkit,display_account:0 +#: selection:print.journal.webkit,display_account:0 #: selection:trial.balance.webkit,display_account:0 msgid "All" msgstr "Tous" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/profit_loss.py:46 +#: view:partner.balance.webkit:0 +msgid "" +"This report is an analysis done by a partner, It is a PDF report containing " +"one line per partner representing the cumulative credit balance" +msgstr "Ce rapport montre les soldes ouverts par client ou fourniseurs." + +#. module: account_financial_report_webkit +#: code:addons/account_financial_report_webkit/report/aged_partner_balance.py:53 #, python-format -msgid "Profit and Loss" -msgstr "" +msgid "Age ≤ %s d." +msgstr "Âge ≤ %s j." #. module: account_financial_report_webkit -#: report:addons/account_financial_report_webkit/report/templates/account_report_open_invoices.mako:99 -#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:95 +#: report:addons/account_financial_report_webkit/report/templates/account_report_partners_ledger.mako:96 msgid "No Partner" msgstr "Pas de partenaire" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/open_invoices.py:41 +#: code:addons/account_financial_report_webkit/report/open_invoices.py:57 #, python-format msgid "OPEN INVOICES REPORT" msgstr "ETAT DES FACTURES OUVERTES" #. module: account_financial_report_webkit -#: code:addons/account_financial_report_webkit/report/partners_ledger.py:41 -#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:58 +#: code:addons/account_financial_report_webkit/report/partners_ledger.py:44 #, python-format msgid "PARTNER LEDGER" msgstr "LIVRE DES TIERS" #. module: account_financial_report_webkit -#: selection:account.common.balance.report,target_move:0 -#: code:addons/account_financial_report_webkit/report/common_reports.py:84 -#: selection:general.ledger.webkit,target_move:0 -#: selection:open.invoices.webkit,target_move:0 -#: selection:partner.balance.webkit,target_move:0 -#: selection:partners.ledger.webkit,target_move:0 -#: selection:trial.balance.webkit,target_move:0 +#: code:addons/account_financial_report_webkit/report/webkit_parser_header_fix.py:162 #, python-format -msgid "All Entries" -msgstr "Ecritures validées + brouillon" +msgid "The following diagnosis message was provided:\n" +msgstr "Le message de diagnostic suivant a été fourni :\n" #. module: account_financial_report_webkit -#: sql_constraint:account.move.line:0 -msgid "Wrong credit or debit value in accounting entry !" +#: constraint:account.common.balance.report:0 +#: constraint:general.ledger.webkit:0 constraint:partner.balance.webkit:0 +#: constraint:trial.balance.webkit:0 +msgid "" +"When no Fiscal year is selected, you must choose to filter by " +"periods or by date." msgstr "" +"Lorsqu'aucun exercice comptable n'est sélectionné, vous devez choisir de " +"filtrer par périodes ou par dates." + +#. module: account_financial_report_webkit +#: report:addons/account_financial_report_webkit/report/templates/aged_trial_webkit.mako:188 +msgid "Total" +msgstr "Total" #. module: account_financial_report_webkit #: field:account.common.balance.report,comp0_filter:0 @@ -1346,4 +1535,13 @@ msgstr "" #: field:trial.balance.webkit,comp1_filter:0 #: field:trial.balance.webkit,comp2_filter:0 msgid "Compare By" -msgstr "Compare By" +msgstr "Comparer Par" + +#~ msgid "balance" +#~ msgstr "Solde" + +#~ msgid "code" +#~ msgstr "Code" + +#~ msgid "Due" +#~ msgstr "En attente" diff --git a/account_financial_report_webkit/report/aged_partner_balance.py b/account_financial_report_webkit/report/aged_partner_balance.py index 721b787e..fa0110b3 100644 --- a/account_financial_report_webkit/report/aged_partner_balance.py +++ b/account_financial_report_webkit/report/aged_partner_balance.py @@ -49,8 +49,8 @@ RANGES = make_ranges(120, 30) def make_ranges_titles(): """Generates title to be used by mako""" - titles = [_('Due')] - titles += [_(u'Overdue ≤ %s d.') % x[1] for x in RANGES[1:-1]] + titles = [_('Current')] + titles += [_(u'Age ≤ %s d.') % x[1] for x in RANGES[1:-1]] titles.append(_('Older')) return titles @@ -113,7 +113,8 @@ class AccountAgedTrialBalanceWebkit(PartnersOpenInvoicesWebkit): return RANGES_TITLES def set_context(self, objects, data, ids, report_type=None): - """Populate aged_lines, aged_balance, aged_percents attributes + """Populate aged_lines, aged_lines_by_invoice, aged_balance, + aged_percents attributes on each account browse record that will be used by mako template The browse record are store in :attr:`objects` @@ -134,17 +135,23 @@ class AccountAgedTrialBalanceWebkit(PartnersOpenInvoicesWebkit): ids, report_type=report_type ) - + self.localcontext.update({ + 'aging_method': data['form']['aging_method'] + }) for acc in self.objects: acc.aged_lines = {} + acc.aged_lines_by_invoice = {} acc.agged_totals = {} acc.agged_percents = {} for part_id, partner_lines in acc.ledger_lines.items(): - aged_lines = self.compute_aged_lines(part_id, - partner_lines, - data) - if aged_lines: - acc.aged_lines[part_id] = aged_lines + partner_aged_lines, invoice_aged_lines = \ + self.compute_aged_lines(part_id, + partner_lines, + data) + if partner_aged_lines: + acc.aged_lines[part_id] = partner_aged_lines + if data['form']['detailed_by_invoice']: + acc.aged_lines_by_invoice[part_id] = invoice_aged_lines acc.aged_totals = totals = self.compute_totals( acc.aged_lines.values()) acc.aged_percents = self.compute_percents(totals) @@ -161,26 +168,58 @@ class AccountAgedTrialBalanceWebkit(PartnersOpenInvoicesWebkit): :param ledger_lines: generated by parent :class:`.open_invoices.PartnersOpenInvoicesWebkit` - :returns: dict of computed aged lines + :returns: + - dict of computed aged lines eg {'balance': 1000.0, - 'aged_lines': {(90, 120): 0.0, ...} - + 'aged_lines': {(90, 120): 0.0, ...} + } + - dict of computed aged lines by invoice + eg {'SAJ/2015/003': {'balance: 700.0 + 'aged_lines': {(90, 120): 0.0, ...}, + 'SAJ/2015/004': {'balance: 300.0 + 'aged_lines': {(90, 120): 300.0, ...}, + } """ + detailed_by_invoice = data['form']['detailed_by_invoice'] + aging_method = data['form']['aging_method'] + lines_to_age = self.filter_lines(partner_id, ledger_lines) - res = {} + res_by_partner = {} + res_by_invoice = {} end_date = self._get_end_date(data) - aged_lines = dict.fromkeys(RANGES, 0.0) + partner_aged_lines = dict.fromkeys(RANGES, 0.0) reconcile_lookup = self.get_reconcile_count_lookup(lines_to_age) - res['aged_lines'] = aged_lines + res_by_partner['aged_lines'] = partner_aged_lines + for line in lines_to_age: compute_method = self.get_compute_method(reconcile_lookup, partner_id, - line) + line, + aging_method) delay = compute_method(line, end_date, ledger_lines) classification = self.classify_line(partner_id, delay) - aged_lines[classification] += line['debit'] - line['credit'] - self.compute_balance(res, aged_lines) - return res + amount = line['debit'] - line['credit'] + partner_aged_lines[classification] += amount + + # Populate the aged_lines_by_invoice dictionary if the option has + # been chosen in the wizard + if detailed_by_invoice: + invoice = line['invoice_number'] + if invoice not in res_by_invoice: + res_by_invoice[invoice] = { + 'aged_lines': dict.fromkeys(RANGES, 0.0), + } + res_by_invoice[invoice][ + 'aged_lines'][classification] += amount + + if detailed_by_invoice: + for invoice in res_by_invoice: + self.compute_balance( + res_by_invoice[invoice], + res_by_invoice[invoice]['aged_lines'] + ) + self.compute_balance(res_by_partner, partner_aged_lines) + return res_by_partner, res_by_invoice def _get_end_date(self, data): """Retrieve end date to be used to compute delay. @@ -286,7 +325,8 @@ class AccountAgedTrialBalanceWebkit(PartnersOpenInvoicesWebkit): reference_line, end_date) - def get_compute_method(self, reconcile_lookup, partner_id, line): + def get_compute_method(self, reconcile_lookup, partner_id, line, + aging_method): """Get the function that should compute the delay for a given line :param reconcile_lookup: dict of reconcile group by id and count @@ -300,7 +340,8 @@ class AccountAgedTrialBalanceWebkit(PartnersOpenInvoicesWebkit): """ if reconcile_lookup.get(line['rec_id'], 0.0) > 1: return self.compute_delay_from_partial_rec - elif line['jtype'] in INV_TYPE and line.get('date_maturity'): + elif line['jtype'] in INV_TYPE and line.get('date_maturity') \ + and aging_method == 'due_date': return self.compute_delay_from_maturity else: return self.compute_delay_from_date diff --git a/account_financial_report_webkit/report/templates/aged_trial_webkit.mako b/account_financial_report_webkit/report/templates/aged_trial_webkit.mako index 930ca77c..3ce44c32 100644 --- a/account_financial_report_webkit/report/templates/aged_trial_webkit.mako +++ b/account_financial_report_webkit/report/templates/aged_trial_webkit.mako @@ -48,6 +48,7 @@
${_('Chart of Account')}
${_('Fiscal Year')}
+
${_('Aged From')}
%if filter_form(data) == 'filter_date': ${_('Dates Filter')} @@ -63,6 +64,13 @@
${ chart_account.name }
${ fiscalyear.name if fiscalyear else '-' }
+
+ %if aging_method == 'due_date': + ${_('Due Date')} + %else: + ${_('Invoice Date')} + %endif +
${_('From:')} %if filter_form(data) == 'filter_date': @@ -100,9 +108,13 @@ ## partner
${_('Partner')}
## code -
${_('code')}
+
${_('Code')}
+ ## invoice for detailed reports + %if acc.aged_lines_by_invoice: +
${_('Invoice')}
+ %endif ## balance -
${_('balance')}
+
${_('Balance')}
## Classifications %for title in ranges_titles:
${title}
@@ -110,27 +122,74 @@
- %for partner_name, p_id, p_ref, p_name in acc.partners_order: - %if acc.aged_lines.get(p_id): -
- <%line = acc.aged_lines[p_id]%> - <%percents = acc.aged_percents%> - <%totals = acc.aged_totals%> -
${partner_name}
-
${p_ref or ''}
+ %if not acc.aged_lines_by_invoice: + %for partner_name, p_id, p_ref, p_name in acc.partners_order: + %if acc.aged_lines.get(p_id): +
+ <%line = acc.aged_lines[p_id]%> + <%percents = acc.aged_percents%> + <%totals = acc.aged_totals%> +
${partner_name}
+
${p_ref or ''}
-
${formatLang(line.get('balance') or 0.0) | amount}
- %for classif in ranges: -
- ${formatLang(line['aged_lines'][classif] or 0.0) | amount} -
- %endfor -
- %endif - %endfor +
${formatLang(line.get('balance') or 0.0) | amount}
+ %for classif in ranges: +
+ ${formatLang(line['aged_lines'][classif] or 0.0) | amount} +
+ %endfor +
+ %endif + %endfor + %else: + %for partner_name, p_id, p_ref, p_name in acc.partners_order: + %if acc.aged_lines.get(p_id): +
+ <%line = acc.aged_lines[p_id]%> + <%percents = acc.aged_percents%> + <%totals = acc.aged_totals%> +
${partner_name}
+
${p_ref or ''}
+
+
+ %for classif in ranges: +
+ %endfor +
+ %for invoice in acc.aged_lines_by_invoice[p_id]: + <%invoice_line = acc.aged_lines_by_invoice[p_id][invoice]%> +
+
+
+
${invoice}
+
${formatLang(invoice_line.get('balance') or 0.0) | amount}
+ %for classif in ranges: +
+ ${formatLang(invoice_line['aged_lines'][classif] or 0.0) | amount} +
+ %endfor +
+ %endfor +
+
+
+
Total
+
${formatLang(line.get('balance') or 0.0) | amount}
+ %for classif in ranges: +
+ ${formatLang(line['aged_lines'][classif] or 0.0) | amount} +
+ %endfor +
+ %endif + %endfor + %endif
${_('Total')}
+ %if acc.aged_lines_by_invoice: +
+ %endif
${formatLang(totals['balance']) | amount}
%for classif in ranges:
${formatLang(totals[classif]) | amount}
@@ -140,6 +199,9 @@
${_('Percents')}
+ %if acc.aged_lines_by_invoice: +
+ %endif
%for classif in ranges:
${formatLang(percents[classif]) | amount}%
diff --git a/account_financial_report_webkit/wizard/aged_partner_balance_wizard.py b/account_financial_report_webkit/wizard/aged_partner_balance_wizard.py index a3126489..91751684 100644 --- a/account_financial_report_webkit/wizard/aged_partner_balance_wizard.py +++ b/account_financial_report_webkit/wizard/aged_partner_balance_wizard.py @@ -18,7 +18,7 @@ # along with this program. If not, see . # ############################################################################## -from openerp.osv import orm +from openerp.osv import orm, fields class AccountAgedTrialBalance(orm.TransientModel): @@ -31,6 +31,36 @@ class AccountAgedTrialBalance(orm.TransientModel): _name = "account.aged.trial.balance.webkit" _description = "Aged partner balanced" + _columns = { + 'detailed_by_invoice': fields.boolean( + "Detailed by Invoice", + help="Provide an aged partner balance report with invoice " + "details" + ), + 'aging_method': fields.selection( + [('due_date', 'Due Date'), + ('invoice_date', 'Invoice Date')], + 'Aged from', + required=True + ), + } + + _defaults = { + 'aging_method': 'due_date', + } + + def pre_print_report(self, cr, uid, ids, data, context=None): + data = super(AccountAgedTrialBalance, self).pre_print_report( + cr, uid, ids, data, context) + # will be used to attach the report on the main account + data['ids'] = [data['form']['chart_account_id']] + vals = self.read(cr, uid, ids, + ['detailed_by_invoice', + 'aging_method'], + context=context)[0] + data['form'].update(vals) + return data + def _print_report(self, cr, uid, ids, data, context=None): # we update form with display account value data = self.pre_print_report(cr, uid, ids, data, context=context) diff --git a/account_financial_report_webkit/wizard/aged_partner_balance_wizard.xml b/account_financial_report_webkit/wizard/aged_partner_balance_wizard.xml index 2d0d7273..9baa5e73 100644 --- a/account_financial_report_webkit/wizard/aged_partner_balance_wizard.xml +++ b/account_financial_report_webkit/wizard/aged_partner_balance_wizard.xml @@ -18,9 +18,13 @@ 4 + + + + diff --git a/mis_builder/__init__.py b/mis_builder/__init__.py new file mode 100644 index 00000000..386e1d1d --- /dev/null +++ b/mis_builder/__init__.py @@ -0,0 +1,27 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# mis_builder module for Odoo, Management Information System Builder +# Copyright (C) 2014-2015 ACSONE SA/NV () +# +# This file is a part of mis_builder +# +# mis_builder is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License v3 or later +# as published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# mis_builder 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 v3 or later for more details. +# +# You should have received a copy of the GNU Affero General Public License +# v3 or later along with this program. +# If not, see . +# +############################################################################## + +from . import models +from . import wizard +from . import report diff --git a/mis_builder/__openerp__.py b/mis_builder/__openerp__.py new file mode 100644 index 00000000..8c3990a8 --- /dev/null +++ b/mis_builder/__openerp__.py @@ -0,0 +1,172 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# mis_builder module for Odoo, Management Information System Builder +# Copyright (C) 2014-2015 ACSONE SA/NV () +# +# This file is a part of mis_builder +# +# mis_builder is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License v3 or later +# as published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# mis_builder 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 v3 or later for more details. +# +# You should have received a copy of the GNU Affero General Public License +# v3 or later along with this program. +# If not, see . +# +############################################################################## + +{ + 'name': 'MIS Builder', + 'version': '0.2', + 'category': 'Reporting', + 'summary': """ + Build 'Management Information System' Reports and Dashboards + """, + 'description': """ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +=========== +MIS Builder +=========== + +This module allows you to build Management Information Systems dashboards. +Such style of reports presents KPI in rows and time periods in columns. +Reports mainly fetch data from account moves, but can also combine data coming +from arbitrary Odoo models. Reports can be exported to PDF, Excel and they +can be added to Odoo dashboards. + +Installation +============ + +There is no specific installation procedure for this module. + +Configuration and Usage +======================= + +To configure this module, you need to: + +* Go to Accounting > Configuration > Financial Reports > MIS Report Templates +where you can create report templates by defining KPI's. KPI's constitute +the rows of your reports. Such report templates are time independent. + +* Then in Accounting > Reporting > MIS Reports you can create report instance +by binding the templates to time period, hence defining the columns of your +reports. + +* From the MIS Report view, you can preview the report, add it to and Odoo +dashboard, and export it to Excel. + +Developer notes +=============== + +A typical extension is to provide a mechanism to filter reports on analytic +dimensions or operational units. To implement this, you can override +_get_additional_move_line_filter and _get_additional_filter to further +filter move lines or queries based on a user selection. A typical use case +could be to add an analytic account field on mis.report.instance, or even +on mis.report.instance.period if you want different columns to show different +analytic accounts. + +Known issues / Roadmap +====================== + +* Add 'Fiscal Year' period type. + +* Allow selecting accounts by type. This is currently possible by expressing + a query such as balp[][('account_id.user_type.code', '=', ...)]. + This will work but would be more efficient if one could write balp[ + user_type=...], as it would involve much less queries to the database. + +* More tests should be added. The first part is creating test data, then it +will be easier. At the minimum, We need the following test data: + + * one account charts with a few normal accounts and view accounts, + * two fiscal years, + * an opening entry in the second fiscal year, + * to test multi-company consolidation, we need a second company with it's own + account chart and two fiscal years, but without opening entry; we also need + a third company which is the parent of the other two and has a + consolidation chart of account. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and +welcomed feedback `here `_. + +Credits +======= + +Contributors +------------ + +* Stéphane Bidoul +* Laetitia Gangloff +* Adrien Peiffer +* Jordi Ballester + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit http://odoo-community.org. + """, + 'author': 'ACSONE SA/NV,' + 'Odoo Community Association (OCA)', + 'website': 'http://acsone.eu', + 'depends': [ + 'account', + 'report_xls', # OCA/reporting-engine + ], + 'data': [ + 'wizard/mis_builder_dashboard.xml', + 'views/mis_builder.xml', + 'security/ir.model.access.csv', + 'security/mis_builder_security.xml', + ], + 'test': [ + ], + 'demo': [ + 'tests/mis.report.kpi.csv', + 'tests/mis.report.query.csv', + 'tests/mis.report.csv', + 'tests/mis.report.instance.period.csv', + 'tests/mis.report.instance.csv', + ], + 'js': [ + 'static/src/js/*.js' + ], + 'css': [ + 'static/src/css/*.css' + ], + 'qweb': [ + 'static/src/xml/*.xml' + ], + 'installable': True, + 'application': True, + 'auto_install': False, + 'license': 'AGPL-3', +} diff --git a/mis_builder/migrations/7.0.0.2/pre-migration.py b/mis_builder/migrations/7.0.0.2/pre-migration.py new file mode 100644 index 00000000..6530bda0 --- /dev/null +++ b/mis_builder/migrations/7.0.0.2/pre-migration.py @@ -0,0 +1,42 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# mis_builder module for Odoo, Management Information System Builder +# Copyright (C) 2014-2015 ACSONE SA/NV () +# +# This file is a part of mis_builder +# +# mis_builder is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License v3 or later +# as published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# mis_builder 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 v3 or later for more details. +# +# You should have received a copy of the GNU Affero General Public License +# v3 or later along with this program. +# If not, see . +# +############################################################################## + + +def migrate(cr, version): + if not version: + return + + cr.execute(""" + ALTER TABLE mis_report_instance + ADD COLUMN root_account INTEGER + """) + cr.execute(""" + UPDATE mis_report_instance + SET root_account = ( + SELECT id FROM account_account + WHERE parent_id IS NULL + AND company_id = mis_report_instance.company_id + LIMIT 1 + ) + """) diff --git a/mis_builder/models/__init__.py b/mis_builder/models/__init__.py new file mode 100644 index 00000000..e99af9da --- /dev/null +++ b/mis_builder/models/__init__.py @@ -0,0 +1,26 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# mis_builder module for Odoo, Management Information System Builder +# Copyright (C) 2014-2015 ACSONE SA/NV () +# +# This file is a part of mis_builder +# +# mis_builder is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License v3 or later +# as published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# mis_builder 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 v3 or later for more details. +# +# You should have received a copy of the GNU Affero General Public License +# v3 or later along with this program. +# If not, see . +# +############################################################################## + +from . import mis_builder +from . import aep diff --git a/mis_builder/models/aep.py b/mis_builder/models/aep.py new file mode 100644 index 00000000..98b1276d --- /dev/null +++ b/mis_builder/models/aep.py @@ -0,0 +1,433 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# mis_builder module for Odoo, Management Information System Builder +# Copyright (C) 2014-2015 ACSONE SA/NV () +# +# This file is a part of mis_builder +# +# mis_builder is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License v3 or later +# as published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# mis_builder 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 v3 or later for more details. +# +# You should have received a copy of the GNU Affero General Public License +# v3 or later along with this program. +# If not, see . +# +############################################################################## + +import re +from collections import defaultdict + +from openerp.exceptions import Warning +from openerp import pooler +from openerp.osv import expression +from openerp.tools.safe_eval import safe_eval +from openerp.tools.translate import _ + +MODE_VARIATION = 'p' +MODE_INITIAL = 'i' +MODE_END = 'e' + + +class AccountingExpressionProcessor(object): + """ Processor for accounting expressions. + + Expressions of the form [accounts][optional move line domain] + are supported, where: + * field is bal, crd, deb + * mode is i (initial balance), e (ending balance), + p (moves over period) + * accounts is a list of accounts, possibly containing % wildcards + * an optional domain on move lines allowing filters on eg analytic + accounts or journal + + Examples: + * bal[70]: variation of the balance of moves on account 70 + over the period (it is the same as balp[70]); + * bali[70,60]: balance of accounts 70 and 60 at the start of period; + * bale[1%]: balance of accounts starting with 1 at end of period. + + How to use: + * repeatedly invoke parse_expr() for each expression containing + accounting variables as described above; this lets the processor + group domains and modes and accounts; + * when all expressions have been parsed, invoke done_parsing() + to notify the processor that it can prepare to query (mainly + search all accounts - children, consolidation - that will need to + be queried; + * for each period, call do_queries(), then call replace_expr() for each + expression to replace accounting variables with their resulting value + for the given period. + + How it works: + * by accumulating the expressions before hand, it ensures to do the + strict minimum number of queries to the database (for each period, + one query per domain and mode); + * it queries using the orm read_group which reduces to a query with + sum on debit and credit and group by on account_id (note: it seems + the orm then does one query per account to fetch the account + name...); + * additionally, one query per view/consolidation account is done to + discover the children accounts. + """ + + ACC_RE = re.compile(r"(?P\bbal|\bcrd|\bdeb)" + r"(?P[pise])?" + r"(?P_[a-zA-Z0-9]+|\[.*?\])" + r"(?P\[.*?\])?") + + def __init__(self, cursor): + self.pool = pooler.get_pool(cursor.dbname) + # before done_parsing: {(domain, mode): set(account_codes)} + # after done_parsing: {(domain, mode): list(account_ids)} + self._map_account_ids = defaultdict(set) + self._account_ids_by_code = defaultdict(set) + + def _load_account_codes(self, cr, uid, account_codes, root_account, + context=None): + account_obj = self.pool['account.account'] + exact_codes = set() + like_codes = set() + for account_code in account_codes: + if account_code in self._account_ids_by_code: + continue + if account_code is None: + # by convention the root account is keyed as + # None in _account_ids_by_code, so it is consistent + # with what _parse_match_object returns for an + # empty list of account codes, ie [None] + exact_codes.add(root_account.code) + elif '%' in account_code: + like_codes.add(account_code) + else: + exact_codes.add(account_code) + account_ids = account_obj.search( + cr, uid, + [('code', 'in', list(exact_codes)), + ('parent_id', 'child_of', root_account.id)], + context=context) + for account in account_obj.browse( + cr, uid, account_ids, context=context): + if account.code == root_account.code: + code = None + else: + code = account.code + if account.type in ('view', 'consolidation'): + self._account_ids_by_code[code].update( + account_obj._get_children_and_consol( + cr, uid, + [account.id], + context=context)) + else: + self._account_ids_by_code[code].add(account.id) + for like_code in like_codes: + for account_id in account_obj.\ + search(cr, uid, + [('code', 'like', like_code), + ('parent_id', 'child_of', root_account.id)], + context=context): + account = account_obj.browse(cr, uid, account_id, + context=context) + if account.type in ('view', 'consolidation'): + self._account_ids_by_code[like_code].update( + account_obj._get_children_and_consol( + cr, uid, + self.env.cr, self.env.uid, + [account.id], + context=context)) + else: + self._account_ids_by_code[like_code].add(account.id) + + def _parse_match_object(self, mo): + """Split a match object corresponding to an accounting variable + + Returns field, mode, [account codes], (domain expression). + """ + field, mode, account_codes, domain = mo.groups() + if not mode: + mode = MODE_VARIATION + elif mode == 's': + mode = MODE_END + if account_codes.startswith('_'): + account_codes = account_codes[1:] + else: + account_codes = account_codes[1:-1] + if account_codes.strip(): + account_codes = [a.strip() for a in account_codes.split(',')] + else: + account_codes = [None] + domain = domain or '[]' + domain = tuple(safe_eval(domain)) + return field, mode, account_codes, domain + + def parse_expr(self, expr): + """Parse an expression, extracting accounting variables. + + Domains and accounts are extracted and stored in the map + so when all expressions have been parsed, we know which + account codes to query for each domain and mode. + """ + for mo in self.ACC_RE.finditer(expr): + _, mode, account_codes, domain = self._parse_match_object(mo) + key = (domain, mode) + self._map_account_ids[key].update(account_codes) + + def done_parsing(self, cr, uid, root_account, context=None): + """Load account codes and replace account codes by + account ids in map.""" + for key, account_codes in self._map_account_ids.items(): + self._load_account_codes(cr, uid, account_codes, root_account, + context=context) + account_ids = set() + for account_code in account_codes: + account_ids.update(self._account_ids_by_code[account_code]) + self._map_account_ids[key] = list(account_ids) + + @classmethod + def has_account_var(cls, expr): + """Test if an string contains an accounting variable.""" + return bool(cls.ACC_RE.search(expr)) + + def get_aml_domain_for_expr(self, cr, uid, expr, + date_from, date_to, + period_from, period_to, + target_move, context=None): + """ Get a domain on account.move.line for an expression. + + Prerequisite: done_parsing() must have been invoked. + + Returns a domain that can be used to search on account.move.line. + """ + aml_domains = [] + date_domain_by_mode = {} + for mo in self.ACC_RE.finditer(expr): + field, mode, account_codes, domain = self._parse_match_object(mo) + aml_domain = list(domain) + account_ids = set() + for account_code in account_codes: + account_ids.update(self._account_ids_by_code[account_code]) + aml_domain.append(('account_id', 'in', tuple(account_ids))) + if field == 'crd': + aml_domain.append(('credit', '>', 0)) + elif field == 'deb': + aml_domain.append(('debit', '>', 0)) + aml_domains.append(expression.normalize_domain(aml_domain)) + if mode not in date_domain_by_mode: + date_domain_by_mode[mode] = \ + self.get_aml_domain_for_dates(cr, uid, + date_from, date_to, + period_from, period_to, + mode, target_move, + context=context) + return expression.OR(aml_domains) + \ + expression.OR(date_domain_by_mode.values()) + + def _period_has_moves(self, cr, uid, period, context=None): + move_model = self.pool['account.move'] + return bool(move_model.search(cr, uid, + [('period_id', '=', period.id)], + limit=1, context=context)) + + def _get_previous_opening_period(self, cr, uid, period, company_id, + context=None): + period_model = self.pool['account.period'] + period_ids = period_model.search( + cr, uid, + [('date_start', '<=', period.date_start), + ('special', '=', True), + ('company_id', '=', company_id)], + order="date_start desc", + limit=1, + context=context) + periods = period_model.browse(cr, uid, period_ids, context=context) + return periods and periods[0] + + def _get_previous_normal_period(self, cr, uid, period, company_id, + context=None): + period_model = self.pool['account.period'] + period_ids = period_model.search( + cr, uid, + [('date_start', '<', period.date_start), + ('special', '=', False), + ('company_id', '=', company_id)], + order="date_start desc", + limit=1, + context=context) + periods = period_model.browse(cr, uid, period_ids, context=context) + return periods and periods[0] + + def _get_first_normal_period(self, cr, uid, company_id, context=None): + period_model = self.pool['account.period'] + period_ids = period_model.search( + cr, uid, + [('special', '=', False), + ('company_id', '=', company_id)], + order="date_start asc", + limit=1, + context=context) + periods = period_model.browse(cr, uid, period_ids, context=context) + return periods and periods[0] + + def _get_period_ids_between(self, cr, uid, period_from, period_to, + company_id, context=None): + period_model = self.pool['account.period'] + period_ids = period_model.search( + cr, uid, + [('date_start', '>=', period_from.date_start), + ('date_stop', '<=', period_to.date_stop), + ('special', '=', False), + ('company_id', '=', company_id)], + context=context) + if period_from.special: + period_ids.append(period_from.id) + return period_ids + + def _get_period_company_ids(self, cr, uid, period_from, period_to, + context=None): + period_model = self.pool['account.period'] + period_ids = period_model.search( + cr, uid, + [('date_start', '>=', period_from.date_start), + ('date_stop', '<=', period_to.date_stop), + ('special', '=', False)], + context=context) + periods = period_model.browse(cr, uid, period_ids, context=context) + return set([p.company_id.id for p in periods]) + + def _get_period_ids_for_mode(self, cr, uid, period_from, period_to, mode, + context=None): + assert not period_from.special + assert not period_to.special + assert period_from.company_id == period_to.company_id + assert period_from.date_start <= period_to.date_start + period_ids = [] + for company_id in self._get_period_company_ids(cr, uid, + period_from, period_to, + context=context): + if mode == MODE_VARIATION: + period_ids.extend(self._get_period_ids_between( + cr, uid, + period_from, period_to, company_id, + context=context)) + else: + if mode == MODE_INITIAL: + period_to = self._get_previous_normal_period( + cr, uid, + period_from, company_id, + context=context) + # look for opening period with moves + opening_period = self._get_previous_opening_period( + cr, uid, + period_from, company_id, + context=context) + if opening_period and \ + self._period_has_moves(cr, uid, opening_period, + context=context): + # found opening period with moves + if opening_period.date_start == period_from.date_start and\ + mode == MODE_INITIAL: + # if the opening period has the same start date as + # period_from, then we'll find the initial balance + # in the initial period and that's it + period_ids.append(opening_period.id) + continue + period_from = opening_period + else: + # no opening period with moves, + # use very first normal period + period_from = self._get_first_normal_period( + cr, uid, company_id, context=context) + if period_to: + period_ids.extend(self._get_period_ids_between( + cr, uid, + period_from, period_to, company_id, + context=context)) + return period_ids + + def get_aml_domain_for_dates(self, cr, uid, date_from, date_to, + period_from, period_to, + mode, + target_move, + context=None): + if period_from and period_to: + period_ids = self._get_period_ids_for_mode( + cr, uid, + period_from, period_to, mode, + context=context) + domain = [('period_id', 'in', period_ids)] + else: + if mode == MODE_VARIATION: + domain = [('date', '>=', date_from), ('date', '<=', date_to)] + else: + raise Warning(_("Modes i and e are only applicable for " + "fiscal periods")) + if target_move == 'posted': + domain.append(('move_id.state', '=', 'posted')) + return expression.normalize_domain(domain) + + def do_queries(self, cr, uid, date_from, date_to, period_from, period_to, + target_move, additional_move_line_filter=None, + context=None): + """Query sums of debit and credit for all accounts and domains + used in expressions. + + This method must be executed after done_parsing(). + """ + aml_model = self.pool['account.move.line'] + # {(domain, mode): {account_id: (debit, credit)}} + self._data = defaultdict(dict) + domain_by_mode = {} + for key in self._map_account_ids: + domain, mode = key + if mode not in domain_by_mode: + domain_by_mode[mode] = \ + self.get_aml_domain_for_dates(cr, uid, + date_from, date_to, + period_from, period_to, + mode, target_move, + context=context) + domain = list(domain) + domain_by_mode[mode] + domain.append(('account_id', 'in', self._map_account_ids[key])) + if additional_move_line_filter: + domain.extend(additional_move_line_filter) + # fetch sum of debit/credit, grouped by account_id + accs = aml_model.read_group(cr, uid, domain, + ['debit', 'credit', 'account_id'], + ['account_id'], + context=context) + for acc in accs: + self._data[key][acc['account_id'][0]] = \ + (acc['debit'] or 0.0, acc['credit'] or 0.0) + + def replace_expr(self, expr): + """Replace accounting variables in an expression by their amount. + + Returns a new expression string. + + This method must be executed after do_queries(). + """ + def f(mo): + field, mode, account_codes, domain = self._parse_match_object(mo) + key = (domain, mode) + account_ids_data = self._data[key] + v = 0.0 + for account_code in account_codes: + account_ids = self._account_ids_by_code[account_code] + for account_id in account_ids: + debit, credit = \ + account_ids_data.get(account_id, (0.0, 0.0)) + if field == 'bal': + v += debit - credit + elif field == 'deb': + v += debit + elif field == 'crd': + v += credit + return '(' + repr(v) + ')' + return self.ACC_RE.sub(f, expr) diff --git a/mis_builder/models/aggregate.py b/mis_builder/models/aggregate.py new file mode 100644 index 00000000..f098a4c5 --- /dev/null +++ b/mis_builder/models/aggregate.py @@ -0,0 +1,149 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# mis_builder module for Odoo, Management Information System Builder +# Copyright (C) 2014-2015 ACSONE SA/NV () +# +# This file is a part of mis_builder +# +# mis_builder is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License v3 or later +# as published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# mis_builder 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 v3 or later for more details. +# +# You should have received a copy of the GNU Affero General Public License +# v3 or later along with this program. +# If not, see . +# +############################################################################## + + +def _sum(l): + """ Same as stdlib sum but returns None instead of 0 + in case of empty sequence. + + >>> sum([1]) + 1 + >>> _sum([1]) + 1 + >>> sum([1, 2]) + 3 + >>> _sum([1, 2]) + 3 + >>> sum([]) + 0 + >>> _sum([]) + """ + if not l: + return None + return sum(l) + + +def _avg(l): + """ Arithmetic mean of a sequence. Returns None in case of empty sequence. + + >>> _avg([1]) + 1.0 + >>> _avg([1, 2]) + 1.5 + >>> _avg([]) + """ + if not l: + return None + return sum(l) / float(len(l)) + + +def _min(*args): + """ Same as stdlib min but returns None instead of exception + in case of empty sequence. + + >>> min(1, 2) + 1 + >>> _min(1, 2) + 1 + >>> min([1, 2]) + 1 + >>> _min([1, 2]) + 1 + >>> min(1) + Traceback (most recent call last): + File "", line 1, in ? + TypeError: 'int' object is not iterable + >>> _min(1) + Traceback (most recent call last): + File "", line 1, in ? + TypeError: 'int' object is not iterable + >>> min([1]) + 1 + >>> _min([1]) + 1 + >>> min() + Traceback (most recent call last): + File "", line 1, in ? + TypeError: min expected 1 arguments, got 0 + >>> _min() + Traceback (most recent call last): + File "", line 1, in ? + TypeError: min expected 1 arguments, got 0 + >>> min([]) + Traceback (most recent call last): + File "", line 1, in ? + ValueError: min() arg is an empty sequence + >>> _min([]) + """ + if len(args) == 1 and not args[0]: + return None + return min(*args) + + +def _max(*args): + """ Same as stdlib max but returns None instead of exception + in case of empty sequence. + + >>> max(1, 2) + 2 + >>> _max(1, 2) + 2 + >>> max([1, 2]) + 2 + >>> _max([1, 2]) + 2 + >>> max(1) + Traceback (most recent call last): + File "", line 1, in ? + TypeError: 'int' object is not iterable + >>> _max(1) + Traceback (most recent call last): + File "", line 1, in ? + TypeError: 'int' object is not iterable + >>> max([1]) + 1 + >>> _max([1]) + 1 + >>> max() + Traceback (most recent call last): + File "", line 1, in ? + TypeError: max expected 1 arguments, got 0 + >>> _max() + Traceback (most recent call last): + File "", line 1, in ? + TypeError: max expected 1 arguments, got 0 + >>> max([]) + Traceback (most recent call last): + File "", line 1, in ? + ValueError: max() arg is an empty sequence + >>> _max([]) + """ + if len(args) == 1 and not args[0]: + return None + return max(*args) + + +if __name__ == "__main__": + import doctest + doctest.testmod() diff --git a/mis_builder/models/mis_builder.py b/mis_builder/models/mis_builder.py new file mode 100644 index 00000000..1ef31918 --- /dev/null +++ b/mis_builder/models/mis_builder.py @@ -0,0 +1,920 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# mis_builder module for Odoo, Management Information System Builder +# Copyright (C) 2014-2015 ACSONE SA/NV () +# +# This file is a part of mis_builder +# +# mis_builder is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License v3 or later +# as published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# mis_builder 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 v3 or later for more details. +# +# You should have received a copy of the GNU Affero General Public License +# v3 or later along with this program. +# If not, see . +# +############################################################################## + +import datetime +import dateutil +from dateutil import parser +import logging +import re +import time +import traceback + +import pytz + +from openerp.osv import orm, fields +from openerp import tools +from openerp.tools.safe_eval import safe_eval +from openerp.tools.translate import _ + +from .aep import AccountingExpressionProcessor as AEP +from .aggregate import _sum, _avg, _min, _max + +_logger = logging.getLogger(__name__) +DATE_LENGTH = len(datetime.date.today().strftime( + tools.DEFAULT_SERVER_DATE_FORMAT)) +DATETIME_LENGTH = len(datetime.datetime.now().strftime( + tools.DEFAULT_SERVER_DATETIME_FORMAT)) + + +class AutoStruct(object): + + def __init__(self, **kwargs): + for k, v in kwargs.items(): + setattr(self, k, v) + + +def _get_selection_label(selection, value): + for v, l in selection: + if v == value: + return l + return '' + + +def _utc_midnight(d, tz_name, add_day=0): + d = d[:DATETIME_LENGTH] + if len(d) == DATE_LENGTH: + d += " 00:00:00" + d = datetime.datetime.strptime(d, tools.DEFAULT_SERVER_DATETIME_FORMAT) + utc_tz = pytz.timezone('UTC') + if add_day: + d = d + datetime.timedelta(days=add_day) + context_tz = pytz.timezone(tz_name) + local_timestamp = context_tz.localize(d, is_dst=False) + return local_timestamp.astimezone(utc_tz).strftime( + tools.DEFAULT_SERVER_DATETIME_FORMAT) + + +def _python_var(var_str): + return re.sub(r'\W|^(?=\d)', '_', var_str).lower() + + +def _is_valid_python_var(name): + return re.match("[_A-Za-z][_a-zA-Z0-9]*$", name) + + +class MisReportKpi(orm.Model): + """ A KPI is an element (ie a line) of a MIS report. + + In addition to a name and description, it has an expression + to compute it based on queries defined in the MIS report. + It also has various informations defining how to render it + (numeric or percentage or a string, a suffix, divider) and + how to render comparison of two values of the KPI. + KPI's have a sequence and are ordered inside the MIS report. + """ + + _name = 'mis.report.kpi' + + _columns = { + 'name': fields.char(size=32, required=True, + string='Name'), + 'description': fields.char(required=True, + string='Description', + translate=True), + 'expression': fields.char(required=True, + string='Expression'), + 'default_css_style': fields.char( + string='Default CSS style'), + 'css_style': fields.char(string='CSS style expression'), + 'type': fields.selection([('num', _('Numeric')), + ('pct', _('Percentage')), + ('str', _('String'))], + required=True, + string='Type'), + 'divider': fields.selection([('1e-6', _('µ')), + ('1e-3', _('m')), + ('1', _('1')), + ('1e3', _('k')), + ('1e6', _('M'))], + string='Factor'), + 'dp': fields.integer(string='Rounding'), + 'suffix': fields.char(size=16, string='Suffix'), + 'compare_method': fields.selection([('diff', _('Difference')), + ('pct', _('Percentage')), + ('none', _('None'))], + required=True, + string='Comparison Method'), + 'sequence': fields.integer(string='Sequence'), + 'report_id': fields.many2one('mis.report', string='Report'), + } + + _defaults = { + 'type': 'num', + 'divider': '1', + 'dp': 0, + 'compare_method': 'pct', + 'sequence': 100, + } + + _order = 'sequence, id' + + def _check_name(self, cr, uid, ids, context=None): + for record_name in self.read(cr, uid, ids, ['name']): + if not _is_valid_python_var(record_name['name']): + return False + return True + + _constraints = [ + (_check_name, 'The name must be a valid python identifier', ['name']), + ] + + def onchange_name(self, cr, uid, ids, name, context=None): + res = {} + if name and not _is_valid_python_var(name): + res['warning'] = { + 'title': 'Invalid name %s' % name, + 'message': 'The name must be a valid python identifier'} + return res + + def onchange_description(self, cr, uid, ids, description, name, + context=None): + """ construct name from description """ + res = {} + if description and not name: + res = {'value': {'name': _python_var(description)}} + return res + + def onchange_type(self, cr, uid, ids, kpi_type, context=None): + res = {} + if kpi_type == 'num': + res['value'] = { + 'compare_method': 'pct', + 'divider': '1', + 'dp': 0 + } + elif kpi_type == 'pct': + res['value'] = { + 'compare_method': 'diff', + 'divider': '1', + 'dp': 0 + } + elif kpi_type == 'str': + res['value'] = { + 'compare_method': 'none', + 'divider': '', + 'dp': 0 + } + return res + + def render(self, cr, uid, lang_id, kpi, value, context=None): + if value is None: + return '#N/A' + if kpi.type == 'num': + return self._render_num(cr, uid, lang_id, value, kpi.divider, + kpi.dp, kpi.suffix, context=context) + elif kpi.type == 'pct': + return self._render_num(cr, uid, lang_id, value, 0.01, + kpi.dp, '%', context=context) + else: + return unicode(value) + + def _render_comparison(self, cr, uid, lang_id, kpi, value, base_value, + average_value, average_base_value, context=None): + """ render the comparison of two KPI values, ready for display """ + if value is None or base_value is None: + return '' + if kpi.type == 'pct': + return self._render_num(cr, uid, lang_id, value - base_value, 0.01, + kpi.dp, _('pp'), sign='+', context=context) + elif kpi.type == 'num': + if average_value: + value = value / float(average_value) + if average_base_value: + base_value = base_value / float(average_base_value) + if kpi.compare_method == 'diff': + return self._render_num(cr, uid, lang_id, value - base_value, + kpi.divider, + kpi.dp, kpi.suffix, sign='+', + context=context) + elif kpi.compare_method == 'pct': + if round(base_value, kpi.dp) != 0: + return self._render_num( + cr, uid, lang_id, + (value - base_value) / abs(base_value), + 0.01, kpi.dp, '%', sign='+', context=context) + return '' + + def _render_num(self, cr, uid, lang_id, value, divider, + dp, suffix, sign='-', context=None): + divider_label = _get_selection_label( + self._columns['divider'].selection, divider) + if divider_label == '1': + divider_label = '' + # format number following user language + value = round(value / float(divider or 1), dp) or 0 + value = self.pool['res.lang'].format( + cr, uid, lang_id, + '%%%s.%df' % (sign, dp), + value, + grouping=True, + context=context) + value = u'%s\N{NO-BREAK SPACE}%s%s' % \ + (value, divider_label, suffix or '') + value = value.replace('-', u'\N{NON-BREAKING HYPHEN}') + return value + + +class MisReportQuery(orm.Model): + """ A query to fetch arbitrary data for a MIS report. + + A query works on a model and has a domain and list of fields to fetch. + At runtime, the domain is expanded with a "and" on the date/datetime field. + """ + + _name = 'mis.report.query' + + def _get_field_names(self, cr, uid, ids, name, args, context=None): + res = {} + for query in self.browse(cr, uid, ids, context=context): + field_names = [] + for field in query.field_ids: + field_names.append(field.name) + res[query.id] = ', '.join(field_names) + return res + + def onchange_field_ids(self, cr, uid, ids, field_ids, context=None): + # compute field_names + field_names = [] + for field in self.pool.get('ir.model.fields').read( + cr, uid, + field_ids[0][2], + ['name'], + context=context): + field_names.append(field['name']) + return {'value': {'field_names': ', '.join(field_names)}} + + _columns = { + 'name': fields.char(size=32, required=True, + string='Name'), + 'model_id': fields.many2one('ir.model', required=True, + string='Model'), + 'field_ids': fields.many2many('ir.model.fields', required=True, + string='Fields to fetch'), + 'field_names': fields.function(_get_field_names, type='char', + string='Fetched fields name', + store={'mis.report.query': + (lambda self, cr, uid, ids, c={}: + ids, ['field_ids'], 20), }), + 'aggregate': fields.selection([('sum', _('Sum')), + ('avg', _('Average')), + ('min', _('Min')), + ('max', _('Max'))], + string='Aggregate'), + 'date_field': fields.many2one('ir.model.fields', required=True, + string='Date field', + domain=[('ttype', 'in', + ('date', 'datetime'))]), + 'domain': fields.char(string='Domain'), + 'report_id': fields.many2one('mis.report', string='Report', + ondelete='cascade'), + } + + _order = 'name' + + def _check_name(self, cr, uid, ids, context=None): + for record_name in self.read(cr, uid, ids, ['name']): + if not _is_valid_python_var(record_name['name']): + return False + return True + + _constraints = [ + (_check_name, 'The name must be a valid python identifier', ['name']), + ] + + +class MisReport(orm.Model): + """ A MIS report template (without period information) + + The MIS report holds: + * a list of explicit queries; the result of each query is + stored in a variable with same name as a query, containing as list + of data structures populated with attributes for each fields to fetch; + when queries have an aggregate method and no fields to group, it returns + a data structure with the aggregated fields + * a list of KPI to be evaluated based on the variables resulting + from the accounting data and queries (KPI expressions can references + queries and accounting expression - see AccoutingExpressionProcessor) + """ + + _name = 'mis.report' + + _columns = { + 'name': fields.char(size=32, required=True, + string='Name', translate=True), + 'description': fields.char(required=False, + string='Description', translate=True), + 'query_ids': fields.one2many('mis.report.query', 'report_id', + string='Queries'), + 'kpi_ids': fields.one2many('mis.report.kpi', 'report_id', + string='KPI\'s'), + } + # TODO: kpi name cannot be start with query name + + def create(self, cr, uid, vals, context=None): + # TODO: explain this + if 'kpi_ids' in vals: + mis_report_kpi_obj = self.pool.get('mis.report.kpi') + for idx, line in enumerate(vals['kpi_ids']): + if line[0] == 0: + line[2]['sequence'] = idx + 1 + else: + mis_report_kpi_obj.write( + cr, uid, [line[1]], {'sequence': idx + 1}, + context=context) + return super(MisReport, self).create(cr, uid, vals, context=context) + + def write(self, cr, uid, ids, vals, context=None): + # TODO: explain this + res = super(MisReport, self).write( + cr, uid, ids, vals, context=context) + mis_report_kpi_obj = self.pool.get('mis.report.kpi') + for report in self.browse(cr, uid, ids, context): + for idx, kpi in enumerate(report.kpi_ids): + mis_report_kpi_obj.write( + cr, uid, [kpi.id], {'sequence': idx + 1}, context=context) + return res + + +class MisReportInstancePeriod(orm.Model): + """ A MIS report instance has the logic to compute + a report template for a given date period. + + Periods have a duration (day, week, fiscal period) and + are defined as an offset relative to a pivot date. + """ + + def _get_dates(self, cr, uid, ids, field_names, arg, context=None): + if isinstance(ids, (int, long)): + ids = [ids] + res = {} + for c in self.browse(cr, uid, ids, context=context): + period_ids = None + valid = True + date_from = False + date_to = False + d = parser.parse(c.report_instance_id.pivot_date) + if c.type == 'd': + date_from = d + datetime.timedelta(days=c.offset) + date_to = date_from + datetime.timedelta(days=c.duration - 1) + date_from = date_from.strftime( + tools.DEFAULT_SERVER_DATE_FORMAT) + date_to = date_to.strftime(tools.DEFAULT_SERVER_DATE_FORMAT) + elif c.type == 'w': + date_from = d - datetime.timedelta(d.weekday()) + date_from = date_from + datetime.timedelta(days=c.offset * 7) + date_to = date_from + datetime.timedelta( + days=(7 * c.duration) - 1) + date_from = date_from.strftime( + tools.DEFAULT_SERVER_DATE_FORMAT) + date_to = date_to.strftime(tools.DEFAULT_SERVER_DATE_FORMAT) + elif c.type == 'fp': + period_obj = self.pool['account.period'] + current_period_ids = period_obj.search( + cr, uid, + [('special', '=', False), + ('date_start', '<=', d), + ('date_stop', '>=', d), + ('company_id', '=', c.company_id.id)], + context=context) + if current_period_ids: + all_period_ids = period_obj.search( + cr, uid, + [('special', '=', False), + ('company_id', '=', c.company_id.id)], + order='date_start', + context=context) + p = all_period_ids.index(current_period_ids[0]) + \ + c.offset + if p >= 0 and p + c.duration <= len(all_period_ids): + period_ids = all_period_ids[p:p + c.duration] + periods = period_obj.browse(cr, uid, period_ids, + context=context) + date_from = periods[0].date_start + date_to = periods[-1].date_stop + res[c.id] = { + 'date_from': date_from, + 'date_to': date_to, + 'period_from': period_ids and period_ids[0] or False, + 'period_to': period_ids and period_ids[-1] or False, + 'valid': valid, + } + return res + + _name = 'mis.report.instance.period' + + _columns = { + 'name': fields.char(size=32, required=True, + string='Description', translate=True), + 'type': fields.selection([('d', _('Day')), + ('w', _('Week')), + ('fp', _('Fiscal Period')), + # ('fy', _('Fiscal Year')) + ], + required=True, + string='Period type'), + 'offset': fields.integer(string='Offset', + help='Offset from current period'), + 'duration': fields.integer(string='Duration', + help='Number of periods'), + 'date_from': fields.function(_get_dates, + type='date', + multi="dates", + string="From"), + 'date_to': fields.function(_get_dates, + type='date', + multi="dates", + string="To"), + 'period_from': fields.function(_get_dates, + type='many2one', obj='account.period', + multi="dates", string="From period"), + 'period_to': fields.function(_get_dates, + type='many2one', obj='account.period', + multi="dates", string="To period"), + 'valid': fields.function(_get_dates, + type='boolean', + multi="dates", + string='Valid'), + 'sequence': fields.integer(string='Sequence'), + 'report_instance_id': fields.many2one('mis.report.instance', + string='Report Instance', + ondelete='cascade'), + 'comparison_column_ids': fields.many2many( + 'mis.report.instance.period', + 'mis_report_instance_period_rel', + 'period_id', + 'compare_period_id', + string='Compare with'), + 'company_id': fields.related('report_instance_id', 'company_id', + type="many2one", relation="res.company", + string="Company", readonly=True), + 'normalize_factor': fields.integer( + string='Factor', + help='Factor to use to normalize the period (used in comparison'), + } + + _defaults = { + 'offset': -1, + 'duration': 1, + 'sequence': 100, + 'normalize_factor': 1, + } + _order = 'sequence, id' + + _sql_constraints = [ + ('duration', 'CHECK (duration>0)', + 'Wrong duration, it must be positive!'), + ('normalize_factor', 'CHECK (normalize_factor>0)', + 'Wrong normalize factor, it must be positive!'), + ('name_unique', 'unique(name, report_instance_id)', + 'Period name should be unique by report'), + ] + + def _get_additional_move_line_filter(self, cr, uid, _id, context=None): + """ Prepare a filter to apply on all move lines + This filter is applied with a AND operator on all + accounting expression domains. This hook is intended + to be inherited, and is useful to implement filtering + on analytic dimensions or operational units. + Returns an Odoo domain expression (a python list) + compatible with account.move.line.""" + return [] + + def _get_additional_query_filter(self, cr, uid, _id, query, context=None): + """ Prepare an additional filter to apply on the query + + This filter is combined to the query domain with a AND + operator. This hook is intended + to be inherited, and is useful to implement filtering + on analytic dimensions or operational units. + + Returns an Odoo domain expression (a python list) + compatible with the model of the query.""" + return [] + + def drilldown(self, cr, uid, _id, expr, context=None): + this = self.browse(cr, uid, _id, context=context) + if AEP.has_account_var(expr): + aep = AEP(cr) + aep.parse_expr(expr) + aep.done_parsing(cr, uid, this.report_instance_id.root_account, + context=context) + domain = aep.get_aml_domain_for_expr( + cr, uid, expr, + this.date_from, this.date_to, + this.period_from, this.period_to, + this.report_instance_id.target_move, + context=context) + domain.extend(self._get_additional_move_line_filter( + cr, uid, _id, context=context)) + return { + 'name': expr + ' - ' + this.name, + 'domain': domain, + 'type': 'ir.actions.act_window', + 'res_model': 'account.move.line', + 'views': [[False, 'list'], [False, 'form']], + 'view_type': 'list', + 'view_mode': 'list', + 'target': 'current', + } + else: + return False + + def _fetch_queries(self, cr, uid, c, context): + res = {} + report = c.report_instance_id.report_id + for query in report.query_ids: + obj = self.pool[query.model_id.model] + eval_context = { + 'time': time, + 'datetime': datetime, + 'dateutil': dateutil, + # deprecated + 'uid': uid, + 'context': context, + } + + if not c.date_from or not c.date_to: + raise orm.except_orm(_('Error!'), + _('Please define From and To dates for ' + 'period %s.') % c.name) + domain = query.domain and \ + safe_eval(query.domain, eval_context) or [] + domain.extend(self._get_additional_query_filter( + cr, uid, c.id, query, context=context)) + if query.date_field.ttype == 'date': + domain.extend([(query.date_field.name, '>=', c.date_from), + (query.date_field.name, '<=', c.date_to)]) + else: + tz = context.get('tz', False) or 'UTC' + datetime_from = _utc_midnight( + c.date_from, tz) + datetime_to = _utc_midnight( + c.date_to, tz, add_day=1) + domain.extend([(query.date_field.name, '>=', datetime_from), + (query.date_field.name, '<', datetime_to)]) + if obj._columns.get('company_id', False): + domain.extend(['|', ('company_id', '=', False), + ('company_id', '=', c.company_id.id)]) + field_names = [f.name for f in query.field_ids] + if not query.aggregate: + obj_ids = obj.search(cr, uid, domain, context=context) + data = obj.read( + cr, uid, obj_ids, field_names, context=context) + res[query.name] = [AutoStruct(**d) for d in data] + elif query.aggregate == 'sum': + data = obj.read_group( + cr, uid, domain, field_names, '', context=context) + s = AutoStruct(count=data[0]['_count']) + for field_name in field_names: + v = data[0][field_name] + setattr(s, field_name, v) + res[query.name] = s + else: + obj_ids = obj.search(cr, uid, domain, context=context) + data = obj.read( + cr, uid, obj_ids, field_names, context=context) + s = AutoStruct(count=len(data)) + if query.aggregate == 'min': + agg = _min + elif query.aggregate == 'max': + agg = _max + elif query.aggregate == 'avg': + agg = _avg + for field_name in field_names: + setattr(s, field_name, + agg([d[field_name] for d in data])) + res[query.name] = s + return res + + def _compute(self, cr, uid, lang_id, c, aep, context=None): + if context is None: + context = {} + + kpi_obj = self.pool['mis.report.kpi'] + + res = {} + + localdict = { + 'registry': self.pool, + 'sum': _sum, + 'min': _min, + 'max': _max, + 'len': len, + 'avg': _avg, + } + + localdict.update(self._fetch_queries(cr, uid, c, context=context)) + + aep.do_queries(cr, uid, c.date_from, c.date_to, + c.period_from, c.period_to, + c.report_instance_id.target_move, + self._get_additional_move_line_filter(cr, uid, c.id, + context=context), + context=context) + + compute_queue = c.report_instance_id.report_id.kpi_ids + recompute_queue = [] + while True: + for kpi in compute_queue: + try: + kpi_val_comment = kpi.name + " = " + kpi.expression + kpi_eval_expression = aep.replace_expr(kpi.expression) + kpi_val = safe_eval(kpi_eval_expression, localdict) + except ZeroDivisionError: + kpi_val = None + kpi_val_rendered = '#DIV/0' + kpi_val_comment += '\n\n%s' % (traceback.format_exc(),) + except (NameError, ValueError): + recompute_queue.append(kpi) + kpi_val = None + kpi_val_rendered = '#ERR' + kpi_val_comment += '\n\n%s' % (traceback.format_exc(),) + except: + kpi_val = None + kpi_val_rendered = '#ERR' + kpi_val_comment += '\n\n%s' % (traceback.format_exc(),) + else: + kpi_val_rendered = kpi_obj.render( + cr, uid, lang_id, kpi, kpi_val, context=context) + + localdict[kpi.name] = kpi_val + try: + kpi_style = None + if kpi.css_style: + kpi_style = safe_eval(kpi.css_style, localdict) + except: + _logger.warning("error evaluating css stype expression %s", + kpi.css_style, exc_info=True) + kpi_style = None + + drilldown = (kpi_val is not None and + AEP.has_account_var(kpi.expression)) + + res[kpi.name] = { + 'val': kpi_val, + 'val_r': kpi_val_rendered, + 'val_c': kpi_val_comment, + 'style': kpi_style, + 'default_style': kpi.default_css_style or None, + 'suffix': kpi.suffix, + 'dp': kpi.dp, + 'is_percentage': kpi.type == 'pct', + 'period_id': c.id, + 'expr': kpi.expression, + 'drilldown': drilldown, + } + + if len(recompute_queue) == 0: + # nothing to recompute, we are done + break + if len(recompute_queue) == len(compute_queue): + # could not compute anything in this iteration + # (ie real Value errors or cyclic dependency) + # so we stop trying + break + # try again + compute_queue = recompute_queue + recompute_queue = [] + + return res + + +class MisReportInstance(orm.Model): + """The MIS report instance combines everything to compute + a MIS report template for a set of periods.""" + + def _compute_pivot_date(self, cr, uid, ids, field_name, arg, context=None): + res = {} + for r in self.browse(cr, uid, ids, context=context): + if r.date: + res[r.id] = r.date + else: + res[r.id] = fields.date.context_today(self, cr, uid, + context=context) + return res + + _name = 'mis.report.instance' + _columns = { + 'name': fields.char(size=32, required=True, + string='Name', translate=True), + 'description': fields.char(required=False, + string='Description', translate=True), + 'date': fields.date(string='Base date', + help='Report base date ' + '(leave empty to use current date)'), + 'pivot_date': fields.function(_compute_pivot_date, + type='date', + string="Pivot date"), + 'report_id': fields.many2one('mis.report', + required=True, + string='Report'), + 'period_ids': fields.one2many('mis.report.instance.period', + 'report_instance_id', + required=True, + string='Periods'), + 'target_move': fields.selection([('posted', 'All Posted Entries'), + ('all', 'All Entries'), + ], 'Target Moves', required=True), + 'company_id': fields.related('root_account', 'company_id', + type='many2one', relation='res.company', + string='Company', readonly=True, + store=True), + 'root_account': fields.many2one('account.account', + domain='[("parent_id", "=", False)]', + string="Account chart", + required=True) + } + + _defaults = { + 'target_move': 'posted', + } + + def create(self, cr, uid, vals, context=None): + if not vals: + return context.get('active_id', None) + # TODO: explain this + if 'period_ids' in vals: + mis_report_instance_period_obj = self.pool.get( + 'mis.report.instance.period') + for idx, line in enumerate(vals['period_ids']): + if line[0] == 0: + line[2]['sequence'] = idx + 1 + else: + mis_report_instance_period_obj.write( + cr, uid, [line[1]], {'sequence': idx + 1}, + context=context) + return super(MisReportInstance, self).create(cr, uid, vals, + context=context) + + def write(self, cr, uid, ids, vals, context=None): + # TODO: explain this + res = super(MisReportInstance, self).write( + cr, uid, ids, vals, context=context) + mis_report_instance_period_obj = self.pool.get( + 'mis.report.instance.period') + for instance in self.browse(cr, uid, ids, context): + for idx, period in enumerate(instance.period_ids): + mis_report_instance_period_obj.write( + cr, uid, [period.id], {'sequence': idx + 1}, + context=context) + return res + + def preview(self, cr, uid, ids, context=None): + assert len(ids) == 1 + view_id = self.pool['ir.model.data'].get_object_reference( + cr, uid, 'mis_builder', + 'mis_report_instance_result_view_form')[1] + return { + 'type': 'ir.actions.act_window', + 'res_model': 'mis.report.instance', + 'res_id': ids[0], + 'view_mode': 'form', + 'view_type': 'form', + 'view_id': view_id, + 'target': 'new', + } + + def _format_date(self, cr, uid, lang_id, date, context=None): + # format date following user language + tformat = self.pool['res.lang'].read( + cr, uid, lang_id, ['date_format'])[0]['date_format'] + date = datetime.datetime.strptime(date, + tools.DEFAULT_SERVER_DATE_FORMAT) + return date.strftime(tformat) + + def compute(self, cr, uid, _id, context=None): + assert isinstance(_id, (int, long)) + if context is None: + context = {} + r = self.browse(cr, uid, _id, context=context) + + # prepare AccountingExpressionProcessor + aep = AEP(cr) + for kpi in r.report_id.kpi_ids: + aep.parse_expr(kpi.expression) + aep.done_parsing(cr, uid, r.root_account, context=context) + + report_instance_period_obj = self.pool['mis.report.instance.period'] + kpi_obj = self.pool.get('mis.report.kpi') + + # fetch user language only once + # TODO: is this necessary? + lang = self.pool['res.users'].read( + cr, uid, uid, ['lang'], context=context)['lang'] + if not lang: + lang = 'en_US' + lang_id = self.pool['res.lang'].search( + cr, uid, [('code', '=', lang)], context=context) + + # compute kpi values for each period + kpi_values_by_period_ids = {} + for period in r.period_ids: + if not period.valid: + continue + kpi_values = report_instance_period_obj._compute( + cr, uid, lang_id, period, aep, context=context) + kpi_values_by_period_ids[period.id] = kpi_values + + # prepare header and content + header = [] + header.append({ + 'kpi_name': '', + 'cols': [] + }) + content = [] + rows_by_kpi_name = {} + for kpi in r.report_id.kpi_ids: + rows_by_kpi_name[kpi.name] = { + 'kpi_name': kpi.description, + 'cols': [], + 'default_style': kpi.default_css_style + } + content.append(rows_by_kpi_name[kpi.name]) + + # populate header and content + for period in r.period_ids: + if not period.valid: + continue + # add the column header + if period.duration > 1 or period.type == 'w': + # from, to + if period.period_from and period.period_to: + date_from = period.period_from.name + date_to = period.period_to.name + else: + date_from = self._format_date( + cr, uid, lang_id, period.date_from) + date_to = self._format_date( + cr, uid, lang_id, period.date_to) + header_date = _('from %s to %s') % (date_from, date_to) + else: + # one period or one day + if period.period_from and period.period_to: + header_date = period.period_from.name + else: + header_date = self._format_date( + cr, uid, lang_id, period.date_from) + header[0]['cols'].append(dict(name=period.name, date=header_date)) + # add kpi values + kpi_values = kpi_values_by_period_ids[period.id] + for kpi_name in kpi_values: + rows_by_kpi_name[kpi_name]['cols'].append(kpi_values[kpi_name]) + + # add comparison columns + for compare_col in period.comparison_column_ids: + compare_kpi_values = \ + kpi_values_by_period_ids.get(compare_col.id) + if compare_kpi_values: + # add the comparison column header + header[0]['cols'].append( + dict(name=_('%s vs %s') % (period.name, + compare_col.name), + date='')) + # add comparison values + for kpi in r.report_id.kpi_ids: + rows_by_kpi_name[kpi.name]['cols'].append({ + 'val_r': kpi_obj._render_comparison( + cr, + uid, + lang_id, + kpi, + kpi_values[kpi.name]['val'], + compare_kpi_values[kpi.name]['val'], + period.normalize_factor, + compare_col.normalize_factor, + context=context) + }) + + return {'header': header, + 'content': content} diff --git a/mis_builder/report/__init__.py b/mis_builder/report/__init__.py new file mode 100644 index 00000000..7f62b448 --- /dev/null +++ b/mis_builder/report/__init__.py @@ -0,0 +1,28 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# mis_builder module for Odoo, Management Information System Builder +# Copyright (C) 2014-2015 ACSONE SA/NV () +# +# This file is a part of mis_builder +# +# mis_builder is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License v3 or later +# as published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# mis_builder 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 v3 or later for more details. +# +# You should have received a copy of the GNU Affero General Public License +# v3 or later along with this program. +# If not, see . +# +############################################################################## + +try: + from . import mis_builder_xls +except ImportError: + pass # this module is not installed diff --git a/mis_builder/report/mis_builder_xls.py b/mis_builder/report/mis_builder_xls.py new file mode 100644 index 00000000..48b4b276 --- /dev/null +++ b/mis_builder/report/mis_builder_xls.py @@ -0,0 +1,138 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# mis_builder module for Odoo, Management Information System Builder +# Copyright (C) 2014-2015 ACSONE SA/NV () +# +# This file is a part of mis_builder +# +# mis_builder is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License v3 or later +# as published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# mis_builder 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 v3 or later for more details. +# +# You should have received a copy of the GNU Affero General Public License +# v3 or later along with this program. +# If not, see . +# +############################################################################## + +import xlwt +from openerp.report import report_sxw +from openerp.addons.report_xls.report_xls import report_xls +import logging +_logger = logging.getLogger(__name__) + + +class mis_builder_xls_parser(report_sxw.rml_parse): + + def __init__(self, cr, uid, name, context): + super(mis_builder_xls_parser, self).__init__( + cr, uid, name, context=context) + self.context = context + + +class mis_builder_xls(report_xls): + + def __init__(self, name, table, rml=False, parser=False, header=True, + store=False): + super(mis_builder_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'] + _xs['right'] + self.rh_cell_style = xlwt.easyxf(rh_cell_format) + self.rh_cell_style_date = xlwt.easyxf( + rh_cell_format, num_format_str=report_xls.date_format) + # lines + self.mis_rh_cell_style = xlwt.easyxf( + _xs['borders_all'] + _xs['bold'] + _xs['fill']) + + def generate_xls_report(self, _p, _xs, data, objects, wb): + + report_name = objects[0].name + ws = wb.add_sheet(report_name[:31]) + 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'] + + # Title + c_specs = [ + ('report_name', 1, 0, 'text', report_name), + ] + row_data = self.xls_row_template(c_specs, ['report_name']) + row_pos = self.xls_write_row( + ws, row_pos, row_data, row_style=xlwt.easyxf(_xs['xls_title'])) + row_pos += 1 + + # get the computed result of the report + data = self.pool.get('mis.report.instance').compute( + self.cr, self.uid, objects[0].id) + + # Column headers + header_name_list = [''] + col_specs_template = {'': {'header': [1, 30, 'text', ''], + 'header_date': [1, 1, 'text', '']}} + for col in data['header'][0]['cols']: + col_specs_template[col['name']] = {'header': [1, 30, 'text', + col['name']], + 'header_date': [1, 1, 'text', + col['date']]} + header_name_list.append(col['name']) + c_specs = map( + lambda x: self.render(x, col_specs_template, 'header'), + header_name_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) + c_specs = map(lambda x: self.render( + x, col_specs_template, 'header_date'), header_name_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_date) + + ws.set_horz_split_pos(row_pos) + ws.set_vert_split_pos(1) + + for line in data['content']: + col = 0 + ws.write(row_pos, col, line['kpi_name'], self.mis_rh_cell_style) + for value in line['cols']: + col += 1 + num_format_str = '#' + if value.get('dp'): + num_format_str += '.' + num_format_str += '0' * int(value['dp']) + if value.get('suffix'): + num_format_str = num_format_str + ' "%s"' % value['suffix'] + kpi_cell_style = xlwt.easyxf( + _xs['borders_all'] + _xs['right'], + num_format_str=num_format_str) + if value.get('val'): + val = value['val'] + if value.get('is_percentage'): + val = val / 0.01 + ws.write(row_pos, col, val, kpi_cell_style) + else: + ws.write(row_pos, col, value['val_r'], kpi_cell_style) + row_pos += 1 + + +mis_builder_xls('report.mis.report.instance.xls', + 'mis.report.instance', + parser=mis_builder_xls_parser) diff --git a/mis_builder/security/ir.model.access.csv b/mis_builder/security/ir.model.access.csv new file mode 100644 index 00000000..9f552f1f --- /dev/null +++ b/mis_builder/security/ir.model.access.csv @@ -0,0 +1,11 @@ +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" +manage_mis_report_kpi,manage_mis_report_kpi,model_mis_report_kpi,account.group_account_manager,1,1,1,1 +access_mis_report_kpi,access_mis_report_kpi,model_mis_report_kpi,base.group_user,1,0,0,0 +manage_mis_report_query,manage_mis_report_query,model_mis_report_query,account.group_account_manager,1,1,1,1 +access_mis_report_query,access_mis_report_query,model_mis_report_query,base.group_user,1,0,0,0 +manage_mis_report,manage_mis_report,model_mis_report,account.group_account_manager,1,1,1,1 +access_mis_report,access_mis_report,model_mis_report,base.group_user,1,0,0,0 +manage_mis_report_instance_period,manage_mis_report_instance_period,model_mis_report_instance_period,account.group_account_manager,1,1,1,1 +access_mis_report_instance_period,access_mis_report_instance_period,model_mis_report_instance_period,base.group_user,1,0,0,0 +manage_mis_report_instance,manage_mis_report_instance,model_mis_report_instance,account.group_account_manager,1,1,1,1 +access_mis_report_instance,access_mis_report_instance,model_mis_report_instance,base.group_user,1,0,0,0 diff --git a/mis_builder/security/mis_builder_security.xml b/mis_builder/security/mis_builder_security.xml new file mode 100644 index 00000000..d4562df0 --- /dev/null +++ b/mis_builder/security/mis_builder_security.xml @@ -0,0 +1,13 @@ + + + + + + Mis Builder multi company + + + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] + + + + diff --git a/mis_builder/static/description/ex_dashboard.png b/mis_builder/static/description/ex_dashboard.png new file mode 100644 index 00000000..6c2d5b4f Binary files /dev/null and b/mis_builder/static/description/ex_dashboard.png differ diff --git a/mis_builder/static/description/ex_report.png b/mis_builder/static/description/ex_report.png new file mode 100644 index 00000000..03b882a8 Binary files /dev/null and b/mis_builder/static/description/ex_report.png differ diff --git a/mis_builder/static/description/ex_report_template.png b/mis_builder/static/description/ex_report_template.png new file mode 100644 index 00000000..f6070b87 Binary files /dev/null and b/mis_builder/static/description/ex_report_template.png differ diff --git a/mis_builder/static/description/icon.png b/mis_builder/static/description/icon.png new file mode 100644 index 00000000..3a0328b5 Binary files /dev/null and b/mis_builder/static/description/icon.png differ diff --git a/mis_builder/static/description/icon.svg b/mis_builder/static/description/icon.svg new file mode 100644 index 00000000..a7a26d09 --- /dev/null +++ b/mis_builder/static/description/icon.svg @@ -0,0 +1,79 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/mis_builder/static/description/index.html b/mis_builder/static/description/index.html new file mode 100644 index 00000000..de59cbd6 --- /dev/null +++ b/mis_builder/static/description/index.html @@ -0,0 +1,75 @@ +
+ License: AGPL-3 +
+

MIS Builder

+

This module allows you to build Management Information Systems dashboards. Such style of reports presents KPI in rows and time periods in columns. Reports mainly fetch data from account moves, but can also combine data coming from arbitrary Odoo models. Reports can be exported to PDF, Excel and they can be added to Odoo dashboards.

+
+

Installation

+

There is no specific installation procedure for this module.

+
+
+

Configuration and Usage

+

To configure this module, you need to:

+
    +
  • Go to Accounting > Configuration > Financial Reports > MIS Report Templates where you can create report templates by defining KPI's. KPI's constitute the rows of your reports. Such report templates are time independent.
  • +
+
+ Sample report template +
+
    +
  • Then in Accounting > Reporting > MIS Reports you can create report instance by binding the templates to time period, hence defining the columns of your reports.
  • +
+
+ Sample report configuration +
+
    +
  • From the MIS Report view, you can preview the report, add it to and Odoo dashboard, and export it to PDF or Excel.
  • +
+
+ Sample dashboard view +
+

For further information, please visit:

+ +
+
+

Known issues / Roadmap

+
    +
  • More tests should be added. The first part is creating test data, then it will be easier. At the minimum, We need the following test data: +
      +
    • one account charts with a few normal accounts and view accounts,
    • +
    • two fiscal years,
    • +
    • an opening entry in the second fiscal year,
    • +
    • to test multi-company consolidation, we need a second company with it's own account chart and two fiscal years, but without opening entry; we also need a third company which is the parent of the other two and has a consolidation chart of account.
    • +
    +
  • +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed feedback here.

+
+
+

Credits

+
+

Contributors

+ +
+
+

Maintainer

+ + Odoo Community Association + +

This module is maintained by the OCA.

+

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

+

To contribute to this module, please visit http://odoo-community.org.

+
+
+
+
+ diff --git a/mis_builder/static/src/css/custom.css b/mis_builder/static/src/css/custom.css new file mode 100644 index 00000000..44be83a4 --- /dev/null +++ b/mis_builder/static/src/css/custom.css @@ -0,0 +1,13 @@ +.openerp .mis_builder_ralign { + text-align: right; +} + +.openerp .mis_builder a { + /* we don't want the link color, to respect user styles */ + color: inherit; +} + +.openerp .mis_builder a:hover { + /* underline links on hover to give a visual cue */ + text-decoration: underline; +} diff --git a/mis_builder/static/src/img/icon.png b/mis_builder/static/src/img/icon.png new file mode 100644 index 00000000..3a0328b5 Binary files /dev/null and b/mis_builder/static/src/img/icon.png differ diff --git a/mis_builder/static/src/js/mis_builder.js b/mis_builder/static/src/js/mis_builder.js new file mode 100644 index 00000000..df369e06 --- /dev/null +++ b/mis_builder/static/src/js/mis_builder.js @@ -0,0 +1,48 @@ +openerp.mis_builder = function(instance) { + + instance.mis_builder.MisReport = instance.web.form.FormWidget.extend({ + template: "mis_builder.MisReport", + + init: function() { + this._super.apply(this, arguments); + this.mis_report_data = null; + }, + + start: function() { + this._super.apply(this, arguments); + var self = this; + new instance.web.Model("mis.report.instance").call( + "compute", + [self.getParent().dataset.context.active_id], + {'context': new instance.web.CompoundContext()} + ).then(function(result){ + self.mis_report_data = result; + self.renderElement(); + }); + }, + + events: { + "click a.mis_builder_drilldown": "drilldown", + }, + + drilldown: function(event) { + var self = this; + var drilldown = JSON.parse($(event.target).data("drilldown")); + if (drilldown) { + var period_id = JSON.parse($(event.target).data("period-id")); + var val_c = JSON.parse($(event.target).data("expr")); + new instance.web.Model("mis.report.instance.period").call( + "drilldown", + [period_id, val_c], + {'context': new instance.web.CompoundContext()} + ).then(function(result) { + if (result) { + self.do_action(result); + } + }); + } + }, + }); + + instance.web.form.custom_widgets.add('mis_report', 'instance.mis_builder.MisReport'); +} diff --git a/mis_builder/static/src/xml/mis_widget.xml b/mis_builder/static/src/xml/mis_widget.xml new file mode 100644 index 00000000..5cfd9994 --- /dev/null +++ b/mis_builder/static/src/xml/mis_widget.xml @@ -0,0 +1,62 @@ + diff --git a/mis_builder/tests/__init__.py b/mis_builder/tests/__init__.py new file mode 100644 index 00000000..28bff250 --- /dev/null +++ b/mis_builder/tests/__init__.py @@ -0,0 +1,29 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# mis_builder module for Odoo, Management Information System Builder +# Copyright (C) 2014-2015 ACSONE SA/NV () +# +# This file is a part of mis_builder +# +# mis_builder is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License v3 or later +# as published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# mis_builder 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 v3 or later for more details. +# +# You should have received a copy of the GNU Affero General Public License +# v3 or later along with this program. +# If not, see . +# +############################################################################## + +from . import test_mis_builder + +checks = [ + test_mis_builder, + ] diff --git a/mis_builder/tests/mis.report.csv b/mis_builder/tests/mis.report.csv new file mode 100644 index 00000000..51b55125 --- /dev/null +++ b/mis_builder/tests/mis.report.csv @@ -0,0 +1,2 @@ +"id","description","kpi_ids/id","name","query_ids/id" +"mis_report_test","","mis_report_kpi_test","Test report","mis_report_query_test" \ No newline at end of file diff --git a/mis_builder/tests/mis.report.instance.csv b/mis_builder/tests/mis.report.instance.csv new file mode 100644 index 00000000..f53ed012 --- /dev/null +++ b/mis_builder/tests/mis.report.instance.csv @@ -0,0 +1,2 @@ +"id","date","description","name","period_ids/id","report_id/id","root_account/id" +"mis_report_instance_test","2014-07-31","","Test-report-instance without company","mis_report_instance_period_test","mis_report_test","account.chart0" \ No newline at end of file diff --git a/mis_builder/tests/mis.report.instance.period.csv b/mis_builder/tests/mis.report.instance.period.csv new file mode 100644 index 00000000..72250953 --- /dev/null +++ b/mis_builder/tests/mis.report.instance.period.csv @@ -0,0 +1,2 @@ +"id","duration","name","offset","type","sequence" +"mis_report_instance_period_test","1","today","","Day","" \ No newline at end of file diff --git a/mis_builder/tests/mis.report.kpi.csv b/mis_builder/tests/mis.report.kpi.csv new file mode 100644 index 00000000..1c53b999 --- /dev/null +++ b/mis_builder/tests/mis.report.kpi.csv @@ -0,0 +1,2 @@ +"id","compare_method","description","expression","divider","name","dp","sequence","type","suffix" +"mis_report_kpi_test","Percentage","total test","len(test)","","total_test","","1","Numeric","" \ No newline at end of file diff --git a/mis_builder/tests/mis.report.query.csv b/mis_builder/tests/mis.report.query.csv new file mode 100644 index 00000000..060a82f0 --- /dev/null +++ b/mis_builder/tests/mis.report.query.csv @@ -0,0 +1,2 @@ +"id","date_field/id","domain","field_ids/id","model_id/id","name" +"mis_report_query_test","account.field_account_analytic_balance_date1","","account.field_account_analytic_balance_empty_acc","account.model_account_analytic_balance","test" \ No newline at end of file diff --git a/mis_builder/tests/test_mis_builder.py b/mis_builder/tests/test_mis_builder.py new file mode 100644 index 00000000..d984d149 --- /dev/null +++ b/mis_builder/tests/test_mis_builder.py @@ -0,0 +1,83 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# mis_builder module for Odoo, Management Information System Builder +# Copyright (C) 2014-2015 ACSONE SA/NV () +# +# This file is a part of mis_builder +# +# mis_builder is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License v3 or later +# as published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# mis_builder 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 v3 or later for more details. +# +# You should have received a copy of the GNU Affero General Public License +# v3 or later along with this program. +# If not, see . +# +############################################################################## + +import openerp.tests.common as common + +from ..models import mis_builder + + +class test_mis_builder(common.TransactionCase): + + def setUp(self): + super(test_mis_builder, self).setUp() + + def test_datetime_conversion(self): + date_to_convert = '2014-07-05' + date_time_convert = mis_builder._utc_midnight( + date_to_convert, 'Europe/Brussels') + self.assertEqual(date_time_convert, '2014-07-04 22:00:00', + 'The converted date time convert must contains hour') + date_time_convert = mis_builder._utc_midnight( + date_to_convert, 'Europe/Brussels', add_day=1) + self.assertEqual(date_time_convert, '2014-07-05 22:00:00', + 'The converted date time convert must contains hour') + date_time_convert = mis_builder._utc_midnight( + date_to_convert, 'US/Pacific') + self.assertEqual(date_time_convert, '2014-07-05 07:00:00', + 'The converted date time convert must contains hour') + date_time_convert = mis_builder._utc_midnight( + date_to_convert, 'US/Pacific', add_day=1) + self.assertEqual(date_time_convert, '2014-07-06 07:00:00', + 'The converted date time convert must contains hour') + + def test_fetch_query(self): + # create a report on a model without company_id field : + # account.analytic.balance + data = self.registry('mis.report.instance').compute( + self.cr, self.uid, + self.ref('mis_builder.mis_report_instance_test')) + self.assertDictContainsSubset( + {'content': + [{'kpi_name': u'total test', + 'default_style': False, + 'cols': [{'period_id': self.ref('mis_builder.' + 'mis_report_instance_' + 'period_test'), + 'style': None, + 'default_style': None, + 'suffix': False, + 'expr': u'len(test)', + 'val_c': u'total_test = len(test)', + 'val': 0, + 'val_r': u'0\xa0', + 'is_percentage': False, + 'dp': 0, + 'drilldown': False}] + }], + 'header': + [{'kpi_name': '', + 'cols': [{'date': '07/31/2014', + 'name': u'today'}] + }], + }, data) diff --git a/mis_builder/views/mis_builder.xml b/mis_builder/views/mis_builder.xml new file mode 100644 index 00000000..4cbb77e3 --- /dev/null +++ b/mis_builder/views/mis_builder.xml @@ -0,0 +1,192 @@ + + + + + + mis.report.view.tree + mis.report + + + + + + + + + + mis.report.view.form + mis.report + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + MIS Report Templates + + mis.report + form + tree,form + + + + + + MIS report instance XLS report + mis.report.instance + ir.actions.report.xml + mis.report.instance.xls + xls + + + + + mis.report.instance.result.view.form + mis.report.instance + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MIS Reports + + mis.report.instance + form + tree,form + + + + + + diff --git a/mis_builder/wizard/__init__.py b/mis_builder/wizard/__init__.py new file mode 100644 index 00000000..78ba3c22 --- /dev/null +++ b/mis_builder/wizard/__init__.py @@ -0,0 +1,25 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# mis_builder module for Odoo, Management Information System Builder +# Copyright (C) 2014-2015 ACSONE SA/NV () +# +# This file is a part of mis_builder +# +# mis_builder is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License v3 or later +# as published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# mis_builder 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 v3 or later for more details. +# +# You should have received a copy of the GNU Affero General Public License +# v3 or later along with this program. +# If not, see . +# +############################################################################## + +from . import mis_builder_dashboard diff --git a/mis_builder/wizard/mis_builder_dashboard.py b/mis_builder/wizard/mis_builder_dashboard.py new file mode 100644 index 00000000..0efc7670 --- /dev/null +++ b/mis_builder/wizard/mis_builder_dashboard.py @@ -0,0 +1,87 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# mis_builder module for Odoo, Management Information System Builder +# Copyright (C) 2014-2015 ACSONE SA/NV () +# +# This file is a part of mis_builder +# +# mis_builder is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License v3 or later +# as published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# mis_builder 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 v3 or later for more details. +# +# You should have received a copy of the GNU Affero General Public License +# v3 or later along with this program. +# If not, see . +# +############################################################################## + +from openerp.osv import orm, fields +from lxml import etree + + +class add_mis_report_instance_dashboard(orm.TransientModel): + _name = "add.mis.report.instance.dashboard.wizard" + + _columns = {'name': fields.char('Name', size=32, required=True), + 'dashboard_id': fields.many2one( + 'ir.actions.act_window', + string="Dashboard", required=True, + domain="[('res_model', '=', 'board.board')]"), + } + + def default_get(self, cr, uid, fields, context=None): + if context is None: + context = {} + if context.get('active_id'): + res = super(add_mis_report_instance_dashboard, self).default_get( + cr, uid, fields, context=context) + # get report instance name + res['name'] = self.pool['mis.report.instance'].read( + cr, uid, context['active_id'], ['name'])['name'] + return res + + def action_add_to_dashboard(self, cr, uid, ids, context=None): + if context is None: + context = {} + assert 'active_id' in context, "active_id missing in context" + wizard_data = self.browse(cr, uid, ids, context=context)[0] + # create the act_window corresponding to this report + view_id = self.pool['ir.model.data'].get_object_reference( + cr, uid, 'mis_builder', 'mis_report_instance_result_view_form')[1] + report_result = self.pool['ir.actions.act_window'].create( + cr, uid, + {'name': 'mis.report.instance.result.view.action.%d' + % context['active_id'], + 'res_model': 'mis.report.instance', + 'res_id': context['active_id'], + 'target': 'current', + 'view_mode': 'form', + 'view_id': view_id}) + # add this result in the selected dashboard + last_customization = self.pool['ir.ui.view.custom'].search( + cr, uid, + [('user_id', '=', uid), + ('ref_id', '=', wizard_data.dashboard_id.view_id.id)], limit=1) + arch = wizard_data.dashboard_id.view_id.arch + if last_customization: + arch = self.pool['ir.ui.view.custom'].read( + cr, uid, last_customization[0], ['arch'])['arch'] + new_arch = etree.fromstring(arch) + column = new_arch.xpath("//column")[0] + column.append(etree.Element('action', {'context': str(context), + 'name': str(report_result), + 'string': wizard_data.name, + 'view_mode': 'form'})) + self.pool['ir.ui.view.custom'].create( + cr, uid, {'user_id': uid, + 'ref_id': wizard_data.dashboard_id.view_id.id, + 'arch': etree.tostring(new_arch, pretty_print=True)}) + + return {'type': 'ir.actions.act_window_close', } diff --git a/mis_builder/wizard/mis_builder_dashboard.xml b/mis_builder/wizard/mis_builder_dashboard.xml new file mode 100644 index 00000000..99802637 --- /dev/null +++ b/mis_builder/wizard/mis_builder_dashboard.xml @@ -0,0 +1,33 @@ + + + + + + add.mis.report.instance.dashboard.wizard.view + add.mis.report.instance.dashboard.wizard + +
+ + + + +
+
+
+
+
+ + + Add to dashboard + add.mis.report.instance.dashboard.wizard + form + form + + new + + +
+
\ No newline at end of file diff --git a/mis_builder_demo/__init__.py b/mis_builder_demo/__init__.py new file mode 100644 index 00000000..55bc1dd8 --- /dev/null +++ b/mis_builder_demo/__init__.py @@ -0,0 +1,23 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# mis_builder module for OpenERP, Management Information System Builder +# Copyright (C) 2014 ACSONE SA/NV () +# +# This file is a part of mis_builder +# +# mis_builder is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License v3 or later +# as published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# mis_builder 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 v3 or later for more details. +# +# You should have received a copy of the GNU Affero General Public License +# v3 or later along with this program. +# If not, see . +# +############################################################################## diff --git a/mis_builder_demo/__openerp__.py b/mis_builder_demo/__openerp__.py new file mode 100644 index 00000000..aac97b5b --- /dev/null +++ b/mis_builder_demo/__openerp__.py @@ -0,0 +1,103 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# mis_builder module for OpenERP, Management Information System Builder +# Copyright (C) 2014 ACSONE SA/NV () +# +# This file is a part of mis_builder +# +# mis_builder is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License v3 or later +# as published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# mis_builder 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 v3 or later for more details. +# +# You should have received a copy of the GNU Affero General Public License +# v3 or later along with this program. +# If not, see . +# +############################################################################## + +{ + 'name': 'MIS Builder demo data', + 'version': '0.1', + 'category': 'Reporting', + 'summary': """ + Demo data for the mis_builder module + """, + 'author': 'ACSONE SA/NV,' + 'Odoo Community Association (OCA)', + 'website': 'http://acsone.eu', + 'description': """ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :alt: License: AGPL-3 + +MIS Builder demo data +===================== + +This module adds some demo data for the mis_builder module. + +Installation +============ + +There is no specific installation procedure for this module. + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and +welcomed feedback +`here +* Laetitia Gangloff +* Adrien Peiffer + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit http://odoo-community.org. + """, + 'depends': [ + 'account_accountant', + 'mis_builder', + 'crm' + ], + 'data': [ + ], + 'demo': [ + 'mis.report.kpi.csv', + 'mis.report.query.csv', + 'mis.report.csv', + 'mis.report.instance.period.csv', + 'mis.report.instance.csv', + ], + 'installable': True, + 'application': False, + 'auto_install': False, + 'license': 'AGPL-3', +} diff --git a/mis_builder_demo/mis.report.csv b/mis_builder_demo/mis.report.csv new file mode 100644 index 00000000..83e5397f --- /dev/null +++ b/mis_builder_demo/mis.report.csv @@ -0,0 +1,3 @@ +"id","description","kpi_ids/id","name","query_ids/id" +"mis_report","","mis_report_kpi_1,mis_report_kpi_2,mis_report_kpi_3,mis_report_kpi_4,mis_report_kpi_5","Demo margin report","mis_report_query" +"mis_report_phonecall","","mis_report_phonecall_kpi_1,mis_report_phonecall_kpi_2,mis_report_phonecall_kpi_3,mis_report_phonecall_kpi_4","Demo phonecall report","mis_report_phonecall_query" diff --git a/mis_builder_demo/mis.report.instance.csv b/mis_builder_demo/mis.report.instance.csv new file mode 100644 index 00000000..b7e876b2 --- /dev/null +++ b/mis_builder_demo/mis.report.instance.csv @@ -0,0 +1,3 @@ +id,date,description,name,period_ids/id,report_id/id,root_account/id +mis_report_instance,,,Test-margin-report-instance,"mis_report_instance_period_1,mis_report_instance_period_2,mis_report_instance_period_3,mis_report_instance_period_4",mis_report,account.chart0 +mis_report_phonecall_instance,,,Test phonecall report instance,"mis_report_phonecall_instance_period_1,mis_report_phonecall_instance_period_2,mis_report_phonecall_instance_period_3",mis_report_phonecall,account.chart0 diff --git a/mis_builder_demo/mis.report.instance.period.csv b/mis_builder_demo/mis.report.instance.period.csv new file mode 100644 index 00000000..c41ceeeb --- /dev/null +++ b/mis_builder_demo/mis.report.instance.period.csv @@ -0,0 +1,8 @@ +id,duration,name,offset,type,sequence +mis_report_instance_period_1,1,today,0,Day,1 +mis_report_instance_period_2,1,yesterday,-1,Day,2 +mis_report_instance_period_3,1,last week,-1,Week,3 +mis_report_instance_period_4,1,last period,-1,Fiscal Period,4 +mis_report_phonecall_instance_period_1,1,today,0,Day,1 +mis_report_phonecall_instance_period_2,1,this period,0,Fiscal Period,2 +mis_report_phonecall_instance_period_3,1,previous period,-1,Fiscal Period,3 diff --git a/mis_builder_demo/mis.report.kpi.csv b/mis_builder_demo/mis.report.kpi.csv new file mode 100644 index 00000000..28bf73c3 --- /dev/null +++ b/mis_builder_demo/mis.report.kpi.csv @@ -0,0 +1,10 @@ +id,compare_method,description,expression,divider,name,dp,sequence,type,suffix +mis_report_kpi_1,Percentage,CA,-bal[X2001],,ca,,1,Numeric,€ +mis_report_kpi_2,Percentage,CAHT invoice,sum([s.amount_untaxed for s in inv]),,total_invoice,,2,Numeric,€ +mis_report_kpi_3,Percentage,Cost,bal[X2110],,cost,,3,Numeric,€ +mis_report_kpi_4,Percentage,Profit,ca - cost,,profit,,4,Numeric,€ +mis_report_kpi_5,Difference,Margin,profit/ca,,margin,,5,Percentage,% +mis_report_phonecall_kpi_1,Percentage,Total phone call,len(phone),,total_phone_call,,1,Numeric, +mis_report_phonecall_kpi_2,Percentage,Average duration phone call,sum([p.duration for p in phone])/total_phone_call,,average_duration_phone_call,2,2,Numeric, +mis_report_phonecall_kpi_3,Percentage,Total converted phone call,sum([p.opportunity_id and 1 or 0 for p in phone]),,phone_call_convert,,3,Numeric, +mis_report_phonecall_kpi_4,Percentage,Average duration converted phone call,sum([p.opportunity_id and p.duration or 0 for p in phone]),,average_convert_duration_phone_c,2,4,Numeric, diff --git a/mis_builder_demo/mis.report.query.csv b/mis_builder_demo/mis.report.query.csv new file mode 100644 index 00000000..f14b6560 --- /dev/null +++ b/mis_builder_demo/mis.report.query.csv @@ -0,0 +1,3 @@ +"id","date_field/id","domain","field_ids/id","model_id/id","name" +"mis_report_query","account.field_account_invoice_date_invoice","","account.field_account_invoice_amount_untaxed","account.model_account_invoice","inv" +"mis_report_phonecall_query","crm.field_crm_phonecall_date","","crm.field_crm_phonecall_duration,crm.field_crm_phonecall_opportunity_id","crm.model_crm_phonecall","phone" \ No newline at end of file diff --git a/oca_dependencies.txt b/oca_dependencies.txt new file mode 100644 index 00000000..5d6f13ad --- /dev/null +++ b/oca_dependencies.txt @@ -0,0 +1,3 @@ +# list the OCA project dependencies, one per line +# add a github url if you need a forked version +reporting-engine