From e18530712c8b7f9e7c13724d92bd29ec39fbd8a7 Mon Sep 17 00:00:00 2001 From: Flectra Community Bot Date: Fri, 3 May 2024 10:57:01 +0200 Subject: [PATCH] Automatic Update form OCA2FC Migrator --- .gitlab-ci.yml | 146 + .gitlab/issue_templates/Bug.md | 32 + README.md | 16 + mis_builder/COPYRIGHT | 26 + mis_builder/LICENSE | 663 +++++ mis_builder/README.rst | 699 +++++ mis_builder/__init__.py | 6 + mis_builder/__manifest__.py | 46 + mis_builder/datas/ir_cron.xml | 13 + mis_builder/i18n/ca.po | 2413 +++++++++++++++++ mis_builder/i18n/de.po | 1868 +++++++++++++ mis_builder/i18n/el.po | 1786 ++++++++++++ mis_builder/i18n/el_GR.po | 1786 ++++++++++++ mis_builder/i18n/es.po | 2243 +++++++++++++++ mis_builder/i18n/fr.po | 2167 +++++++++++++++ mis_builder/i18n/fr_FR.po | 1881 +++++++++++++ mis_builder/i18n/hr.po | 1925 +++++++++++++ mis_builder/i18n/it.po | 1880 +++++++++++++ mis_builder/i18n/mis_builder.pot | 1765 ++++++++++++ mis_builder/i18n/nl.po | 2063 ++++++++++++++ mis_builder/i18n/nl_NL.po | 2066 ++++++++++++++ mis_builder/i18n/pt.po | 1793 ++++++++++++ mis_builder/i18n/pt_BR.po | 2179 +++++++++++++++ mis_builder/i18n/sv.po | 1798 ++++++++++++ mis_builder/i18n/tr.po | 1788 ++++++++++++ .../migrations/16.0.5.0.0/end-migrate.py | 10 + .../migrations/8.0.2.0.0/post-migration.py | 29 + .../migrations/8.0.2.0.0/pre-migration.py | 20 + mis_builder/models/__init__.py | 10 + mis_builder/models/accounting_none.py | 215 ++ mis_builder/models/aep.py | 546 ++++ mis_builder/models/aggregate.py | 129 + mis_builder/models/data_error.py | 17 + mis_builder/models/expression_evaluator.py | 68 + mis_builder/models/kpimatrix.py | 542 ++++ mis_builder/models/mis_kpi_data.py | 115 + mis_builder/models/mis_report.py | 1015 +++++++ mis_builder/models/mis_report_instance.py | 922 +++++++ mis_builder/models/mis_report_style.py | 311 +++ mis_builder/models/mis_report_subreport.py | 74 + mis_builder/models/mis_safe_eval.py | 33 + .../models/prorata_read_group_mixin.py | 96 + mis_builder/models/simple_array.py | 184 ++ mis_builder/pyproject.toml | 3 + mis_builder/report/__init__.py | 5 + .../report/mis_report_instance_qweb.py | 27 + .../report/mis_report_instance_qweb.xml | 111 + .../report/mis_report_instance_xlsx.py | 176 ++ .../report/mis_report_instance_xlsx.xml | 11 + mis_builder/security/ir.model.access.csv | 22 + mis_builder/security/mis_builder_security.xml | 11 + .../static/description/ex_report_preview.png | Bin 0 -> 96172 bytes .../static/description/ex_report_settings.png | Bin 0 -> 103790 bytes .../static/description/ex_report_template.png | Bin 0 -> 100278 bytes mis_builder/static/description/icon.png | Bin 0 -> 4770 bytes mis_builder/static/description/index.html | 1054 +++++++ .../src/components/mis_report_widget.css | 67 + .../src/components/mis_report_widget.esm.js | 182 ++ .../src/components/mis_report_widget.xml | 115 + mis_builder/static/src/css/report.css | 46 + mis_builder/tests/__init__.py | 16 + mis_builder/tests/common.py | 67 + mis_builder/tests/fake_models.py | 7 + mis_builder/tests/test_accounting_none.py | 8 + mis_builder/tests/test_aep.py | 397 +++ mis_builder/tests/test_aggregate.py | 7 + mis_builder/tests/test_data_sources.py | 219 ++ mis_builder/tests/test_kpi_data.py | 142 + mis_builder/tests/test_mis_report_instance.py | 589 ++++ mis_builder/tests/test_mis_safe_eval.py | 25 + mis_builder/tests/test_multi_company_aep.py | 208 ++ mis_builder/tests/test_period_dates.py | 159 ++ mis_builder/tests/test_render.py | 315 +++ mis_builder/tests/test_simple_array.py | 7 + mis_builder/tests/test_subreport.py | 96 + mis_builder/tests/test_target_move.py | 36 + mis_builder/tests/test_utc_midnight.py | 19 + mis_builder/views/mis_report.xml | 301 ++ mis_builder/views/mis_report_instance.xml | 421 +++ mis_builder/views/mis_report_style.xml | 110 + mis_builder/wizard/__init__.py | 4 + mis_builder/wizard/mis_builder_dashboard.py | 95 + mis_builder/wizard/mis_builder_dashboard.xml | 36 + mis_builder_budget/COPYRIGHT | 22 + mis_builder_budget/LICENSE | 663 +++++ mis_builder_budget/README.rst | 246 ++ mis_builder_budget/__init__.py | 1 + mis_builder_budget/__manifest__.py | 28 + mis_builder_budget/i18n/ca.po | 611 +++++ mis_builder_budget/i18n/de.po | 553 ++++ mis_builder_budget/i18n/es.po | 618 +++++ mis_builder_budget/i18n/fr.po | 603 ++++ mis_builder_budget/i18n/hr.po | 550 ++++ mis_builder_budget/i18n/hr_HR.po | 557 ++++ mis_builder_budget/i18n/it.po | 549 ++++ .../i18n/mis_builder_budget.pot | 547 ++++ mis_builder_budget/i18n/nl.po | 566 ++++ mis_builder_budget/i18n/nl_NL.po | 603 ++++ mis_builder_budget/i18n/pt.po | 555 ++++ mis_builder_budget/i18n/pt_BR.po | 618 +++++ mis_builder_budget/models/__init__.py | 10 + mis_builder_budget/models/mis_budget.py | 17 + .../models/mis_budget_abstract.py | 61 + .../models/mis_budget_by_account.py | 18 + .../models/mis_budget_by_account_item.py | 94 + mis_builder_budget/models/mis_budget_item.py | 37 + .../models/mis_budget_item_abstract.py | 89 + .../models/mis_report_instance.py | 119 + .../models/mis_report_instance_period.py | 72 + mis_builder_budget/models/mis_report_kpi.py | 10 + .../models/mis_report_kpi_expression.py | 23 + mis_builder_budget/pyproject.toml | 3 + mis_builder_budget/security/mis_budget.xml | 30 + .../security/mis_budget_by_account.xml | 30 + .../security/mis_budget_by_account_item.xml | 30 + .../security/mis_budget_item.xml | 30 + .../static/description/icon.png | Bin 0 -> 4770 bytes .../static/description/index.html | 585 ++++ mis_builder_budget/tests/__init__.py | 3 + .../tests/test_expression_evaluator.py | 68 + mis_builder_budget/tests/test_mis_budget.py | 171 ++ .../tests/test_mis_budget_by_account.py | 136 + mis_builder_budget/views/mis_budget.xml | 97 + .../views/mis_budget_by_account.xml | 96 + .../views/mis_budget_by_account_item.xml | 45 + mis_builder_budget/views/mis_budget_item.xml | 40 + mis_builder_budget/views/mis_report.xml | 28 + .../views/mis_report_instance_period.xml | 28 + mis_builder_demo/COPYRIGHT | 17 + mis_builder_demo/LICENSE | 663 +++++ mis_builder_demo/README.rst | 169 ++ mis_builder_demo/__init__.py | 1 + mis_builder_demo/__manifest__.py | 24 + mis_builder_demo/data/mis_budget.xml | 56 + mis_builder_demo/data/mis_report.xml | 58 + mis_builder_demo/data/mis_report_instance.xml | 111 + mis_builder_demo/data/mis_report_style.xml | 28 + .../examples/mis_committed_purchase.sql | 116 + mis_builder_demo/i18n/ca.po | 143 + mis_builder_demo/i18n/de.po | 146 + mis_builder_demo/i18n/es.po | 146 + mis_builder_demo/i18n/fr.po | 147 + mis_builder_demo/i18n/hr_HR.po | 141 + mis_builder_demo/i18n/mis_builder_demo.pot | 134 + mis_builder_demo/i18n/nl.po | 139 + mis_builder_demo/i18n/nl_NL.po | 150 + mis_builder_demo/i18n/pt.po | 139 + mis_builder_demo/i18n/pt_BR.po | 143 + mis_builder_demo/models/__init__.py | 1 + .../models/mis_committed_purchase.py | 33 + mis_builder_demo/pyproject.toml | 3 + .../security/mis_committed_purchase.xml | 14 + mis_builder_demo/static/description/icon.png | Bin 0 -> 4770 bytes .../static/description/index.html | 511 ++++ .../views/mis_committed_purchase.xml | 19 + 155 files changed, 55610 insertions(+) create mode 100644 .gitlab-ci.yml create mode 100644 .gitlab/issue_templates/Bug.md create mode 100644 README.md create mode 100644 mis_builder/COPYRIGHT create mode 100644 mis_builder/LICENSE create mode 100644 mis_builder/README.rst create mode 100644 mis_builder/__init__.py create mode 100644 mis_builder/__manifest__.py create mode 100644 mis_builder/datas/ir_cron.xml create mode 100644 mis_builder/i18n/ca.po create mode 100644 mis_builder/i18n/de.po create mode 100644 mis_builder/i18n/el.po create mode 100644 mis_builder/i18n/el_GR.po create mode 100644 mis_builder/i18n/es.po create mode 100644 mis_builder/i18n/fr.po create mode 100644 mis_builder/i18n/fr_FR.po create mode 100644 mis_builder/i18n/hr.po create mode 100644 mis_builder/i18n/it.po create mode 100644 mis_builder/i18n/mis_builder.pot create mode 100644 mis_builder/i18n/nl.po create mode 100644 mis_builder/i18n/nl_NL.po create mode 100644 mis_builder/i18n/pt.po create mode 100644 mis_builder/i18n/pt_BR.po create mode 100644 mis_builder/i18n/sv.po create mode 100644 mis_builder/i18n/tr.po create mode 100644 mis_builder/migrations/16.0.5.0.0/end-migrate.py create mode 100644 mis_builder/migrations/8.0.2.0.0/post-migration.py create mode 100644 mis_builder/migrations/8.0.2.0.0/pre-migration.py create mode 100644 mis_builder/models/__init__.py create mode 100644 mis_builder/models/accounting_none.py create mode 100644 mis_builder/models/aep.py create mode 100644 mis_builder/models/aggregate.py create mode 100644 mis_builder/models/data_error.py create mode 100644 mis_builder/models/expression_evaluator.py create mode 100644 mis_builder/models/kpimatrix.py create mode 100644 mis_builder/models/mis_kpi_data.py create mode 100644 mis_builder/models/mis_report.py create mode 100644 mis_builder/models/mis_report_instance.py create mode 100644 mis_builder/models/mis_report_style.py create mode 100644 mis_builder/models/mis_report_subreport.py create mode 100644 mis_builder/models/mis_safe_eval.py create mode 100644 mis_builder/models/prorata_read_group_mixin.py create mode 100644 mis_builder/models/simple_array.py create mode 100644 mis_builder/pyproject.toml create mode 100644 mis_builder/report/__init__.py create mode 100644 mis_builder/report/mis_report_instance_qweb.py create mode 100644 mis_builder/report/mis_report_instance_qweb.xml create mode 100644 mis_builder/report/mis_report_instance_xlsx.py create mode 100644 mis_builder/report/mis_report_instance_xlsx.xml create mode 100644 mis_builder/security/ir.model.access.csv create mode 100644 mis_builder/security/mis_builder_security.xml create mode 100644 mis_builder/static/description/ex_report_preview.png create mode 100644 mis_builder/static/description/ex_report_settings.png create mode 100644 mis_builder/static/description/ex_report_template.png create mode 100644 mis_builder/static/description/icon.png create mode 100644 mis_builder/static/description/index.html create mode 100644 mis_builder/static/src/components/mis_report_widget.css create mode 100644 mis_builder/static/src/components/mis_report_widget.esm.js create mode 100644 mis_builder/static/src/components/mis_report_widget.xml create mode 100644 mis_builder/static/src/css/report.css create mode 100644 mis_builder/tests/__init__.py create mode 100644 mis_builder/tests/common.py create mode 100644 mis_builder/tests/fake_models.py create mode 100644 mis_builder/tests/test_accounting_none.py create mode 100644 mis_builder/tests/test_aep.py create mode 100644 mis_builder/tests/test_aggregate.py create mode 100644 mis_builder/tests/test_data_sources.py create mode 100644 mis_builder/tests/test_kpi_data.py create mode 100644 mis_builder/tests/test_mis_report_instance.py create mode 100644 mis_builder/tests/test_mis_safe_eval.py create mode 100644 mis_builder/tests/test_multi_company_aep.py create mode 100644 mis_builder/tests/test_period_dates.py create mode 100644 mis_builder/tests/test_render.py create mode 100644 mis_builder/tests/test_simple_array.py create mode 100644 mis_builder/tests/test_subreport.py create mode 100644 mis_builder/tests/test_target_move.py create mode 100644 mis_builder/tests/test_utc_midnight.py create mode 100644 mis_builder/views/mis_report.xml create mode 100644 mis_builder/views/mis_report_instance.xml create mode 100644 mis_builder/views/mis_report_style.xml create mode 100644 mis_builder/wizard/__init__.py create mode 100644 mis_builder/wizard/mis_builder_dashboard.py create mode 100644 mis_builder/wizard/mis_builder_dashboard.xml create mode 100644 mis_builder_budget/COPYRIGHT create mode 100644 mis_builder_budget/LICENSE create mode 100644 mis_builder_budget/README.rst create mode 100644 mis_builder_budget/__init__.py create mode 100644 mis_builder_budget/__manifest__.py create mode 100644 mis_builder_budget/i18n/ca.po create mode 100644 mis_builder_budget/i18n/de.po create mode 100644 mis_builder_budget/i18n/es.po create mode 100644 mis_builder_budget/i18n/fr.po create mode 100644 mis_builder_budget/i18n/hr.po create mode 100644 mis_builder_budget/i18n/hr_HR.po create mode 100644 mis_builder_budget/i18n/it.po create mode 100644 mis_builder_budget/i18n/mis_builder_budget.pot create mode 100644 mis_builder_budget/i18n/nl.po create mode 100644 mis_builder_budget/i18n/nl_NL.po create mode 100644 mis_builder_budget/i18n/pt.po create mode 100644 mis_builder_budget/i18n/pt_BR.po create mode 100644 mis_builder_budget/models/__init__.py create mode 100644 mis_builder_budget/models/mis_budget.py create mode 100644 mis_builder_budget/models/mis_budget_abstract.py create mode 100644 mis_builder_budget/models/mis_budget_by_account.py create mode 100644 mis_builder_budget/models/mis_budget_by_account_item.py create mode 100644 mis_builder_budget/models/mis_budget_item.py create mode 100644 mis_builder_budget/models/mis_budget_item_abstract.py create mode 100644 mis_builder_budget/models/mis_report_instance.py create mode 100644 mis_builder_budget/models/mis_report_instance_period.py create mode 100644 mis_builder_budget/models/mis_report_kpi.py create mode 100644 mis_builder_budget/models/mis_report_kpi_expression.py create mode 100644 mis_builder_budget/pyproject.toml create mode 100644 mis_builder_budget/security/mis_budget.xml create mode 100644 mis_builder_budget/security/mis_budget_by_account.xml create mode 100644 mis_builder_budget/security/mis_budget_by_account_item.xml create mode 100644 mis_builder_budget/security/mis_budget_item.xml create mode 100644 mis_builder_budget/static/description/icon.png create mode 100644 mis_builder_budget/static/description/index.html create mode 100644 mis_builder_budget/tests/__init__.py create mode 100644 mis_builder_budget/tests/test_expression_evaluator.py create mode 100644 mis_builder_budget/tests/test_mis_budget.py create mode 100644 mis_builder_budget/tests/test_mis_budget_by_account.py create mode 100644 mis_builder_budget/views/mis_budget.xml create mode 100644 mis_builder_budget/views/mis_budget_by_account.xml create mode 100644 mis_builder_budget/views/mis_budget_by_account_item.xml create mode 100644 mis_builder_budget/views/mis_budget_item.xml create mode 100644 mis_builder_budget/views/mis_report.xml create mode 100644 mis_builder_budget/views/mis_report_instance_period.xml create mode 100644 mis_builder_demo/COPYRIGHT create mode 100644 mis_builder_demo/LICENSE create mode 100644 mis_builder_demo/README.rst create mode 100644 mis_builder_demo/__init__.py create mode 100644 mis_builder_demo/__manifest__.py create mode 100644 mis_builder_demo/data/mis_budget.xml create mode 100644 mis_builder_demo/data/mis_report.xml create mode 100644 mis_builder_demo/data/mis_report_instance.xml create mode 100644 mis_builder_demo/data/mis_report_style.xml create mode 100644 mis_builder_demo/examples/mis_committed_purchase.sql create mode 100644 mis_builder_demo/i18n/ca.po create mode 100644 mis_builder_demo/i18n/de.po create mode 100644 mis_builder_demo/i18n/es.po create mode 100644 mis_builder_demo/i18n/fr.po create mode 100644 mis_builder_demo/i18n/hr_HR.po create mode 100644 mis_builder_demo/i18n/mis_builder_demo.pot create mode 100644 mis_builder_demo/i18n/nl.po create mode 100644 mis_builder_demo/i18n/nl_NL.po create mode 100644 mis_builder_demo/i18n/pt.po create mode 100644 mis_builder_demo/i18n/pt_BR.po create mode 100644 mis_builder_demo/models/__init__.py create mode 100644 mis_builder_demo/models/mis_committed_purchase.py create mode 100644 mis_builder_demo/pyproject.toml create mode 100644 mis_builder_demo/security/mis_committed_purchase.xml create mode 100644 mis_builder_demo/static/description/icon.png create mode 100644 mis_builder_demo/static/description/index.html create mode 100644 mis_builder_demo/views/mis_committed_purchase.xml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..67e128f --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,146 @@ +image: ubuntu:jammy + +stages: + - testall + - testsingle + +variables: + POSTGRES_DB: postgres + POSTGRES_USER: flectra + POSTGRES_PASSWORD: flectra + POSTGRES_HOST: postgres + POSTGRES_PORT: "5432" + +services: + - name: postgres:14-bullseye + alias: psql + + +test_all_modules: + stage: testall + image: + name: registry.gitlab.com/jamotion/flectra/ubuntudev:2-latest + entrypoint: ["/bin/sh", "-c"] + script: + - apt-get install -y p7zip-full + - su - flectra -c "mkdir ~/others" + - sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && dpkg-reconfigure --frontend=noninteractive locales && update-locale LANG=en_US.UTF-8 + - mkdir ${CI_PROJECT_DIR}/ci_data + - wget -O ${CI_PROJECT_DIR}/ci_data/test_base.zip https://gitlab.com/flectra-community/devops/oca2fc/raw/master/ci_data/test_base.zip + - 7z x -o ${CI_PROJECT_DIR}/ci_data/ ${CI_PROJECT_DIR}/ci_data/test_base.zip + - export PGPASSWORD="flectra" + - createdb -h psql -U flectra -O flectra -T template1 test_all + - psql -h psql -U flectra -d test_all -f ${CI_PROJECT_DIR}/ci_data/dump.sql + - su - flectra -c "mkdir -p ~/.local/share/filestore" + - mv ${CI_PROJECT_DIR}/ci_data/filestore /opt/flectra/.local/share/filestore/test_all + - chown -R flectra.flectra /opt/flectra/.local/share/filestore/test_all + - su - flectra -c "/opt/flectra/flectra-bin + --addons-path ${CI_PROJECT_DIR} + --db_host psql + --db_port 5432 + --db_user flectra + --db_password flectra + --database test_all + --test-enable + --init mis_builder_budget,mis_builder_demo,mis_builder + --stop-after-init + --log-level error + --log-handler flectra.addons.mis_builder_budget:TEST + --log-handler flectra.addons.mis_builder_demo:TEST + --log-handler flectra.addons.mis_builder:TEST + " + + +test_module_mis_builder_budget: + stage: testsingle + when: on_failure + image: + name: registry.gitlab.com/jamotion/flectra/ubuntudev:2-latest + entrypoint: ["/bin/sh", "-c"] + script: + - apt-get install -y p7zip-full + - su - flectra -c "mkdir ~/others" + - sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && dpkg-reconfigure --frontend=noninteractive locales && update-locale LANG=en_US.UTF-8 + - mkdir ${CI_PROJECT_DIR}/ci_data + - wget -O ${CI_PROJECT_DIR}/ci_data/test_base.zip https://gitlab.com/flectra-community/devops/oca2fc/raw/master/ci_data/test_base.zip + - 7z x -o ${CI_PROJECT_DIR}/ci_data/ ${CI_PROJECT_DIR}/ci_data/test_base.zip + - export PGPASSWORD="flectra" + - createdb -h psql -U flectra -O flectra -T template1 test_mis_builder_budget + - psql -h psql -U flectra -d test_mis_builder_budget -f ${CI_PROJECT_DIR}/ci_data/dump.sql + - su - flectra -c "mkdir -p ~/.local/share/filestore" + - mv ${CI_PROJECT_DIR}/ci_data/filestore /opt/flectra/.local/share/filestore/test_mis_builder_budget + - chown -R flectra.flectra /opt/flectra/.local/share/filestore/test_mis_builder_budget + - su - flectra -c "/opt/flectra/flectra-bin + --addons-path ${CI_PROJECT_DIR} + --db_host psql + --db_port 5432 + --db_user flectra + --db_password flectra + --database test_mis_builder_budget + --test-enable -i mis_builder_budget + --stop-after-init + --log-level error + --log-handler flectra.addons.mis_builder_budget:TEST" + +test_module_mis_builder_demo: + stage: testsingle + when: on_failure + image: + name: registry.gitlab.com/jamotion/flectra/ubuntudev:2-latest + entrypoint: ["/bin/sh", "-c"] + script: + - apt-get install -y p7zip-full + - su - flectra -c "mkdir ~/others" + - sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && dpkg-reconfigure --frontend=noninteractive locales && update-locale LANG=en_US.UTF-8 + - mkdir ${CI_PROJECT_DIR}/ci_data + - wget -O ${CI_PROJECT_DIR}/ci_data/test_base.zip https://gitlab.com/flectra-community/devops/oca2fc/raw/master/ci_data/test_base.zip + - 7z x -o ${CI_PROJECT_DIR}/ci_data/ ${CI_PROJECT_DIR}/ci_data/test_base.zip + - export PGPASSWORD="flectra" + - createdb -h psql -U flectra -O flectra -T template1 test_mis_builder_demo + - psql -h psql -U flectra -d test_mis_builder_demo -f ${CI_PROJECT_DIR}/ci_data/dump.sql + - su - flectra -c "mkdir -p ~/.local/share/filestore" + - mv ${CI_PROJECT_DIR}/ci_data/filestore /opt/flectra/.local/share/filestore/test_mis_builder_demo + - chown -R flectra.flectra /opt/flectra/.local/share/filestore/test_mis_builder_demo + - su - flectra -c "/opt/flectra/flectra-bin + --addons-path ${CI_PROJECT_DIR} + --db_host psql + --db_port 5432 + --db_user flectra + --db_password flectra + --database test_mis_builder_demo + --test-enable -i mis_builder_demo + --stop-after-init + --log-level error + --log-handler flectra.addons.mis_builder_demo:TEST" + +test_module_mis_builder: + stage: testsingle + when: on_failure + image: + name: registry.gitlab.com/jamotion/flectra/ubuntudev:2-latest + entrypoint: ["/bin/sh", "-c"] + script: + - apt-get install -y p7zip-full + - su - flectra -c "mkdir ~/others" + - sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && dpkg-reconfigure --frontend=noninteractive locales && update-locale LANG=en_US.UTF-8 + - mkdir ${CI_PROJECT_DIR}/ci_data + - wget -O ${CI_PROJECT_DIR}/ci_data/test_base.zip https://gitlab.com/flectra-community/devops/oca2fc/raw/master/ci_data/test_base.zip + - 7z x -o ${CI_PROJECT_DIR}/ci_data/ ${CI_PROJECT_DIR}/ci_data/test_base.zip + - export PGPASSWORD="flectra" + - createdb -h psql -U flectra -O flectra -T template1 test_mis_builder + - psql -h psql -U flectra -d test_mis_builder -f ${CI_PROJECT_DIR}/ci_data/dump.sql + - su - flectra -c "mkdir -p ~/.local/share/filestore" + - mv ${CI_PROJECT_DIR}/ci_data/filestore /opt/flectra/.local/share/filestore/test_mis_builder + - chown -R flectra.flectra /opt/flectra/.local/share/filestore/test_mis_builder + - su - flectra -c "/opt/flectra/flectra-bin + --addons-path ${CI_PROJECT_DIR} + --db_host psql + --db_port 5432 + --db_user flectra + --db_password flectra + --database test_mis_builder + --test-enable -i mis_builder + --stop-after-init + --log-level error + --log-handler flectra.addons.mis_builder:TEST" + diff --git a/.gitlab/issue_templates/Bug.md b/.gitlab/issue_templates/Bug.md new file mode 100644 index 0000000..efa3093 --- /dev/null +++ b/.gitlab/issue_templates/Bug.md @@ -0,0 +1,32 @@ +**Summary** + +(Summarize the bug encountered concisely) + + +**Steps to reproduce** + +(How one can reproduce the issue - this is very important) + + +**What is the current bug behavior?** + +(What actually happens) + + +**What is the expected correct behavior?** + +(What you should see instead) + + +**Relevant logs and/or screenshots** + +(Paste any relevant logs - please use code blocks (```) to format console output, +logs, and code as it's very hard to read otherwise.) + + +**Possible fixes** + +(If you can, link to the line of code that might be responsible for the problem) + +/label ~bug + diff --git a/README.md b/README.md new file mode 100644 index 0000000..5a6a0cb --- /dev/null +++ b/README.md @@ -0,0 +1,16 @@ +# Flectra Community / mis-builder + +None + + + +Available addons +---------------- + +addon | version | summary +--- | --- | --- +[mis_builder_budget](mis_builder_budget/) | 3.0.5.0.2| Create budgets for MIS reports +[mis_builder_demo](mis_builder_demo/) | 3.0.1.0.2| Demo addon for MIS Builder +[mis_builder](mis_builder/) | 3.0.5.1.5| Build 'Management Information System' Reports and Dashboards + + diff --git a/mis_builder/COPYRIGHT b/mis_builder/COPYRIGHT new file mode 100644 index 0000000..3351437 --- /dev/null +++ b/mis_builder/COPYRIGHT @@ -0,0 +1,26 @@ +Most of the files are + + :Copyright: This stylesheet has been placed in the public domain. + Copyright 2014 ACSONE SA/NV () + Copyright 2014-2018 ACSONE SA/NV () + Copyright 2016 ACSONE SA/NV () + Copyright 2016 Akretion () + Copyright 2016 Therp BV () + Copyright 2016 Thomas Binsfeld + Copyright 2017 ACSONE SA/NV + Copyright 2017 ACSONE SA/NV () + Copyright 2020 ACSONE SA/NV + Copyright 2020 ACSONE SA/NV () + Copyright 2020 CorporateHub (https://corporatehub.eu) + Copyright 2023 ACSONE SA/NV () + Copyright 2018 Flectra Community + +Many files also contain contributions from third +parties. In this case the original copyright of +the contributions can be traced through the +history of the source version control system. + +When that is not the case, the files contain a prominent +notice stating the original copyright and applicable +license, or come with their own dedicated COPYRIGHT +and/or LICENSE file. \ No newline at end of file diff --git a/mis_builder/LICENSE b/mis_builder/LICENSE new file mode 100644 index 0000000..3939cd9 --- /dev/null +++ b/mis_builder/LICENSE @@ -0,0 +1,663 @@ +For copyright information, please see the COPYRIGHT file. + +GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. \ No newline at end of file diff --git a/mis_builder/README.rst b/mis_builder/README.rst new file mode 100644 index 0000000..e21c7e3 --- /dev/null +++ b/mis_builder/README.rst @@ -0,0 +1,699 @@ +=========== +MIS Builder +=========== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:23fd54db34b43eef679da3049da56901c6bb54d081341c0d107e79b84721af47 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png + :target: https://odoo-community.org/page/development-status + :alt: Production/Stable +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmis--builder-lightgray.png?logo=github + :target: https://github.com/OCA/mis-builder/tree/16.0/mis_builder + :alt: OCA/mis-builder +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/mis-builder-16-0/mis-builder-16-0-mis_builder + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/mis-builder&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +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. + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +Your preferred way to install addons will work with MIS Builder. + +An easy way to install it with all its dependencies is using pip: + +* ``pip install --pre odoo12-addon-mis_builder`` +* then restart Odoo, update the addons list in your database, and install + the MIS Builder application. + +Usage +===== + +To configure this module, you need to: + +* Go to Accounting > Configuration > MIS Reporting > 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. + +.. figure:: https://raw.githubusercontent.com/OCA/mis-builder/10.0/mis_builder/static/description/ex_report_template.png + :alt: Sample report template + :width: 80 % + :align: center + +* Then in Accounting > Reports > MIS Reporting > MIS Reports you can create report instance by + binding the templates to time periods, hence defining the columns of your reports. + +.. figure:: https://raw.githubusercontent.com/OCA/mis-builder/10.0/mis_builder/static/description/ex_report_settings.png + :alt: Sample report configuration + :width: 80 % + :align: center + +* From the MIS Reports view, you can preview the report, add it to and Odoo dashboard, + and export it to PDF or Excel. + +.. figure:: https://raw.githubusercontent.com/OCA/mis-builder/10.0/mis_builder/static/description/ex_report_preview.png + :alt: Sample preview + :width: 80 % + :align: center + +Development +=========== + +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 +====================== + +The mis_builder `roadmap `_ +and `known issues `_ can +be found on GitHub. + +Changelog +========= + +16.0.5.1.0 (2023-04-04) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Features** + +- Improve UX by adding the option to edit the pivot date directly on the view. + +16.0.5.0.0 (2023-04-01) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Features** + +- Migration to 16.0 + + - Addition of a generic filter domain on reports and columns. + - Addition of a search bar to the widget. The corresponding search view is configurable + per report. + - Huge improvement of the widget style. This was long overdue. + - Make the MIS Report menu accessible to the Billing Administrator group + (instead of the hidden Show Full Accounting Features), to align with the access rules + and avoid giving a false sense of security. This also makes the menu discoverable to + new users. + - Removal of analytic fetures because the upstream ``analytic_distribution`` mechanism + is not compatible; support may be introduced in separate module, depending on use + cases. + - Abandon the ``mis_report_filters`` context key which had security implication. + It is replaced by a ``mis_analytic_domain`` context key which is ANDed with other + report-defined filters. (`#472 `_) + - Rename the ``get_filter_descriptions_from_context`` method to + ``get_filter_descriptions``. This method may be overridden to provide additional + subtitles on the PDF or XLS report, representing user-selected filters. + - The ``hide_analytic_filters`` has been replaced by ``widget_show_filters``. + - The visibility of the settings button on the widget is now controlled by a + ``show_settings_button``. Before it was visible only for the ``account_user`` group + but this was not flexible enough. + - The widget configuration settings are now grouped in a dedicated ``Widget`` tab in + the report configuration form. + +**Bugfixes** + +- Fix access error when previewing or printing report. (`#415 `_) + + +15.0.4.0.5 (2022-07-19) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Bugfixes** + +- Support users without timezone. (`#388 `_) + + +15.0.4.0.4 (2022-07-19) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Bugfixes** + +- Allow deleting a report that has subreports. (`#431 `_) + + +15.0.4.0.2 (2022-02-16) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Bugfixes** + +- Fix access right issue when clicking the "Save" button on a MIS Report Instance form. (`#410 `_) + + +14.0.4.0.0 (2022-01-08) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Features** + +- Remove various field size limits. (`#332 `_) + + +**Bugfixes** + +- Support for the Odoo 13+ multi-company model. In multi-company mode, several allowed + companies can be declared on MIS Report instances, and the report operates on the + intersection of report companies and companies selected in the user context. (`#327 `_) +- The ``get_additional_query_filter`` argument of ``evaluate()`` is now propagated + correctly. (`#375 `_) +- Use the ``parent_state`` field of ``account.move.line`` to filter entries in ``posted`` + and ``draft`` state only. Before, when reporting in draft mode, all entries were used + (i.e. there was no filter), and that started including the cancelled entries/invoices in + Odoo 13.+. + + This change also contains a **breaking change** in the internal API. For quite a while + the ``target_move argument`` of AEP and other methods was not used by MIS Builder itself + and was kept for backward compatibility. To avoid rippling effects of the necessary + change to use ``parent_state``, we now remove this argument. (`#377 `_) + + +14.0.3.6.7 (2021-06-02) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Bugfixes** + +- When on a MIS Report Instance, if you wanted to generate a new line of type comparison, you couldn't currently select any existing period to compare. + This happened because the field domain was searching in a NewId context, thus not finding a correct period. + Changing the domain and making it use a computed field with a search for the _origin record solves the problem. (`#361 `_) + + +14.0.3.6.6 (2021-04-23) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Bugfixes** + +- Fix drilldown action name when the account model has been customized. (`#350 `_) + + +14.0.3.6.5 (2021-04-23) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Bugfixes** + +- While duplicating a MIS report instance, comparison columns are ignored because + they would raise an error otherwise, as they keep the old source_cmpcol_from_id + and source_cmpcol_to_id from the original record. (`#343 `_) + + +14.0.3.6.4 (2021-04-06) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Features** + +- The drilldown action name displayed on the breadcrumb has been revised. + The kpi description and the account ``display_name`` are shown instead + of the kpi's technical definition. (`#304 `_) +- Add analytic group filters on report instance, periods and in the interactive + view. (`#320 `_) + + +13.0.3.6.3 (2020-08-28) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Bugfixes** + +- Having a "Compare columns" added on a KPI with an associated style using a + Factor/Divider did lead to the said factor being applied on the percentages + when exporting to XLSX. (`#300 `_) + + +**Misc** + +- `#280 `_, `#296 `_ + + +13.0.3.6.2 (2020-04-22) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Bugfixes** + +- The "Settings" button is now displayed for users with the "Show full accounting features" right when previewing a report. (`#281 `_) + + +13.0.3.6.1 (2020-04-22) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Bugfixes** + +- Fix ``TypeError: 'module' object is not iterable`` when using + budgets by account. (`#276 `_) + + +13.0.3.6.0 (2020-03-28) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Features** + +- Add column-level filters on analytic account and analytic tags. + These filters are combined with a AND with the report-level filters + and cannot be modified in the preview. (`#138 `_) +- Access to KPI from other reports in KPI expressions, aka subreports. In a + report template, one can list named "subreports" (other report templates). When + evaluating expressions, you can access KPI's of subreports with a dot-prefix + notation. Example: you can define a MIS Report for a "Balance Sheet", and then + have another MIS Report "Balance Sheet Ratios" that fetches KPI's from "Balance + Sheet" to create new KPI's for the ratios (e.g. balance_sheet.current_assets / + balance_sheet.total_assets). (`#155 `_) + + +13.0.3.5.0 (2020-01-??) +~~~~~~~~~~~~~~~~~~~~~~~ + +Migration to odoo 13.0. + +12.0.3.5.0 (2019-10-26) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Features** + +- The ``account_id`` field of the model selected in 'Move lines source' + in the Period form can now be a Many2one + relationship with any model that has a ``code`` field (not only with + ``account.account`` model). To this end, the model to be used for Actuals + move lines can be configured on the report template. It can be something else + than move lines and the only constraint is that its ``account_id`` field + has a ``code`` field. (`#149 `_) +- Add ``source_aml_model_name`` field so extension modules providing + alternative data sources can more easily customize their data source. (`#214 `_) +- Support analytic tag filters in the backend view and preview widget. + Selecting several tags in the filter means filtering on move lines which + have *all* these tags set. This is to support the most common use case of + using tags for different dimensions. The filter also makes a AND with the + analytic account filter. (`#228 `_) +- Display company in account details rows in multi-company mode. (`#242 `_) + + +**Bugfixes** + +- Propagate context to xlsx report, so the analytic account filter + works when exporting to xslx too. This also requires a fix to + ``report_xlsx`` (see https://github.com/OCA/reporting-engine/pull/259). (`#178 `_) +- In columns of type Sum, preserve styles for KPIs that are not summable + (eg percentage values). Before this fix, such cells were displayed without + style. (`#219 `_) +- In Excel export, keep the percentage point suffix (pp) instead of replacing it with %. (`#220 `_) + + +12.0.3.4.0 (2019-07-09) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Features** + +- New year-to-date mode for defining periods. (`#165 `_) +- Add support for move lines with negative debit or credit. + Used by some for storno accounting. Not officially supported. (`#175 `_) +- In Excel export, use a number format with thousands separator. The + specific separator used depends on the Excel configuration (eg regional + settings). (`#190 `_) +- Add generation date/time at the end of the XLS export. (`#191 `_) +- In presence of Sub KPIs, report more informative user errors when + non-multi expressions yield tuples of incorrect lenght. (`#196 `_) + + +**Bugfixes** + +- Fix rendering of percentage types in Excel export. (`#192 `_) + + +12.0.3.3.0 (2019-01-26) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Features** + +*Dynamic analytic filters in report preview are not yet available in 11, +this requires an update to the JS widget that proved difficult to implement +so far. Help welcome.* + +- Analytic account filters. On a report, an analytic + account can be selected for filtering. The filter will + be applied to move lines queries. A filter box is also + available in the widget to let the user select the analytic + account during report preview. (`#15 `_) +- Control visibility of analytic filter combo box in widget. + This is useful to hide the analytic filters on reports where + they do not make sense, such as balance sheet reports. (`#42 `_) +- Display analytic filters in the header of exported pdf and xls. (`#44 `_) +- Replace the last old gtk icons with fontawesome icons. (`#104 `_) +- Use active_test=False in AEP queries. + This is important for reports involving inactive taxes. + This should not negatively effect existing reports, because + an accounting report must take into account all existing move lines + even if they reference objects such as taxes, journals, accounts types + that have been deactivated since their creation. (`#107 `_) +- int(), float() and round() support for AccountingNone. (`#108 `_) +- Allow referencing subkpis by name by writing `kpi_x.subkpi_y` in expressions. (`#114 `_) +- Add an option to control the display of the start/end dates in the + column headers. It is disabled by default (this is a change compared + to previous behaviour). (`#118 `_) +- Add evaluate method to mis.report. This is a simplified + method to evaluate kpis of a report over a time period, + without creating a mis.report.instance. (`#123 `_) + +**Bugs** + +- In the style form, hide the "Hide always" checkbox when "Hide always inherit" + is checked, as for all other syle elements. (`#121 _`) + +**Upgrading from 3.2 (breaking changes)** + +If you use ``Actuals (alternative)`` data source in combination with analytic +filters, the underlying model must now have an ``analytic_account_id`` field. + + +11.0.3.2.2 (2018-06-30) +~~~~~~~~~~~~~~~~~~~~~~~ + +* [FIX] Fix bug in company_default_get call returning + id instead of recordset + (`#103 `_) +* [IMP] add "hide always" style property to make hidden KPI's + (for KPI that serve as basis for other formulas, but do not + need to be displayed). + (`#46 `_) + +11.0.3.2.1 (2018-05-29) +~~~~~~~~~~~~~~~~~~~~~~~ + +* [FIX] Missing comparison operator for AccountingNone + leading to errors in pbal computations + (`#93 `_) + +10.0.3.2.0 (2018-05-02) +~~~~~~~~~~~~~~~~~~~~~~~ + +* [FIX] make subkpi ordering deterministic + (`#71 `_) +* [ADD] report instance level option to disable account expansion, + enabling the creation of detailed templates while deferring the decision + of rendering the details or not to the report instance + (`#74 `_) +* [ADD] pbal and nbal accounting expressions, to sum positive + and negative balances respectively (ie ignoring accounts with negative, + resp positive balances) + (`#86 `_) + +11.0.3.1.2 (2018-02-04) +~~~~~~~~~~~~~~~~~~~~~~~ + +Migration to Odoo 11. No new feature. +(`#67 `_) + +10.0.3.1.1 (2017-11-14) +~~~~~~~~~~~~~~~~~~~~~~~ + +New features: + +* [ADD] month and year relative periods, easier to use than + date ranges for the most common case. + (`#2 `_) +* [ADD] multi-company consolidation support, with currency conversion + (the conversion rate date is the end of the reporting period) + (`#7 `_, + `#3 `_) +* [ADD] provide ref, datetime, dateutil, time, user in the evaluation + context of move line domains; among other things, this allows using + references to xml ids (such as account types or tax tags) when + querying move lines + (`#26 `_). +* [ADD] extended account selectors: you can now select accounts using + any domain on account.account, not only account codes + ``balp[('account_type', '=', 'asset_receivable')]`` + (`#4 `_). +* [IMP] in the report instance configuration form, the filters are + now grouped in a notebook page, this improves readability and + extensibility + (`#39 `_). + +Bug fixes: + +* [FIX] fix error when saving periods in comparison mode on newly + created (not yet saved) report instances. + `#50 `_ +* [FIX] improve display of Base Date report instance view. + `#51 `_ + +Upgrading from 3.0 (breaking changes): + +* Alternative move line data sources must have a company_id field. + +10.0.3.0.4 (2017-10-14) +~~~~~~~~~~~~~~~~~~~~~~~ + +Bug fix: + +* [FIX] issue with initial balance rounding. + `#30 `_ + +10.0.3.0.3 (2017-10-03) +~~~~~~~~~~~~~~~~~~~~~~~ + +Bug fix: + +* [FIX] fix error saving KPI on newly created reports. + `#18 `_ + +10.0.3.0.2 (2017-10-01) +~~~~~~~~~~~~~~~~~~~~~~~ + +New features: + +* [ADD] Alternative move line source per report column. + This makes mis buidler accounting expressions work on any model + that has debit, credit, account_id and date fields. Provided you can + expose, say, committed purchases, or your budget as a view with + debit, credit and account_id, this opens up a lot of possibilities +* [ADD] Comparison column source (more flexible than the previous, + now deprecated, comparison mechanism). + CAVEAT: there is no automated migration to the new mechanism. +* [ADD] Sum column source, to create columns that add/subtract + other columns. +* [ADD] mis.kpi.data abstract model as a basis for manual KPI values + supporting automatic ajustment to the reporting time period (the basis + for budget item, but could also server other purposes, such as manually + entering some KPI values, such as number of employee) +* [ADD] mis_builder_budget module providing a new budget data source +* [ADD] new "hide empty" style property +* [IMP] new AEP method to get accounts involved in an expression + (this is useful to find which KPI relate to a given P&L + acount, to implement budget control) +* [IMP] many UI improvements +* [IMP] many code style improvements and some refactoring +* [IMP] add the column date_from, date_to in expression evaluation context, + as well as time, datetime and dateutil modules + +Main bug fixes: + +* [FIX] deletion of templates and reports (cascade and retricts) + (https://github.com/OCA/account-financial-reporting/issues/281) +* [FIX] copy of reports + (https://github.com/OCA/account-financial-reporting/issues/282) +* [FIX] better error message when periods have wrong/missing dates + (https://github.com/OCA/account-financial-reporting/issues/283) +* [FIX] xlsx export of string types KPI + (https://github.com/OCA/account-financial-reporting/issues/285) +* [FIX] sorting of detail by account +* [FIX] computation bug in detail by account when multiple accounting + expressions were used in a KPI +* [FIX] permission issue when adding report to dashboard with non admin user + +10.0.2.0.3 (unreleased) +~~~~~~~~~~~~~~~~~~~~~~~ + +* [IMP] more robust behaviour in presence of missing expressions +* [FIX] indent style +* [FIX] local variable 'ctx' referenced before assignment when generating + reports with no objects +* [IMP] use fontawesome icons +* [MIG] migrate to 10.0 +* [FIX] unicode error when exporting to Excel +* [IMP] provide full access to mis builder style for group Adviser. + +9.0.2.0.2 (2016-09-27) +~~~~~~~~~~~~~~~~~~~~~~ + +* [IMP] Add refresh button in mis report preview. +* [IMP] Widget code changes to allow to add fields in the widget more easily. + +9.0.2.0.1 (2016-05-26) +~~~~~~~~~~~~~~~~~~~~~~ + +* [IMP] remove unused argument in declare_and_compute_period() + for a cleaner API. This is a breaking API changing merged in + urgency before it is used by other modules. + +9.0.2.0.0 (2016-05-24) +~~~~~~~~~~~~~~~~~~~~~~ + +Part of the work for this release has been done at the Sorrento sprint +April 26-29, 2016. The rest (ie a major refactoring) has been done in +the weeks after. + +* [IMP] hide button box in edit mode on the report instance settings form +* [FIX] Fix sum aggregation of non-stored fields + (https://github.com/OCA/account-financial-reporting/issues/178) +* [IMP] There is now a default style at the report level +* [CHG] Number display properties (rounding, prefix, suffix, factor) are + now defined in styles +* [CHG] Percentage difference are rounded to 1 digit instead of the kpi's + rounding, as the KPI rounding does not make sense in this case +* [CHG] The divider suffix (k, M, etc) is not inserted automatically anymore + because it is inconsistent when working with prefixes; you need to add it + manually in the suffix +* [IMP] AccountingExpressionProcessor now supports 'balu' expressions + to obtain the unallocated profit/loss of previous fiscal years; + get_unallocated_pl is the corresponding convenience method +* [IMP] AccountingExpressionProcessor now has easy methods to obtain + balances by account: get_balances_initial, get_balances_end, + get_balances_variation +* [IMP] there is now an auto-expand feature to automatically display + a detail by account for selected kpis +* [IMP] the kpi and period lists are now manipulated through forms instead + of directly in the tree views +* [IMP] it is now possible to create a report through a wizard, such + reports are deemed temporary and available through a "Last Reports Generated" + menu, they are garbaged collected automatically, unless saved permanently, + which can be done using a Save button +* [IMP] there is now a beginner mode to configure simple reports with + only one period +* [IMP] it is now easier to configure periods with fixed start/end dates +* [IMP] the new sub-kpi mechanism allows the creation of columns + with multiple values, or columns with different values +* [IMP] thanks to the new style model, the Excel export is now styled +* [IMP] a new style model is now used to centralize style configuration +* [FIX] use =like instead of like to search for accounts, because + the % are added by the user in the expressions +* [FIX] Correctly compute the initial balance of income and expense account + based on the start of the fiscal year +* [IMP] Support date ranges (from OCA/server-tools/date_range) as a more + flexible alternative to fiscal periods +* v9 migration: fiscal periods are removed, account charts are removed, + consolidation accounts have been removed + +8.0.1.0.0 (2016-04-27) +~~~~~~~~~~~~~~~~~~~~~~ + +* The copy of a MIS Report Instance now copies period. + https://github.com/OCA/account-financial-reporting/pull/181 +* The copy of a MIS Report Template now copies KPIs and queries. + https://github.com/OCA/account-financial-reporting/pull/177 +* Usability: the default view for MIS Report instances is now the rendered preview, + and the settings are accessible through a gear icon in the list view and + a button in the preview. + https://github.com/OCA/account-financial-reporting/pull/170 +* Display blank cells instead of 0.0 when there is no data. + https://github.com/OCA/account-financial-reporting/pull/169 +* Usability: better layout of the MIS Report periods settings on small screens. + https://github.com/OCA/account-financial-reporting/pull/167 +* Include the download buttons inside the MIS Builder widget, and refactor + the widget to open the door to analytic filtering in the previews. + https://github.com/OCA/account-financial-reporting/pull/151 +* Add KPI rendering prefixes (so you can print $ in front of the value). + https://github.com/OCA/account-financial-reporting/pull/158 +* Add hooks for analytic filtering. + https://github.com/OCA/account-financial-reporting/pull/128 + https://github.com/OCA/account-financial-reporting/pull/131 + +8.0.0.2.0 +~~~~~~~~~ + +Pre-history. Or rather, you need to look at the git log. + +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 to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* ACSONE SA/NV + +Contributors +~~~~~~~~~~~~ + +* Stéphane Bidoul +* Laetitia Gangloff +* Adrien Peiffer +* Alexis de Lattre +* Alexandre Fayolle +* Jordi Ballester +* Thomas Binsfeld +* Giovanni Capalbo +* Marco Calcagni +* Sébastien Beau +* Laurent Mignon +* Luc De Meyer +* Benjamin Willig +* Martronic SA +* nicomacr +* Juan Jose Scarafia +* Richard deMeester +* Eric Caudal +* Andrea Stirpe +* Maxence Groine +* Arnaud Pineux +* Ernesto Tejeda +* Pedro M. Baeza +* Alexey Pelykh +* Jairo Llopis (https://www.moduon.team/) +* Dzung Tran +* Hoang Diep + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +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. + +.. |maintainer-sbidoul| image:: https://github.com/sbidoul.png?size=40px + :target: https://github.com/sbidoul + :alt: sbidoul + +Current `maintainer `__: + +|maintainer-sbidoul| + +This module is part of the `OCA/mis-builder `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. \ No newline at end of file diff --git a/mis_builder/__init__.py b/mis_builder/__init__.py new file mode 100644 index 0000000..d827ec9 --- /dev/null +++ b/mis_builder/__init__.py @@ -0,0 +1,6 @@ +# Copyright 2014 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import models +from . import wizard +from . import report diff --git a/mis_builder/__manifest__.py b/mis_builder/__manifest__.py new file mode 100644 index 0000000..1968fcb --- /dev/null +++ b/mis_builder/__manifest__.py @@ -0,0 +1,46 @@ +# Copyright 2014-2018 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +{ + "name": "MIS Builder", + "version": "3.0.5.1.5", + "category": "Reporting", + "summary": """ + Build 'Management Information System' Reports and Dashboards + """, + "author": "ACSONE SA/NV, " "Odoo Community Association (OCA)", + "website": "https://gitlab.com/flectra-community/mis-builder", + "depends": [ + "account", + "board", + "report_xlsx", # OCA/reporting-engine + "date_range", # OCA/server-ux + ], + "data": [ + "wizard/mis_builder_dashboard.xml", + "views/mis_report.xml", + "views/mis_report_instance.xml", + "views/mis_report_style.xml", + "datas/ir_cron.xml", + "security/ir.model.access.csv", + "security/mis_builder_security.xml", + "report/mis_report_instance_qweb.xml", + "report/mis_report_instance_xlsx.xml", + ], + "assets": { + "web.assets_backend": [ + "mis_builder/static/src/components/mis_report_widget.esm.js", + "mis_builder/static/src/components/mis_report_widget.xml", + "mis_builder/static/src/components/mis_report_widget.css", + ], + "web.report_assets_common": [ + "/mis_builder/static/src/css/report.css", + ], + }, + "qweb": ["static/src/xml/mis_report_widget.xml"], + "installable": False, + "application": True, + "license": "AGPL-3", + "development_status": "Production/Stable", + "maintainers": ["sbidoul"], +} diff --git a/mis_builder/datas/ir_cron.xml b/mis_builder/datas/ir_cron.xml new file mode 100644 index 0000000..0df8e8d --- /dev/null +++ b/mis_builder/datas/ir_cron.xml @@ -0,0 +1,13 @@ + + + + Vacuum temporary reports + 4 + hours + -1 + + + model._vacuum_report() + + + diff --git a/mis_builder/i18n/ca.po b/mis_builder/i18n/ca.po new file mode 100644 index 0000000..2ad4e64 --- /dev/null +++ b/mis_builder/i18n/ca.po @@ -0,0 +1,2413 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mis_builder +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-06-23 10:10+0000\n" +"Last-Translator: eccit-quim \n" +"Language-Team: none\n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "%s (copy)" +msgstr "%s (còpia)" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[('user_type_id', '=',\n" +" ref('account.\n" +" data_account_type_receivable')." +"id)][]\n" +" \n" +" : variation of the balance of all " +"receivable accounts over\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[][('tax_line_id.tag_ids', " +"'=', ref('l10n_be.tax_tag_56').id)]\n" +" \n" +" : balance of move lines related to " +"tax grid 56." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" debp[55%][('journal_id.code', " +"'=',\n" +" 'BNK1')]\n" +" \n" +" : sum of all debits on accounts 55 " +"and journal BNK1 during\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"AccountingNone : a null value that behaves as 0 in\n" +" arithmetic operations." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal, crd, deb, \n" +" pbal, nbal : " +"balance, debit, credit,\n" +" positive balance, negative balance." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal[70] : variation of the balance of account 70 over\n" +" the period (it is the same as " +"balp[70]." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bale[1%] : balance of accounts starting with 1 at\n" +" end of period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "bali[70,60] : initial balance of accounts 70 and 60." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"balu[] : (u for unallocated) is a special " +"expression\n" +" that shows the unallocated profit/" +"loss of previous fiscal\n" +" years." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"crdp[40%] : sum of all credits on accounts starting\n" +" with 40 during the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"date_from, date_to : beginning and end date of " +"the\n" +" period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"datetime, datetime, dateutil : the " +"python modules." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"p, i, e : respectively variation over " +"the period,\n" +" initial balance, ending balance" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"pbale[55%] : sum of all ending balances of accounts\n" +" starting with 55 whose ending " +"balance is positive." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"sum, min,\n" +" max, len,\n" +" avg : behave as " +"expected, very\n" +" similar to the python builtins." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.report_mis_report_instance +msgid "-" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields." +msgstr "" +"Model que sigui 'de tipus apunt' , és a dir, que tingui almenys els camps " +"debit, credit, date, account_id y company_id." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields. This model is the data source for column Actuals." +msgstr "" +"Un model \"com a línia de moviment\", és a dir, que tingui almenys camps de " +"dèbit, crèdit, data, account_id i company_id. Aquest model és l’origen de " +"dades de la columna Actuals." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "A date filter is mandatory for this source in column %s." +msgstr "Un filtre de data és obligatori per aquest origen a la columna %s." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "A domain to additionally filter move lines considered in this column." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__analytic_domain +msgid "" +"A domain to additionally filter move lines considered in this report. " +"Caution: when using different move line sources in different columns, such " +"as budgets by account, make sure to use only fields that are available in " +"all move line sources." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__account_model +msgid "Account Model" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__accumulation_method +msgid "Accumulation Method" +msgstr "Mètode d'agregació" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Actual (alternative) models used in columns must have the same account model " +"in the Account field and must be the same defined in the report template: %s" +msgstr "" +"Els models actuals (alternatius) utilitzats a les columnes han de tenir el " +"mateix model de compte al camp Compte i han de ser els mateixos definits a " +"la plantilla de l’informe: %s" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals +msgid "Actuals" +msgstr "Dades reals" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals_alt +msgid "Actuals (alternative)" +msgstr "Dades reals (alternativa)" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source +msgid "" +"Actuals: current data, from accounting and other queries.\n" +"Actuals (alternative): current data from an alternative source (eg a " +"database view providing look-alike account move lines).\n" +"Sum columns: summation (+/-) of other columns.\n" +"Compare to column: compare to other column.\n" +msgstr "" +"Dades reals: dades actuals provinents de la comptabilitat i altres " +"consultes.\n" +"Dades reals (alternativa): dades actuals provinents d'un origen alternatiu " +"(per exemple, vista de la base de dades proveint registres de \"tipus apunt" +"\").\n" +"Suma de columnes: sumarització (+/-) d'altres columnes.\n" +"Comparar columnes: comparació amb una altra columna.\n" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_prorata_read_group_mixin +msgid "Adapt model with date_from/date_to for pro-rata temporis read_group" +msgstr "" +"Adapta el model amb data_from / date_to per al grup de lectura de temporis " +"pro-rata" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_add_to_dashboard_action +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Add to dashboard" +msgstr "Afegir al taulell" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Additionally following variables are available\n" +" in the evaluation context:" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__aggregate +msgid "Aggregate" +msgstr "Agregació" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__all +msgid "All Entries" +msgstr "Tots els assentaments" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__all_kpi_ids +msgid "All Kpi" +msgstr "Tot Kpi" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__posted +msgid "All Posted Entries" +msgstr "Tots els assentaments assentats" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__allowed_cmpcol_ids +msgid "Allowed Cmpcol" +msgstr "Cmpcol permès" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_ids +msgid "Allowed companies" +msgstr "Empreses permeses" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_id +msgid "Allowed company" +msgstr "Empresa permesa" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__amount +msgid "Amount" +msgstr "Import" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__style_expression +msgid "" +"An expression that returns a style depending on the KPI value. Such style is " +"applied on top of the row style." +msgstr "" +"Una expressió que retorna un estil depenent del valor del KPI. Aquest estil " +"s'aplica a la part superior de l'estil de la fila." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__analytic_domain +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "Analytic Domain" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Auto expand" +msgstr "Auto expandir" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__avg +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__avg +#, python-format +msgid "Average" +msgstr "Mitjana" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color +msgid "Background Color" +msgstr "Color del fons" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color_inherit +msgid "Background Color Inherit" +msgstr "Color del fons heretat" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__background_color +msgid "Background color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "Color de fons en RGB (de #000000 a #FFFFFF)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date +msgid "Base date" +msgstr "Data base" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__bold +msgid "Bold" +msgstr "Negreta" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Cancel" +msgstr "Cancel·lar" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__multi_company +msgid "Check if you wish to specify several companies to be searched for data." +msgstr "Comproveu si voleu especificar diverses empreses per buscar dades." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Color" +msgstr "Color" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color_inherit +msgid "Color Inherit" +msgstr "Color heretat" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_to_sum_id +msgid "Column" +msgstr "Columna" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s cannot be compared to itrec." +msgstr "La columna %s no es pot comparar amb itrec." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s with move lines source must have from/to dates." +msgstr "" +"La columna %s amb l'origen de les línies de moviment ha de tenir dates des/" +"fins." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Columns" +msgstr "Columnes" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "Columns %(descr)s and %(base_descr)s are not comparable" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Columns to compare must belong to the same report in %s" +msgstr "Les columnes a comparar han de pertànyer al mateix informe en %s" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_ids +msgid "Columns to sum" +msgstr "Columnes a sumar" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__query_company_ids +msgid "Companies for which data will be searched." +msgstr "Companyies per a les que es buscaran dades." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_to_id +msgid "Compare" +msgstr "Comparar" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__cmpcol +msgid "Compare columns" +msgstr "Comparar columnes" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__compare_method +msgid "Comparison Method" +msgstr "Mètode de comparació" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__comparison_mode +msgid "Comparison Mode" +msgstr "Mode de comparació" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_uid +msgid "Created by" +msgstr "Creat per" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_date +msgid "Created on" +msgstr "Creat el" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__currency_id +msgid "Currency" +msgstr "Moneda" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__dashboard_id +msgid "Dashboard" +msgstr "Taulell" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date +msgid "Date" +msgstr "Data" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__date_field +msgid "Date Field" +msgstr "Camp data" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_from +msgid "Date From" +msgstr "Data Des de" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_range_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_id +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__date_range +#, python-format +msgid "Date Range" +msgstr "Rang de dates" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_type_id +msgid "Date Range Type" +msgstr "Tipus de rang de dates" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_to +msgid "Date To" +msgstr "Data a" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Dates" +msgstr "Dates" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__d +#, python-format +msgid "Day" +msgstr "Dia" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__description +msgid "Description" +msgstr "Descripció" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__accumulation_method +msgid "" +"Determines how values of this kpi spanning over a time period are " +"transformed to match the reporting period. Sum: values of shorter period are " +"added, values of longest or partially overlapping periods are adjusted pro-" +"rata temporis.\n" +"Average: values of included period are averaged with a pro-rata temporis " +"weight." +msgstr "" +"Determina com els valors d'aquest kpi transcorrent sobre el període de temps " +"són transformats per casar amb el període de l'informe. Sum: s'afegeixen els " +"valors del període més curt, i els valors del més llarg o de períodes que " +"solapen parcialment s'ajusten prorratejant-se en el temps.\n" +"Mitjana: els valors del període inclòs fan mitjana amb el pes del prorrateig " +"temporal." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__diff +#, python-format +msgid "Difference" +msgstr "Diferència" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__no_auto_expand_accounts +msgid "Disable account details expansion" +msgstr "Desactiva l'expansió dels detalls del compte" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display Columns Description" +msgstr "Mostrar Columnes Descripció" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__display_name +msgid "Display Name" +msgstr "Nom a mostrar" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts +msgid "Display details by account" +msgstr "Mostrar detalls per compte" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display the date range details in the column headers." +msgstr "Mostra els detalls de l'interval de dates a les capçaleres de columna." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider_inherit +msgid "Divider Inherit" +msgstr "Divisor heretat" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__domain +msgid "Domain" +msgstr "Domini" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp_inherit +msgid "Dp Inherit" +msgstr "Dp heretat" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_prorata_read_group_mixin__date +msgid "" +"Dummy field that adapts searches on date to searches on date_from/date_to." +msgstr "" +"Camp dummy que adapta les cerques en data a les cerques en data_from / " +"date_to." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__duration +msgid "Duration" +msgstr "Durada" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__query_company_ids +msgid "Effective companies" +msgstr "Empreses efectives" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Enter expression here, for example balp[70%]. See also help tab." +msgstr "" +"Introdueixi l'expressió aquí, per exemple [balp70%]. Vegi també la pestanya " +"d'ajuda." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"Error while querying move line source \"%(model_name)s\". This is likely due " +"to a filter or expression referencing a field that does not exist in the " +"model.\n" +"\n" +"The technical error message is: %(exception)s. " +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Examples:" +msgstr "Exemples:" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Export" +msgstr "Exportar" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__expression_ids +msgid "Expression" +msgstr "Expressió" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions" +msgstr "Expressions" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions can be any valid python expressions." +msgstr "Les expressions poden ser qualsevol expressió vàlida de Python." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Expressions can involve other KPI, sub KPI and\n" +" query results by name (eg kpi1 + " +"kpi2,\n" +" kpi2.subkpi1, query1." +"field1)." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__normalize_factor +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider +msgid "Factor" +msgstr "Factor" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Factor inherit" +msgstr "Factor heretat" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__normalize_factor +msgid "Factor to use to normalize the period (used in comparison" +msgstr "" +"El factor s'utilitza per a normalitzar el període (utilitzat en la comparació" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_names +msgid "Fetched fields name" +msgstr "Nom dels camps obtinguts" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_ids +msgid "Fields to fetch" +msgstr "Camps a obtenir" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Filter box search view" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Filters" +msgstr "Filtres" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__fix +msgid "Fixed dates" +msgstr "Dates fixes" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Font" +msgstr "Font" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size +msgid "Font Size" +msgstr "Tamany del tipus de lletra" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size_inherit +msgid "Font Size Inherit" +msgstr "Tamany del tipus de lletra heretat" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style +msgid "Font Style" +msgstr "Estil del tipus de lletra" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style_inherit +msgid "Font Style Inherit" +msgstr "Estil del tipus de lletra heretat" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight +msgid "Font Weight" +msgstr "Tamany del tipus de lletra" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight_inherit +msgid "Font Weight Inherit" +msgstr "Tamany del tipus de lletra heretat" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Forces the start date to Jan 1st of the relevant year" +msgstr "Obliga la data d'inici a l'1 de gener de l'any corresponent" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_from +msgid "From" +msgstr "Des de" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_from +msgid "From (computed)" +msgstr "Des de (computat)" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/report/mis_report_instance_xlsx.py:0 +#, python-format +msgid "Generated on %(gen_date)s at %(gen_time)s" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Help (for KPI expressions)" +msgstr "Ajuda (per a les expressions del KPI)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always +msgid "Hide Always" +msgstr "Amagar sempre" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always_inherit +msgid "Hide Always Inherit" +msgstr "Amagar sempre heretat" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty +msgid "Hide Empty" +msgstr "Amagar buits" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty_inherit +msgid "Hide Empty Inherit" +msgstr "Amagar buits heretat" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__id +msgid "ID" +msgstr "ID" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"If currency_id is not provided, all companies must have the same currency." +msgstr "" +"Si no es proveeix el camp currency_id, totes les companyies han de tenir la " +"mateixa moneda." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Indent" +msgstr "Sagnat" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level +msgid "Indent Level" +msgstr "Nivell de sagnat" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level_inherit +msgid "Indent Level Inherit" +msgstr "Nivell de sagnat heretat" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "Indent level must be greater than or equal to 0" +msgstr "EL nivell de sagnat ha de ser igual o major que 0" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__italic +msgid "Italic" +msgstr "Cursiva" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__kpi_expression_id +msgid "KPI" +msgstr "KPI" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" has type %(type)s while a tuple was expected.\n" +"\n" +"This can be fixed by either:\n" +"\t- Changing the KPI value to a tuple of length %(length)s\n" +"or\n" +"\t- Changing the KPI to `multi` mode and giving an explicit value for each " +"sub-KPI." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" is valued as a tuple of length %(length)s while a tuple of " +"length%(expected_length)s is expected." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq1 +msgid "KPI Sequence" +msgstr "Seqüència KPI" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "KPI name ({}) must be a valid python identifier" +msgstr "El nom del KPI ({}) ha de ser un identificador Python vàlid" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__kpi_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "KPI's" +msgstr "KPI's" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__all_kpi_ids +msgid "KPIs of this report and subreports." +msgstr "KPIs d’aquest informe i subinformes." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__kpi_id +msgid "Kpi" +msgstr "KPI" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__name +msgid "Label" +msgstr "Etiqueta" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__landscape_pdf +msgid "Landscape PDF" +msgstr "PDF apaïsat" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport____last_update +msgid "Last Modified on" +msgstr "Última modificació el" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.last_mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.last_wizard_mis_report_instance_view_menu +msgid "Last Reports Generated" +msgstr "Últims informes generats" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_uid +msgid "Last Updated by" +msgstr "Última actualització per" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_date +msgid "Last Updated on" +msgstr "Última actualització el" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Layout" +msgstr "Disseny" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_report_mis_builder_mis_report_instance_xlsx +msgid "MIS Builder XLSX report" +msgstr "Informe MIS Builder XLSX" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_kpi_data +msgid "MIS Kpi Data Abtract class" +msgstr "Classe abstracta de dades KPI MIS" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "MIS Report" +msgstr "Informe MIS" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subreport +msgid "MIS Report - Sub Reports Relation" +msgstr "Informe MIS - Relació Subinformes" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_add_mis_report_instance_dashboard_wizard +msgid "MIS Report Add to Dashboard Wizard" +msgstr "Assistent per afegir un informe MIS al tauler de control" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "MIS Report Instance" +msgstr "Instància d'informe MIS" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period +msgid "MIS Report Instance Period" +msgstr "Període de la instància de l'informe MIS" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period_sum +msgid "MIS Report Instance Period Sum" +msgstr "Suma del període de la instància de l'informe MIS" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "MIS Report KPI" +msgstr "KPI d'informe MIS" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi_expression +msgid "MIS Report KPI Expression" +msgstr "Expressió de KPI del informe MIS" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_result_view_form +msgid "MIS Report Preview" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_query +msgid "MIS Report Query" +msgstr "Consultar informe MIS" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_style +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "MIS Report Style" +msgstr "Estil de format MIS" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_style_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_style_view_menu +msgid "MIS Report Styles" +msgstr "Estils d'informes MIS" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subkpi +msgid "MIS Report Sub-KPI" +msgstr "Consulta d'informe MIS" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report +msgid "MIS Report Template" +msgstr "Plantilla d'informe MIS" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_view_menu +msgid "MIS Report Templates" +msgstr "Plantilles d'informe MIS" + +#. module: mis_builder +#: model:ir.ui.menu,name:mis_builder.mis_report_conf_menu +#: model:ir.ui.menu,name:mis_builder.mis_report_finance_menu +msgid "MIS Reporting" +msgstr "MIS" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_instance_view_menu +msgid "MIS Reports" +msgstr "Informes MIS" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.qweb_pdf_export +msgid "MIS report instance QWEB PDF report" +msgstr "Informe QWeb PDF d'instància d'informe MIS" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.xls_export +msgid "MIS report instance XLS report" +msgstr "Informe XLS d'instància d'informe MIS" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__max +#, python-format +msgid "Max" +msgstr "Màx" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__min +#, python-format +msgid "Min" +msgstr "Mín" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__mode +msgid "Mode" +msgstr "Mode" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__model_id +msgid "Model" +msgstr "Model" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__m +#, python-format +msgid "Month" +msgstr "Mes" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "Move Lines Source" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "Move lines source" +msgstr "Origen dels apunts" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_name +msgid "Move lines source model name" +msgstr "Moveu el nom del model font de línies" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__multi +msgid "Multi" +msgstr "Multi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__multi_company +msgid "Multiple companies" +msgstr "Múltiples companyies" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__name +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Name" +msgstr "Nom" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__none +msgid "No date filter" +msgstr "Sense filtre de dates" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "No date filter is allowed for this source in column %s." +msgstr "No es permet un filtre de data per aquesta font a la columna %s." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__none +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__none +#, python-format +msgid "None" +msgstr "Res" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__normal +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__nornal +msgid "Normal" +msgstr "Normal" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Number" +msgstr "Número" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__duration +msgid "Number of periods" +msgstr "Número de períodes" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__num +#, python-format +msgid "Numeric" +msgstr "Numèric" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__offset +msgid "Offset" +msgstr "Desplaçament" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__offset +msgid "Offset from current period" +msgstr "Desplaçament del període actual" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_id +msgid "Parent column" +msgstr "Columna pare" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__pct +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__pct +#, python-format +msgid "Percentage" +msgstr "Percentatge" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_name_unique +msgid "Period name should be unique by report" +msgstr "El nom del període ha de ser únic a cada informe" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__type +msgid "Period type" +msgstr "Tipus de període" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__period_ids +msgid "Periods" +msgstr "Períodes" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__pivot_date +msgid "Pivot Date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Please provide both columns to compare in %s." +msgstr "Si us plau, introdueixi ambdues columnes a comparar en %s." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Please select a report template and/or save the report before adding columns." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix +msgid "Prefix" +msgstr "Prefix" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix_inherit +msgid "Prefix Inherit" +msgstr "Prefix heretat" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Preview" +msgstr "Previsualitzar" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Print" +msgstr "Imprimeix" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__query_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Queries" +msgstr "Consultes" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Query name ({}) must be valid python identifier" +msgstr "El nom de la consulta ({}) ha de ser un identificador de Python vàlid" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Refresh" +msgstr "Actualitzar" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__relative +msgid "Relative to report base date" +msgstr "Relatiu a la data base de l'informe" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__report_id +msgid "Report" +msgstr "Informe" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_ir_actions_report +msgid "Report Action" +msgstr "Informar de l'acció" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_instance_id +msgid "Report Instance" +msgstr "Instància de l'informe" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__date +msgid "Report base date (leave empty to use current date)" +msgstr "Data base de l'informe (deixar buida per a utilitzar la data actual)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp +msgid "Rounding" +msgstr "Arrodoniment" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Rounding inherit" +msgstr "Arrodoniment heretat" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Save" +msgstr "Guardar" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Search view to customize the filter box in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__company_ids +msgid "Select companies for which data will be searched." +msgstr "Seleccioni les companyies per a les que es buscaran les dades." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__currency_id +msgid "" +"Select target currency for the report. Required if companies have different " +"currencies." +msgstr "" +"Seleccioni la moneda objectiu per a l'informe. Es requereix si les " +"companyies tenen monedes diferents." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__sequence +msgid "Sequence" +msgstr "Seqüència" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Settings" +msgstr "Configuració" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_subreport_unique +msgid "" +"Should not include the same report more than once as sub report of a given " +"report" +msgstr "" +"No s'ha d'incloure el mateix informe més d'una vegada com a subinforme d'un " +"informe determinat" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show Pivot Date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show filters box" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show settings button" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show the Pivot Date in the report widget filter bar." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show the filter bar in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show the settings button in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__sign +msgid "Sign" +msgstr "Símbol" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Source" +msgstr "Origen" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__str +#, python-format +msgid "String" +msgstr "Cadena" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__style_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_id +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Style" +msgstr "Estil" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_expression +msgid "Style Expression" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts_style_id +msgid "Style for account detail rows" +msgstr "Estil per a les files de detall de compte" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__name +msgid "Style name" +msgstr "Nom de l'estil" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subkpi_ids +msgid "Sub KPI" +msgstr "Sub KPI" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__subkpi_ids +msgid "Sub KPI Filter" +msgstr "Filtre del sub KPI" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_kpi_expression_subkpi_kpi_unique +msgid "Sub KPI must be used once and only once for each KPI" +msgstr "El sub KPI ha d'utilitzar-se només una vegada per a cada KPI" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub KPI's" +msgstr "Sub KPI's" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub Reports" +msgstr "Subinformes" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subreport_ids +msgid "Sub reports" +msgstr "Subinformes" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq2 +msgid "Sub-KPI Sequence" +msgstr "Seqüència Sub-KPI" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Sub-KPI name ({}) must be a valid python identifier" +msgstr "El nom Sub-KPI ({}) ha de ser un identificador Python vàlid" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__subkpi_id +msgid "Subkpi" +msgstr "SubKPI" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__subreport_id +msgid "Subreport" +msgstr "Subinforme" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport loop detected" +msgstr "S'ha detectat un bucle de subinforme" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport name ({}) must be a valid python identifier" +msgstr "El nom del subinforme ({}) ha de ser un identificador Python vàlid" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_name_unique +msgid "Subreport name should be unique by report" +msgstr "El nom del subinforme ha de ser únic per a l'informe" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix +msgid "Suffix" +msgstr "Sufix" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix_inherit +msgid "Suffix Inherit" +msgstr "Sufix heretat" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__sum +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__sum +#, python-format +msgid "Sum" +msgstr "Suma" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_accdet +msgid "Sum account details" +msgstr "Detalls de compte de la suma" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "" +"Sum cannot be computed in column {} because the columns to sum have no " +"common subkpis" +msgstr "" +"La suma no pot ser calculada a la columa {} perquè les columnes a sumar no " +"tenen subkpis comuns" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__sumcol +msgid "Sum columns" +msgstr "Suma de columnes" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__target_move +msgid "Target Moves" +msgstr "Apunts objectiu" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +msgid "Template" +msgstr "Plantilla" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__temporary +msgid "Temporary" +msgstr "Temporal" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color +msgid "Text color" +msgstr "Color de text" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__color +msgid "Text color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "Color de text en un codi RGB vàlid (de #000000 fins a #FFFFFF)" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The account selector is a like expression on the\n" +" account code (eg 70%, " +"etc), or a domain over accounts\n" +" (eg [('code', 'like', '60%')])." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The journal items domain is an Odoo domain filter on\n" +" journal items." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The following special elements are recognized in the expressions\n" +" to compute accounting data: {bal|" +"crd|deb|pbal|nbal}{pieu}[account\n" +" selector][journal items domain]." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_to +msgid "To" +msgstr "Fins a" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_to +msgid "To (computed)" +msgstr "Per (calculat)" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_kpi_data.py:0 +#, python-format +msgid "Unexpected accumulation method %(method)s for %(name)s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Unexpected value %s for target_move." +msgstr "Valor inesperat %s per a target_move." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/prorata_read_group_mixin.py:0 +#, python-format +msgid "Unsupported operator %s for searching on date" +msgstr "Operador %s no compatible per cercar la data" + +#. module: mis_builder +#: model:ir.actions.server,name:mis_builder.ir_cron_vacuum_temp_reports_ir_actions_server +#: model:ir.cron,cron_name:mis_builder.ir_cron_vacuum_temp_reports +msgid "Vacuum temporary reports" +msgstr "Buit d'informes temporals" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__valid +msgid "Valid" +msgstr "Vàlid" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__type +msgid "Value type" +msgstr "Tipus del valor" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Visibility" +msgstr "Visibilitat" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__w +#, python-format +msgid "Week" +msgstr "Setmana" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Widget" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_duration +msgid "Wrong duration, it must be positive!" +msgstr "Duració incorrecta, ha de ser positiva!" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_normalize_factor +msgid "Wrong normalize factor, it must be positive!" +msgstr "Factor de normalització incorrecte. Ha de ser positiu!" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__y +#, python-format +msgid "Year" +msgstr "Any" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Year to date" +msgstr "Any en curs" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "You cannot sum period %s with itself." +msgstr "No pot sumar el període %s amb ell mateix." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "from %(date_from)s to %(date_to)s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__large +msgid "large" +msgstr "gran" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__medium +msgid "medium" +msgstr "mitjana" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "or" +msgstr "o" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "pp" +msgstr "pp" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__small +msgid "small" +msgstr "petita" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_from_id +msgid "versus" +msgstr "contra" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-large +msgid "x-large" +msgstr "extra-gran" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-small +msgid "x-small" +msgstr "extra-petita" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-large +msgid "xx-large" +msgstr "extra-súper-gran" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-small +msgid "xx-small" +msgstr "extra-súper-petita" + +#, python-format +#~ msgid "Columns {} and {} are not comparable" +#~ msgstr "Les columnes {} i {} no són comparables" + +#, python-format +#~ msgid "Generated on {} at {}" +#~ msgstr "Generat el dia {} a {}" + +#, python-format +#~ msgid "" +#~ "KPI \"{}\" has type {} while a tuple was expected.\n" +#~ "\n" +#~ "This can be fixed by either:\n" +#~ "\t- Changing the KPI value to a tuple of length {}\n" +#~ "or\n" +#~ "\t- Changing the KPI to `multi` mode and giving an explicit value for " +#~ "each sub-KPI." +#~ msgstr "" +#~ "El KPI \"{}\" té el tipus {} mentre s'esperava una tupla.\n" +#~ "\n" +#~ "Això es pot solucionar amb:\n" +#~ "- Canviant el valor del KPI per una tupla de longitud {}\n" +#~ "o\n" +#~ "- Canviar el KPI al mode `multi` i donar un valor explícit a cada sub-KPI." + +#, python-format +#~ msgid "" +#~ "KPI \"{}\" is valued as a tuple of length {} while a tuple of length {} " +#~ "is expected." +#~ msgstr "" +#~ "El KPI \"{}\" es valora com a tupla de longitud {} mentre que s'espera " +#~ "una tupla de longitud {}." + +#, python-format +#~ msgid "Can not update a multi kpi from the kpi line" +#~ msgstr "No es pot actualitzar un kpi múltiple des d'una línia de kpi" + +#~ msgid "" +#~ "\n" +#~ " balp[('user_type_id', " +#~ "'=',\n" +#~ " ref('account.\n" +#~ " data_account_type_receivable')." +#~ "id)][]\n" +#~ " \n" +#~ " : variation of the balance of " +#~ "all receivable\n" +#~ " accounts over the period." +#~ msgstr "" +#~ "\n" +#~ " balp[('user_type_id', " +#~ "'=',\n" +#~ " ref('account.\n" +#~ " data_account_type_receivable')." +#~ "id)][]\n" +#~ " \n" +#~ " : variació del saldo de tots " +#~ "els crèdits\n" +#~ " comptes al llarg del període." + +#~ msgid "" +#~ "\n" +#~ " balp[][('tax_line_id." +#~ "tag_ids', '=',\n" +#~ " ref('l10n_be.tax_tag_56')." +#~ "id)]\n" +#~ " \n" +#~ " : balance of move lines " +#~ "related to tax grid\n" +#~ " 56." +#~ msgstr "" +#~ "\n" +#~ " balp[][('tax_line_id." +#~ "tag_ids', '=',\n" +#~ " ref('l10n_be.tax_tag_56')." +#~ "id)]\n" +#~ " \n" +#~ " : saldo de línies de moviment " +#~ "relacionades amb la xarxa fiscal\n" +#~ " 56." + +#~ msgid "" +#~ "\n" +#~ " debp[55%][('journal_id." +#~ "code', '=',\n" +#~ " 'BNK1')]\n" +#~ " \n" +#~ " : sum of all debits on " +#~ "accounts 55 and\n" +#~ " journal BNK1 during the " +#~ "period." +#~ msgstr "" +#~ "\n" +#~ " debp[55%][('journal_id." +#~ "code', '=',\n" +#~ " 'BNK1')]\n" +#~ " \n" +#~ " : suma de tots els dèbits " +#~ "dels comptes 55 i\n" +#~ " revista BNK1 durant el " +#~ "període." + +#~ msgid "" +#~ "AccountingNone\n" +#~ " : a null value that behaves " +#~ "as 0 in\n" +#~ " arithmetic operations." +#~ msgstr "" +#~ "AccountingNone\n" +#~ " : un valor nul que es " +#~ "comporta com a 0 polzades\n" +#~ " operacions aritmètiques." + +#~ msgid "" +#~ "bal, crd, deb, pbal, nbal\n" +#~ " : balance, debit, credit, " +#~ "positive balance,\n" +#~ " negative balance." +#~ msgstr "" +#~ "bal, crd, deb, pbal, nbal\n" +#~ " : saldo, dèbit, crèdit, saldo " +#~ "positiu,\n" +#~ " saldo negatiu." + +#~ msgid "" +#~ "bal[70]\n" +#~ " : variation of the balance of " +#~ "account 70\n" +#~ " over the period (it is the " +#~ "same as balp[70]." +#~ msgstr "" +#~ "bal[70]\n" +#~ " : variació del saldo del " +#~ "compte 70\n" +#~ " durant el període (és el " +#~ "mateix que balp[70]." + +#~ msgid "" +#~ "bale[1%]\n" +#~ " : balance of accounts " +#~ "starting with 1 at end\n" +#~ " of period." +#~ msgstr "" +#~ "bale[1%]\n" +#~ " : saldo dels comptes " +#~ "començant per 1 al final\n" +#~ " de període." + +#~ msgid "" +#~ "bali[70,60]\n" +#~ " : initial balance of accounts " +#~ "70 and 60." +#~ msgstr "" +#~ "bali[70,60]\n" +#~ " : saldo inicial dels comptes " +#~ "70 i 60." + +#~ msgid "" +#~ "balu[]\n" +#~ " : (u for unallocated) is a " +#~ "special\n" +#~ " expression that shows the " +#~ "unallocated\n" +#~ " profit/loss of previous\n" +#~ " fiscal years." +#~ msgstr "" +#~ "balu[]\n" +#~ " : (u per no assignat) és un " +#~ "especial\n" +#~ " expressió que mostra el no " +#~ "assignat\n" +#~ " guanys/pèrdues anteriors\n" +#~ " exercicis fiscals." + +#~ msgid "" +#~ "crdp[40%]\n" +#~ " : sum of all credits on " +#~ "accounts starting\n" +#~ " with 40 during the period." +#~ msgstr "" +#~ "crdp[40%]\n" +#~ " : suma de tots els crèdits " +#~ "dels comptes que s'inicien\n" +#~ " amb 40 durant el període." + +#~ msgid "" +#~ "date_from, date_to\n" +#~ " : beginning and end date of " +#~ "the period." +#~ msgstr "" +#~ "date_from, date_to\n" +#~ " : data d'inici i finalització " +#~ "del període." + +#~ msgid "" +#~ "datetime, datetime, dateutil\n" +#~ " : the python modules." +#~ msgstr "" +#~ "datetime, datetime, dateutil\n" +#~ " : els mòduls Python." + +#~ msgid "" +#~ "p, i, e\n" +#~ " : respectively variation over " +#~ "the period,\n" +#~ " initial balance, ending " +#~ "balance" +#~ msgstr "" +#~ "p, i, e\n" +#~ " : variació respectivament al " +#~ "llarg del període,\n" +#~ " saldo inicial, saldo final" + +#~ msgid "" +#~ "pbale[55%]\n" +#~ " : sum of all ending balances " +#~ "of accounts\n" +#~ " starting with 55 whose\n" +#~ " ending balance is positive." +#~ msgstr "" +#~ "pbale[55%]\n" +#~ " : suma de tots els saldos " +#~ "finals dels comptes\n" +#~ " començant per 55 els quals\n" +#~ " el saldo final és positiu." + +#~ msgid "" +#~ "sum, min, max, len, avg\n" +#~ " : behave as expected, very " +#~ "similar to the\n" +#~ " python builtins." +#~ msgstr "" +#~ "sum, min, max, len, avg\n" +#~ " : comportar-se com " +#~ "s'esperava, molt semblant al\n" +#~ " python integrats." + +#~ msgid "Account model" +#~ msgstr "Model de compte" + +#~ msgid "" +#~ "Additionally following variables are available\n" +#~ " in the evaluation context:" +#~ msgstr "" +#~ "A més, hi ha disponibles les variables següents\n" +#~ " en el context d'avaluació:" + +#~ msgid "Analytic Account" +#~ msgstr "Compte Analític" + +#, python-format +#~ msgid "Analytic Account Filter" +#~ msgstr "Filtre Analític de Comptes" + +#, python-format +#~ msgid "Analytic Account Group" +#~ msgstr "Grup de comptes analítics" + +#, python-format +#~ msgid "Analytic Account Group: %s" +#~ msgstr "Grup de comptes analítics: %s" + +#, python-format +#~ msgid "Analytic Account: %s" +#~ msgstr "Compte Analític: %s" + +#~ msgid "Analytic Tags" +#~ msgstr "Etiquetes Analítiques" + +#, python-format +#~ msgid "Analytic Tags Filter" +#~ msgstr "Filtre d'Etiquetes Analítiques" + +#, python-format +#~ msgid "Analytic Tags: %s" +#~ msgstr "Etiquetes Analítiques: %s" + +#~ msgid "" +#~ "Expressions can involve other KPI, sub KPI and\n" +#~ " query results by name (eg kpi1 + " +#~ "kpi2,\n" +#~ " kpi2.subkpi1, query1.field1)." +#~ msgstr "" +#~ "Les expressions poden incloure altres KPI, sub KPI i\n" +#~ " consulteu els resultats pel nom " +#~ "(p. ex. kpi1 + kpi2,\n" +#~ " kpi2.subkpi1, consulta1.camp1)." + +#~ msgid "" +#~ "Filter column on journal entries that have all these analytic tags.This " +#~ "filter is combined with a AND with the report-level filters and cannot be " +#~ "modified in the preview." +#~ msgstr "" +#~ "Filtra la columna de les entrades de diari que tenen totes aquestes " +#~ "etiquetes analítiques. Aquest filtre es combina amb un AND amb els " +#~ "filtres a nivell d’informe i no es pot modificar en la previsualització." + +#~ msgid "" +#~ "Filter column on journal entries that match this analytic account group. " +#~ "This filter is combined with a AND with the report-level filters and " +#~ "cannot be modified in the preview." +#~ msgstr "" +#~ "Filtreu la columna a les entrades de diari que coincideixin amb aquest " +#~ "grup de comptes analítics. Aquest filtre es combina amb un AND amb els " +#~ "filtres a nivell d'informe i no es pot modificar a la vista prèvia." + +#~ msgid "" +#~ "Filter column on journal entries that match this analytic account.This " +#~ "filter is combined with a AND with the report-level filters and cannot be " +#~ "modified in the preview." +#~ msgstr "" +#~ "Filtra la columna de les entrades de diari que coincideixen amb aquest " +#~ "compte analític. Aquest filtre es combina amb un AND amb els filtres a " +#~ "nivell d’informe i no es pot modificar en la previsualització." + +#~ msgid "Hide Analytic Filters" +#~ msgstr "Amagar filtres analítics" + +#~ msgid "MIS Report Instances" +#~ msgstr "Instàncies d'informes MIS" + +#~ msgid "MIS Report Result" +#~ msgstr "Resultat d'informe MIS" + +#~ msgid "Pivot date" +#~ msgstr "Data pivot" + +#~ msgid "Style expression" +#~ msgstr "Expressió d'estil" + +#~ msgid "" +#~ "The\n" +#~ " account selector\n" +#~ " is a like expression on the " +#~ "account code (eg\n" +#~ " 70%, etc)." +#~ msgstr "" +#~ "El\n" +#~ " selector de comptes\n" +#~ " és una expressió semblant al " +#~ "codi del compte (p. ex\n" +#~ " 70%, etc)." + +#~ msgid "" +#~ "The\n" +#~ " journal items domain\n" +#~ " is an Odoo domain filter on " +#~ "journal items." +#~ msgstr "" +#~ "El\n" +#~ " domini d'articles de " +#~ "diari\n" +#~ " és un filtre de domini d'Odoo " +#~ "sobre articles de diari." + +#~ msgid "" +#~ "The following special elements are recognized in\n" +#~ " the expressions to compute " +#~ "accounting data:\n" +#~ " \n" +#~ " {bal|crd|deb|pbal|nbal}{pieu}" +#~ "[account\n" +#~ " selector][journal items " +#~ "domain]\n" +#~ " \n" +#~ " ." +#~ msgstr "" +#~ "Els següents elements especials es reconeixen a\n" +#~ " les expressions per calcular " +#~ "dades comptables:\n" +#~ " \n" +#~ " {bal|crd|deb|pbal|nbal}{pieu}" +#~ "[compte\n" +#~ " selector][domini d'articles " +#~ "de diari]\n" +#~ " \n" +#~ " ." + +#, python-format +#~ msgid "Unexpected accumulation method %s for %s." +#~ msgstr "Mètode d'acumulació %s no esperat per a %s." + +#, python-format +#~ msgid "from %s to %s" +#~ msgstr "Des de %s fins a %s" + +#~ msgid "" +#~ "Check if you wish to specify children companies to be searched for data." +#~ msgstr "" +#~ "Comprovi si desitja especificar companyies filles per a buscar-hi dades." + +#~ msgid "Companies" +#~ msgstr "Companyies" + +#~ msgid "Company" +#~ msgstr "Companyia" + +#~ msgid "Query Company" +#~ msgstr "Companyia de la consulta" + +#~ msgid "" +#~ "AccountingNone: a null value that behaves as 0 in arithmetic " +#~ "operations." +#~ msgstr "" +#~ "AccountingNone: un valor nul que es comporta com a 0 en operacions " +#~ "aritmètiques." + +#~ msgid "" +#~ "bal, crd, deb, pbal, nbal: balance, debit, credit, positive " +#~ "balance, negative balance." +#~ msgstr "" +#~ "bal, crd, deb, pbal, nbal: saldo, deure, haver, saldo positiu, " +#~ "saldo negatiu." + +#~ msgid "" +#~ "bal[70]: variation of the balance of account 70 over the period " +#~ "(it is the same as balp[70]." +#~ msgstr "" +#~ "bal[70]: variació del saldo del compte 70 en el període (és el " +#~ "mateix que balp[70]." + +#~ msgid "" +#~ "bale[1%]: balance of accounts starting with 1 at end of period." +#~ msgstr "" +#~ "bale[1%]: saldo al final del període dels comptes que comencen amb " +#~ "1." + +#~ msgid "bali[70,60]: initial balance of accounts 70 and 60." +#~ msgstr "bali[70,60]: Saldo inicial dels comptes 70 i 60." + +#~ msgid "" +#~ "balp[('user_type_id', '=', ref('account.data_account_type_receivable')." +#~ "id)][]: variation of the balance of all receivable accounts over the " +#~ "period." +#~ msgstr "" +#~ "balp[('user_type_id', '=', ref('account.data_account_type_receivable')." +#~ "id)][]: variació del saldo de tots els comptes a cobrar en el període." + +#~ msgid "" +#~ "balp[][('tax_line_id.tag_ids', '=', ref('l10n_be.tax_tag_56').id)]: balance of move lines related to tax grid 56." +#~ msgstr "" +#~ "balp[][('tax_line_id.tag_ids', '=', ref('l10n_be.tax_tag_56').id)]: saldo dels apunts relacionats amb l'etiqueta d'impost 56." + +#~ msgid "" +#~ "balu[]: (u for unallocated) is a special expression that shows the " +#~ "unallocated profit/loss of previous\n" +#~ " fiscal years." +#~ msgstr "" +#~ "balu[]: (u for unallocated) es una expressió especial que mostra " +#~ "les pèrdues y guanys sense assignar dels exercicis fiscals\n" +#~ "anteriors." + +#~ msgid "" +#~ "crdp[40%]: sum of all credits on accounts starting with 40 during " +#~ "the period." +#~ msgstr "" +#~ "crdp[40%]: suma de tots els haver dels comptes que comencen per 40 " +#~ "durant el període." + +#~ msgid "date_from, date_to: beginning and end date of the period." +#~ msgstr "date_from, date_to: data d'inici i data de fi del període." + +#~ msgid "datetime, datetime, dateutil: the python modules." +#~ msgstr "datetime, datetime, dateutil: els mòduls python." + +#~ msgid "" +#~ "debp[55%][('journal_id.code', '=', 'BNK1')]: sum of all debits on " +#~ "accounts 55 and journal BNK1 during the period." +#~ msgstr "" +#~ "debp[55%][('journal_id.code', '=', 'BNK1')]: suma de tots els " +#~ "deure dels comptes que comencen per 55 i en el diari BNK1 durant el " +#~ "període." + +#, fuzzy +#~ msgid "" +#~ "p, i, e: respectively variation over the period, initial balance, " +#~ "ending balance" +#~ msgstr "" +#~ "p, i, e: variació sobre el període, sobre el saldo inicial o sobre " +#~ "el saldo final respectivament" + +#~ msgid "" +#~ "pbale[55%]: sum of all ending balances of accounts starting with " +#~ "55 whose\n" +#~ " ending balance is positive." +#~ msgstr "" +#~ "pbale[55%]: suma de tots els saldos finals dels comptes que " +#~ "comencen per 55\n" +#~ " el saldo final dels quals és positiu." + +#~ msgid "" +#~ "sum, min, max, len, avg: behave as expected, very similar to the " +#~ "python builtins." +#~ msgstr "" +#~ "sum, min, max, len, avg: es comporten com s'espera, molt similars " +#~ "als nadius de Python." + +#~ msgid "" +#~ "Additionally following variables are available in the evaluation context:" +#~ msgstr "" +#~ "Les següents variables addicionals estan disponibles en el context " +#~ "d'avaluació:" + +#~ msgid "" +#~ "Expressions can involve other KPI, sub KPI and query results by name (eg " +#~ "kpi1 + kpi2, kpi2.subkpi1, query1.field1)." +#~ msgstr "" +#~ "L'expressió també pot incloure altres KPI ,sub KPI i resultats de " +#~ "consulta per nom (per exemple, kpi1 + kpi2)." + +#~ msgid "" +#~ "The account selector is a like expression on the account code (eg " +#~ "70%, etc)." +#~ msgstr "" +#~ "El selector de compte és com una expressió en el codi de compte " +#~ "(per exemple, 70%, etc)." + +#~ msgid "" +#~ "The journal items domain is an Odoo domain filter on journal items." +#~ msgstr "" +#~ "El domini dels apunts és un filtre de domini Odoo sobe els apunts." + +#, fuzzy +#~ msgid "" +#~ "The following special elements are recognized in the expressions to " +#~ "compute accounting data:\n" +#~ " {bal|crd|deb|pbal|nbal}" +#~ "{pieu}[account selector][journal items domain]." +#~ msgstr "" +#~ "Els següents elements són reconeguts a les expressions per a calcular " +#~ "dades comptables:\n" +#~ " {bal|crd|deb|pbal|nbal}" +#~ "{pieu}[account selector][journal items domain]." + +#~ msgid "MIS Budget" +#~ msgstr "Pressupost MIS" + +#~ msgid "report.mis_builder.mis_report_instance_xlsx" +#~ msgstr "report.mis_builder.mis_report_instance_xlsx" + +#~ msgid "" +#~ "Probably not your fault... but I'm really curious to know how you managed " +#~ "to raise this error so I can handle one more corner case!" +#~ msgstr "" +#~ "Probablement no és culpa seva... però realment tinc curiositat per saber " +#~ "com ha aconseguit aquest error per a poder gestionar un cas extrem més!" + +#~ msgid "µ" +#~ msgstr "µ" + +#~ msgid "add.mis.report.instance.dashboard.wizard" +#~ msgstr "add.mis.report.instance.dashboard.wizard" + +#~ msgid "ir.actions.report" +#~ msgstr "ir.actions.report" + +#~ msgid "mis.report" +#~ msgstr "mis.report" + +#~ msgid "mis.report.instance" +#~ msgstr "mis.report.instance" + +#~ msgid "mis.report.instance.period" +#~ msgstr "mis.report.instance.period" + +#~ msgid "mis.report.instance.period.sum" +#~ msgstr "mis.report.instance.period.sum" + +#~ msgid "mis.report.kpi" +#~ msgstr "mis.report.kpi" + +#~ msgid "mis.report.kpi.expression" +#~ msgstr "mis.report.kpi.expression" + +#~ msgid "mis.report.query" +#~ msgstr "mis.report.query" + +#~ msgid "mis.report.style" +#~ msgstr "mis.report.style" + +#~ msgid "mis.report.subkpi" +#~ msgstr "mis.report.subkpi" diff --git a/mis_builder/i18n/de.po b/mis_builder/i18n/de.po new file mode 100644 index 0000000..cad0d07 --- /dev/null +++ b/mis_builder/i18n/de.po @@ -0,0 +1,1868 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mis_builder +# +# Translators: +# Rudolf Schnapka , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-05 01:43+0000\n" +"PO-Revision-Date: 2018-02-05 01:43+0000\n" +"Last-Translator: Rudolf Schnapka , 2018\n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "%s (copy)" +msgstr "%s (Kopie)" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[('user_type_id', '=',\n" +" ref('account.\n" +" data_account_type_receivable')." +"id)][]\n" +" \n" +" : variation of the balance of all " +"receivable accounts over\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[][('tax_line_id.tag_ids', " +"'=', ref('l10n_be.tax_tag_56').id)]\n" +" \n" +" : balance of move lines related to " +"tax grid 56." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" debp[55%][('journal_id.code', " +"'=',\n" +" 'BNK1')]\n" +" \n" +" : sum of all debits on accounts 55 " +"and journal BNK1 during\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"AccountingNone : a null value that behaves as 0 in\n" +" arithmetic operations." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal, crd, deb, \n" +" pbal, nbal : " +"balance, debit, credit,\n" +" positive balance, negative balance." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal[70] : variation of the balance of account 70 over\n" +" the period (it is the same as " +"balp[70]." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bale[1%] : balance of accounts starting with 1 at\n" +" end of period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "bali[70,60] : initial balance of accounts 70 and 60." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"balu[] : (u for unallocated) is a special " +"expression\n" +" that shows the unallocated profit/" +"loss of previous fiscal\n" +" years." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"crdp[40%] : sum of all credits on accounts starting\n" +" with 40 during the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"date_from, date_to : beginning and end date of " +"the\n" +" period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"datetime, datetime, dateutil : the " +"python modules." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"p, i, e : respectively variation over " +"the period,\n" +" initial balance, ending balance" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"pbale[55%] : sum of all ending balances of accounts\n" +" starting with 55 whose ending " +"balance is positive." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"sum, min,\n" +" max, len,\n" +" avg : behave as " +"expected, very\n" +" similar to the python builtins." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.report_mis_report_instance +msgid "-" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields. This model is the data source for column Actuals." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "A date filter is mandatory for this source in column %s." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "A domain to additionally filter move lines considered in this column." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__analytic_domain +msgid "" +"A domain to additionally filter move lines considered in this report. " +"Caution: when using different move line sources in different columns, such " +"as budgets by account, make sure to use only fields that are available in " +"all move line sources." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__account_model +msgid "Account Model" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__accumulation_method +msgid "Accumulation Method" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Actual (alternative) models used in columns must have the same account model " +"in the Account field and must be the same defined in the report template: %s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals +msgid "Actuals" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals_alt +msgid "Actuals (alternative)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source +msgid "" +"Actuals: current data, from accounting and other queries.\n" +"Actuals (alternative): current data from an alternative source (eg a " +"database view providing look-alike account move lines).\n" +"Sum columns: summation (+/-) of other columns.\n" +"Compare to column: compare to other column.\n" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_prorata_read_group_mixin +msgid "Adapt model with date_from/date_to for pro-rata temporis read_group" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_add_to_dashboard_action +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Add to dashboard" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Additionally following variables are available\n" +" in the evaluation context:" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__aggregate +msgid "Aggregate" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__all +msgid "All Entries" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__all_kpi_ids +msgid "All Kpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__posted +msgid "All Posted Entries" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__allowed_cmpcol_ids +msgid "Allowed Cmpcol" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_ids +msgid "Allowed companies" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_id +msgid "Allowed company" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__amount +msgid "Amount" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__style_expression +msgid "" +"An expression that returns a style depending on the KPI value. Such style is " +"applied on top of the row style." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__analytic_domain +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "Analytic Domain" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Auto expand" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__avg +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__avg +#, python-format +msgid "Average" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color +msgid "Background Color" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color_inherit +msgid "Background Color Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__background_color +msgid "Background color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date +msgid "Base date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__bold +msgid "Bold" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Cancel" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__multi_company +msgid "Check if you wish to specify several companies to be searched for data." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Color" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color_inherit +msgid "Color Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_to_sum_id +msgid "Column" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s cannot be compared to itrec." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s with move lines source must have from/to dates." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Columns" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "Columns %(descr)s and %(base_descr)s are not comparable" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Columns to compare must belong to the same report in %s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_ids +msgid "Columns to sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__query_company_ids +msgid "Companies for which data will be searched." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_to_id +msgid "Compare" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__cmpcol +msgid "Compare columns" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__compare_method +msgid "Comparison Method" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__comparison_mode +msgid "Comparison Mode" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_uid +msgid "Created by" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_date +msgid "Created on" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__currency_id +msgid "Currency" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__dashboard_id +msgid "Dashboard" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date +msgid "Date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__date_field +msgid "Date Field" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_from +msgid "Date From" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_range_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_id +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__date_range +#, python-format +msgid "Date Range" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_type_id +msgid "Date Range Type" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_to +msgid "Date To" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Dates" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__d +#, python-format +msgid "Day" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__description +msgid "Description" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__accumulation_method +msgid "" +"Determines how values of this kpi spanning over a time period are " +"transformed to match the reporting period. Sum: values of shorter period are " +"added, values of longest or partially overlapping periods are adjusted pro-" +"rata temporis.\n" +"Average: values of included period are averaged with a pro-rata temporis " +"weight." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__diff +#, python-format +msgid "Difference" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__no_auto_expand_accounts +msgid "Disable account details expansion" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display Columns Description" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__display_name +msgid "Display Name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts +msgid "Display details by account" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display the date range details in the column headers." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider_inherit +msgid "Divider Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__domain +msgid "Domain" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp_inherit +msgid "Dp Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_prorata_read_group_mixin__date +msgid "" +"Dummy field that adapts searches on date to searches on date_from/date_to." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__duration +msgid "Duration" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__query_company_ids +msgid "Effective companies" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Enter expression here, for example balp[70%]. See also help tab." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"Error while querying move line source \"%(model_name)s\". This is likely due " +"to a filter or expression referencing a field that does not exist in the " +"model.\n" +"\n" +"The technical error message is: %(exception)s. " +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Examples:" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Export" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__expression_ids +msgid "Expression" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions can be any valid python expressions." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Expressions can involve other KPI, sub KPI and\n" +" query results by name (eg kpi1 + " +"kpi2,\n" +" kpi2.subkpi1, query1." +"field1)." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__normalize_factor +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider +msgid "Factor" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Factor inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__normalize_factor +msgid "Factor to use to normalize the period (used in comparison" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_names +msgid "Fetched fields name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_ids +msgid "Fields to fetch" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Filter box search view" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Filters" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__fix +msgid "Fixed dates" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Font" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size +msgid "Font Size" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size_inherit +msgid "Font Size Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style +msgid "Font Style" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style_inherit +msgid "Font Style Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight +msgid "Font Weight" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight_inherit +msgid "Font Weight Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Forces the start date to Jan 1st of the relevant year" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_from +msgid "From" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_from +msgid "From (computed)" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/report/mis_report_instance_xlsx.py:0 +#, python-format +msgid "Generated on %(gen_date)s at %(gen_time)s" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Help (for KPI expressions)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always +msgid "Hide Always" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always_inherit +msgid "Hide Always Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty +msgid "Hide Empty" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty_inherit +msgid "Hide Empty Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__id +msgid "ID" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"If currency_id is not provided, all companies must have the same currency." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Indent" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level +msgid "Indent Level" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level_inherit +msgid "Indent Level Inherit" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "Indent level must be greater than or equal to 0" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__italic +msgid "Italic" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__kpi_expression_id +msgid "KPI" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" has type %(type)s while a tuple was expected.\n" +"\n" +"This can be fixed by either:\n" +"\t- Changing the KPI value to a tuple of length %(length)s\n" +"or\n" +"\t- Changing the KPI to `multi` mode and giving an explicit value for each " +"sub-KPI." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" is valued as a tuple of length %(length)s while a tuple of " +"length%(expected_length)s is expected." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq1 +msgid "KPI Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "KPI name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__kpi_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "KPI's" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__all_kpi_ids +msgid "KPIs of this report and subreports." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__kpi_id +msgid "Kpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__name +msgid "Label" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__landscape_pdf +msgid "Landscape PDF" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport____last_update +msgid "Last Modified on" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.last_mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.last_wizard_mis_report_instance_view_menu +msgid "Last Reports Generated" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_date +msgid "Last Updated on" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Layout" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_report_mis_builder_mis_report_instance_xlsx +msgid "MIS Builder XLSX report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_kpi_data +msgid "MIS Kpi Data Abtract class" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "MIS Report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subreport +msgid "MIS Report - Sub Reports Relation" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_add_mis_report_instance_dashboard_wizard +msgid "MIS Report Add to Dashboard Wizard" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "MIS Report Instance" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period +msgid "MIS Report Instance Period" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period_sum +msgid "MIS Report Instance Period Sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "MIS Report KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi_expression +msgid "MIS Report KPI Expression" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_result_view_form +msgid "MIS Report Preview" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_query +msgid "MIS Report Query" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_style +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "MIS Report Style" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_style_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_style_view_menu +msgid "MIS Report Styles" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subkpi +msgid "MIS Report Sub-KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report +msgid "MIS Report Template" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_view_menu +msgid "MIS Report Templates" +msgstr "" + +#. module: mis_builder +#: model:ir.ui.menu,name:mis_builder.mis_report_conf_menu +#: model:ir.ui.menu,name:mis_builder.mis_report_finance_menu +msgid "MIS Reporting" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_instance_view_menu +msgid "MIS Reports" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.qweb_pdf_export +msgid "MIS report instance QWEB PDF report" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.xls_export +msgid "MIS report instance XLS report" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__max +#, python-format +msgid "Max" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__min +#, python-format +msgid "Min" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__mode +msgid "Mode" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__model_id +msgid "Model" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__m +#, python-format +msgid "Month" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "Move Lines Source" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "Move lines source" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_name +msgid "Move lines source model name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__multi +msgid "Multi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__multi_company +msgid "Multiple companies" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__name +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__none +msgid "No date filter" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "No date filter is allowed for this source in column %s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__none +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__none +#, python-format +msgid "None" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__normal +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__nornal +msgid "Normal" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Number" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__duration +msgid "Number of periods" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__num +#, python-format +msgid "Numeric" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__offset +msgid "Offset" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__offset +msgid "Offset from current period" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_id +msgid "Parent column" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__pct +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__pct +#, python-format +msgid "Percentage" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_name_unique +msgid "Period name should be unique by report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__type +msgid "Period type" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__period_ids +msgid "Periods" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__pivot_date +msgid "Pivot Date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Please provide both columns to compare in %s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Please select a report template and/or save the report before adding columns." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix +msgid "Prefix" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix_inherit +msgid "Prefix Inherit" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Preview" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Print" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__query_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Queries" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Query name ({}) must be valid python identifier" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Refresh" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__relative +msgid "Relative to report base date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__report_id +msgid "Report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_instance_id +msgid "Report Instance" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__date +msgid "Report base date (leave empty to use current date)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp +msgid "Rounding" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Rounding inherit" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Save" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Search view to customize the filter box in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__company_ids +msgid "Select companies for which data will be searched." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__currency_id +msgid "" +"Select target currency for the report. Required if companies have different " +"currencies." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__sequence +msgid "Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Settings" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_subreport_unique +msgid "" +"Should not include the same report more than once as sub report of a given " +"report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show Pivot Date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show filters box" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show settings button" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show the Pivot Date in the report widget filter bar." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show the filter bar in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show the settings button in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__sign +msgid "Sign" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Source" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__str +#, python-format +msgid "String" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__style_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_id +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Style" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_expression +msgid "Style Expression" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts_style_id +msgid "Style for account detail rows" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__name +msgid "Style name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subkpi_ids +msgid "Sub KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__subkpi_ids +msgid "Sub KPI Filter" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_kpi_expression_subkpi_kpi_unique +msgid "Sub KPI must be used once and only once for each KPI" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub KPI's" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub Reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subreport_ids +msgid "Sub reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq2 +msgid "Sub-KPI Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Sub-KPI name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__subkpi_id +msgid "Subkpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__subreport_id +msgid "Subreport" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport loop detected" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_name_unique +msgid "Subreport name should be unique by report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix +msgid "Suffix" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix_inherit +msgid "Suffix Inherit" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__sum +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__sum +#, python-format +msgid "Sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_accdet +msgid "Sum account details" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "" +"Sum cannot be computed in column {} because the columns to sum have no " +"common subkpis" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__sumcol +msgid "Sum columns" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__target_move +msgid "Target Moves" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +msgid "Template" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__temporary +msgid "Temporary" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color +msgid "Text color" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__color +msgid "Text color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The account selector is a like expression on the\n" +" account code (eg 70%, " +"etc), or a domain over accounts\n" +" (eg [('code', 'like', '60%')])." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The journal items domain is an Odoo domain filter on\n" +" journal items." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The following special elements are recognized in the expressions\n" +" to compute accounting data: {bal|" +"crd|deb|pbal|nbal}{pieu}[account\n" +" selector][journal items domain]." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_to +msgid "To" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_to +msgid "To (computed)" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_kpi_data.py:0 +#, python-format +msgid "Unexpected accumulation method %(method)s for %(name)s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Unexpected value %s for target_move." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/prorata_read_group_mixin.py:0 +#, python-format +msgid "Unsupported operator %s for searching on date" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.server,name:mis_builder.ir_cron_vacuum_temp_reports_ir_actions_server +#: model:ir.cron,cron_name:mis_builder.ir_cron_vacuum_temp_reports +msgid "Vacuum temporary reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__valid +msgid "Valid" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__type +msgid "Value type" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Visibility" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__w +#, python-format +msgid "Week" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Widget" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_duration +msgid "Wrong duration, it must be positive!" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_normalize_factor +msgid "Wrong normalize factor, it must be positive!" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__y +#, python-format +msgid "Year" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Year to date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "You cannot sum period %s with itself." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "from %(date_from)s to %(date_to)s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__large +msgid "large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__medium +msgid "medium" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "or" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "pp" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__small +msgid "small" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_from_id +msgid "versus" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-large +msgid "x-large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-small +msgid "x-small" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-large +msgid "xx-large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-small +msgid "xx-small" +msgstr "" + +#~ msgid "" +#~ "AccountingNone: a null value that behaves as 0 in arithmetic " +#~ "operations." +#~ msgstr "" +#~ "BuchhaltungsNull: Ein Null-Wert, der sich wie 0 in arithmetischen " +#~ "Berechnungen verhält." + +#, fuzzy +#~ msgid "" +#~ "bal, crd, deb, pbal, nbal: balance, debit, credit, positive " +#~ "balance, negative balance." +#~ msgstr "bal, crd, deb: Saldo, Haben, Soll." + +#~ msgid "" +#~ "bal[70]: variation of the balance of account 70 over the period " +#~ "(it is the same as balp[70]." +#~ msgstr "" +#~ "bal[70]: Abwandlung des Saldo von Konto 70 über die Zeit (Dies " +#~ "entspricht balp[70])." + +#~ msgid "" +#~ "bale[1%]: balance of accounts starting with 1 at end of period." +#~ msgstr "" +#~ "bale[1%]: Saldo der Konten die mit 1 beginnen zum Ende der Periode." + +#~ msgid "bali[70,60]: initial balance of accounts 70 and 60." +#~ msgstr "bali[70,60]: Eröffnungssaldo der Konten 70 und 60." + +#~ msgid "" +#~ "balp[('user_type_id', '=', ref('account.data_account_type_receivable')." +#~ "id)][]: variation of the balance of all receivable accounts over the " +#~ "period." +#~ msgstr "" +#~ "balp[('user_type_id', '=', ref('account.data_account_type_receivable')." +#~ "id)][]: Abwandlung des Saldo aller Forderungskonten über die Zeit." + +#~ msgid "" +#~ "balp[][('tax_line_id.tag_ids', '=', ref('l10n_be.tax_tag_56').id)]: balance of move lines related to tax grid 56." +#~ msgstr "" +#~ "balp[][('tax_line_id.tag_ids', '=', ref('l10n_be.tax_tag_56').id)]: Saldo der Buchungen mit Steuerschlüssel 56 ." + +#~ msgid "" +#~ "balu[]: (u for unallocated) is a special expression that shows the " +#~ "unallocated profit/loss of previous\n" +#~ " fiscal years." +#~ msgstr "" +#~ "balu[]: (u für nicht zugewiesen) ist ein spezieller Ausdruck, der " +#~ "nicht zugewiesene Gewinne/Verluste der Vorjahre ausweist." + +#~ msgid "" +#~ "crdp[40%]: sum of all credits on accounts starting with 40 during " +#~ "the period." +#~ msgstr "" +#~ "crdp[40%]: Summe aller Haben auf Konten, die mit 40 beginnen, über " +#~ "die Zeit." + +#~ msgid "date_from, date_to: beginning and end date of the period." +#~ msgstr "date_from, date_to: Anfangs- und Enddatum der Periode." + +#~ msgid "datetime, datetime, dateutil: the python modules." +#~ msgstr "datetime, datetime, dateutil: die Python-Methoden." + +#~ msgid "" +#~ "debp[55%][('journal_id.code', '=', 'BNK1')]: sum of all debits on " +#~ "accounts 55 and journal BNK1 during the period." +#~ msgstr "" +#~ "debp[55%][('journal_id.code', '=', 'BNK1')]: Die Summe aller Soll " +#~ "der Konten 55 und Journal BNK1 über die Periode.." + +#, fuzzy +#~ msgid "" +#~ "p, i, e: respectively variation over the period, initial balance, " +#~ "ending balance" +#~ msgstr "" +#~ "p, i, e: jeweilige Abwandlung über Zeit, Eröffnungssaldo, Endsaldo" diff --git a/mis_builder/i18n/el.po b/mis_builder/i18n/el.po new file mode 100644 index 0000000..f3389b3 --- /dev/null +++ b/mis_builder/i18n/el.po @@ -0,0 +1,1786 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mis_builder +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "%s (copy)" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[('user_type_id', '=',\n" +" ref('account.\n" +" data_account_type_receivable')." +"id)][]\n" +" \n" +" : variation of the balance of all " +"receivable accounts over\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[][('tax_line_id.tag_ids', " +"'=', ref('l10n_be.tax_tag_56').id)]\n" +" \n" +" : balance of move lines related to " +"tax grid 56." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" debp[55%][('journal_id.code', " +"'=',\n" +" 'BNK1')]\n" +" \n" +" : sum of all debits on accounts 55 " +"and journal BNK1 during\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"AccountingNone : a null value that behaves as 0 in\n" +" arithmetic operations." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal, crd, deb, \n" +" pbal, nbal : " +"balance, debit, credit,\n" +" positive balance, negative balance." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal[70] : variation of the balance of account 70 over\n" +" the period (it is the same as " +"balp[70]." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bale[1%] : balance of accounts starting with 1 at\n" +" end of period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "bali[70,60] : initial balance of accounts 70 and 60." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"balu[] : (u for unallocated) is a special " +"expression\n" +" that shows the unallocated profit/" +"loss of previous fiscal\n" +" years." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"crdp[40%] : sum of all credits on accounts starting\n" +" with 40 during the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"date_from, date_to : beginning and end date of " +"the\n" +" period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"datetime, datetime, dateutil : the " +"python modules." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"p, i, e : respectively variation over " +"the period,\n" +" initial balance, ending balance" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"pbale[55%] : sum of all ending balances of accounts\n" +" starting with 55 whose ending " +"balance is positive." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"sum, min,\n" +" max, len,\n" +" avg : behave as " +"expected, very\n" +" similar to the python builtins." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.report_mis_report_instance +msgid "-" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields. This model is the data source for column Actuals." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "A date filter is mandatory for this source in column %s." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "A domain to additionally filter move lines considered in this column." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__analytic_domain +msgid "" +"A domain to additionally filter move lines considered in this report. " +"Caution: when using different move line sources in different columns, such " +"as budgets by account, make sure to use only fields that are available in " +"all move line sources." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__account_model +msgid "Account Model" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__accumulation_method +msgid "Accumulation Method" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Actual (alternative) models used in columns must have the same account model " +"in the Account field and must be the same defined in the report template: %s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals +msgid "Actuals" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals_alt +msgid "Actuals (alternative)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source +msgid "" +"Actuals: current data, from accounting and other queries.\n" +"Actuals (alternative): current data from an alternative source (eg a " +"database view providing look-alike account move lines).\n" +"Sum columns: summation (+/-) of other columns.\n" +"Compare to column: compare to other column.\n" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_prorata_read_group_mixin +msgid "Adapt model with date_from/date_to for pro-rata temporis read_group" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_add_to_dashboard_action +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Add to dashboard" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Additionally following variables are available\n" +" in the evaluation context:" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__aggregate +msgid "Aggregate" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__all +msgid "All Entries" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__all_kpi_ids +msgid "All Kpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__posted +msgid "All Posted Entries" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__allowed_cmpcol_ids +msgid "Allowed Cmpcol" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_ids +msgid "Allowed companies" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_id +msgid "Allowed company" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__amount +msgid "Amount" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__style_expression +msgid "" +"An expression that returns a style depending on the KPI value. Such style is " +"applied on top of the row style." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__analytic_domain +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "Analytic Domain" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Auto expand" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__avg +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__avg +#, python-format +msgid "Average" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color +msgid "Background Color" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color_inherit +msgid "Background Color Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__background_color +msgid "Background color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date +msgid "Base date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__bold +msgid "Bold" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Cancel" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__multi_company +msgid "Check if you wish to specify several companies to be searched for data." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Color" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color_inherit +msgid "Color Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_to_sum_id +msgid "Column" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s cannot be compared to itrec." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s with move lines source must have from/to dates." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Columns" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "Columns %(descr)s and %(base_descr)s are not comparable" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Columns to compare must belong to the same report in %s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_ids +msgid "Columns to sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__query_company_ids +msgid "Companies for which data will be searched." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_to_id +msgid "Compare" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__cmpcol +msgid "Compare columns" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__compare_method +msgid "Comparison Method" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__comparison_mode +msgid "Comparison Mode" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_uid +msgid "Created by" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_date +msgid "Created on" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__currency_id +msgid "Currency" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__dashboard_id +msgid "Dashboard" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date +msgid "Date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__date_field +msgid "Date Field" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_from +msgid "Date From" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_range_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_id +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__date_range +#, python-format +msgid "Date Range" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_type_id +msgid "Date Range Type" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_to +msgid "Date To" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Dates" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__d +#, python-format +msgid "Day" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__description +msgid "Description" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__accumulation_method +msgid "" +"Determines how values of this kpi spanning over a time period are " +"transformed to match the reporting period. Sum: values of shorter period are " +"added, values of longest or partially overlapping periods are adjusted pro-" +"rata temporis.\n" +"Average: values of included period are averaged with a pro-rata temporis " +"weight." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__diff +#, python-format +msgid "Difference" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__no_auto_expand_accounts +msgid "Disable account details expansion" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display Columns Description" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__display_name +msgid "Display Name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts +msgid "Display details by account" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display the date range details in the column headers." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider_inherit +msgid "Divider Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__domain +msgid "Domain" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp_inherit +msgid "Dp Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_prorata_read_group_mixin__date +msgid "" +"Dummy field that adapts searches on date to searches on date_from/date_to." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__duration +msgid "Duration" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__query_company_ids +msgid "Effective companies" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Enter expression here, for example balp[70%]. See also help tab." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"Error while querying move line source \"%(model_name)s\". This is likely due " +"to a filter or expression referencing a field that does not exist in the " +"model.\n" +"\n" +"The technical error message is: %(exception)s. " +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Examples:" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Export" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__expression_ids +msgid "Expression" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions can be any valid python expressions." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Expressions can involve other KPI, sub KPI and\n" +" query results by name (eg kpi1 + " +"kpi2,\n" +" kpi2.subkpi1, query1." +"field1)." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__normalize_factor +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider +msgid "Factor" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Factor inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__normalize_factor +msgid "Factor to use to normalize the period (used in comparison" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_names +msgid "Fetched fields name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_ids +msgid "Fields to fetch" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Filter box search view" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Filters" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__fix +msgid "Fixed dates" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Font" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size +msgid "Font Size" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size_inherit +msgid "Font Size Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style +msgid "Font Style" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style_inherit +msgid "Font Style Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight +msgid "Font Weight" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight_inherit +msgid "Font Weight Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Forces the start date to Jan 1st of the relevant year" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_from +msgid "From" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_from +msgid "From (computed)" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/report/mis_report_instance_xlsx.py:0 +#, python-format +msgid "Generated on %(gen_date)s at %(gen_time)s" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Help (for KPI expressions)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always +msgid "Hide Always" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always_inherit +msgid "Hide Always Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty +msgid "Hide Empty" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty_inherit +msgid "Hide Empty Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__id +msgid "ID" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"If currency_id is not provided, all companies must have the same currency." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Indent" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level +msgid "Indent Level" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level_inherit +msgid "Indent Level Inherit" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "Indent level must be greater than or equal to 0" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__italic +msgid "Italic" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__kpi_expression_id +msgid "KPI" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" has type %(type)s while a tuple was expected.\n" +"\n" +"This can be fixed by either:\n" +"\t- Changing the KPI value to a tuple of length %(length)s\n" +"or\n" +"\t- Changing the KPI to `multi` mode and giving an explicit value for each " +"sub-KPI." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" is valued as a tuple of length %(length)s while a tuple of " +"length%(expected_length)s is expected." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq1 +msgid "KPI Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "KPI name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__kpi_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "KPI's" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__all_kpi_ids +msgid "KPIs of this report and subreports." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__kpi_id +msgid "Kpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__name +msgid "Label" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__landscape_pdf +msgid "Landscape PDF" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport____last_update +msgid "Last Modified on" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.last_mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.last_wizard_mis_report_instance_view_menu +msgid "Last Reports Generated" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_date +msgid "Last Updated on" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Layout" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_report_mis_builder_mis_report_instance_xlsx +msgid "MIS Builder XLSX report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_kpi_data +msgid "MIS Kpi Data Abtract class" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "MIS Report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subreport +msgid "MIS Report - Sub Reports Relation" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_add_mis_report_instance_dashboard_wizard +msgid "MIS Report Add to Dashboard Wizard" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "MIS Report Instance" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period +msgid "MIS Report Instance Period" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period_sum +msgid "MIS Report Instance Period Sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "MIS Report KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi_expression +msgid "MIS Report KPI Expression" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_result_view_form +msgid "MIS Report Preview" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_query +msgid "MIS Report Query" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_style +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "MIS Report Style" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_style_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_style_view_menu +msgid "MIS Report Styles" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subkpi +msgid "MIS Report Sub-KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report +msgid "MIS Report Template" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_view_menu +msgid "MIS Report Templates" +msgstr "" + +#. module: mis_builder +#: model:ir.ui.menu,name:mis_builder.mis_report_conf_menu +#: model:ir.ui.menu,name:mis_builder.mis_report_finance_menu +msgid "MIS Reporting" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_instance_view_menu +msgid "MIS Reports" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.qweb_pdf_export +msgid "MIS report instance QWEB PDF report" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.xls_export +msgid "MIS report instance XLS report" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__max +#, python-format +msgid "Max" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__min +#, python-format +msgid "Min" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__mode +msgid "Mode" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__model_id +msgid "Model" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__m +#, python-format +msgid "Month" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "Move Lines Source" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "Move lines source" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_name +msgid "Move lines source model name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__multi +msgid "Multi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__multi_company +msgid "Multiple companies" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__name +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__none +msgid "No date filter" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "No date filter is allowed for this source in column %s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__none +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__none +#, python-format +msgid "None" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__normal +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__nornal +msgid "Normal" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Number" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__duration +msgid "Number of periods" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__num +#, python-format +msgid "Numeric" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__offset +msgid "Offset" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__offset +msgid "Offset from current period" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_id +msgid "Parent column" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__pct +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__pct +#, python-format +msgid "Percentage" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_name_unique +msgid "Period name should be unique by report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__type +msgid "Period type" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__period_ids +msgid "Periods" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__pivot_date +msgid "Pivot Date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Please provide both columns to compare in %s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Please select a report template and/or save the report before adding columns." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix +msgid "Prefix" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix_inherit +msgid "Prefix Inherit" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Preview" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Print" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__query_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Queries" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Query name ({}) must be valid python identifier" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Refresh" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__relative +msgid "Relative to report base date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__report_id +msgid "Report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_instance_id +msgid "Report Instance" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__date +msgid "Report base date (leave empty to use current date)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp +msgid "Rounding" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Rounding inherit" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Save" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Search view to customize the filter box in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__company_ids +msgid "Select companies for which data will be searched." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__currency_id +msgid "" +"Select target currency for the report. Required if companies have different " +"currencies." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__sequence +msgid "Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Settings" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_subreport_unique +msgid "" +"Should not include the same report more than once as sub report of a given " +"report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show Pivot Date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show filters box" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show settings button" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show the Pivot Date in the report widget filter bar." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show the filter bar in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show the settings button in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__sign +msgid "Sign" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Source" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__str +#, python-format +msgid "String" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__style_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_id +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Style" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_expression +msgid "Style Expression" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts_style_id +msgid "Style for account detail rows" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__name +msgid "Style name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subkpi_ids +msgid "Sub KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__subkpi_ids +msgid "Sub KPI Filter" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_kpi_expression_subkpi_kpi_unique +msgid "Sub KPI must be used once and only once for each KPI" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub KPI's" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub Reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subreport_ids +msgid "Sub reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq2 +msgid "Sub-KPI Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Sub-KPI name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__subkpi_id +msgid "Subkpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__subreport_id +msgid "Subreport" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport loop detected" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_name_unique +msgid "Subreport name should be unique by report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix +msgid "Suffix" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix_inherit +msgid "Suffix Inherit" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__sum +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__sum +#, python-format +msgid "Sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_accdet +msgid "Sum account details" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "" +"Sum cannot be computed in column {} because the columns to sum have no " +"common subkpis" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__sumcol +msgid "Sum columns" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__target_move +msgid "Target Moves" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +msgid "Template" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__temporary +msgid "Temporary" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color +msgid "Text color" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__color +msgid "Text color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The account selector is a like expression on the\n" +" account code (eg 70%, " +"etc), or a domain over accounts\n" +" (eg [('code', 'like', '60%')])." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The journal items domain is an Odoo domain filter on\n" +" journal items." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The following special elements are recognized in the expressions\n" +" to compute accounting data: {bal|" +"crd|deb|pbal|nbal}{pieu}[account\n" +" selector][journal items domain]." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_to +msgid "To" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_to +msgid "To (computed)" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_kpi_data.py:0 +#, python-format +msgid "Unexpected accumulation method %(method)s for %(name)s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Unexpected value %s for target_move." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/prorata_read_group_mixin.py:0 +#, python-format +msgid "Unsupported operator %s for searching on date" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.server,name:mis_builder.ir_cron_vacuum_temp_reports_ir_actions_server +#: model:ir.cron,cron_name:mis_builder.ir_cron_vacuum_temp_reports +msgid "Vacuum temporary reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__valid +msgid "Valid" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__type +msgid "Value type" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Visibility" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__w +#, python-format +msgid "Week" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Widget" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_duration +msgid "Wrong duration, it must be positive!" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_normalize_factor +msgid "Wrong normalize factor, it must be positive!" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__y +#, python-format +msgid "Year" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Year to date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "You cannot sum period %s with itself." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "from %(date_from)s to %(date_to)s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__large +msgid "large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__medium +msgid "medium" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "or" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "pp" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__small +msgid "small" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_from_id +msgid "versus" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-large +msgid "x-large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-small +msgid "x-small" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-large +msgid "xx-large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-small +msgid "xx-small" +msgstr "" diff --git a/mis_builder/i18n/el_GR.po b/mis_builder/i18n/el_GR.po new file mode 100644 index 0000000..1e9065b --- /dev/null +++ b/mis_builder/i18n/el_GR.po @@ -0,0 +1,1786 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mis_builder +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: el_GR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "%s (copy)" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[('user_type_id', '=',\n" +" ref('account.\n" +" data_account_type_receivable')." +"id)][]\n" +" \n" +" : variation of the balance of all " +"receivable accounts over\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[][('tax_line_id.tag_ids', " +"'=', ref('l10n_be.tax_tag_56').id)]\n" +" \n" +" : balance of move lines related to " +"tax grid 56." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" debp[55%][('journal_id.code', " +"'=',\n" +" 'BNK1')]\n" +" \n" +" : sum of all debits on accounts 55 " +"and journal BNK1 during\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"AccountingNone : a null value that behaves as 0 in\n" +" arithmetic operations." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal, crd, deb, \n" +" pbal, nbal : " +"balance, debit, credit,\n" +" positive balance, negative balance." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal[70] : variation of the balance of account 70 over\n" +" the period (it is the same as " +"balp[70]." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bale[1%] : balance of accounts starting with 1 at\n" +" end of period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "bali[70,60] : initial balance of accounts 70 and 60." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"balu[] : (u for unallocated) is a special " +"expression\n" +" that shows the unallocated profit/" +"loss of previous fiscal\n" +" years." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"crdp[40%] : sum of all credits on accounts starting\n" +" with 40 during the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"date_from, date_to : beginning and end date of " +"the\n" +" period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"datetime, datetime, dateutil : the " +"python modules." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"p, i, e : respectively variation over " +"the period,\n" +" initial balance, ending balance" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"pbale[55%] : sum of all ending balances of accounts\n" +" starting with 55 whose ending " +"balance is positive." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"sum, min,\n" +" max, len,\n" +" avg : behave as " +"expected, very\n" +" similar to the python builtins." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.report_mis_report_instance +msgid "-" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields. This model is the data source for column Actuals." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "A date filter is mandatory for this source in column %s." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "A domain to additionally filter move lines considered in this column." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__analytic_domain +msgid "" +"A domain to additionally filter move lines considered in this report. " +"Caution: when using different move line sources in different columns, such " +"as budgets by account, make sure to use only fields that are available in " +"all move line sources." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__account_model +msgid "Account Model" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__accumulation_method +msgid "Accumulation Method" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Actual (alternative) models used in columns must have the same account model " +"in the Account field and must be the same defined in the report template: %s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals +msgid "Actuals" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals_alt +msgid "Actuals (alternative)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source +msgid "" +"Actuals: current data, from accounting and other queries.\n" +"Actuals (alternative): current data from an alternative source (eg a " +"database view providing look-alike account move lines).\n" +"Sum columns: summation (+/-) of other columns.\n" +"Compare to column: compare to other column.\n" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_prorata_read_group_mixin +msgid "Adapt model with date_from/date_to for pro-rata temporis read_group" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_add_to_dashboard_action +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Add to dashboard" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Additionally following variables are available\n" +" in the evaluation context:" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__aggregate +msgid "Aggregate" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__all +msgid "All Entries" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__all_kpi_ids +msgid "All Kpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__posted +msgid "All Posted Entries" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__allowed_cmpcol_ids +msgid "Allowed Cmpcol" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_ids +msgid "Allowed companies" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_id +msgid "Allowed company" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__amount +msgid "Amount" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__style_expression +msgid "" +"An expression that returns a style depending on the KPI value. Such style is " +"applied on top of the row style." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__analytic_domain +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "Analytic Domain" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Auto expand" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__avg +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__avg +#, python-format +msgid "Average" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color +msgid "Background Color" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color_inherit +msgid "Background Color Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__background_color +msgid "Background color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date +msgid "Base date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__bold +msgid "Bold" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Cancel" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__multi_company +msgid "Check if you wish to specify several companies to be searched for data." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Color" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color_inherit +msgid "Color Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_to_sum_id +msgid "Column" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s cannot be compared to itrec." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s with move lines source must have from/to dates." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Columns" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "Columns %(descr)s and %(base_descr)s are not comparable" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Columns to compare must belong to the same report in %s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_ids +msgid "Columns to sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__query_company_ids +msgid "Companies for which data will be searched." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_to_id +msgid "Compare" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__cmpcol +msgid "Compare columns" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__compare_method +msgid "Comparison Method" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__comparison_mode +msgid "Comparison Mode" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_uid +msgid "Created by" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_date +msgid "Created on" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__currency_id +msgid "Currency" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__dashboard_id +msgid "Dashboard" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date +msgid "Date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__date_field +msgid "Date Field" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_from +msgid "Date From" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_range_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_id +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__date_range +#, python-format +msgid "Date Range" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_type_id +msgid "Date Range Type" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_to +msgid "Date To" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Dates" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__d +#, python-format +msgid "Day" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__description +msgid "Description" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__accumulation_method +msgid "" +"Determines how values of this kpi spanning over a time period are " +"transformed to match the reporting period. Sum: values of shorter period are " +"added, values of longest or partially overlapping periods are adjusted pro-" +"rata temporis.\n" +"Average: values of included period are averaged with a pro-rata temporis " +"weight." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__diff +#, python-format +msgid "Difference" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__no_auto_expand_accounts +msgid "Disable account details expansion" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display Columns Description" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__display_name +msgid "Display Name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts +msgid "Display details by account" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display the date range details in the column headers." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider_inherit +msgid "Divider Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__domain +msgid "Domain" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp_inherit +msgid "Dp Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_prorata_read_group_mixin__date +msgid "" +"Dummy field that adapts searches on date to searches on date_from/date_to." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__duration +msgid "Duration" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__query_company_ids +msgid "Effective companies" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Enter expression here, for example balp[70%]. See also help tab." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"Error while querying move line source \"%(model_name)s\". This is likely due " +"to a filter or expression referencing a field that does not exist in the " +"model.\n" +"\n" +"The technical error message is: %(exception)s. " +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Examples:" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Export" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__expression_ids +msgid "Expression" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions can be any valid python expressions." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Expressions can involve other KPI, sub KPI and\n" +" query results by name (eg kpi1 + " +"kpi2,\n" +" kpi2.subkpi1, query1." +"field1)." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__normalize_factor +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider +msgid "Factor" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Factor inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__normalize_factor +msgid "Factor to use to normalize the period (used in comparison" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_names +msgid "Fetched fields name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_ids +msgid "Fields to fetch" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Filter box search view" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Filters" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__fix +msgid "Fixed dates" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Font" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size +msgid "Font Size" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size_inherit +msgid "Font Size Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style +msgid "Font Style" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style_inherit +msgid "Font Style Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight +msgid "Font Weight" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight_inherit +msgid "Font Weight Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Forces the start date to Jan 1st of the relevant year" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_from +msgid "From" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_from +msgid "From (computed)" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/report/mis_report_instance_xlsx.py:0 +#, python-format +msgid "Generated on %(gen_date)s at %(gen_time)s" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Help (for KPI expressions)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always +msgid "Hide Always" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always_inherit +msgid "Hide Always Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty +msgid "Hide Empty" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty_inherit +msgid "Hide Empty Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__id +msgid "ID" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"If currency_id is not provided, all companies must have the same currency." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Indent" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level +msgid "Indent Level" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level_inherit +msgid "Indent Level Inherit" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "Indent level must be greater than or equal to 0" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__italic +msgid "Italic" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__kpi_expression_id +msgid "KPI" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" has type %(type)s while a tuple was expected.\n" +"\n" +"This can be fixed by either:\n" +"\t- Changing the KPI value to a tuple of length %(length)s\n" +"or\n" +"\t- Changing the KPI to `multi` mode and giving an explicit value for each " +"sub-KPI." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" is valued as a tuple of length %(length)s while a tuple of " +"length%(expected_length)s is expected." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq1 +msgid "KPI Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "KPI name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__kpi_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "KPI's" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__all_kpi_ids +msgid "KPIs of this report and subreports." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__kpi_id +msgid "Kpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__name +msgid "Label" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__landscape_pdf +msgid "Landscape PDF" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport____last_update +msgid "Last Modified on" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.last_mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.last_wizard_mis_report_instance_view_menu +msgid "Last Reports Generated" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_date +msgid "Last Updated on" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Layout" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_report_mis_builder_mis_report_instance_xlsx +msgid "MIS Builder XLSX report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_kpi_data +msgid "MIS Kpi Data Abtract class" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "MIS Report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subreport +msgid "MIS Report - Sub Reports Relation" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_add_mis_report_instance_dashboard_wizard +msgid "MIS Report Add to Dashboard Wizard" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "MIS Report Instance" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period +msgid "MIS Report Instance Period" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period_sum +msgid "MIS Report Instance Period Sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "MIS Report KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi_expression +msgid "MIS Report KPI Expression" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_result_view_form +msgid "MIS Report Preview" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_query +msgid "MIS Report Query" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_style +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "MIS Report Style" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_style_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_style_view_menu +msgid "MIS Report Styles" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subkpi +msgid "MIS Report Sub-KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report +msgid "MIS Report Template" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_view_menu +msgid "MIS Report Templates" +msgstr "" + +#. module: mis_builder +#: model:ir.ui.menu,name:mis_builder.mis_report_conf_menu +#: model:ir.ui.menu,name:mis_builder.mis_report_finance_menu +msgid "MIS Reporting" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_instance_view_menu +msgid "MIS Reports" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.qweb_pdf_export +msgid "MIS report instance QWEB PDF report" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.xls_export +msgid "MIS report instance XLS report" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__max +#, python-format +msgid "Max" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__min +#, python-format +msgid "Min" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__mode +msgid "Mode" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__model_id +msgid "Model" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__m +#, python-format +msgid "Month" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "Move Lines Source" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "Move lines source" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_name +msgid "Move lines source model name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__multi +msgid "Multi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__multi_company +msgid "Multiple companies" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__name +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__none +msgid "No date filter" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "No date filter is allowed for this source in column %s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__none +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__none +#, python-format +msgid "None" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__normal +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__nornal +msgid "Normal" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Number" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__duration +msgid "Number of periods" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__num +#, python-format +msgid "Numeric" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__offset +msgid "Offset" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__offset +msgid "Offset from current period" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_id +msgid "Parent column" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__pct +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__pct +#, python-format +msgid "Percentage" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_name_unique +msgid "Period name should be unique by report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__type +msgid "Period type" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__period_ids +msgid "Periods" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__pivot_date +msgid "Pivot Date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Please provide both columns to compare in %s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Please select a report template and/or save the report before adding columns." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix +msgid "Prefix" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix_inherit +msgid "Prefix Inherit" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Preview" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Print" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__query_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Queries" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Query name ({}) must be valid python identifier" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Refresh" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__relative +msgid "Relative to report base date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__report_id +msgid "Report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_instance_id +msgid "Report Instance" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__date +msgid "Report base date (leave empty to use current date)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp +msgid "Rounding" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Rounding inherit" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Save" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Search view to customize the filter box in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__company_ids +msgid "Select companies for which data will be searched." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__currency_id +msgid "" +"Select target currency for the report. Required if companies have different " +"currencies." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__sequence +msgid "Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Settings" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_subreport_unique +msgid "" +"Should not include the same report more than once as sub report of a given " +"report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show Pivot Date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show filters box" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show settings button" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show the Pivot Date in the report widget filter bar." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show the filter bar in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show the settings button in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__sign +msgid "Sign" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Source" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__str +#, python-format +msgid "String" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__style_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_id +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Style" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_expression +msgid "Style Expression" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts_style_id +msgid "Style for account detail rows" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__name +msgid "Style name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subkpi_ids +msgid "Sub KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__subkpi_ids +msgid "Sub KPI Filter" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_kpi_expression_subkpi_kpi_unique +msgid "Sub KPI must be used once and only once for each KPI" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub KPI's" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub Reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subreport_ids +msgid "Sub reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq2 +msgid "Sub-KPI Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Sub-KPI name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__subkpi_id +msgid "Subkpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__subreport_id +msgid "Subreport" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport loop detected" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_name_unique +msgid "Subreport name should be unique by report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix +msgid "Suffix" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix_inherit +msgid "Suffix Inherit" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__sum +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__sum +#, python-format +msgid "Sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_accdet +msgid "Sum account details" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "" +"Sum cannot be computed in column {} because the columns to sum have no " +"common subkpis" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__sumcol +msgid "Sum columns" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__target_move +msgid "Target Moves" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +msgid "Template" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__temporary +msgid "Temporary" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color +msgid "Text color" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__color +msgid "Text color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The account selector is a like expression on the\n" +" account code (eg 70%, " +"etc), or a domain over accounts\n" +" (eg [('code', 'like', '60%')])." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The journal items domain is an Odoo domain filter on\n" +" journal items." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The following special elements are recognized in the expressions\n" +" to compute accounting data: {bal|" +"crd|deb|pbal|nbal}{pieu}[account\n" +" selector][journal items domain]." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_to +msgid "To" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_to +msgid "To (computed)" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_kpi_data.py:0 +#, python-format +msgid "Unexpected accumulation method %(method)s for %(name)s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Unexpected value %s for target_move." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/prorata_read_group_mixin.py:0 +#, python-format +msgid "Unsupported operator %s for searching on date" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.server,name:mis_builder.ir_cron_vacuum_temp_reports_ir_actions_server +#: model:ir.cron,cron_name:mis_builder.ir_cron_vacuum_temp_reports +msgid "Vacuum temporary reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__valid +msgid "Valid" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__type +msgid "Value type" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Visibility" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__w +#, python-format +msgid "Week" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Widget" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_duration +msgid "Wrong duration, it must be positive!" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_normalize_factor +msgid "Wrong normalize factor, it must be positive!" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__y +#, python-format +msgid "Year" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Year to date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "You cannot sum period %s with itself." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "from %(date_from)s to %(date_to)s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__large +msgid "large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__medium +msgid "medium" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "or" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "pp" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__small +msgid "small" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_from_id +msgid "versus" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-large +msgid "x-large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-small +msgid "x-small" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-large +msgid "xx-large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-small +msgid "xx-small" +msgstr "" diff --git a/mis_builder/i18n/es.po b/mis_builder/i18n/es.po new file mode 100644 index 0000000..113efe5 --- /dev/null +++ b/mis_builder/i18n/es.po @@ -0,0 +1,2243 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mis_builder +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-13 15:37+0000\n" +"PO-Revision-Date: 2023-11-03 21:38+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "%s (copy)" +msgstr "%s (copia)" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[('user_type_id', '=',\n" +" ref('account.\n" +" data_account_type_receivable')." +"id)][]\n" +" \n" +" : variation of the balance of all " +"receivable accounts over\n" +" the period." +msgstr "" +"\n" +" balp[('user_type_id', " +"'=',\n" +" ref('account.\n" +" data_account_type_receivable')." +"id)][]\n" +" \n" +" : " +"variación del saldo de todas las cuentas a cobrar durante\n" +" el " +"periodo." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[][('tax_line_id.tag_ids', " +"'=', ref('l10n_be.tax_tag_56').id)]\n" +" \n" +" : balance of move lines related to " +"tax grid 56." +msgstr "" +"\n" +" balp[]" +"[('tax_line_id.tag_ids', '=',ref('l10n_be.tax_tag_56').id)]\n" +" \n" +" : Balance " +"de las líneas de movimiento relacionadas con la cuadrícula fiscal 56." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" debp[55%][('journal_id.code', " +"'=',\n" +" 'BNK1')]\n" +" \n" +" : sum of all debits on accounts 55 " +"and journal BNK1 during\n" +" the period." +msgstr "" +"\n" +" debp[55%]" +"[('journal_id.code', '=',\n" +" 'BNK1')]\n" +" \n" +" : " +"suma de todos los cargos en las cuentas 55 y el diario BNK1 durante\n" +" el " +"periodo." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"AccountingNone : a null value that behaves as 0 in\n" +" arithmetic operations." +msgstr "" +"AccountingNone : un valor nulo que se comporta como 0 en\n" +" operaciones aritméticas." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal, crd, deb, \n" +" pbal, nbal : " +"balance, debit, credit,\n" +" positive balance, negative balance." +msgstr "" +"bal, crd, deb, \n" +" pbal, nbal : " +"balance, débito, crédito,\n" +" balance positivo,balance negativo." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal[70] : variation of the balance of account 70 over\n" +" the period (it is the same as " +"balp[70]." +msgstr "" +"bal[70] : variación del saldo de la cuenta 70 sobre\n" +" el " +"período (es lo mismo que balp[70]." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bale[1%] : balance of accounts starting with 1 at\n" +" end of period." +msgstr "" +"bale[1%] : saldo de cuentas que comienzan con 1 en\n" +" fin " +"del periodo." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "bali[70,60] : initial balance of accounts 70 and 60." +msgstr "bali[70,60] : saldo inicial de las cuentas 70 y 60." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"balu[] : (u for unallocated) is a special " +"expression\n" +" that shows the unallocated profit/" +"loss of previous fiscal\n" +" years." +msgstr "" +"balu[] : (u para no asignado) es una expresión " +"especial\n" +" que " +"muestra la ganancia/pérdida no asignada de ejercicios fiscales en " +"anteriores.\n" +" años." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"crdp[40%] : sum of all credits on accounts starting\n" +" with 40 during the period." +msgstr "" +"crdp[40%] : suma de todos los créditos en cuentas que " +"comienzan\n" +" con " +"40 durante el período." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"date_from, date_to : beginning and end date of " +"the\n" +" period." +msgstr "" +"date_from, date_to : fecha de inicio y " +"finalización del\n" +" período." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"datetime, datetime, dateutil : the " +"python modules." +msgstr "" +"datetime, datetime, dateutil : los " +"módulos de python." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"p, i, e : respectively variation over " +"the period,\n" +" initial balance, ending balance" +msgstr "" +"p, i, e : respectivamente variación " +"durante el período,\n" +" saldo " +"inicial, saldo final" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"pbale[55%] : sum of all ending balances of accounts\n" +" starting with 55 whose ending " +"balance is positive." +msgstr "" +"pbale[55%] : suma de todos los saldos finales de las cuentas\n" +" a " +"partir de 55 cuyo saldo final es positivo." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"sum, min,\n" +" max, len,\n" +" avg : behave as " +"expected, very\n" +" similar to the python builtins." +msgstr "" +"sum,min,\n" +" max, len,\n" +" avg : se comporta como se esperaba, muy\n" +" similar " +"a los componentes integrados de Python." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.report_mis_report_instance +msgid "-" +msgstr "-" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields." +msgstr "" +"Modelo que sea 'de tipo apunte', es decir, que tenga al menos los campos " +"debit, credit, date, account_id y company_id." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields. This model is the data source for column Actuals." +msgstr "" +"Modelo que sea 'de tipo apunte', es decir, que tenga al menos los campos de " +"débito, crédito, fecha, ID de cuenta y ID de compañía. Este modelo es la " +"fuente de datos para la columna Informes estadísticos." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "A date filter is mandatory for this source in column %s." +msgstr "Un filtro de fecha es obligatorio para este origen en la columna %s." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "A domain to additionally filter move lines considered in this column." +msgstr "Un dominio para filtrar los apuntes contables en la columna." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__analytic_domain +msgid "" +"A domain to additionally filter move lines considered in this report. " +"Caution: when using different move line sources in different columns, such " +"as budgets by account, make sure to use only fields that are available in " +"all move line sources." +msgstr "" +"Un dominio para filtrar los apuntes considerados en el informe. Precaución: " +"cuando se usan distintos orígenes de apuntes en varias columnas, tales como " +"presupuestos por cuenta, asegúrese de usar solamente campos disponibles en " +"todos los orígenes de apuntes." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__account_model +msgid "Account Model" +msgstr "Modelo de cuenta" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__accumulation_method +msgid "Accumulation Method" +msgstr "Método de agregación" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Actual (alternative) models used in columns must have the same account model " +"in the Account field and must be the same defined in the report template: %s" +msgstr "" +"Los modelos reales (alternativos) utilizados en columnas deben tener el " +"mismo modelo de cuenta en el campo Cuenta y deben ser los mismos definidos " +"en la plantilla de informe:%s" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals +msgid "Actuals" +msgstr "Datos reales" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals_alt +msgid "Actuals (alternative)" +msgstr "Datos reales (alternativa)" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source +msgid "" +"Actuals: current data, from accounting and other queries.\n" +"Actuals (alternative): current data from an alternative source (eg a " +"database view providing look-alike account move lines).\n" +"Sum columns: summation (+/-) of other columns.\n" +"Compare to column: compare to other column.\n" +msgstr "" +"Datos reales: datos actuales provenientes de la contabilidad y otras " +"consultas.\n" +"Datos reales (alternativa): datos actuales provenientes de un origen " +"alternativo (por ejemplo, vista de la base de datos proveyendo registros de " +"\"tipo apunte\").\n" +"Suma de columnas: sumarización (+/-) de otras columnas.\n" +"Comparar columnas: comparación con otra columna.\n" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_prorata_read_group_mixin +msgid "Adapt model with date_from/date_to for pro-rata temporis read_group" +msgstr "" +"Adapte el modelo con date_from / date_to para pro-rata temporis read_group" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_add_to_dashboard_action +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Add to dashboard" +msgstr "Añadir al tablero" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Additionally following variables are available\n" +" in the evaluation context:" +msgstr "" +"Además, las siguientes variables están disponibles\n" +" en " +"el contexto de la evaluación:" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__aggregate +msgid "Aggregate" +msgstr "Agregación" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__all +msgid "All Entries" +msgstr "Todos los asientos" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__all_kpi_ids +msgid "All Kpi" +msgstr "Todos los Kpi" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__posted +msgid "All Posted Entries" +msgstr "Todos los asientos asentados" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__allowed_cmpcol_ids +msgid "Allowed Cmpcol" +msgstr "Cmpcol permitido" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_ids +msgid "Allowed companies" +msgstr "Compañías permitidas" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_id +msgid "Allowed company" +msgstr "Compañía permitida" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__amount +msgid "Amount" +msgstr "Importe" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__style_expression +msgid "" +"An expression that returns a style depending on the KPI value. Such style is " +"applied on top of the row style." +msgstr "" +"Una expresión que devuelve un estilo dependiendo del valor del KPI. Dicho " +"estilo se aplica en la parte superior del estilo de la fila." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__analytic_domain +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "Analytic Domain" +msgstr "Dominio analítico" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Auto expand" +msgstr "Auto expandir" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__avg +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__avg +#, python-format +msgid "Average" +msgstr "Media" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color +msgid "Background Color" +msgstr "Color de fondo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color_inherit +msgid "Background Color Inherit" +msgstr "Color de fondo heredado" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__background_color +msgid "Background color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "Color de fondo utilizando un código RGB válido (de #000000 a #FFFFFF)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date +msgid "Base date" +msgstr "Fecha base" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__bold +msgid "Bold" +msgstr "Negrita" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Cancel" +msgstr "Cancelar" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__multi_company +msgid "Check if you wish to specify several companies to be searched for data." +msgstr "" +"Compruebe si desea especificar varias compañías para la búsqueda de datos." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Color" +msgstr "Color" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color_inherit +msgid "Color Inherit" +msgstr "Color heredado" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_to_sum_id +msgid "Column" +msgstr "Columna" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s cannot be compared to itrec." +msgstr "La columna %s no puede ser comparada consigo misma." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s with move lines source must have from/to dates." +msgstr "La columna %s con fuente de datos reales debe tener fecha desde/hasta." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Columns" +msgstr "Columnas" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "Columns %(descr)s and %(base_descr)s are not comparable" +msgstr "Las columnas %(descr)s y %(base_descr)s no son comparables" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Columns to compare must belong to the same report in %s" +msgstr "Las columnas a comparar deben pertenecer al mismo informe en %s" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_ids +msgid "Columns to sum" +msgstr "Columnas a sumar" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__query_company_ids +msgid "Companies for which data will be searched." +msgstr "Compañías para las que se buscarán datos." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_to_id +msgid "Compare" +msgstr "Comparar" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__cmpcol +msgid "Compare columns" +msgstr "Comparar columnas" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__compare_method +msgid "Comparison Method" +msgstr "Método de comparación" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__comparison_mode +msgid "Comparison Mode" +msgstr "Modo de comparación" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__currency_id +msgid "Currency" +msgstr "Moneda" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__dashboard_id +msgid "Dashboard" +msgstr "Tablero" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date +msgid "Date" +msgstr "Fecha" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__date_field +msgid "Date Field" +msgstr "Campo Fecha" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_from +msgid "Date From" +msgstr "Fecha De" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_range_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_id +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__date_range +#, python-format +msgid "Date Range" +msgstr "Rango de fechas" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_type_id +msgid "Date Range Type" +msgstr "Tipo de rango de fechas" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_to +msgid "Date To" +msgstr "Fecha hasta" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Dates" +msgstr "Fechas" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__d +#, python-format +msgid "Day" +msgstr "Día" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__description +msgid "Description" +msgstr "Descripción" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__accumulation_method +msgid "" +"Determines how values of this kpi spanning over a time period are " +"transformed to match the reporting period. Sum: values of shorter period are " +"added, values of longest or partially overlapping periods are adjusted pro-" +"rata temporis.\n" +"Average: values of included period are averaged with a pro-rata temporis " +"weight." +msgstr "" +"Determina cómo los valores de este kpi transcurriendo sobre el periodo de " +"tiempo son transformados para casar con el periodo del informe. Sum: se " +"añaden los valores del periodo más corto, y los valores del más largo o de " +"periodos que solapan parcialmente se ajustan prorrateándose en el tiempo.\n" +"Media: los valores del periodo incluido se promedian con el peso del " +"prorrateo temporal." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__diff +#, python-format +msgid "Difference" +msgstr "Diferencia" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__no_auto_expand_accounts +msgid "Disable account details expansion" +msgstr "Deshabilitar expansión de detalles de cuenta" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display Columns Description" +msgstr "Descripción de las columnas de visualización" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__display_name +msgid "Display Name" +msgstr "Nombre a mostrar" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts +msgid "Display details by account" +msgstr "Mostrar detalles por cuenta" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display the date range details in the column headers." +msgstr "" +"Mostrar los detalles del rango de fechas en los encabezados de columna." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider_inherit +msgid "Divider Inherit" +msgstr "Divisor heredado" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__domain +msgid "Domain" +msgstr "Dominio" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp_inherit +msgid "Dp Inherit" +msgstr "Dp heredado" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_prorata_read_group_mixin__date +msgid "" +"Dummy field that adapts searches on date to searches on date_from/date_to." +msgstr "" +"Campo ficticio que adapta las búsquedas en fecha a búsquedas en date_from / " +"date_to." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__duration +msgid "Duration" +msgstr "Duración" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__query_company_ids +msgid "Effective companies" +msgstr "Empresas eficaces" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Enter expression here, for example balp[70%]. See also help tab." +msgstr "" +"Introduzca la expresión aquí, por ejemplo balp[70%]. Vea también la pestaña " +"de ayuda." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"Error while querying move line source \"%(model_name)s\". This is likely due " +"to a filter or expression referencing a field that does not exist in the " +"model.\n" +"\n" +"The technical error message is: %(exception)s. " +msgstr "" +"Error al consultar el origen de la línea de movimiento \"%(model_name)s\". " +"Esto probablemente se deba a un filtro o expresión que hace referencia a un " +"campo que no existe en el modelo.\n" +"\n" +"El mensaje de error técnico es: %(exception)s. " + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Examples:" +msgstr "Ejemplos:" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Export" +msgstr "Exportar" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__expression_ids +msgid "Expression" +msgstr "Expresión" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions" +msgstr "Expresiones" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions can be any valid python expressions." +msgstr "Las expresiones pueden ser cualquier expresión válida de Python." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Expressions can involve other KPI, sub KPI and\n" +" query results by name (eg kpi1 + " +"kpi2,\n" +" kpi2.subkpi1, query1." +"field1)." +msgstr "" +"Las expresiones pueden incluir otros KPI, sub KPI y\n" +" consulta los resultados por nombre (p. " +"ej., kpi1 + kpi2,\n" +" kpi2.subkpi1, query1." +"field1)." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__normalize_factor +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider +msgid "Factor" +msgstr "Factor" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Factor inherit" +msgstr "Factor heredado" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__normalize_factor +msgid "Factor to use to normalize the period (used in comparison" +msgstr "El factor se usa para normalizar el periodo (usado en la comparación" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_names +msgid "Fetched fields name" +msgstr "Nombre de los campos obtenidos" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_ids +msgid "Fields to fetch" +msgstr "Campos a obtener" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Filter box search view" +msgstr "Vista de búsqueda para los filtros" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Filters" +msgstr "Filtros" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__fix +msgid "Fixed dates" +msgstr "Fechas fijas" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Font" +msgstr "Fuente" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size +msgid "Font Size" +msgstr "Tamaño del tipo de letra" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size_inherit +msgid "Font Size Inherit" +msgstr "Tamaño del tipo de letra heredado" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style +msgid "Font Style" +msgstr "Estilo de tipo de letra" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style_inherit +msgid "Font Style Inherit" +msgstr "Estilo de tipo de letra heredado" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight +msgid "Font Weight" +msgstr "Tamaño del tipo de letra" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight_inherit +msgid "Font Weight Inherit" +msgstr "Tamaño del tipo de letra heredado" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Forces the start date to Jan 1st of the relevant year" +msgstr "Fuerza la fecha de inicio al 1 de enero del año relevante" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_from +msgid "From" +msgstr "Desde" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_from +msgid "From (computed)" +msgstr "De (calculado)" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/report/mis_report_instance_xlsx.py:0 +#, python-format +msgid "Generated on %(gen_date)s at %(gen_time)s" +msgstr "Generado el %(gen_date)s a las %(gen_time)s" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Help (for KPI expressions)" +msgstr "Ayuda (para las expresiones del KPI)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always +msgid "Hide Always" +msgstr "Ocultar Siempre" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always_inherit +msgid "Hide Always Inherit" +msgstr "Ocultar vacíos heredados" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty +msgid "Hide Empty" +msgstr "Ocultar vacíos" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty_inherit +msgid "Hide Empty Inherit" +msgstr "Ocultar vacíos heredado" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__id +msgid "ID" +msgstr "ID" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"If currency_id is not provided, all companies must have the same currency." +msgstr "" +"Si no se provee el campo currency_id, todas las compañías deben tener la " +"misma moneda." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Indent" +msgstr "Sangría" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level +msgid "Indent Level" +msgstr "Nivel de sangría" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level_inherit +msgid "Indent Level Inherit" +msgstr "Nivel de sangría heredado" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "Indent level must be greater than or equal to 0" +msgstr "El nivel de sangría debe ser igual o mayor que 0" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__italic +msgid "Italic" +msgstr "Cursiva" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__kpi_expression_id +msgid "KPI" +msgstr "KPI" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" has type %(type)s while a tuple was expected.\n" +"\n" +"This can be fixed by either:\n" +"\t- Changing the KPI value to a tuple of length %(length)s\n" +"or\n" +"\t- Changing the KPI to `multi` mode and giving an explicit value for each " +"sub-KPI." +msgstr "" +"KPI \"%(kpi)s\" tiene tipo %(type)s mientras que se esperaba una tupla.\n" +"\n" +"Esto puede solucionarse\n" +"\t- Cambiando el valor del KPI a una tupla de longitud %(length)s\n" +"o\n" +"\t- Cambiando el KPI al modo `multi` y dando un valor explícito para cada " +"sub-KPI." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" is valued as a tuple of length %(length)s while a tuple of " +"length%(expected_length)s is expected." +msgstr "" +"El KPI \"%(kpi)s\" se valora como una tupla de longitud %(length)s mientras " +"que se espera una tupla de longitud%(expected_length)s." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq1 +msgid "KPI Sequence" +msgstr "KPI de Secuencia" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "KPI name ({}) must be a valid python identifier" +msgstr "El nombre de KPI ({}) debe ser un identificador de Python válido" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__kpi_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "KPI's" +msgstr "KPI's" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__all_kpi_ids +msgid "KPIs of this report and subreports." +msgstr "KPI's de este informe y subinformes." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__kpi_id +msgid "Kpi" +msgstr "KPI" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__name +msgid "Label" +msgstr "Etiqueta" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__landscape_pdf +msgid "Landscape PDF" +msgstr "PDF apaisado" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.last_mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.last_wizard_mis_report_instance_view_menu +msgid "Last Reports Generated" +msgstr "Últimos informes generados" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_uid +msgid "Last Updated by" +msgstr "Última modificación por" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Layout" +msgstr "Diseño" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_report_mis_builder_mis_report_instance_xlsx +msgid "MIS Builder XLSX report" +msgstr "Informe MIS Builder XLSX" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_kpi_data +msgid "MIS Kpi Data Abtract class" +msgstr "Clase abstracta de datos KPI MIS" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "MIS Report" +msgstr "Informe MIS" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subreport +msgid "MIS Report - Sub Reports Relation" +msgstr "Informe MIS - Relación de informes secundarios" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_add_mis_report_instance_dashboard_wizard +msgid "MIS Report Add to Dashboard Wizard" +msgstr "Informe MIS Agregar al Asistente del Tablero" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "MIS Report Instance" +msgstr "Instancia de informe MIS" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period +msgid "MIS Report Instance Period" +msgstr "Período de instancia del informe MIS" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period_sum +msgid "MIS Report Instance Period Sum" +msgstr "Suma del período de instancia del informe MIS" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "MIS Report KPI" +msgstr "KPI de informe MIS" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi_expression +msgid "MIS Report KPI Expression" +msgstr "Informe MIS - KPI Expresión" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_result_view_form +msgid "MIS Report Preview" +msgstr "Previsualizar Informe MIS" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_query +msgid "MIS Report Query" +msgstr "Consulta del informe MIS" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_style +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "MIS Report Style" +msgstr "Estilo del informe MIS" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_style_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_style_view_menu +msgid "MIS Report Styles" +msgstr "Estilos del informe MIS" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subkpi +msgid "MIS Report Sub-KPI" +msgstr "Informe MIS Sub-KPI" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report +msgid "MIS Report Template" +msgstr "Plantilla de presupuesto MIS" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_view_menu +msgid "MIS Report Templates" +msgstr "Plantillas de informe MIS" + +#. module: mis_builder +#: model:ir.ui.menu,name:mis_builder.mis_report_conf_menu +#: model:ir.ui.menu,name:mis_builder.mis_report_finance_menu +msgid "MIS Reporting" +msgstr "MIS" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_instance_view_menu +msgid "MIS Reports" +msgstr "Informes MIS" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.qweb_pdf_export +msgid "MIS report instance QWEB PDF report" +msgstr "Informe QWeb PDF de instancia de informe MIS" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.xls_export +msgid "MIS report instance XLS report" +msgstr "Informe XLS de instancia de informe MIS" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__max +#, python-format +msgid "Max" +msgstr "Máx" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__min +#, python-format +msgid "Min" +msgstr "Mín" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__mode +msgid "Mode" +msgstr "Modo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__model_id +msgid "Model" +msgstr "Modelo" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__m +#, python-format +msgid "Month" +msgstr "Mes" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "Move Lines Source" +msgstr "Origen de los apuntes" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "Move lines source" +msgstr "Origen de los apuntes" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_name +msgid "Move lines source model name" +msgstr "Mover líneas nombre del modelo de origen" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__multi +msgid "Multi" +msgstr "Multi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__multi_company +msgid "Multiple companies" +msgstr "Múltiples compañías" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__name +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Name" +msgstr "Nombre" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__none +msgid "No date filter" +msgstr "Sin filtro de fechas" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "No date filter is allowed for this source in column %s." +msgstr "No se permite un filtro de fecha para esta fuente en la columna %s." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__none +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__none +#, python-format +msgid "None" +msgstr "Ninguno" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__normal +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__nornal +msgid "Normal" +msgstr "Normal" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Number" +msgstr "Número" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__duration +msgid "Number of periods" +msgstr "Número de periodos" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__num +#, python-format +msgid "Numeric" +msgstr "Numérico" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__offset +msgid "Offset" +msgstr "Desplazamiento" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__offset +msgid "Offset from current period" +msgstr "Desplazamiento del periodo actual" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_id +msgid "Parent column" +msgstr "Columna padre" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__pct +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__pct +#, python-format +msgid "Percentage" +msgstr "Porcentaje" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_name_unique +msgid "Period name should be unique by report" +msgstr "El nombre del periodo debe ser único en cada informe" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__type +msgid "Period type" +msgstr "Tipo de periodo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__period_ids +msgid "Periods" +msgstr "Periodos" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__pivot_date +msgid "Pivot Date" +msgstr "Fecha pivote" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Please provide both columns to compare in %s." +msgstr "Por favor introduzca ambas columnas a comparar en %s." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Please select a report template and/or save the report before adding columns." +msgstr "" +"Por favor seleccione una plantilla de informe y/o guarde el informe antes de " +"añadir columnas." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix +msgid "Prefix" +msgstr "Prefijo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix_inherit +msgid "Prefix Inherit" +msgstr "Prefijo heredado" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Preview" +msgstr "Previsualizar" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Print" +msgstr "Imprimir" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__query_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Queries" +msgstr "Consultas" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Query name ({}) must be valid python identifier" +msgstr "" +"El nombre de la consulta ({}) debe ser un identificador de Python válido" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Refresh" +msgstr "Actualizar" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__relative +msgid "Relative to report base date" +msgstr "Relativo a la fecha base del informe" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__report_id +msgid "Report" +msgstr "Informe" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_ir_actions_report +msgid "Report Action" +msgstr "Informar acción" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_instance_id +msgid "Report Instance" +msgstr "Instancia del informe" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__date +msgid "Report base date (leave empty to use current date)" +msgstr "Fecha base del informe (dejar vacía para usar la fecha actual)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp +msgid "Rounding" +msgstr "Redondeo" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Rounding inherit" +msgstr "Redondeo heredado" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Save" +msgstr "Guardar" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Search view to customize the filter box in the report widget." +msgstr "Vista de búsqueda para personalizar los filtros en el informe." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__company_ids +msgid "Select companies for which data will be searched." +msgstr "Seleccione las compañías para las que se buscarán los datos." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__currency_id +msgid "" +"Select target currency for the report. Required if companies have different " +"currencies." +msgstr "" +"Seleccione la moneda objetivo para el informe. Requerido si las compañías " +"tiene monedas diferentes." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__sequence +msgid "Sequence" +msgstr "Secuencia" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Settings" +msgstr "Configuración" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_subreport_unique +msgid "" +"Should not include the same report more than once as sub report of a given " +"report" +msgstr "" +"No debe incluir el mismo informe más de una vez como subinforme de un " +"informe determinado" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show Pivot Date" +msgstr "Mostrar fecha pivote" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show filters box" +msgstr "Mostrar filtros" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show settings button" +msgstr "Mostrar botón de configuraciones" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show the Pivot Date in the report widget filter bar." +msgstr "Mostrar la fecha pivote en la barra de filtros del informe." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show the filter bar in the report widget." +msgstr "Mostrar la barra de filtros en el informe." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show the settings button in the report widget." +msgstr "Mostrar el botón de configuración en el informe." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__sign +msgid "Sign" +msgstr "Signo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Source" +msgstr "Origen" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__str +#, python-format +msgid "String" +msgstr "Cadena" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__style_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_id +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Style" +msgstr "Estilo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_expression +msgid "Style Expression" +msgstr "Expresión de estilo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts_style_id +msgid "Style for account detail rows" +msgstr "Estilo para las filas de detalle de cuenta" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__name +msgid "Style name" +msgstr "Nombre del estilo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subkpi_ids +msgid "Sub KPI" +msgstr "Sub KPI" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__subkpi_ids +msgid "Sub KPI Filter" +msgstr "Filtro del sub KPI" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_kpi_expression_subkpi_kpi_unique +msgid "Sub KPI must be used once and only once for each KPI" +msgstr "El sub KPI debe usarse solamente una vez para cada KPI" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub KPI's" +msgstr "Sub KPI's" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub Reports" +msgstr "Subinformes" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subreport_ids +msgid "Sub reports" +msgstr "Subinformes" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq2 +msgid "Sub-KPI Sequence" +msgstr "Sub-KPI Secuencia" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Sub-KPI name ({}) must be a valid python identifier" +msgstr "El nombre del Sub-KPI ({}) debe ser un identificador válido de Python" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__subkpi_id +msgid "Subkpi" +msgstr "SubKPI" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__subreport_id +msgid "Subreport" +msgstr "Subinforme" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport loop detected" +msgstr "Subinforme detectado" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport name ({}) must be a valid python identifier" +msgstr "" +"El nombre del subinforme ({}) debe ser un identificador de Python válido" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_name_unique +msgid "Subreport name should be unique by report" +msgstr "El nombre del subinforme debe ser único por informe" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix +msgid "Suffix" +msgstr "Sufijo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix_inherit +msgid "Suffix Inherit" +msgstr "Sufijo heredado" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__sum +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__sum +#, python-format +msgid "Sum" +msgstr "Suma" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_accdet +msgid "Sum account details" +msgstr "Detalles de cuenta de la suma" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "" +"Sum cannot be computed in column {} because the columns to sum have no " +"common subkpis" +msgstr "" +"La suma no puede ser calculada en la columna {} porque las columnas a sumar " +"no tiene subkpis comunes" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__sumcol +msgid "Sum columns" +msgstr "Suma de columnas" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__target_move +msgid "Target Moves" +msgstr "Apuntes objetivo" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +msgid "Template" +msgstr "Plantilla" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__temporary +msgid "Temporary" +msgstr "Temporal" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color +msgid "Text color" +msgstr "Color del texto" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__color +msgid "Text color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "Color de texto en un código RGB válido (desde #000000 hasta #FFFFFF)" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The account selector is a like expression on the\n" +" account code (eg 70%, " +"etc), or a domain over accounts\n" +" (eg [('code', 'like', '60%')])." +msgstr "" +"El selector de cuentas es una expresión similar en el\n" +" código de cuenta (por ejemplo, " +"70%, etc.), o un dominio sobre cuentas\n" +" (por ejemplo, [('code', " +"'like', '60%')])." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The journal items domain is an Odoo domain filter on\n" +" journal items." +msgstr "" +"El dominio de artículos diarios es un filtro de dominio de Odoo en\n" +" artículos diarios." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The following special elements are recognized in the expressions\n" +" to compute accounting data: {bal|" +"crd|deb|pbal|nbal}{pieu}[account\n" +" selector][journal items domain]." +msgstr "" +"En las expresiones se reconocen los siguientes elementos especiales\n" +" para " +"calcular los datos contables: {bal|crd|deb|pbal|nbal}{pieu}[account\n" +" selector][journal items domain]." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_to +msgid "To" +msgstr "Hasta" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_to +msgid "To (computed)" +msgstr "Para (calculado)" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_kpi_data.py:0 +#, python-format +msgid "Unexpected accumulation method %(method)s for %(name)s." +msgstr "Método de acumulación %(method)s inesperado para %(name)s." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Unexpected value %s for target_move." +msgstr "Valor inesperado: %s para el target_move." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/prorata_read_group_mixin.py:0 +#, python-format +msgid "Unsupported operator %s for searching on date" +msgstr "Operador no compatible %s para buscar en fecha" + +#. module: mis_builder +#: model:ir.actions.server,name:mis_builder.ir_cron_vacuum_temp_reports_ir_actions_server +#: model:ir.cron,cron_name:mis_builder.ir_cron_vacuum_temp_reports +msgid "Vacuum temporary reports" +msgstr "Vacío de informes temporales" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__valid +msgid "Valid" +msgstr "Válido" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__type +msgid "Value type" +msgstr "Tipo del valor" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Visibility" +msgstr "Visibilidad" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__w +#, python-format +msgid "Week" +msgstr "Semana" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Widget" +msgstr "Dispositivo" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_duration +msgid "Wrong duration, it must be positive!" +msgstr "¡Duración incorrecta, debe ser positiva!" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_normalize_factor +msgid "Wrong normalize factor, it must be positive!" +msgstr "Factor de normalización incorrecto. ¡Debe ser positivo!" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__y +#, python-format +msgid "Year" +msgstr "Año" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Year to date" +msgstr "El año hasta la fecha" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "You cannot sum period %s with itself." +msgstr "No puede sumar el periodo %s consigo mismo." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "from %(date_from)s to %(date_to)s" +msgstr "Desde %(date_from)s hasta %(date_to)s" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__large +msgid "large" +msgstr "grande" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__medium +msgid "medium" +msgstr "mediana" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "or" +msgstr "o" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "pp" +msgstr "pp" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__small +msgid "small" +msgstr "pequeña" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_from_id +msgid "versus" +msgstr "contra" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-large +msgid "x-large" +msgstr "extra-grande" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-small +msgid "x-small" +msgstr "extra-pequeña" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-large +msgid "xx-large" +msgstr "extra-súper-grande" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-small +msgid "xx-small" +msgstr "extra-súper-pequeña" + +#, python-format +#~ msgid "Columns {} and {} are not comparable" +#~ msgstr "Las columnas {} and {} no son comparables" + +#, python-format +#~ msgid "Generated on {} at {}" +#~ msgstr "Generado el {} a las {}" + +#, python-format +#~ msgid "" +#~ "KPI \"{}\" has type {} while a tuple was expected.\n" +#~ "\n" +#~ "This can be fixed by either:\n" +#~ "\t- Changing the KPI value to a tuple of length {}\n" +#~ "or\n" +#~ "\t- Changing the KPI to `multi` mode and giving an explicit value for " +#~ "each sub-KPI." +#~ msgstr "" +#~ "El KPI \"{}\" tiene el tipo {} mientras se esperaba una tupla.\n" +#~ "\n" +#~ "Esto se puede solucionar mediante:\n" +#~ "- Cambiar el valor de KPI a una tupla de longitud {}\n" +#~ "o\n" +#~ "- Cambiar el KPI al modo `multi` y dar un valor explícito para cada sub-" +#~ "KPI." + +#, python-format +#~ msgid "" +#~ "KPI \"{}\" is valued as a tuple of length {} while a tuple of length {} " +#~ "is expected." +#~ msgstr "" +#~ "El KPI \"{}\" se valora como una tupla de longitud {} mientras que se " +#~ "espera una tupla de longitud {}." + +#, python-format +#~ msgid "Can not update a multi kpi from the kpi line" +#~ msgstr "No se puede actualizar un kpi múltiple desde una línea de kpi" + +#~ msgid "Account model" +#~ msgstr "Modelo de cuenta" + +#~ msgid "Analytic Account" +#~ msgstr "Cuenta analítica" + +#, python-format +#~ msgid "Analytic Account Filter" +#~ msgstr "Filtro de cuenta analítica" + +#, python-format +#~ msgid "Analytic Account: %s" +#~ msgstr "Cuenta analítica: %s" + +#~ msgid "Analytic Tags" +#~ msgstr "Etiquetas analíticas" + +#, python-format +#~ msgid "Analytic Tags Filter" +#~ msgstr "Filtro de etiquetas analíticas" + +#, python-format +#~ msgid "Analytic Tags: %s" +#~ msgstr "Etiquetas analíticas: %s" + +#~ msgid "" +#~ "Filter column on journal entries that have all these analytic tags.This " +#~ "filter is combined with a AND with the report-level filters and cannot be " +#~ "modified in the preview." +#~ msgstr "" +#~ "Filtre la columna en entradas de diario que tengan todas estas etiquetas " +#~ "analíticas. Este filtro se combina con un AND con los filtros de nivel de " +#~ "informe y no se puede modificar en la vista previa." + +#~ msgid "" +#~ "Filter column on journal entries that match this analytic account.This " +#~ "filter is combined with a AND with the report-level filters and cannot be " +#~ "modified in the preview." +#~ msgstr "" +#~ "Filtrar columna en entradas de diario que coincidan con esta cuenta " +#~ "analítica. Este filtro se combina con un AND con los filtros de nivel de " +#~ "informe y no se puede modificar en la vista previa." + +#~ msgid "Hide Analytic Filters" +#~ msgstr "Ocultar filtros analíticos" + +#~ msgid "MIS Report Instances" +#~ msgstr "Instancias de informes MIS" + +#~ msgid "MIS Report Result" +#~ msgstr "Resultado del informe MIS" + +#~ msgid "Pivot date" +#~ msgstr "Fecha pivote" + +#~ msgid "Style expression" +#~ msgstr "Expresión de estilo" + +#, python-format +#~ msgid "Unexpected accumulation method %s for %s." +#~ msgstr "Método de acumulación %s no esperado para %s." + +#, python-format +#~ msgid "from %s to %s" +#~ msgstr "desde %s hasta %s" + +#~ msgid "" +#~ "Check if you wish to specify children companies to be searched for data." +#~ msgstr "" +#~ "Compruebe si desea especificar compañías hijas para buscar datos en ellas." + +#~ msgid "Companies" +#~ msgstr "Compañías" + +#~ msgid "Company" +#~ msgstr "Compañía" + +#~ msgid "Query Company" +#~ msgstr "Compañía de la consulta" + +#~ msgid "" +#~ "AccountingNone: a null value that behaves as 0 in arithmetic " +#~ "operations." +#~ msgstr "" +#~ "AccountingNone: un valor nulo que se comporta como 0 en " +#~ "operaciones aritméticas." + +#~ msgid "" +#~ "bal, crd, deb, pbal, nbal: balance, debit, credit, positive " +#~ "balance, negative balance." +#~ msgstr "" +#~ " bal, crd, deb, pbal, nbal : saldo, débito, crédito, saldo " +#~ "positivo, saldo negativo." + +#~ msgid "" +#~ "bal[70]: variation of the balance of account 70 over the period " +#~ "(it is the same as balp[70]." +#~ msgstr "" +#~ "bal[70]: variación del saldo de la cuenta 70 en el periodo (es lo " +#~ "mismo que balp[70]." + +#~ msgid "" +#~ "bale[1%]: balance of accounts starting with 1 at end of period." +#~ msgstr "" +#~ "bale[1%]: saldo al final del periodo de las cuentas que empiezan " +#~ "en 1." + +#~ msgid "bali[70,60]: initial balance of accounts 70 and 60." +#~ msgstr "bali[70,60]: Saldo inicial de las cuentas 70 y 60." + +#~ msgid "" +#~ "balp[('user_type_id', '=', ref('account.data_account_type_receivable')." +#~ "id)][]: variation of the balance of all receivable accounts over the " +#~ "period." +#~ msgstr "" +#~ "balp[('user_type_id', '=', ref('account.data_account_type_receivable')." +#~ "id)][]: variación del saldo de todas las cuentas a cobrar en el " +#~ "periodo." + +#~ msgid "" +#~ "balp[][('tax_line_id.tag_ids', '=', ref('l10n_be.tax_tag_56').id)]: balance of move lines related to tax grid 56." +#~ msgstr "" +#~ "balp[][('tax_line_id.tag_ids', '=', ref('l10n_be.tax_tag_56').id)]: saldo de los apuntes relacionados con la etiqueta de impuesto 56." + +#~ msgid "" +#~ "balu[]: (u for unallocated) is a special expression that shows the " +#~ "unallocated profit/loss of previous\n" +#~ " fiscal years." +#~ msgstr "" +#~ "balu[]: (u for unallocated) es una expresión especial que muestra " +#~ "las pérdidas y ganancias sin asignar de los ejercicios fiscales " +#~ "anteriores." + +#~ msgid "" +#~ "crdp[40%]: sum of all credits on accounts starting with 40 during " +#~ "the period." +#~ msgstr "" +#~ "crdp[40%]: suma de todos los haber de las cuentas que empiezan por " +#~ "40 durante el periodo." + +#~ msgid "date_from, date_to: beginning and end date of the period." +#~ msgstr "" +#~ "date_from, date_to: fecha de inicio y fecha de fin del periodo." + +#~ msgid "datetime, datetime, dateutil: the python modules." +#~ msgstr "datetime, datetime, dateutil: los módulos python." + +#~ msgid "" +#~ "debp[55%][('journal_id.code', '=', 'BNK1')]: sum of all debits on " +#~ "accounts 55 and journal BNK1 during the period." +#~ msgstr "" +#~ "debp[55%][('journal_id.code', '=', 'BNK1')]: suma de todos los " +#~ "debe en las cuentas que empiezan por 55 y en el diario BNK1 durante el " +#~ "periodo." + +#~ msgid "" +#~ "p, i, e: respectively variation over the period, initial balance, " +#~ "ending balance" +#~ msgstr "" +#~ " p, i, e : variación respectivamente durante el período, saldo " +#~ "inicial, saldo final" + +#~ msgid "" +#~ "pbale[55%]: sum of all ending balances of accounts starting with " +#~ "55 whose\n" +#~ " ending balance is positive." +#~ msgstr "" +#~ " pbale [55%] : suma de todos los saldos finales de cuentas que " +#~ "comienzan con 55 cuyos\n" +#~ "............................................el saldo final es positivo." + +#~ msgid "" +#~ "sum, min, max, len, avg: behave as expected, very similar to the " +#~ "python builtins." +#~ msgstr "" +#~ "sum, min, max, len, avg: se comportan como se espera, muy " +#~ "similares a los nativos de Python." + +#~ msgid "" +#~ "Additionally following variables are available in the evaluation context:" +#~ msgstr "" +#~ "Las siguientes variables adicionales están disponibles en el contexto de " +#~ "evaluación:" + +#~ msgid "" +#~ "Expressions can involve other KPI, sub KPI and query results by name (eg " +#~ "kpi1 + kpi2, kpi2.subkpi1, query1.field1)." +#~ msgstr "" +#~ "La expresión también puede incluir otros KPI y resultados de consulta por " +#~ "nombre (por ejemplo, kpi1 + kpi2)." + +#~ msgid "" +#~ "The account selector is a like expression on the account code (eg " +#~ "70%, etc)." +#~ msgstr "" +#~ "El selector de cuenta es como una expresión en el código de cuenta " +#~ "(por ejemplo, 70%, etc)." + +#~ msgid "" +#~ "The journal items domain is an Odoo domain filter on journal items." +#~ msgstr "" +#~ "El dominio de apuntes es un filtro de dominio Odoo sobre los " +#~ "apuntes." + +#~ msgid "" +#~ "The following special elements are recognized in the expressions to " +#~ "compute accounting data:\n" +#~ " {bal|crd|deb|pbal|nbal}" +#~ "{pieu}[account selector][journal items domain]." +#~ msgstr "" +#~ "Los siguientes elementos especiales se reconocen en las expresiones para " +#~ "calcular los datos contables:\n" +#~ " {bal | crd | deb | pbal | nbal} {pieu} [selector de cuenta] " +#~ "[dominio de elementos de diario] ." + +#~ msgid "MIS Budget" +#~ msgstr "Presupuesto MIS" + +#~ msgid "report.mis_builder.mis_report_instance_xlsx" +#~ msgstr "report.mis_builder.mis_report_instance_xlsx" + +#~ msgid "" +#~ "Probably not your fault... but I'm really curious to know how you managed " +#~ "to raise this error so I can handle one more corner case!" +#~ msgstr "" +#~ "Probablemente no es su culpa... ¡pero realmente hay curiosidad por saber " +#~ "cómo ha conseguido este error para poder manejar un caso extremo más!" + +#~ msgid "µ" +#~ msgstr "µ" + +#~ msgid "add.mis.report.instance.dashboard.wizard" +#~ msgstr "add.mis.report.instance.dashboard.wizard" + +#~ msgid "ir.actions.report" +#~ msgstr "ir.actions.report" + +#~ msgid "mis.report" +#~ msgstr "mis.report" + +#~ msgid "mis.report.instance" +#~ msgstr "mis.report.instance" + +#~ msgid "mis.report.instance.period" +#~ msgstr "mis.report.instance.period" + +#~ msgid "mis.report.instance.period.sum" +#~ msgstr "mis.report.instance.period.sum" + +#~ msgid "mis.report.kpi" +#~ msgstr "mis.report.kpi" + +#~ msgid "mis.report.kpi.expression" +#~ msgstr "mis.report.kpi.expression" + +#~ msgid "mis.report.query" +#~ msgstr "mis.report.query" + +#~ msgid "mis.report.style" +#~ msgstr "mis.report.style" + +#~ msgid "mis.report.subkpi" +#~ msgstr "mis.report.subkpi" diff --git a/mis_builder/i18n/fr.po b/mis_builder/i18n/fr.po new file mode 100644 index 0000000..5dfc847 --- /dev/null +++ b/mis_builder/i18n/fr.po @@ -0,0 +1,2167 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mis_builder +# +# Translators: +# OCA Transbot , 2018 +# Nicolas JEUDY , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-10 07:59+0000\n" +"PO-Revision-Date: 2023-05-25 15:10+0000\n" +"Last-Translator: \"Sandrine (ACSONE)\" \n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "%s (copy)" +msgstr "%s (copie)" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[('user_type_id', '=',\n" +" ref('account.\n" +" data_account_type_receivable')." +"id)][]\n" +" \n" +" : variation of the balance of all " +"receivable accounts over\n" +" the period." +msgstr "" +"\n" +" balp[('user_type_id', '=',\n" +" ref('account.\n" +" data_account_type_receivable')." +"id)][]\n" +" \n" +" : variation de la balance de tous " +"les comptes de créances sur\n" +" la période." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[][('tax_line_id.tag_ids', " +"'=', ref('l10n_be.tax_tag_56').id)]\n" +" \n" +" : balance of move lines related to " +"tax grid 56." +msgstr "" +"\n" +" balp[][('tax_line_id.tag_ids', " +"'=', ref('l10n_be.tax_tag_56').id)]\n" +" \n" +" : balance des écritures comptables " +"liées à la grille de taxe 56." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" debp[55%][('journal_id.code', " +"'=',\n" +" 'BNK1')]\n" +" \n" +" : sum of all debits on accounts 55 " +"and journal BNK1 during\n" +" the period." +msgstr "" +"\n" +" debp[55%][('journal_id.code', " +"'=',\n" +" 'BNK1')]\n" +" \n" +" : somme de tous les débits des " +"comptes 55 et du journal BNK1 pour\n" +" la période." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"AccountingNone : a null value that behaves as 0 in\n" +" arithmetic operations." +msgstr "" +"AccountingNone : une valeur nulle qui se comporte comme un 0 " +"dans\n" +" les opérations arithmétiques." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal, crd, deb, \n" +" pbal, nbal : " +"balance, debit, credit,\n" +" positive balance, negative balance." +msgstr "" +"bal, crd, deb, \n" +" pbal, nbal : " +"balance, débit, crédit,\n" +" balance positive, balance négative." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal[70] : variation of the balance of account 70 over\n" +" the period (it is the same as " +"balp[70]." +msgstr "" +"bal[70] : variation de la balance des comptes 70 sur\n" +" la période (c'est la même chose que " +"balp[70]." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bale[1%] : balance of accounts starting with 1 at\n" +" end of period." +msgstr "" +"bale[1%] : balance des comptes commençant par 1 à\n" +" la fin de la période." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "bali[70,60] : initial balance of accounts 70 and 60." +msgstr "bali[70,60] : balance initiale des comptes 70 et 60." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"balu[] : (u for unallocated) is a special " +"expression\n" +" that shows the unallocated profit/" +"loss of previous fiscal\n" +" years." +msgstr "" +"balu[] : (u pour non-alloué) est une expression " +"spéciale\n" +" qui montre la perte/le profit non-" +"alloué de la précédente année\n" +" fiscale." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"crdp[40%] : sum of all credits on accounts starting\n" +" with 40 during the period." +msgstr "" +"crdp[40%] : somme de tous les crédits des comptes commençant\n" +" par 40 durant la période." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"date_from, date_to : beginning and end date of " +"the\n" +" period." +msgstr "" +"date_from, date_to : date de début et de fin de " +"la\n" +" période." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"datetime, datetime, dateutil : the " +"python modules." +msgstr "" +"datetime, datetime, dateutil : les " +"modules python." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"p, i, e : respectively variation over " +"the period,\n" +" initial balance, ending balance" +msgstr "" +"p, i, e : respectivement variation de " +"la période,\n" +" balance initiale, balance finale" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"pbale[55%] : sum of all ending balances of accounts\n" +" starting with 55 whose ending " +"balance is positive." +msgstr "" +"pbale[55%] : somme de toutes les balances finales des comptes\n" +" commençant par 55 qui ont une " +"balance finale positive." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"sum, min,\n" +" max, len,\n" +" avg : behave as " +"expected, very\n" +" similar to the python builtins." +msgstr "" +"sum, min,\n" +" max, len,\n" +" avg : se comporte comme " +"attendu, très\n" +" similaire aux expressions python." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.report_mis_report_instance +msgid "-" +msgstr "-" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields." +msgstr "" +"Un modèle 'move line like', ie ayant au moins les champs débit, crédit, " +"account_id et company_id." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields. This model is the data source for column Actuals." +msgstr "" +"Un modèle 'move line like', ie ayant au moins les champs débit, crédit, " +"account_id et company_id. Ce modèle est la source pour la colonne \"Réels\"." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "A date filter is mandatory for this source in column %s." +msgstr "Un filtre date est obligatoire pour cette source dans la colonne %s." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "A domain to additionally filter move lines considered in this column." +msgstr "Un domaine pour filtrer les lignes de données de cette colonne." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__analytic_domain +msgid "" +"A domain to additionally filter move lines considered in this report. " +"Caution: when using different move line sources in different columns, such " +"as budgets by account, make sure to use only fields that are available in " +"all move line sources." +msgstr "" +"Un domaine pour filtrer les lignes de données de cette colonne. Attention : " +"quand vous utilisez différentes sources de données dans des colonnes " +"différentes, tel que budgets par compte, veillez à utiliser uniquement des " +"champs qui sont disponibles dans toutes les sources de données." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__account_model +msgid "Account Model" +msgstr "Modèle de compte" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__accumulation_method +msgid "Accumulation Method" +msgstr "Méthode d'accumulation" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Actual (alternative) models used in columns must have the same account model " +"in the Account field and must be the same defined in the report template: %s" +msgstr "" +"Les modèles Réel (alternatif) utilisés dans les colonnes doivent avoir le " +"même modèle de compte dans le champ Compte et doit être le même défini dans " +"le modèle de rapport : %s" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals +msgid "Actuals" +msgstr "Réels" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals_alt +msgid "Actuals (alternative)" +msgstr "Réels (autre)" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source +msgid "" +"Actuals: current data, from accounting and other queries.\n" +"Actuals (alternative): current data from an alternative source (eg a " +"database view providing look-alike account move lines).\n" +"Sum columns: summation (+/-) of other columns.\n" +"Compare to column: compare to other column.\n" +msgstr "" +"Réels: données actuelles, de la comptabilité et autres requêtes.\n" +"Réels (autre): données actuelles d'une autre source (eg une vue d'une base " +"de données fournissant des lignes de mouvements de comptes similaires).\n" +"Somme colonnes: somme (+/-) d'autres colonnes.\n" +"Comparer colonnes: compare à  une autre colonne.\n" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_prorata_read_group_mixin +msgid "Adapt model with date_from/date_to for pro-rata temporis read_group" +msgstr "" +"Adapte le modèle avec date_from/date_to pour le read_group pro-rata temporis" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_add_to_dashboard_action +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Add to dashboard" +msgstr "Ajouter au tableau de bord" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Additionally following variables are available\n" +" in the evaluation context:" +msgstr "" +"Les variables suivantes sont disponibles\n" +" dans le contexte d'évaluation :" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__aggregate +msgid "Aggregate" +msgstr "Agréger" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__all +msgid "All Entries" +msgstr "Écritures comptabilisées + non-comptabilisées" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__all_kpi_ids +msgid "All Kpi" +msgstr "Tous les KPIs" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__posted +msgid "All Posted Entries" +msgstr "Écritures comptabilisées seulement" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__allowed_cmpcol_ids +msgid "Allowed Cmpcol" +msgstr "Cmpcol autorisés" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_ids +msgid "Allowed companies" +msgstr "Sociétés autorisées" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_id +msgid "Allowed company" +msgstr "Société autorisée" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__amount +msgid "Amount" +msgstr "Montant" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__style_expression +msgid "" +"An expression that returns a style depending on the KPI value. Such style is " +"applied on top of the row style." +msgstr "" +"Une expression qui retourne un style en fonction de la valeur du KPI. Un tel " +"style est appliqué au-dessus du style de la ligne." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__analytic_domain +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "Analytic Domain" +msgstr "Domaine analytique" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Auto expand" +msgstr "Expansion automatique" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__avg +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__avg +#, python-format +msgid "Average" +msgstr "Moyenne" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color +msgid "Background Color" +msgstr "Couleur d'arrière-plan" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color_inherit +msgid "Background Color Inherit" +msgstr "Couleur d'arrière plan par défaut" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__background_color +msgid "Background color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "Couleur d'arrière-plan en code RGB valide (de #000000 à  #FFFFFF)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date +msgid "Base date" +msgstr "Date de référence" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__bold +msgid "Bold" +msgstr "Gras" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Cancel" +msgstr "Annuler" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__multi_company +msgid "Check if you wish to specify several companies to be searched for data." +msgstr "" +"Cocher si vous souhaitez indiquer plusieurs sociétés dont les données sont à " +"intégrer." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Color" +msgstr "Couleur" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color_inherit +msgid "Color Inherit" +msgstr "Couleur par défaut" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_to_sum_id +msgid "Column" +msgstr "Colonne" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s cannot be compared to itrec." +msgstr "Colonne %s ne peut pas être comparée à itrec." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s with move lines source must have from/to dates." +msgstr "La colonne %s avec une source de données doit avoir des dates de/à." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Columns" +msgstr "Colonnes" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "Columns %(descr)s and %(base_descr)s are not comparable" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Columns to compare must belong to the same report in %s" +msgstr "Les colonnes à  comparer doivent appartenir au même rapport %s" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_ids +msgid "Columns to sum" +msgstr "Colonnes à additionner" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__query_company_ids +msgid "Companies for which data will be searched." +msgstr "Sociétés pour lesquelles les données seront recherchées." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_to_id +msgid "Compare" +msgstr "Comparer" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__cmpcol +msgid "Compare columns" +msgstr "Compare colonnes" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__compare_method +msgid "Comparison Method" +msgstr "Méthode de comparaison" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__comparison_mode +msgid "Comparison Mode" +msgstr "Mode de comparaison" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_date +msgid "Created on" +msgstr "Créé le" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__currency_id +msgid "Currency" +msgstr "Devise" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__dashboard_id +msgid "Dashboard" +msgstr "Tableau de bord" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date +msgid "Date" +msgstr "Date" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__date_field +msgid "Date Field" +msgstr "Champ date" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_from +msgid "Date From" +msgstr "Du" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_range_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_id +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__date_range +#, python-format +msgid "Date Range" +msgstr "Intervalle de dates" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_type_id +msgid "Date Range Type" +msgstr "Type d'intervalle de dates" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_to +msgid "Date To" +msgstr "Jusqu'au" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Dates" +msgstr "Dates" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__d +#, python-format +msgid "Day" +msgstr "Jour" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__description +msgid "Description" +msgstr "Description" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__accumulation_method +msgid "" +"Determines how values of this kpi spanning over a time period are " +"transformed to match the reporting period. Sum: values of shorter period are " +"added, values of longest or partially overlapping periods are adjusted pro-" +"rata temporis.\n" +"Average: values of included period are averaged with a pro-rata temporis " +"weight." +msgstr "" +"Détermines comment les valeurs de ce KPI, s'étendant au délà  d'une période, " +"sont transformées pour correspondre à  la période de reporting. Somme : les " +"valeurs des périodes plus courtes sont additionnées, les valeurs des " +"périodes plus longues ou se chevauchant sont ajustées au pro-rata temporis.\n" +"Moyenne : moyenne au pro-rata temporis des valeurs incluses dans la période." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__diff +#, python-format +msgid "Difference" +msgstr "Différence" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__no_auto_expand_accounts +msgid "Disable account details expansion" +msgstr "Désactiver l'affichage du détail par compte" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display Columns Description" +msgstr "Afficher la description des colonnes" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts +msgid "Display details by account" +msgstr "Affiche les détails par compte" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display the date range details in the column headers." +msgstr "Afficher la plage de dates dans l'intitulé des colonnes." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider_inherit +msgid "Divider Inherit" +msgstr "Diviseur par défaut" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__domain +msgid "Domain" +msgstr "Domaine" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp_inherit +msgid "Dp Inherit" +msgstr "Dp par défaut" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_prorata_read_group_mixin__date +msgid "" +"Dummy field that adapts searches on date to searches on date_from/date_to." +msgstr "" +"Champ factice qui adapte les recherches sur la date vers des recherches sur " +"les champs date_from/date_to." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__duration +msgid "Duration" +msgstr "Durée" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__query_company_ids +msgid "Effective companies" +msgstr "Sociétés" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Enter expression here, for example balp[70%]. See also help tab." +msgstr "" +"Entrez l'expression ici, par exemple balp[70%]. Voir aussi l'onglet aide." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"Error while querying move line source \"%(model_name)s\". This is likely due " +"to a filter or expression referencing a field that does not exist in the " +"model.\n" +"\n" +"The technical error message is: %(exception)s. " +msgstr "" +"Erreur lors de la requête du modèle \"%(model_name)s\". C'est probablement " +"dû à un filtre ou expression référençant un champ qui n'existe pas dans le " +"modèle.\n" +"\n" +"Le message d'erreur technique est : %(exception)s. " + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Examples:" +msgstr "Exemples :" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Export" +msgstr "Export" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__expression_ids +msgid "Expression" +msgstr "Expression" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions" +msgstr "Expressions" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions can be any valid python expressions." +msgstr "" +"Les expressions peuvent être n'importe quelle expression python valide." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Expressions can involve other KPI, sub KPI and\n" +" query results by name (eg kpi1 + " +"kpi2,\n" +" kpi2.subkpi1, query1." +"field1)." +msgstr "" +"Les expressions peuvent intégrer d'autres KPI, sub KPI et\n" +" résultats de requêtes par nom (eg " +"kpi1 + kpi2,\n" +" kpi2.subkpi1, query1." +"field1)." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__normalize_factor +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider +msgid "Factor" +msgstr "Facteur" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Factor inherit" +msgstr "Facteur par défaut" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__normalize_factor +msgid "Factor to use to normalize the period (used in comparison" +msgstr "Facteur à  utiliser pour normaliser la période (utilisé en comparaison" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_names +msgid "Fetched fields name" +msgstr "Nom des champs cherchés" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_ids +msgid "Fields to fetch" +msgstr "Champs à  chercher" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Filter box search view" +msgstr "Filtre de la vue de recherche" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Filters" +msgstr "Filtres" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__fix +msgid "Fixed dates" +msgstr "Dates fixes" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Font" +msgstr "Police" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size +msgid "Font Size" +msgstr "Taille de police" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size_inherit +msgid "Font Size Inherit" +msgstr "Taille de police par défaut" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style +msgid "Font Style" +msgstr "Style de police" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style_inherit +msgid "Font Style Inherit" +msgstr "Style de police par défaut" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight +msgid "Font Weight" +msgstr "Poids de police de caractères" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight_inherit +msgid "Font Weight Inherit" +msgstr "Poids de police par défaut" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Forces the start date to Jan 1st of the relevant year" +msgstr "Force la date de début au 1er janvier de l'année" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_from +msgid "From" +msgstr "De" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_from +msgid "From (computed)" +msgstr "Du (calculé)" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/report/mis_report_instance_xlsx.py:0 +#, python-format +msgid "Generated on %(gen_date)s at %(gen_time)s" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Help (for KPI expressions)" +msgstr "Aide (pour expressions des KPI)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always +msgid "Hide Always" +msgstr "Toujours cacher" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always_inherit +msgid "Hide Always Inherit" +msgstr "Toujours cacher par défaut" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty +msgid "Hide Empty" +msgstr "Cacher les vides" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty_inherit +msgid "Hide Empty Inherit" +msgstr "Cacher les vides par défaut" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__id +msgid "ID" +msgstr "ID" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"If currency_id is not provided, all companies must have the same currency." +msgstr "" +"Si le currency_id n'est pas renseigné, toutes les sociétés doivent avoir la " +"même devise." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Indent" +msgstr "Alinéa" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level +msgid "Indent Level" +msgstr "Niveau de retrait" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level_inherit +msgid "Indent Level Inherit" +msgstr "Niveau de retrait par défaut" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "Indent level must be greater than or equal to 0" +msgstr "Le niveau de retrait doit être plus grand ou égal à  0" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__italic +msgid "Italic" +msgstr "Italique" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__kpi_expression_id +msgid "KPI" +msgstr "KPI" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" has type %(type)s while a tuple was expected.\n" +"\n" +"This can be fixed by either:\n" +"\t- Changing the KPI value to a tuple of length %(length)s\n" +"or\n" +"\t- Changing the KPI to `multi` mode and giving an explicit value for each " +"sub-KPI." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" is valued as a tuple of length %(length)s while a tuple of " +"length%(expected_length)s is expected." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq1 +msgid "KPI Sequence" +msgstr "Séquence" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "KPI name ({}) must be a valid python identifier" +msgstr "Le nom du KPI ({}) doit être un identifiant python valide" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__kpi_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "KPI's" +msgstr "KPI's" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__all_kpi_ids +msgid "KPIs of this report and subreports." +msgstr "Les KPIs de ce rapport et sous-rapports." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__kpi_id +msgid "Kpi" +msgstr "Kpi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__name +msgid "Label" +msgstr "Description" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__landscape_pdf +msgid "Landscape PDF" +msgstr "PDF paysage" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport____last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.last_mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.last_wizard_mis_report_instance_view_menu +msgid "Last Reports Generated" +msgstr "Derniers rapports générés" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_uid +msgid "Last Updated by" +msgstr "Dernière mise à jour par" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_date +msgid "Last Updated on" +msgstr "Dernière mise à jour le" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Layout" +msgstr "Disposition" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_report_mis_builder_mis_report_instance_xlsx +msgid "MIS Builder XLSX report" +msgstr "MIS Builder rapport XLSX" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_kpi_data +msgid "MIS Kpi Data Abtract class" +msgstr "Classe abstraite de données MIS KPI" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "MIS Report" +msgstr "MIS Report" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subreport +msgid "MIS Report - Sub Reports Relation" +msgstr "Rapport MIS - Relation des sous-rapports" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_add_mis_report_instance_dashboard_wizard +msgid "MIS Report Add to Dashboard Wizard" +msgstr "Wizard d'ajout du rapport MIS au tableau de bord" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "MIS Report Instance" +msgstr "Instance MIS report" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period +msgid "MIS Report Instance Period" +msgstr "Période du rapport MIS" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period_sum +msgid "MIS Report Instance Period Sum" +msgstr "Somme de la période" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "MIS Report KPI" +msgstr "MIS Report KPI" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi_expression +msgid "MIS Report KPI Expression" +msgstr "Expression du KPI du rapport MIS" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_result_view_form +msgid "MIS Report Preview" +msgstr "Prévisualiser" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_query +msgid "MIS Report Query" +msgstr "Requête du rapport MIS" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_style +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "MIS Report Style" +msgstr "Style MIS Report" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_style_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_style_view_menu +msgid "MIS Report Styles" +msgstr "Styles MIS Report" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subkpi +msgid "MIS Report Sub-KPI" +msgstr "Sous-KPI du rapport MIS" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report +msgid "MIS Report Template" +msgstr "Modèle de rapport MIS" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_view_menu +msgid "MIS Report Templates" +msgstr "Modèles MIS Report" + +#. module: mis_builder +#: model:ir.ui.menu,name:mis_builder.mis_report_conf_menu +#: model:ir.ui.menu,name:mis_builder.mis_report_finance_menu +msgid "MIS Reporting" +msgstr "MIS Reporting" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_instance_view_menu +msgid "MIS Reports" +msgstr "MIS Reports" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.qweb_pdf_export +msgid "MIS report instance QWEB PDF report" +msgstr "Instance MIS report QWEB PDF report" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.xls_export +msgid "MIS report instance XLS report" +msgstr "Instance MIS report XLS report" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__max +#, python-format +msgid "Max" +msgstr "Max" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__min +#, python-format +msgid "Min" +msgstr "Min" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__mode +msgid "Mode" +msgstr "Mode" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__model_id +msgid "Model" +msgstr "Modèle" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__m +#, python-format +msgid "Month" +msgstr "Mois" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "Move Lines Source" +msgstr "Source des lignes de données" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "Move lines source" +msgstr "Source des lignes d'écriture" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_name +msgid "Move lines source model name" +msgstr "Nom du modèle de la source des lignes de données" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__multi +msgid "Multi" +msgstr "Multi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__multi_company +msgid "Multiple companies" +msgstr "Sociétés multiples" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__name +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Name" +msgstr "Nom" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__none +msgid "No date filter" +msgstr "Pas de filtre date" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "No date filter is allowed for this source in column %s." +msgstr "Aucun filtre date n'est autorisé pour cette source dans la colonne %s." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__none +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__none +#, python-format +msgid "None" +msgstr "Aucun" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__normal +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__nornal +msgid "Normal" +msgstr "Normal" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Number" +msgstr "Nombre" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__duration +msgid "Number of periods" +msgstr "Nombre de périodes" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__num +#, python-format +msgid "Numeric" +msgstr "Numérique" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__offset +msgid "Offset" +msgstr "Compensation" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__offset +msgid "Offset from current period" +msgstr "Compensation depuis la période actuelle" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_id +msgid "Parent column" +msgstr "Colonne parent" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__pct +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__pct +#, python-format +msgid "Percentage" +msgstr "Pourcentage" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_name_unique +msgid "Period name should be unique by report" +msgstr "Le nom de la période doit être unique par rapport" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__type +msgid "Period type" +msgstr "Type de période" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__period_ids +msgid "Periods" +msgstr "Périodes" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__pivot_date +msgid "Pivot Date" +msgstr "Date pivot" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Please provide both columns to compare in %s." +msgstr "Merci de renseigner les 2 colonnes à  comparer en %s." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Please select a report template and/or save the report before adding columns." +msgstr "" +"Veuillez sélectionner un modèle de rapport et/ou sauver le rapport avant " +"d'ajouter des colonnes." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix +msgid "Prefix" +msgstr "Préfixe" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix_inherit +msgid "Prefix Inherit" +msgstr "Préfixe par défaut" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Preview" +msgstr "Prévisualisation" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Print" +msgstr "Imprimer" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__query_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Queries" +msgstr "Requêtes" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Query name ({}) must be valid python identifier" +msgstr "Le nom de la requête ({}) doit être un identifiant python valide" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Refresh" +msgstr "Rafraîchir" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__relative +msgid "Relative to report base date" +msgstr "Relatif à  la date de référence du rapport" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__report_id +msgid "Report" +msgstr "Rapport" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_ir_actions_report +msgid "Report Action" +msgstr "Action du rapport" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_instance_id +msgid "Report Instance" +msgstr "Instance de rapport" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__date +msgid "Report base date (leave empty to use current date)" +msgstr "" +"Date de référence du rapport (laissez vide pour utiliser la date du jour)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp +msgid "Rounding" +msgstr "Arrondi" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Rounding inherit" +msgstr "Arrondi par défaut" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Save" +msgstr "Sauvegarder" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Search view to customize the filter box in the report widget." +msgstr "" +"Vue de recherche pour personnaliser le filtre dans le widget du rapport." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__company_ids +msgid "Select companies for which data will be searched." +msgstr "" +"Selectionnez les sociétés pour lesquelles les données seront cherchées." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__currency_id +msgid "" +"Select target currency for the report. Required if companies have different " +"currencies." +msgstr "" +"Selectionnez la devise du rapport. Nécessaire si les sociétés ont des " +"devises différentes." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__sequence +msgid "Sequence" +msgstr "Séquence" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Settings" +msgstr "Paramètres" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_subreport_unique +msgid "" +"Should not include the same report more than once as sub report of a given " +"report" +msgstr "" +"Ne devrait pas inclure le même rapport plus d'une fois comme sous-rapport " +"d'un rapport donné" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show Pivot Date" +msgstr "Montrer la date pivot" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show filters box" +msgstr "Montrer les filtres" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show settings button" +msgstr "Montrer le bouton de configuration" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show the Pivot Date in the report widget filter bar." +msgstr "Montrer la date pivot dans la barre de filtre du widget de rapport." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show the filter bar in the report widget." +msgstr "Montrer la barre de filtre dans le widget du rapport." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show the settings button in the report widget." +msgstr "Montrer le bouton de configurations dans le widget du rapport." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__sign +msgid "Sign" +msgstr "Signer" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Source" +msgstr "Source" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__str +#, python-format +msgid "String" +msgstr "Chaîne de caractères" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__style_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_id +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Style" +msgstr "Style" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_expression +msgid "Style Expression" +msgstr "Style de l'expression" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts_style_id +msgid "Style for account detail rows" +msgstr "Style pour les lignes de détails" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__name +msgid "Style name" +msgstr "Nom du style" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subkpi_ids +msgid "Sub KPI" +msgstr "Sous KPI" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__subkpi_ids +msgid "Sub KPI Filter" +msgstr "Filtre du sous KPI" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_kpi_expression_subkpi_kpi_unique +msgid "Sub KPI must be used once and only once for each KPI" +msgstr "" +"Un sous KPI ne doit être utilisé qu'une et une seule fois pour chaque KPI" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub KPI's" +msgstr "Sous KPI's" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub Reports" +msgstr "Sous-rapports" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subreport_ids +msgid "Sub reports" +msgstr "Sous-rapports" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq2 +msgid "Sub-KPI Sequence" +msgstr "Séquence du sous-KPI" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Sub-KPI name ({}) must be a valid python identifier" +msgstr "Le nom du sous-KPI ({}) doit être un identifiant python valide" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__subkpi_id +msgid "Subkpi" +msgstr "Subkpi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__subreport_id +msgid "Subreport" +msgstr "Sous-rapport" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport loop detected" +msgstr "Boucle de sous-rapport détectée" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport name ({}) must be a valid python identifier" +msgstr "Le nom du sous-rapport ({}) doit être un identifiant python valide" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_name_unique +msgid "Subreport name should be unique by report" +msgstr "Le nom du sous-rapport doit être unique par rapport" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix +msgid "Suffix" +msgstr "Suffixe" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix_inherit +msgid "Suffix Inherit" +msgstr "Suffixe par défaut" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__sum +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__sum +#, python-format +msgid "Sum" +msgstr "Somme" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_accdet +msgid "Sum account details" +msgstr "Additionne le détail des comptes" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "" +"Sum cannot be computed in column {} because the columns to sum have no " +"common subkpis" +msgstr "" +"La somme ne peut pas être calculée dans la colonne {} car les colonnes à  " +"additionner n'ont pas de sous KPI's communs" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__sumcol +msgid "Sum columns" +msgstr "Colonnes à additionner" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__target_move +msgid "Target Moves" +msgstr "Écritures ciblées" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +msgid "Template" +msgstr "Modèle" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__temporary +msgid "Temporary" +msgstr "Temporaire" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color +msgid "Text color" +msgstr "Couleur du texte" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__color +msgid "Text color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "Couleur du texte en code RGB valide (de #000000 à  #FFFFFF)" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The account selector is a like expression on the\n" +" account code (eg 70%, " +"etc), or a domain over accounts\n" +" (eg [('code', 'like', '60%')])." +msgstr "" +"Le sélecteur de comptes est une expression sur le\n" +" code du compte (eg 70%, " +"etc), ou un domaine sur les comptes\n" +" (eg [('code', 'like', '60%')])." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The journal items domain is an Odoo domain filter on\n" +" journal items." +msgstr "" +"Le domaine des écritures comptables est un filtre de domaine Odoo " +"sur\n" +" les écritures comptables." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The following special elements are recognized in the expressions\n" +" to compute accounting data: {bal|" +"crd|deb|pbal|nbal}{pieu}[account\n" +" selector][journal items domain]." +msgstr "" +"Les éléments spéciaux suivants sont reconnus dans les expressions\n" +" pour calculer les données comptables : " +"{bal|crd|deb|pbal|nbal}{pieu}[account\n" +" selector][journal items domain]." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_to +msgid "To" +msgstr "à " + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_to +msgid "To (computed)" +msgstr "Au (calculé)" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_kpi_data.py:0 +#, python-format +msgid "Unexpected accumulation method %(method)s for %(name)s." +msgstr "Méthode d'accumulation inattendue %(method)s for %(name)s." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Unexpected value %s for target_move." +msgstr "Valuer inattendue %s pour target_move." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/prorata_read_group_mixin.py:0 +#, python-format +msgid "Unsupported operator %s for searching on date" +msgstr "Opérateur non supporté %s pour les recherches sur la date" + +#. module: mis_builder +#: model:ir.actions.server,name:mis_builder.ir_cron_vacuum_temp_reports_ir_actions_server +#: model:ir.cron,cron_name:mis_builder.ir_cron_vacuum_temp_reports +msgid "Vacuum temporary reports" +msgstr "Vider les rapports temporaires" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__valid +msgid "Valid" +msgstr "Valide" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__type +msgid "Value type" +msgstr "Type de valeur" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Visibility" +msgstr "Visibilité" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__w +#, python-format +msgid "Week" +msgstr "Semaine" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Widget" +msgstr "Widget" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_duration +msgid "Wrong duration, it must be positive!" +msgstr "Durée incorrecte, elle doit être positive !" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_normalize_factor +msgid "Wrong normalize factor, it must be positive!" +msgstr "Facteur de normalisation incorrect, il doit être positif !" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__y +#, python-format +msgid "Year" +msgstr "Année" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Year to date" +msgstr "Year to date" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "You cannot sum period %s with itself." +msgstr "Vous ne pouvez pas additionner la période %s avec elle-meme." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "from %(date_from)s to %(date_to)s" +msgstr "Du %(date_from)s au %(date_to)s" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__large +msgid "large" +msgstr "grand" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__medium +msgid "medium" +msgstr "moyen" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "or" +msgstr "ou" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "pp" +msgstr "pp" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__small +msgid "small" +msgstr "petit" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_from_id +msgid "versus" +msgstr "versus" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-large +msgid "x-large" +msgstr "x-grand" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-small +msgid "x-small" +msgstr "x-petit" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-large +msgid "xx-large" +msgstr "xx-grand" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-small +msgid "xx-small" +msgstr "xx-petit" + +#, python-format +#~ msgid "Columns {} and {} are not comparable" +#~ msgstr "Les colonnes {} et {} ne sont pas comparables" + +#, python-format +#~ msgid "Generated on {} at {}" +#~ msgstr "Généré le {} à {}" + +#, python-format +#~ msgid "" +#~ "KPI \"{}\" has type {} while a tuple was expected.\n" +#~ "\n" +#~ "This can be fixed by either:\n" +#~ "\t- Changing the KPI value to a tuple of length {}\n" +#~ "or\n" +#~ "\t- Changing the KPI to `multi` mode and giving an explicit value for " +#~ "each sub-KPI." +#~ msgstr "" +#~ "Le KPI \"{}\" a le type {} alors qu'une liste de valeurs est attendue.\n" +#~ "\n" +#~ "Ceci peut être corrigé par soit :\n" +#~ "\t- Changer la valeur du KPI pour une liste de valeurs de longueur {}\n" +#~ "ou\n" +#~ "\t- Changer le KPI en mode 'multi' et donner une valeur pour chaque sous-" +#~ "KPI." + +#, python-format +#~ msgid "" +#~ "KPI \"{}\" is valued as a tuple of length {} while a tuple of length {} " +#~ "is expected." +#~ msgstr "" +#~ "Le KPI \"{}\" est une liste de valeurs de longueur {} alors qu'une liste " +#~ "de valeurs de longueur {} est attendue." + +#, python-format +#~ msgid "Can not update a multi kpi from the kpi line" +#~ msgstr "" +#~ "Vous ne pouvez pas mettre à  jour un kpi multi depuis la ligne de kpi" + +#~ msgid "Account model" +#~ msgstr "Additionne le détail des comptes" + +#~ msgid "Analytic Account" +#~ msgstr "Compte Analytique" + +#~ msgid "Analytic Tags" +#~ msgstr "Étiquettes analytiques" + +#~ msgid "MIS Report Instances" +#~ msgstr "Instances MIS report" + +#~ msgid "MIS Report Result" +#~ msgstr "Résultat MIS Report" + +#~ msgid "Pivot date" +#~ msgstr "Date pivot" + +#~ msgid "Style expression" +#~ msgstr "Expression du style" + +#, python-format +#~ msgid "Unexpected accumulation method %s for %s." +#~ msgstr "Méthode d'accumulation inattendue %s pour %s." + +#, python-format +#~ msgid "from %s to %s" +#~ msgstr "de %s à  %s" + +#~ msgid "" +#~ "Check if you wish to specify children companies to be searched for data." +#~ msgstr "" +#~ "Vérifiez si vous souhaitez spécifier des sociétés enfants dont les " +#~ "données seront recherchées." + +#~ msgid "Companies" +#~ msgstr "Sociétés" + +#~ msgid "Company" +#~ msgstr "Société" + +#~ msgid "Query Company" +#~ msgstr "Société de la requête" + +#~ msgid "" +#~ "AccountingNone: a null value that behaves as 0 in arithmetic " +#~ "operations." +#~ msgstr "" +#~ "AccountingNone: une valeur nulle qui se comporte comme un zero " +#~ "dans les opérations arithmétiques." + +#~ msgid "" +#~ "bal, crd, deb, pbal, nbal: balance, debit, credit, positive " +#~ "balance, negative balance." +#~ msgstr "" +#~ "bal, crd, deb, pbal, nbal: balance, débit, crédit, balance " +#~ "positive, balance négative." + +#~ msgid "" +#~ "bal[70]: variation of the balance of account 70 over the period " +#~ "(it is the same as balp[70]." +#~ msgstr "" +#~ "1bal[70]2: variation de la balance des comptes 70 de la période " +#~ "(similaire à  balp[70]." + +#~ msgid "" +#~ "bale[1%]: balance of accounts starting with 1 at end of period." +#~ msgstr "" +#~ "1bale[1%]2: balance des comptes commençant par 1 à  la fin de la " +#~ "période." + +#~ msgid "bali[70,60]: initial balance of accounts 70 and 60." +#~ msgstr "1bali[70,60]2: balance initiale des comptes 70 et 60." + +#~ msgid "" +#~ "balp[('user_type_id', '=', ref('account.data_account_type_receivable')." +#~ "id)][]: variation of the balance of all receivable accounts over the " +#~ "period." +#~ msgstr "" +#~ "balp[('user_type_id', '=', ref('account.data_account_type_receivable')." +#~ "id)][]: variation de la balance des comptes clients durant la période." + +#~ msgid "" +#~ "balp[][('tax_line_id.tag_ids', '=', ref('l10n_be.tax_tag_56').id)]: balance of move lines related to tax grid 56." +#~ msgstr "" +#~ "balp[][('tax_line_id.tag_ids', '=', ref('l10n_be.tax_tag_56').id)]: balance des lignes d'écritures liées au code taxe 56." + +#~ msgid "" +#~ "balu[]: (u for unallocated) is a special expression that shows the " +#~ "unallocated profit/loss of previous\n" +#~ " fiscal years." +#~ msgstr "" +#~ "balu[]: (u pour non-allouée) c'est une expression spéciale qui " +#~ "montre le bénéfice/perte non-alloué des années fiscales précédentes." + +#~ msgid "" +#~ "crdp[40%]: sum of all credits on accounts starting with 40 during " +#~ "the period." +#~ msgstr "" +#~ "crdp[40%]: somme de tous les crédits des comptes commençant par 40 " +#~ "durant la période." + +#~ msgid "date_from, date_to: beginning and end date of the period." +#~ msgstr "date_from, date_to: date de début et de fin de la période." + +#~ msgid "datetime, datetime, dateutil: the python modules." +#~ msgstr "datetime, datetime, dateutil: les modules python." + +#~ msgid "" +#~ "debp[55%][('journal_id.code', '=', 'BNK1')]: sum of all debits on " +#~ "accounts 55 and journal BNK1 during the period." +#~ msgstr "" +#~ "debp[55%][('journal_id.code', '=', 'BNK1')]: somme de tous les " +#~ "débits des comptes 55 et journal BNK1 durant la période." + +#~ msgid "" +#~ "p, i, e: respectively variation over the period, initial balance, " +#~ "ending balance" +#~ msgstr "" +#~ "p, i, e: respectivement variation de la période, balance initiale, " +#~ "balance finale" + +#~ msgid "" +#~ "pbale[55%]: sum of all ending balances of accounts starting with " +#~ "55 whose\n" +#~ " ending balance is positive." +#~ msgstr "" +#~ "pbale[55%]: somme de toutes les balances finales des comptes " +#~ "débutant par 55\n" +#~ " et dont la balance finale est " +#~ "positive." + +#~ msgid "" +#~ "sum, min, max, len, avg: behave as expected, very similar to the " +#~ "python builtins." +#~ msgstr "" +#~ "sum, min, max, len, avg: se comporte comme attendu, très similaire " +#~ "aux expressions python." + +#~ msgid "" +#~ "Additionally following variables are available in the evaluation context:" +#~ msgstr "" +#~ "De plus les variables suivantes sont disponibles dans le contexte " +#~ "d'évaluation :" + +#~ msgid "" +#~ "The account selector is a like expression on the account code (eg " +#~ "70%, etc)." +#~ msgstr "" +#~ "Le sélecteur de compte est une expression Like sur le code du " +#~ "compte (eg 70%, etc)." + +#~ msgid "" +#~ "The journal items domain is an Odoo domain filter on journal items." +#~ msgstr "" +#~ "Le domaine des lignes d'écriture est un filtre de domaine Odoo sur " +#~ "les lignes d'écriture." + +#~ msgid "MIS Budget" +#~ msgstr "MIS Budget" + +#~ msgid "report.mis_builder.mis_report_instance_xlsx" +#~ msgstr "report.mis_builder.mis_report_instance_xlsx" + +#~ msgid "" +#~ "Probably not your fault... but I'm really curious to know how you managed " +#~ "to raise this error so I can handle one more corner case!" +#~ msgstr "" +#~ "Ce n'est probablement pas votre faute... mais je suis très curieux de " +#~ "savoir comment vous avez réussi à  générer cette erreur de manière à  " +#~ "traiter un nouveau problème !" + +#~ msgid "µ" +#~ msgstr "µ" + +#~ msgid "add.mis.report.instance.dashboard.wizard" +#~ msgstr "add.mis.report.instance.dashboard.wizard" + +#~ msgid "ir.actions.report" +#~ msgstr "ir.actions.report" + +#~ msgid "mis.report" +#~ msgstr "mis.report" + +#~ msgid "mis.report.instance" +#~ msgstr "mis.report.instance" + +#~ msgid "mis.report.instance.period" +#~ msgstr "mis.report.instance.period" + +#~ msgid "mis.report.instance.period.sum" +#~ msgstr "mis.report.instance.period.sum" + +#~ msgid "mis.report.kpi" +#~ msgstr "mis.report.kpi" + +#~ msgid "mis.report.kpi.expression" +#~ msgstr "mis.report.kpi.expression" + +#~ msgid "mis.report.query" +#~ msgstr "mis.report.query" + +#~ msgid "mis.report.style" +#~ msgstr "mis.report.style" + +#~ msgid "mis.report.subkpi" +#~ msgstr "mis.report.subkpi" diff --git a/mis_builder/i18n/fr_FR.po b/mis_builder/i18n/fr_FR.po new file mode 100644 index 0000000..1ae0568 --- /dev/null +++ b/mis_builder/i18n/fr_FR.po @@ -0,0 +1,1881 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mis_builder +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-06-08 15:09+0000\n" +"Last-Translator: \"Sandrine (ACSONE)\" \n" +"Language-Team: none\n" +"Language: fr_FR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "%s (copy)" +msgstr "%s (copie)" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[('user_type_id', '=',\n" +" ref('account.\n" +" data_account_type_receivable')." +"id)][]\n" +" \n" +" : variation of the balance of all " +"receivable accounts over\n" +" the period." +msgstr "" +"\n" +" balp[('user_type_id', '=',\n" +" ref('account.\n" +" data_account_type_receivable')." +"id)][]\n" +" \n" +" : variation de la balance de tous " +"les comptes de créances sur\n" +" la période." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[][('tax_line_id.tag_ids', " +"'=', ref('l10n_be.tax_tag_56').id)]\n" +" \n" +" : balance of move lines related to " +"tax grid 56." +msgstr "" +"\n" +" balp[][('tax_line_id.tag_ids', " +"'=', ref('l10n_be.tax_tag_56').id)]\n" +" \n" +" : balance des lignes d'écritures " +"liées à la grille de taxe 56." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" debp[55%][('journal_id.code', " +"'=',\n" +" 'BNK1')]\n" +" \n" +" : sum of all debits on accounts 55 " +"and journal BNK1 during\n" +" the period." +msgstr "" +"\n" +" debp[55%][('journal_id.code', " +"'=',\n" +" 'BNK1')]\n" +" \n" +" : somme de tous les débits sur les " +"comptes 55 ayant le journal BNK1 pour\n" +" la période." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"AccountingNone : a null value that behaves as 0 in\n" +" arithmetic operations." +msgstr "" +"AccountingNone : une valeur nulle qui se comporte comme un 0 " +"dans\n" +" les opérations arithmétiques." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal, crd, deb, \n" +" pbal, nbal : " +"balance, debit, credit,\n" +" positive balance, negative balance." +msgstr "" +"bal, crd, deb, \n" +" pbal, nbal : " +"balance, débit, crédit,\n" +" positive balance, négative balance." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal[70] : variation of the balance of account 70 over\n" +" the period (it is the same as " +"balp[70]." +msgstr "" +"bal[70] : variation de la balance des comptes 70 pour\n" +" la période (c'est la même chose que " +"balp[70]." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bale[1%] : balance of accounts starting with 1 at\n" +" end of period." +msgstr "" +"bale[1%] : balance des comptes commençant par 1 à\n" +" la fin de la période." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "bali[70,60] : initial balance of accounts 70 and 60." +msgstr "bali[70,60] : Balance initiale des comptes 70 et 60." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"balu[] : (u for unallocated) is a special " +"expression\n" +" that shows the unallocated profit/" +"loss of previous fiscal\n" +" years." +msgstr "" +"balu[] : (u for non alloué) est une expression " +"spéciale\n" +" qui montre le profit/perte non " +"alloué de la précédente\n" +" année fiscale." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"crdp[40%] : sum of all credits on accounts starting\n" +" with 40 during the period." +msgstr "" +"crdp[40%] : somme de tous les crédits des comptes commençant\n" +" par 40 pendant la période." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"date_from, date_to : beginning and end date of " +"the\n" +" period." +msgstr "" +"date_from, date_to : date de début et de fin de " +"la\n" +" période." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"datetime, datetime, dateutil : the " +"python modules." +msgstr "" +"datetime, datetime, dateutil : les " +"modules python." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"p, i, e : respectively variation over " +"the period,\n" +" initial balance, ending balance" +msgstr "" +"p, i, e : respectivement variation de " +"la période,\n" +" balance initiale, balance finale" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"pbale[55%] : sum of all ending balances of accounts\n" +" starting with 55 whose ending " +"balance is positive." +msgstr "" +"pbale[55%] : somme de toutes les balances finales des comptes\n" +" commençant par 55 et pour lesquels " +"la balance finale est positive." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"sum, min,\n" +" max, len,\n" +" avg : behave as " +"expected, very\n" +" similar to the python builtins." +msgstr "" +"sum, min,\n" +" max, len,\n" +" avg : se comporte comme " +"attendu, très\n" +" similaire aux builtins python." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.report_mis_report_instance +msgid "-" +msgstr "-" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields." +msgstr "" +"Un modèle 'move line like', ie ayant au moins les champs débit, crédit, " +"date, account_id et company_id." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields. This model is the data source for column Actuals." +msgstr "" +"Un modèle 'move line like', ie ayant au moins les champs débit, crédit, " +"date, account_id et company_id. Ce modèle est la source de données pour la " +"colonne Réel." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "A date filter is mandatory for this source in column %s." +msgstr "" +"Un filtre sur les dates est obligatoire pour cette source dans la colonne %s." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "A domain to additionally filter move lines considered in this column." +msgstr "Un domaine pour filtrer les lignes d'écriture de cette colonne." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__analytic_domain +msgid "" +"A domain to additionally filter move lines considered in this report. " +"Caution: when using different move line sources in different columns, such " +"as budgets by account, make sure to use only fields that are available in " +"all move line sources." +msgstr "" +"Un domaine pour filtrer les lignes d'écriture de ce rapport. Attention : " +"lorsque vous utilisez différentes sources de données dans différentes " +"colonnes, tel que les budgets par compte, veuillez vérifier que vous " +"utilisez uniquement des champs qui sont disponibles dans toutes les sources " +"de données." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__account_model +msgid "Account Model" +msgstr "Modèle de compte" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__accumulation_method +msgid "Accumulation Method" +msgstr "Méthode d'accumulation" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Actual (alternative) models used in columns must have the same account model " +"in the Account field and must be the same defined in the report template: %s" +msgstr "" +"Les modèles Réel (alternatif) utilisés dans les colonnes doivent avoir le " +"même modèle de compte dans le champ Compte et doivent être les mêmes définis " +"dans le modèle de rapport : %s" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals +msgid "Actuals" +msgstr "Réel" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals_alt +msgid "Actuals (alternative)" +msgstr "Réel (alternatif)" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source +msgid "" +"Actuals: current data, from accounting and other queries.\n" +"Actuals (alternative): current data from an alternative source (eg a " +"database view providing look-alike account move lines).\n" +"Sum columns: summation (+/-) of other columns.\n" +"Compare to column: compare to other column.\n" +msgstr "" +"Réel : données réelles, de la comptabilité et autres requêtes.\n" +"Réel (alternatif) : données réelles d'une source alternative (eg une vue " +"fournissant des données ressemblant à des lignes d'écritures comptables.\n" +"Additionner les colonnes : Addition (+/-) d'autres colonnes.\n" +"Comparer les colonnes : Compare à une autre colonne.\n" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_prorata_read_group_mixin +msgid "Adapt model with date_from/date_to for pro-rata temporis read_group" +msgstr "Adapte le modèle date_from/date_to pour le pro-rata temporis" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_add_to_dashboard_action +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Add to dashboard" +msgstr "Ajouter au tableau de bord" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Additionally following variables are available\n" +" in the evaluation context:" +msgstr "" +"De plus, les variables suivantes sont disponibles\n" +" dans " +"le contexte d'évaluation :" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__aggregate +msgid "Aggregate" +msgstr "Agréger" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__all +msgid "All Entries" +msgstr "Toutes les pièces" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__all_kpi_ids +msgid "All Kpi" +msgstr "Tous les KPI's" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__posted +msgid "All Posted Entries" +msgstr "Toutes les pièces comptabilisées" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__allowed_cmpcol_ids +msgid "Allowed Cmpcol" +msgstr "Cmpcol autorisé" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_ids +msgid "Allowed companies" +msgstr "Sociétés autorisées" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_id +msgid "Allowed company" +msgstr "Société autorisée" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__amount +msgid "Amount" +msgstr "Montant" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__style_expression +msgid "" +"An expression that returns a style depending on the KPI value. Such style is " +"applied on top of the row style." +msgstr "" +"Une expression qui renvoie un style selon la valeur du KPI. Un tel style est " +"appliqué au-dessus du style de la ligne." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__analytic_domain +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "Analytic Domain" +msgstr "Domaine analytique" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Auto expand" +msgstr "Expansion automatique" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__avg +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__avg +#, python-format +msgid "Average" +msgstr "Moyenne" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color +msgid "Background Color" +msgstr "Couleur d'arrière-plan" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color_inherit +msgid "Background Color Inherit" +msgstr "Couleur d'arrière-plan héritée" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__background_color +msgid "Background color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "Couleur d'arrière-plan ayant un code RGB valide (de #000000 à #FFFFFF)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date +msgid "Base date" +msgstr "Date de base" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__bold +msgid "Bold" +msgstr "Gras" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Cancel" +msgstr "Annuler" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__multi_company +msgid "Check if you wish to specify several companies to be searched for data." +msgstr "" +"Cocher si vous souhaitez spécifier plusieurs sociétés pour la recherche de " +"données." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Color" +msgstr "Couleur" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color_inherit +msgid "Color Inherit" +msgstr "Couleur héritée" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_to_sum_id +msgid "Column" +msgstr "Colonne" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s cannot be compared to itrec." +msgstr "La colonne %s ne peut pas être comparée à itrec." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s with move lines source must have from/to dates." +msgstr "" +"La colonne %s ayant une source de données doit avoir des dates de début/fin." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Columns" +msgstr "Colonnes" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "Columns %(descr)s and %(base_descr)s are not comparable" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Columns to compare must belong to the same report in %s" +msgstr "Les colonnes à comparer doivent appartenir au même rapport dans %s" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_ids +msgid "Columns to sum" +msgstr "Colonnes à additionner" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__query_company_ids +msgid "Companies for which data will be searched." +msgstr "Sociétés pour lesquelles une recherche de données sera effectuée." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_to_id +msgid "Compare" +msgstr "Comparer" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__cmpcol +msgid "Compare columns" +msgstr "Comparer les colonnes" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__compare_method +msgid "Comparison Method" +msgstr "Méthode de comparaison" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__comparison_mode +msgid "Comparison Mode" +msgstr "Mode de comparaison" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_date +msgid "Created on" +msgstr "Créé le" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__currency_id +msgid "Currency" +msgstr "Devise" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__dashboard_id +msgid "Dashboard" +msgstr "Tableau de bord" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date +msgid "Date" +msgstr "Date" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__date_field +msgid "Date Field" +msgstr "Champ date" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_from +msgid "Date From" +msgstr "Depuis le" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_range_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_id +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__date_range +#, python-format +msgid "Date Range" +msgstr "Plage de dates" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_type_id +msgid "Date Range Type" +msgstr "Type de plage de dates" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_to +msgid "Date To" +msgstr "Au" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Dates" +msgstr "Dates" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__d +#, python-format +msgid "Day" +msgstr "Jour" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__description +msgid "Description" +msgstr "Description" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__accumulation_method +msgid "" +"Determines how values of this kpi spanning over a time period are " +"transformed to match the reporting period. Sum: values of shorter period are " +"added, values of longest or partially overlapping periods are adjusted pro-" +"rata temporis.\n" +"Average: values of included period are averaged with a pro-rata temporis " +"weight." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__diff +#, python-format +msgid "Difference" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__no_auto_expand_accounts +msgid "Disable account details expansion" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display Columns Description" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__display_name +msgid "Display Name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts +msgid "Display details by account" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display the date range details in the column headers." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider_inherit +msgid "Divider Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__domain +msgid "Domain" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp_inherit +msgid "Dp Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_prorata_read_group_mixin__date +msgid "" +"Dummy field that adapts searches on date to searches on date_from/date_to." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__duration +msgid "Duration" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__query_company_ids +msgid "Effective companies" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Enter expression here, for example balp[70%]. See also help tab." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"Error while querying move line source \"%(model_name)s\". This is likely due " +"to a filter or expression referencing a field that does not exist in the " +"model.\n" +"\n" +"The technical error message is: %(exception)s. " +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Examples:" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Export" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__expression_ids +msgid "Expression" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions can be any valid python expressions." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Expressions can involve other KPI, sub KPI and\n" +" query results by name (eg kpi1 + " +"kpi2,\n" +" kpi2.subkpi1, query1." +"field1)." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__normalize_factor +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider +msgid "Factor" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Factor inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__normalize_factor +msgid "Factor to use to normalize the period (used in comparison" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_names +msgid "Fetched fields name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_ids +msgid "Fields to fetch" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Filter box search view" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Filters" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__fix +msgid "Fixed dates" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Font" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size +msgid "Font Size" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size_inherit +msgid "Font Size Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style +msgid "Font Style" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style_inherit +msgid "Font Style Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight +msgid "Font Weight" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight_inherit +msgid "Font Weight Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Forces the start date to Jan 1st of the relevant year" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_from +msgid "From" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_from +msgid "From (computed)" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/report/mis_report_instance_xlsx.py:0 +#, python-format +msgid "Generated on %(gen_date)s at %(gen_time)s" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Help (for KPI expressions)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always +msgid "Hide Always" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always_inherit +msgid "Hide Always Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty +msgid "Hide Empty" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty_inherit +msgid "Hide Empty Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__id +msgid "ID" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"If currency_id is not provided, all companies must have the same currency." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Indent" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level +msgid "Indent Level" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level_inherit +msgid "Indent Level Inherit" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "Indent level must be greater than or equal to 0" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__italic +msgid "Italic" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__kpi_expression_id +msgid "KPI" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" has type %(type)s while a tuple was expected.\n" +"\n" +"This can be fixed by either:\n" +"\t- Changing the KPI value to a tuple of length %(length)s\n" +"or\n" +"\t- Changing the KPI to `multi` mode and giving an explicit value for each " +"sub-KPI." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" is valued as a tuple of length %(length)s while a tuple of " +"length%(expected_length)s is expected." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq1 +msgid "KPI Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "KPI name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__kpi_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "KPI's" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__all_kpi_ids +msgid "KPIs of this report and subreports." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__kpi_id +msgid "Kpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__name +msgid "Label" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__landscape_pdf +msgid "Landscape PDF" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport____last_update +msgid "Last Modified on" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.last_mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.last_wizard_mis_report_instance_view_menu +msgid "Last Reports Generated" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_date +msgid "Last Updated on" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Layout" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_report_mis_builder_mis_report_instance_xlsx +msgid "MIS Builder XLSX report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_kpi_data +msgid "MIS Kpi Data Abtract class" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "MIS Report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subreport +msgid "MIS Report - Sub Reports Relation" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_add_mis_report_instance_dashboard_wizard +msgid "MIS Report Add to Dashboard Wizard" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "MIS Report Instance" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period +msgid "MIS Report Instance Period" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period_sum +msgid "MIS Report Instance Period Sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "MIS Report KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi_expression +msgid "MIS Report KPI Expression" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_result_view_form +msgid "MIS Report Preview" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_query +msgid "MIS Report Query" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_style +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "MIS Report Style" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_style_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_style_view_menu +msgid "MIS Report Styles" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subkpi +msgid "MIS Report Sub-KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report +msgid "MIS Report Template" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_view_menu +msgid "MIS Report Templates" +msgstr "" + +#. module: mis_builder +#: model:ir.ui.menu,name:mis_builder.mis_report_conf_menu +#: model:ir.ui.menu,name:mis_builder.mis_report_finance_menu +msgid "MIS Reporting" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_instance_view_menu +msgid "MIS Reports" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.qweb_pdf_export +msgid "MIS report instance QWEB PDF report" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.xls_export +msgid "MIS report instance XLS report" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__max +#, python-format +msgid "Max" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__min +#, python-format +msgid "Min" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__mode +msgid "Mode" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__model_id +msgid "Model" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__m +#, python-format +msgid "Month" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "Move Lines Source" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "Move lines source" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_name +msgid "Move lines source model name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__multi +msgid "Multi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__multi_company +msgid "Multiple companies" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__name +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__none +msgid "No date filter" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "No date filter is allowed for this source in column %s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__none +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__none +#, python-format +msgid "None" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__normal +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__nornal +msgid "Normal" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Number" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__duration +msgid "Number of periods" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__num +#, python-format +msgid "Numeric" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__offset +msgid "Offset" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__offset +msgid "Offset from current period" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_id +msgid "Parent column" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__pct +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__pct +#, python-format +msgid "Percentage" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_name_unique +msgid "Period name should be unique by report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__type +msgid "Period type" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__period_ids +msgid "Periods" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__pivot_date +msgid "Pivot Date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Please provide both columns to compare in %s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Please select a report template and/or save the report before adding columns." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix +msgid "Prefix" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix_inherit +msgid "Prefix Inherit" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Preview" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Print" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__query_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Queries" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Query name ({}) must be valid python identifier" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Refresh" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__relative +msgid "Relative to report base date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__report_id +msgid "Report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_instance_id +msgid "Report Instance" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__date +msgid "Report base date (leave empty to use current date)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp +msgid "Rounding" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Rounding inherit" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Save" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Search view to customize the filter box in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__company_ids +msgid "Select companies for which data will be searched." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__currency_id +msgid "" +"Select target currency for the report. Required if companies have different " +"currencies." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__sequence +msgid "Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Settings" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_subreport_unique +msgid "" +"Should not include the same report more than once as sub report of a given " +"report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show Pivot Date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show filters box" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show settings button" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show the Pivot Date in the report widget filter bar." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show the filter bar in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show the settings button in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__sign +msgid "Sign" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Source" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__str +#, python-format +msgid "String" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__style_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_id +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Style" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_expression +msgid "Style Expression" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts_style_id +msgid "Style for account detail rows" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__name +msgid "Style name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subkpi_ids +msgid "Sub KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__subkpi_ids +msgid "Sub KPI Filter" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_kpi_expression_subkpi_kpi_unique +msgid "Sub KPI must be used once and only once for each KPI" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub KPI's" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub Reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subreport_ids +msgid "Sub reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq2 +msgid "Sub-KPI Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Sub-KPI name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__subkpi_id +msgid "Subkpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__subreport_id +msgid "Subreport" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport loop detected" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_name_unique +msgid "Subreport name should be unique by report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix +msgid "Suffix" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix_inherit +msgid "Suffix Inherit" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__sum +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__sum +#, python-format +msgid "Sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_accdet +msgid "Sum account details" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "" +"Sum cannot be computed in column {} because the columns to sum have no " +"common subkpis" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__sumcol +msgid "Sum columns" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__target_move +msgid "Target Moves" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +msgid "Template" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__temporary +msgid "Temporary" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color +msgid "Text color" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__color +msgid "Text color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The account selector is a like expression on the\n" +" account code (eg 70%, " +"etc), or a domain over accounts\n" +" (eg [('code', 'like', '60%')])." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The journal items domain is an Odoo domain filter on\n" +" journal items." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The following special elements are recognized in the expressions\n" +" to compute accounting data: {bal|" +"crd|deb|pbal|nbal}{pieu}[account\n" +" selector][journal items domain]." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_to +msgid "To" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_to +msgid "To (computed)" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_kpi_data.py:0 +#, python-format +msgid "Unexpected accumulation method %(method)s for %(name)s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Unexpected value %s for target_move." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/prorata_read_group_mixin.py:0 +#, python-format +msgid "Unsupported operator %s for searching on date" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.server,name:mis_builder.ir_cron_vacuum_temp_reports_ir_actions_server +#: model:ir.cron,cron_name:mis_builder.ir_cron_vacuum_temp_reports +msgid "Vacuum temporary reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__valid +msgid "Valid" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__type +msgid "Value type" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Visibility" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__w +#, python-format +msgid "Week" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Widget" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_duration +msgid "Wrong duration, it must be positive!" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_normalize_factor +msgid "Wrong normalize factor, it must be positive!" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__y +#, python-format +msgid "Year" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Year to date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "You cannot sum period %s with itself." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "from %(date_from)s to %(date_to)s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__large +msgid "large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__medium +msgid "medium" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "or" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "pp" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__small +msgid "small" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_from_id +msgid "versus" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-large +msgid "x-large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-small +msgid "x-small" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-large +msgid "xx-large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-small +msgid "xx-small" +msgstr "" + +#, python-format +#~ msgid "Columns {} and {} are not comparable" +#~ msgstr "Les colonnes {} and {} ne sont pas comparables" + +#, python-format +#~ msgid "Can not update a multi kpi from the kpi line" +#~ msgstr "Vous ne pouvez pas modifier un KPI multi depuis la ligne de KPI" diff --git a/mis_builder/i18n/hr.po b/mis_builder/i18n/hr.po new file mode 100644 index 0000000..e516e76 --- /dev/null +++ b/mis_builder/i18n/hr.po @@ -0,0 +1,1925 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mis_builder +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-13 15:37+0000\n" +"PO-Revision-Date: 2020-01-28 18:13+0000\n" +"Last-Translator: Bole \n" +"Language-Team: Croatian (Croatia) (https://www.transifex.com/oca/teams/23907/" +"hr_HR/)\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 3.10\n" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "%s (copy)" +msgstr "%s (kopija)" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[('user_type_id', '=',\n" +" ref('account.\n" +" data_account_type_receivable')." +"id)][]\n" +" \n" +" : variation of the balance of all " +"receivable accounts over\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[][('tax_line_id.tag_ids', " +"'=', ref('l10n_be.tax_tag_56').id)]\n" +" \n" +" : balance of move lines related to " +"tax grid 56." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" debp[55%][('journal_id.code', " +"'=',\n" +" 'BNK1')]\n" +" \n" +" : sum of all debits on accounts 55 " +"and journal BNK1 during\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"AccountingNone : a null value that behaves as 0 in\n" +" arithmetic operations." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal, crd, deb, \n" +" pbal, nbal : " +"balance, debit, credit,\n" +" positive balance, negative balance." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal[70] : variation of the balance of account 70 over\n" +" the period (it is the same as " +"balp[70]." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bale[1%] : balance of accounts starting with 1 at\n" +" end of period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "bali[70,60] : initial balance of accounts 70 and 60." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"balu[] : (u for unallocated) is a special " +"expression\n" +" that shows the unallocated profit/" +"loss of previous fiscal\n" +" years." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"crdp[40%] : sum of all credits on accounts starting\n" +" with 40 during the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"date_from, date_to : beginning and end date of " +"the\n" +" period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"datetime, datetime, dateutil : the " +"python modules." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"p, i, e : respectively variation over " +"the period,\n" +" initial balance, ending balance" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"pbale[55%] : sum of all ending balances of accounts\n" +" starting with 55 whose ending " +"balance is positive." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"sum, min,\n" +" max, len,\n" +" avg : behave as " +"expected, very\n" +" similar to the python builtins." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.report_mis_report_instance +msgid "-" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields." +msgstr "" +"Model sličan 'account move line' modelu, sadrži barem sljedeća polja: debit, " +"credit, account_id i company_id." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields. This model is the data source for column Actuals." +msgstr "" +"Model sličan 'account move line' modelu, sadrži barem sljedeća polja: debit, " +"credit, account_id i company_id. Ovaj model je izvor podataka za kolonu " +"Trenutno ( Actuals)." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "A date filter is mandatory for this source in column %s." +msgstr "Filter po datumu je obavezan za izvor podataka u koloni %s." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "A domain to additionally filter move lines considered in this column." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__analytic_domain +msgid "" +"A domain to additionally filter move lines considered in this report. " +"Caution: when using different move line sources in different columns, such " +"as budgets by account, make sure to use only fields that are available in " +"all move line sources." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__account_model +msgid "Account Model" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__accumulation_method +msgid "Accumulation Method" +msgstr "Kumulativna metoda" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Actual (alternative) models used in columns must have the same account model " +"in the Account field and must be the same defined in the report template: %s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals +msgid "Actuals" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals_alt +msgid "Actuals (alternative)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source +msgid "" +"Actuals: current data, from accounting and other queries.\n" +"Actuals (alternative): current data from an alternative source (eg a " +"database view providing look-alike account move lines).\n" +"Sum columns: summation (+/-) of other columns.\n" +"Compare to column: compare to other column.\n" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_prorata_read_group_mixin +msgid "Adapt model with date_from/date_to for pro-rata temporis read_group" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_add_to_dashboard_action +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Add to dashboard" +msgstr "Dodaj na nadzornu ploču" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Additionally following variables are available\n" +" in the evaluation context:" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__aggregate +msgid "Aggregate" +msgstr "Zbrajanje" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__all +msgid "All Entries" +msgstr "Sve stavke" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__all_kpi_ids +msgid "All Kpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__posted +msgid "All Posted Entries" +msgstr "Sve proknjižene stavke" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__allowed_cmpcol_ids +msgid "Allowed Cmpcol" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_ids +msgid "Allowed companies" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_id +msgid "Allowed company" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__amount +msgid "Amount" +msgstr "Iznos" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__style_expression +msgid "" +"An expression that returns a style depending on the KPI value. Such style is " +"applied on top of the row style." +msgstr "" +"Izraz koji vraća stil zavisno od KPI vrijednosti. Takav stil se primjenjuje " +"nakon stila retka." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__analytic_domain +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "Analytic Domain" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Auto expand" +msgstr "Automatsko širenje" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__avg +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__avg +#, python-format +msgid "Average" +msgstr "Prosjek" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color +msgid "Background Color" +msgstr "Boja pozadine" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color_inherit +msgid "Background Color Inherit" +msgstr "Nasljeđivanje boje pozadine" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__background_color +msgid "Background color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date +msgid "Base date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__bold +msgid "Bold" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Cancel" +msgstr "Otkaži" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__multi_company +msgid "Check if you wish to specify several companies to be searched for data." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Color" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color_inherit +msgid "Color Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_to_sum_id +msgid "Column" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s cannot be compared to itrec." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s with move lines source must have from/to dates." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Columns" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "Columns %(descr)s and %(base_descr)s are not comparable" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Columns to compare must belong to the same report in %s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_ids +msgid "Columns to sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__query_company_ids +msgid "Companies for which data will be searched." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_to_id +msgid "Compare" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__cmpcol +msgid "Compare columns" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__compare_method +msgid "Comparison Method" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__comparison_mode +msgid "Comparison Mode" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__currency_id +msgid "Currency" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__dashboard_id +msgid "Dashboard" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date +msgid "Date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__date_field +msgid "Date Field" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_from +msgid "Date From" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_range_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_id +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__date_range +#, python-format +msgid "Date Range" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_type_id +msgid "Date Range Type" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_to +msgid "Date To" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Dates" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__d +#, python-format +msgid "Day" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__description +msgid "Description" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__accumulation_method +msgid "" +"Determines how values of this kpi spanning over a time period are " +"transformed to match the reporting period. Sum: values of shorter period are " +"added, values of longest or partially overlapping periods are adjusted pro-" +"rata temporis.\n" +"Average: values of included period are averaged with a pro-rata temporis " +"weight." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__diff +#, python-format +msgid "Difference" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__no_auto_expand_accounts +msgid "Disable account details expansion" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display Columns Description" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__display_name +msgid "Display Name" +msgstr "Naziv " + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts +msgid "Display details by account" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display the date range details in the column headers." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider_inherit +msgid "Divider Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__domain +msgid "Domain" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp_inherit +msgid "Dp Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_prorata_read_group_mixin__date +msgid "" +"Dummy field that adapts searches on date to searches on date_from/date_to." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__duration +msgid "Duration" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__query_company_ids +msgid "Effective companies" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Enter expression here, for example balp[70%]. See also help tab." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"Error while querying move line source \"%(model_name)s\". This is likely due " +"to a filter or expression referencing a field that does not exist in the " +"model.\n" +"\n" +"The technical error message is: %(exception)s. " +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Examples:" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Export" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__expression_ids +msgid "Expression" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions can be any valid python expressions." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Expressions can involve other KPI, sub KPI and\n" +" query results by name (eg kpi1 + " +"kpi2,\n" +" kpi2.subkpi1, query1." +"field1)." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__normalize_factor +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider +msgid "Factor" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Factor inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__normalize_factor +msgid "Factor to use to normalize the period (used in comparison" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_names +msgid "Fetched fields name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_ids +msgid "Fields to fetch" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Filter box search view" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Filters" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__fix +msgid "Fixed dates" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Font" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size +msgid "Font Size" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size_inherit +msgid "Font Size Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style +msgid "Font Style" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style_inherit +msgid "Font Style Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight +msgid "Font Weight" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight_inherit +msgid "Font Weight Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Forces the start date to Jan 1st of the relevant year" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_from +msgid "From" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_from +msgid "From (computed)" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/report/mis_report_instance_xlsx.py:0 +#, python-format +msgid "Generated on %(gen_date)s at %(gen_time)s" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Help (for KPI expressions)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always +msgid "Hide Always" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always_inherit +msgid "Hide Always Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty +msgid "Hide Empty" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty_inherit +msgid "Hide Empty Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__id +msgid "ID" +msgstr "ID" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"If currency_id is not provided, all companies must have the same currency." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Indent" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level +msgid "Indent Level" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level_inherit +msgid "Indent Level Inherit" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "Indent level must be greater than or equal to 0" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__italic +msgid "Italic" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__kpi_expression_id +msgid "KPI" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" has type %(type)s while a tuple was expected.\n" +"\n" +"This can be fixed by either:\n" +"\t- Changing the KPI value to a tuple of length %(length)s\n" +"or\n" +"\t- Changing the KPI to `multi` mode and giving an explicit value for each " +"sub-KPI." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" is valued as a tuple of length %(length)s while a tuple of " +"length%(expected_length)s is expected." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq1 +msgid "KPI Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "KPI name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__kpi_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "KPI's" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__all_kpi_ids +msgid "KPIs of this report and subreports." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__kpi_id +msgid "Kpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__name +msgid "Label" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__landscape_pdf +msgid "Landscape PDF" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport____last_update +msgid "Last Modified on" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.last_mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.last_wizard_mis_report_instance_view_menu +msgid "Last Reports Generated" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_date +msgid "Last Updated on" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Layout" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_report_mis_builder_mis_report_instance_xlsx +msgid "MIS Builder XLSX report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_kpi_data +msgid "MIS Kpi Data Abtract class" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "MIS Report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subreport +msgid "MIS Report - Sub Reports Relation" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_add_mis_report_instance_dashboard_wizard +msgid "MIS Report Add to Dashboard Wizard" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "MIS Report Instance" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period +msgid "MIS Report Instance Period" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period_sum +msgid "MIS Report Instance Period Sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "MIS Report KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi_expression +msgid "MIS Report KPI Expression" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_result_view_form +msgid "MIS Report Preview" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_query +msgid "MIS Report Query" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_style +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "MIS Report Style" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_style_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_style_view_menu +msgid "MIS Report Styles" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subkpi +msgid "MIS Report Sub-KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report +msgid "MIS Report Template" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_view_menu +msgid "MIS Report Templates" +msgstr "" + +#. module: mis_builder +#: model:ir.ui.menu,name:mis_builder.mis_report_conf_menu +#: model:ir.ui.menu,name:mis_builder.mis_report_finance_menu +msgid "MIS Reporting" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_instance_view_menu +msgid "MIS Reports" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.qweb_pdf_export +msgid "MIS report instance QWEB PDF report" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.xls_export +msgid "MIS report instance XLS report" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__max +#, python-format +msgid "Max" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__min +#, python-format +msgid "Min" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__mode +msgid "Mode" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__model_id +msgid "Model" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__m +#, python-format +msgid "Month" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "Move Lines Source" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "Move lines source" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_name +msgid "Move lines source model name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__multi +msgid "Multi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__multi_company +msgid "Multiple companies" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__name +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Name" +msgstr "Naziv" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__none +msgid "No date filter" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "No date filter is allowed for this source in column %s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__none +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__none +#, python-format +msgid "None" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__normal +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__nornal +msgid "Normal" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Number" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__duration +msgid "Number of periods" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__num +#, python-format +msgid "Numeric" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__offset +msgid "Offset" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__offset +msgid "Offset from current period" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_id +msgid "Parent column" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__pct +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__pct +#, python-format +msgid "Percentage" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_name_unique +msgid "Period name should be unique by report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__type +msgid "Period type" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__period_ids +msgid "Periods" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__pivot_date +msgid "Pivot Date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Please provide both columns to compare in %s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Please select a report template and/or save the report before adding columns." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix +msgid "Prefix" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix_inherit +msgid "Prefix Inherit" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Preview" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Print" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__query_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Queries" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Query name ({}) must be valid python identifier" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Refresh" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__relative +msgid "Relative to report base date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__report_id +msgid "Report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_instance_id +msgid "Report Instance" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__date +msgid "Report base date (leave empty to use current date)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp +msgid "Rounding" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Rounding inherit" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Save" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Search view to customize the filter box in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__company_ids +msgid "Select companies for which data will be searched." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__currency_id +msgid "" +"Select target currency for the report. Required if companies have different " +"currencies." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__sequence +msgid "Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Settings" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_subreport_unique +msgid "" +"Should not include the same report more than once as sub report of a given " +"report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show Pivot Date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show filters box" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show settings button" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show the Pivot Date in the report widget filter bar." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show the filter bar in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show the settings button in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__sign +msgid "Sign" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Source" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__str +#, python-format +msgid "String" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__style_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_id +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Style" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_expression +msgid "Style Expression" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts_style_id +msgid "Style for account detail rows" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__name +msgid "Style name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subkpi_ids +msgid "Sub KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__subkpi_ids +msgid "Sub KPI Filter" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_kpi_expression_subkpi_kpi_unique +msgid "Sub KPI must be used once and only once for each KPI" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub KPI's" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub Reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subreport_ids +msgid "Sub reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq2 +msgid "Sub-KPI Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Sub-KPI name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__subkpi_id +msgid "Subkpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__subreport_id +msgid "Subreport" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport loop detected" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_name_unique +msgid "Subreport name should be unique by report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix +msgid "Suffix" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix_inherit +msgid "Suffix Inherit" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__sum +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__sum +#, python-format +msgid "Sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_accdet +msgid "Sum account details" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "" +"Sum cannot be computed in column {} because the columns to sum have no " +"common subkpis" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__sumcol +msgid "Sum columns" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__target_move +msgid "Target Moves" +msgstr "Ciljane stavke" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +msgid "Template" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__temporary +msgid "Temporary" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color +msgid "Text color" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__color +msgid "Text color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The account selector is a like expression on the\n" +" account code (eg 70%, " +"etc), or a domain over accounts\n" +" (eg [('code', 'like', '60%')])." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The journal items domain is an Odoo domain filter on\n" +" journal items." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The following special elements are recognized in the expressions\n" +" to compute accounting data: {bal|" +"crd|deb|pbal|nbal}{pieu}[account\n" +" selector][journal items domain]." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_to +msgid "To" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_to +msgid "To (computed)" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_kpi_data.py:0 +#, python-format +msgid "Unexpected accumulation method %(method)s for %(name)s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Unexpected value %s for target_move." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/prorata_read_group_mixin.py:0 +#, python-format +msgid "Unsupported operator %s for searching on date" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.server,name:mis_builder.ir_cron_vacuum_temp_reports_ir_actions_server +#: model:ir.cron,cron_name:mis_builder.ir_cron_vacuum_temp_reports +msgid "Vacuum temporary reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__valid +msgid "Valid" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__type +msgid "Value type" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Visibility" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__w +#, python-format +msgid "Week" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Widget" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_duration +msgid "Wrong duration, it must be positive!" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_normalize_factor +msgid "Wrong normalize factor, it must be positive!" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__y +#, python-format +msgid "Year" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Year to date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "You cannot sum period %s with itself." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "from %(date_from)s to %(date_to)s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__large +msgid "large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__medium +msgid "medium" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "or" +msgstr "ili" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "pp" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__small +msgid "small" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_from_id +msgid "versus" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-large +msgid "x-large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-small +msgid "x-small" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-large +msgid "xx-large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-small +msgid "xx-small" +msgstr "" + +#~ msgid "Account model" +#~ msgstr "Model konta" + +#~ msgid "Analytic Account" +#~ msgstr "Analitički konto" + +#, python-format +#~ msgid "Analytic Account Filter" +#~ msgstr "Filter analitičkih konta" + +#, python-format +#~ msgid "Analytic Account: %s" +#~ msgstr "Analitički konto: %s" + +#~ msgid "Analytic Tags" +#~ msgstr "Oznake analitike" + +#, python-format +#~ msgid "Analytic Tags Filter" +#~ msgstr "Filter oznaka analitike" + +#, python-format +#~ msgid "Analytic Tags: %s" +#~ msgstr "Oznake analitike: %s" + +#~ msgid "Company" +#~ msgstr "Tvrtka" + +#~ msgid "" +#~ "AccountingNone: a null value that behaves as 0 in arithmetic " +#~ "operations." +#~ msgstr "" +#~ "RačunovodstvenaNula: null vrijednost koja se ponaša kao 0 u " +#~ "aritmetičkim operacijama." + +#~ msgid "" +#~ "bal, crd, deb, pbal, nbal: balance, debit, credit, positive " +#~ "balance, negative balance." +#~ msgstr "" +#~ "bal, crd, deb, pbal, nbal: saldo, duguje, potražuje, pozitivan " +#~ "saldo, negativan saldo." + +#~ msgid "" +#~ "bal[70]: variation of the balance of account 70 over the period " +#~ "(it is the same as balp[70]." +#~ msgstr "" +#~ "bal[70]: varijanta salda konta 70 u periodu (isto kao balp[70]." + +#~ msgid "" +#~ "bale[1%]: balance of accounts starting with 1 at end of period." +#~ msgstr "bale[1%]: saldo konta koja počinju sa 1 na kraju perioda." + +#~ msgid "bali[70,60]: initial balance of accounts 70 and 60." +#~ msgstr "bali[70,60]: početni saldo konta 70 i 60." + +#~ msgid "" +#~ "balp[('user_type_id', '=', ref('account.data_account_type_receivable')." +#~ "id)][]: variation of the balance of all receivable accounts over the " +#~ "period." +#~ msgstr "" +#~ "balp[('user_type_id', '=', ref('account.data_account_type_receivable')." +#~ "id)][]: varijacija slada svih potražnih konta kroz period.." + +#~ msgid "" +#~ "balp[][('tax_line_id.tag_ids', '=', ref('l10n_be.tax_tag_56').id)]: balance of move lines related to tax grid 56." +#~ msgstr "" +#~ "balp[][('tax_line_id.tag_ids', '=', ref('l10n_be.tax_tag_56').id)]: saldo svih temeljnica povezanih sa poreznom skupinom 56." + +#~ msgid "" +#~ "balu[]: (u for unallocated) is a special expression that shows the " +#~ "unallocated profit/loss of previous\n" +#~ " fiscal years." +#~ msgstr "" +#~ "balu[]: (u za neraspoređene) je specijalni izraz koji prikazuje " +#~ "nerspoređeni prihod/rashod prehodne fiskalne godine." + +#~ msgid "" +#~ "crdp[40%]: sum of all credits on accounts starting with 40 during " +#~ "the period." +#~ msgstr "" +#~ "crdp[40%]: suma svih potražnih konta koja počinju sa 40 kroz " +#~ "zadani period.." + +#~ msgid "date_from, date_to: beginning and end date of the period." +#~ msgstr "date_from, date_to: početni i završni datumi perioda." + +#~ msgid "datetime, datetime, dateutil: the python modules." +#~ msgstr "datetime, datetime, dateutil: python moduli." + +#~ msgid "" +#~ "debp[55%][('journal_id.code', '=', 'BNK1')]: sum of all debits on " +#~ "accounts 55 and journal BNK1 during the period." +#~ msgstr "" +#~ "debp[55%][('journal_id.code', '=', 'BNK1')]: suma svih dugovnih " +#~ "iznosa konta 55 knjiženih u dnevniku BNK1 kroz period.." + +#~ msgid "" +#~ "p, i, e: respectively variation over the period, initial balance, " +#~ "ending balance" +#~ msgstr "" +#~ "p, i, e: varijacija kroz period, i - početno stanje, e - završno " +#~ "stanje" + +#~ msgid "" +#~ "pbale[55%]: sum of all ending balances of accounts starting with " +#~ "55 whose\n" +#~ " ending balance is positive." +#~ msgstr "" +#~ "pbale[55%]: suma svih završnih salda konta koja počinju sa 55 " +#~ "čiji\n" +#~ " završni saldo je pozitivan." + +#~ msgid "" +#~ "sum, min, max, len, avg: behave as expected, very similar to the " +#~ "python builtins." +#~ msgstr "" +#~ "sum, min, max, len, avg: očenikano ponašanje operatora, vrlo " +#~ "slično kao i u pythonu." + +#~ msgid "" +#~ "Additionally following variables are available in the evaluation context:" +#~ msgstr "Dodatno sljedeće varijable su dostupne u kontekstu:" diff --git a/mis_builder/i18n/it.po b/mis_builder/i18n/it.po new file mode 100644 index 0000000..b5021ab --- /dev/null +++ b/mis_builder/i18n/it.po @@ -0,0 +1,1880 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mis_builder +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-05-24 19:09+0000\n" +"Last-Translator: Francesco Foresti \n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "%s (copy)" +msgstr "%s (copia)" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[('user_type_id', '=',\n" +" ref('account.\n" +" data_account_type_receivable')." +"id)][]\n" +" \n" +" : variation of the balance of all " +"receivable accounts over\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[][('tax_line_id.tag_ids', " +"'=', ref('l10n_be.tax_tag_56').id)]\n" +" \n" +" : balance of move lines related to " +"tax grid 56." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" debp[55%][('journal_id.code', " +"'=',\n" +" 'BNK1')]\n" +" \n" +" : sum of all debits on accounts 55 " +"and journal BNK1 during\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"AccountingNone : a null value that behaves as 0 in\n" +" arithmetic operations." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal, crd, deb, \n" +" pbal, nbal : " +"balance, debit, credit,\n" +" positive balance, negative balance." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal[70] : variation of the balance of account 70 over\n" +" the period (it is the same as " +"balp[70]." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bale[1%] : balance of accounts starting with 1 at\n" +" end of period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "bali[70,60] : initial balance of accounts 70 and 60." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"balu[] : (u for unallocated) is a special " +"expression\n" +" that shows the unallocated profit/" +"loss of previous fiscal\n" +" years." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"crdp[40%] : sum of all credits on accounts starting\n" +" with 40 during the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"date_from, date_to : beginning and end date of " +"the\n" +" period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"datetime, datetime, dateutil : the " +"python modules." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"p, i, e : respectively variation over " +"the period,\n" +" initial balance, ending balance" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"pbale[55%] : sum of all ending balances of accounts\n" +" starting with 55 whose ending " +"balance is positive." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"sum, min,\n" +" max, len,\n" +" avg : behave as " +"expected, very\n" +" similar to the python builtins." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.report_mis_report_instance +msgid "-" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields. This model is the data source for column Actuals." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "A date filter is mandatory for this source in column %s." +msgstr "" +"Un filtro data è obbligatorio per questa sorgente dati nella colonna %s." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "A domain to additionally filter move lines considered in this column." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__analytic_domain +msgid "" +"A domain to additionally filter move lines considered in this report. " +"Caution: when using different move line sources in different columns, such " +"as budgets by account, make sure to use only fields that are available in " +"all move line sources." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__account_model +msgid "Account Model" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__accumulation_method +msgid "Accumulation Method" +msgstr "Metodo di accumulo" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Actual (alternative) models used in columns must have the same account model " +"in the Account field and must be the same defined in the report template: %s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals +msgid "Actuals" +msgstr "Effettivo" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals_alt +msgid "Actuals (alternative)" +msgstr "Effettivo (alternativa)" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source +msgid "" +"Actuals: current data, from accounting and other queries.\n" +"Actuals (alternative): current data from an alternative source (eg a " +"database view providing look-alike account move lines).\n" +"Sum columns: summation (+/-) of other columns.\n" +"Compare to column: compare to other column.\n" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_prorata_read_group_mixin +msgid "Adapt model with date_from/date_to for pro-rata temporis read_group" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_add_to_dashboard_action +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Add to dashboard" +msgstr "Aggiungi alla bacheca" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Additionally following variables are available\n" +" in the evaluation context:" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__aggregate +msgid "Aggregate" +msgstr "Aggregati" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__all +msgid "All Entries" +msgstr "Tutte le registrazioni" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__all_kpi_ids +msgid "All Kpi" +msgstr "Tutti i KPI" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__posted +msgid "All Posted Entries" +msgstr "Tutte le registrazioni confermate" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__allowed_cmpcol_ids +msgid "Allowed Cmpcol" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_ids +msgid "Allowed companies" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_id +msgid "Allowed company" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__amount +msgid "Amount" +msgstr "Importo" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__style_expression +msgid "" +"An expression that returns a style depending on the KPI value. Such style is " +"applied on top of the row style." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__analytic_domain +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "Analytic Domain" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Auto expand" +msgstr "Espansione automatica" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__avg +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__avg +#, python-format +msgid "Average" +msgstr "Media" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color +msgid "Background Color" +msgstr "Colore sfondo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color_inherit +msgid "Background Color Inherit" +msgstr "Eredita colore di sfondo" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__background_color +msgid "Background color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "Colore di sfondo nel formato RGB (da #000000 a #FFFFFF)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date +msgid "Base date" +msgstr "Data di Base" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__bold +msgid "Bold" +msgstr "Grassetto" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Cancel" +msgstr "Annulla" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__multi_company +msgid "Check if you wish to specify several companies to be searched for data." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Color" +msgstr "Colore" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color_inherit +msgid "Color Inherit" +msgstr "Eredita colore" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_to_sum_id +msgid "Column" +msgstr "Colonna" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s cannot be compared to itrec." +msgstr "La colonna %s non può essere comparata a itrec." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s with move lines source must have from/to dates." +msgstr "La colonna %s con movimenti di riga deve avere data da: a:." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Columns" +msgstr "Colonne" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "Columns %(descr)s and %(base_descr)s are not comparable" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Columns to compare must belong to the same report in %s" +msgstr "Colonne da confrontare devono essere dello stesso report %s" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_ids +msgid "Columns to sum" +msgstr "Colonne da sommare" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__query_company_ids +msgid "Companies for which data will be searched." +msgstr "Società dalla quali i dati verranno ricercati." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_to_id +msgid "Compare" +msgstr "Confronto" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__cmpcol +msgid "Compare columns" +msgstr "Confronta colonne" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__compare_method +msgid "Comparison Method" +msgstr "Metodo di confronto" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__comparison_mode +msgid "Comparison Mode" +msgstr "Modalità di confronto" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__currency_id +msgid "Currency" +msgstr "Valuta" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__dashboard_id +msgid "Dashboard" +msgstr "Bacheca" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date +msgid "Date" +msgstr "Data" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__date_field +msgid "Date Field" +msgstr "Campo data" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_from +msgid "Date From" +msgstr "Dalla data" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_range_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_id +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__date_range +#, python-format +msgid "Date Range" +msgstr "Intervallo data" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_type_id +msgid "Date Range Type" +msgstr "Tipo intervallo date" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_to +msgid "Date To" +msgstr "Alla data" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Dates" +msgstr "Date" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__d +#, python-format +msgid "Day" +msgstr "Giorno" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__description +msgid "Description" +msgstr "Descrizione" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__accumulation_method +msgid "" +"Determines how values of this kpi spanning over a time period are " +"transformed to match the reporting period. Sum: values of shorter period are " +"added, values of longest or partially overlapping periods are adjusted pro-" +"rata temporis.\n" +"Average: values of included period are averaged with a pro-rata temporis " +"weight." +msgstr "" +"Determina com i valori di questo kpi che si estende in un periodo di tempo " +"vengono trasformati in modo che corrispondano al periodo di riferimento. " +"Somma: vengono aggiunti i valori di periodo più breve, i valori dei periodi " +"più lunghi o parzialmente sovrapposti sono adeguati pro-rata temporis.\n" +"Media: i valori del periodo incluso sono mediati con un peso pro-rata " +"temporis." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__diff +#, python-format +msgid "Difference" +msgstr "Differenza" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__no_auto_expand_accounts +msgid "Disable account details expansion" +msgstr "Disabilita espansione dettagli del conto" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display Columns Description" +msgstr "Mostra Descrizione Colonna" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts +msgid "Display details by account" +msgstr "Mostra dettagli per conto" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display the date range details in the column headers." +msgstr "Mostra l'intervallo date in testa alla colonna." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider_inherit +msgid "Divider Inherit" +msgstr "Eredita divisore" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__domain +msgid "Domain" +msgstr "Dominio" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp_inherit +msgid "Dp Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_prorata_read_group_mixin__date +msgid "" +"Dummy field that adapts searches on date to searches on date_from/date_to." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__duration +msgid "Duration" +msgstr "Durata" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__query_company_ids +msgid "Effective companies" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Enter expression here, for example balp[70%]. See also help tab." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"Error while querying move line source \"%(model_name)s\". This is likely due " +"to a filter or expression referencing a field that does not exist in the " +"model.\n" +"\n" +"The technical error message is: %(exception)s. " +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Examples:" +msgstr "Esempi:" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Export" +msgstr "Esporta" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__expression_ids +msgid "Expression" +msgstr "Espressione" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions" +msgstr "Espressioni" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions can be any valid python expressions." +msgstr "L'espressione può essere qualsiasi espressione python valida." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Expressions can involve other KPI, sub KPI and\n" +" query results by name (eg kpi1 + " +"kpi2,\n" +" kpi2.subkpi1, query1." +"field1)." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__normalize_factor +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider +msgid "Factor" +msgstr "Fattore" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Factor inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__normalize_factor +msgid "Factor to use to normalize the period (used in comparison" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_names +msgid "Fetched fields name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_ids +msgid "Fields to fetch" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Filter box search view" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Filters" +msgstr "Filtri" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__fix +msgid "Fixed dates" +msgstr "Date fisse" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Font" +msgstr "Carattere" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size +msgid "Font Size" +msgstr "Dimensione carattere" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size_inherit +msgid "Font Size Inherit" +msgstr "Eredita dimensione carattere" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style +msgid "Font Style" +msgstr "Stile carattere" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style_inherit +msgid "Font Style Inherit" +msgstr "Eredita stile carattere" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight +msgid "Font Weight" +msgstr "Peso carattere" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight_inherit +msgid "Font Weight Inherit" +msgstr "Eredita peso carattere" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Forces the start date to Jan 1st of the relevant year" +msgstr "Forza la data inizio al 1 Gennaio del relativo anno" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_from +msgid "From" +msgstr "Da" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_from +msgid "From (computed)" +msgstr "Da (calcolato)" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/report/mis_report_instance_xlsx.py:0 +#, python-format +msgid "Generated on %(gen_date)s at %(gen_time)s" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Help (for KPI expressions)" +msgstr "Help (per le espressioni KPI)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always +msgid "Hide Always" +msgstr "Nascondi sempre" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always_inherit +msgid "Hide Always Inherit" +msgstr "Eredita nascondi sempre" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty +msgid "Hide Empty" +msgstr "Nascondi vuoti" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty_inherit +msgid "Hide Empty Inherit" +msgstr "Eredita Nascondi Vuoti" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__id +msgid "ID" +msgstr "ID" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"If currency_id is not provided, all companies must have the same currency." +msgstr "" +"Se currency_id non è indicata, tutte le società devono avere la stessa " +"moneta di conto." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Indent" +msgstr "Rientro" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level +msgid "Indent Level" +msgstr "Livello rientro" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level_inherit +msgid "Indent Level Inherit" +msgstr "Eredita livello rientro" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "Indent level must be greater than or equal to 0" +msgstr "Livello di rientro deve essere maggiore o uguale a 0" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__italic +msgid "Italic" +msgstr "Corsivo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__kpi_expression_id +msgid "KPI" +msgstr "KPI" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" has type %(type)s while a tuple was expected.\n" +"\n" +"This can be fixed by either:\n" +"\t- Changing the KPI value to a tuple of length %(length)s\n" +"or\n" +"\t- Changing the KPI to `multi` mode and giving an explicit value for each " +"sub-KPI." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" is valued as a tuple of length %(length)s while a tuple of " +"length%(expected_length)s is expected." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq1 +msgid "KPI Sequence" +msgstr "Sequenza KPI" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "KPI name ({}) must be a valid python identifier" +msgstr "Nome KPI ({}) deve essere un identificatore python valido" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__kpi_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "KPI's" +msgstr "KPI's" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__all_kpi_ids +msgid "KPIs of this report and subreports." +msgstr "KPI di questo report e sotto report." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__kpi_id +msgid "Kpi" +msgstr "Kpi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__name +msgid "Label" +msgstr "Etichetta" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__landscape_pdf +msgid "Landscape PDF" +msgstr "PDF orizzontale" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.last_mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.last_wizard_mis_report_instance_view_menu +msgid "Last Reports Generated" +msgstr "Ultimi rendiconti generati" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Layout" +msgstr "Struttura" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_report_mis_builder_mis_report_instance_xlsx +msgid "MIS Builder XLSX report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_kpi_data +msgid "MIS Kpi Data Abtract class" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "MIS Report" +msgstr "MIS Report" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subreport +msgid "MIS Report - Sub Reports Relation" +msgstr "MIS Report - in relazione al sotto Report" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_add_mis_report_instance_dashboard_wizard +msgid "MIS Report Add to Dashboard Wizard" +msgstr "MIS Report aggiunto al Wizard bacheca" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "MIS Report Instance" +msgstr "Istanza MIS Report" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period +msgid "MIS Report Instance Period" +msgstr "Periodo istanza MIS Report" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period_sum +msgid "MIS Report Instance Period Sum" +msgstr "Istanza somma nel periodo MIS Report" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "MIS Report KPI" +msgstr "MIS Report KPI" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi_expression +msgid "MIS Report KPI Expression" +msgstr "Espressione MIS Report KPI" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_result_view_form +msgid "MIS Report Preview" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_query +msgid "MIS Report Query" +msgstr "MIS Report Query" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_style +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "MIS Report Style" +msgstr "Stile MIS Report" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_style_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_style_view_menu +msgid "MIS Report Styles" +msgstr "Stili MIS Report" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subkpi +msgid "MIS Report Sub-KPI" +msgstr "MIS Report sotto-KPI" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report +msgid "MIS Report Template" +msgstr "Modello MIS Report" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_view_menu +msgid "MIS Report Templates" +msgstr "Modelli MIS Report" + +#. module: mis_builder +#: model:ir.ui.menu,name:mis_builder.mis_report_conf_menu +#: model:ir.ui.menu,name:mis_builder.mis_report_finance_menu +msgid "MIS Reporting" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_instance_view_menu +msgid "MIS Reports" +msgstr "MIS Reports" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.qweb_pdf_export +msgid "MIS report instance QWEB PDF report" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.xls_export +msgid "MIS report instance XLS report" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__max +#, python-format +msgid "Max" +msgstr "Massimo" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__min +#, python-format +msgid "Min" +msgstr "Minimo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__mode +msgid "Mode" +msgstr "Modalità" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__model_id +msgid "Model" +msgstr "Modello" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__m +#, python-format +msgid "Month" +msgstr "Mese" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "Move Lines Source" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "Move lines source" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_name +msgid "Move lines source model name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__multi +msgid "Multi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__multi_company +msgid "Multiple companies" +msgstr "Aziende multiple" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__name +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Name" +msgstr "Nome" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__none +msgid "No date filter" +msgstr "Nessun filtro data" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "No date filter is allowed for this source in column %s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__none +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__none +#, python-format +msgid "None" +msgstr "Nessuno" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__normal +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__nornal +msgid "Normal" +msgstr "Normale" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Number" +msgstr "Numero" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__duration +msgid "Number of periods" +msgstr "Numero di periodi" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__num +#, python-format +msgid "Numeric" +msgstr "Numerico" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__offset +msgid "Offset" +msgstr "Compensare" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__offset +msgid "Offset from current period" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_id +msgid "Parent column" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__pct +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__pct +#, python-format +msgid "Percentage" +msgstr "Percentuale" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_name_unique +msgid "Period name should be unique by report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__type +msgid "Period type" +msgstr "Tipo periodo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__period_ids +msgid "Periods" +msgstr "Periodi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__pivot_date +msgid "Pivot Date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Please provide both columns to compare in %s." +msgstr "Si prega di fornire entrambe le colonne da confrontare %s." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Please select a report template and/or save the report before adding columns." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix +msgid "Prefix" +msgstr "Prefisso" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix_inherit +msgid "Prefix Inherit" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Preview" +msgstr "Anteprima" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Print" +msgstr "Stampa" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__query_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Queries" +msgstr "Domande" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Query name ({}) must be valid python identifier" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Refresh" +msgstr "Ricarica" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__relative +msgid "Relative to report base date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__report_id +msgid "Report" +msgstr "Report" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_ir_actions_report +msgid "Report Action" +msgstr "Azione resoconto" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_instance_id +msgid "Report Instance" +msgstr "Report Instanza" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__date +msgid "Report base date (leave empty to use current date)" +msgstr "Data base del report (lascia vuoto per utilizzare la data corrente)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp +msgid "Rounding" +msgstr "Arrotondamento" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Rounding inherit" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Save" +msgstr "Salva" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Search view to customize the filter box in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__company_ids +msgid "Select companies for which data will be searched." +msgstr "Seleziona le aziende per le quali verranno cercati i dati." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__currency_id +msgid "" +"Select target currency for the report. Required if companies have different " +"currencies." +msgstr "" +"Seleziona la valuta di destinazione per il report. Obbligatorio se le " +"aziende hanno valute diverse." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__sequence +msgid "Sequence" +msgstr "Sequenza" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Settings" +msgstr "Impostazioni" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_subreport_unique +msgid "" +"Should not include the same report more than once as sub report of a given " +"report" +msgstr "" +"Non deve includere lo stesso report più di una volta come sub report di un " +"determinato report" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show Pivot Date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show filters box" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show settings button" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show the Pivot Date in the report widget filter bar." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show the filter bar in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show the settings button in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__sign +msgid "Sign" +msgstr "Firma" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Source" +msgstr "Fonte" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__str +#, python-format +msgid "String" +msgstr "Stringa" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__style_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_id +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Style" +msgstr "Stile" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_expression +msgid "Style Expression" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts_style_id +msgid "Style for account detail rows" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__name +msgid "Style name" +msgstr "Nome stile" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subkpi_ids +msgid "Sub KPI" +msgstr "Sotto KPI" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__subkpi_ids +msgid "Sub KPI Filter" +msgstr "Filtro sotto SPI" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_kpi_expression_subkpi_kpi_unique +msgid "Sub KPI must be used once and only once for each KPI" +msgstr "Sotto KPI deve essere utilizzato una e una sola volta per ogni KPI" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub KPI's" +msgstr "Sotto KPI's" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub Reports" +msgstr "Sotto Reports" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subreport_ids +msgid "Sub reports" +msgstr "Sotto reports" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq2 +msgid "Sub-KPI Sequence" +msgstr "Sequenza Sotto-KPI" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Sub-KPI name ({}) must be a valid python identifier" +msgstr "Sotto-KPI nome ({}) deve essere un identificatore Python valido" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__subkpi_id +msgid "Subkpi" +msgstr "Sottokpi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__subreport_id +msgid "Subreport" +msgstr "Sottoreport" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport loop detected" +msgstr "Rilevato loop di sottoreport" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport name ({}) must be a valid python identifier" +msgstr "Sottoreport name ({}) must be a valid python identifier" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_name_unique +msgid "Subreport name should be unique by report" +msgstr "Sottoreport nome deve essere univoco per report" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix +msgid "Suffix" +msgstr "Suffisso" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix_inherit +msgid "Suffix Inherit" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__sum +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__sum +#, python-format +msgid "Sum" +msgstr "Somma" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_accdet +msgid "Sum account details" +msgstr "Somma dettagli conto" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "" +"Sum cannot be computed in column {} because the columns to sum have no " +"common subkpis" +msgstr "" +"La somma non può essere calcolata in colonna {} perché le colonne da sommare " +"non hanno in comune sottokpis" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__sumcol +msgid "Sum columns" +msgstr "Colonne somma" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__target_move +msgid "Target Moves" +msgstr "Sposta obbiettivo" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +msgid "Template" +msgstr "Modello" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__temporary +msgid "Temporary" +msgstr "Temporaneo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color +msgid "Text color" +msgstr "Colore testo" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__color +msgid "Text color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "Colore del testo in codice RGB valido (da #000000 a #FFFFFF)" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The account selector is a like expression on the\n" +" account code (eg 70%, " +"etc), or a domain over accounts\n" +" (eg [('code', 'like', '60%')])." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The journal items domain is an Odoo domain filter on\n" +" journal items." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The following special elements are recognized in the expressions\n" +" to compute accounting data: {bal|" +"crd|deb|pbal|nbal}{pieu}[account\n" +" selector][journal items domain]." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_to +msgid "To" +msgstr "A" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_to +msgid "To (computed)" +msgstr "A (calcolato)" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_kpi_data.py:0 +#, python-format +msgid "Unexpected accumulation method %(method)s for %(name)s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Unexpected value %s for target_move." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/prorata_read_group_mixin.py:0 +#, python-format +msgid "Unsupported operator %s for searching on date" +msgstr "Operatore non supportato %s per la ricerca in data" + +#. module: mis_builder +#: model:ir.actions.server,name:mis_builder.ir_cron_vacuum_temp_reports_ir_actions_server +#: model:ir.cron,cron_name:mis_builder.ir_cron_vacuum_temp_reports +msgid "Vacuum temporary reports" +msgstr "Reports temporaneamente vuoti" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__valid +msgid "Valid" +msgstr "Valido" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__type +msgid "Value type" +msgstr "Tipo valore" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Visibility" +msgstr "Visibilità" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__w +#, python-format +msgid "Week" +msgstr "Settimana" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Widget" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_duration +msgid "Wrong duration, it must be positive!" +msgstr "Durata sbagliata, deve essere positiva!" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_normalize_factor +msgid "Wrong normalize factor, it must be positive!" +msgstr "Fattore di normalizzazione sbagliato, deve essere positivo!" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__y +#, python-format +msgid "Year" +msgstr "Anno" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Year to date" +msgstr "Da inizio anno" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "You cannot sum period %s with itself." +msgstr "Non puoi sommare il periodo %s con se stesso." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "from %(date_from)s to %(date_to)s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__large +msgid "large" +msgstr "grande" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__medium +msgid "medium" +msgstr "medio" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "or" +msgstr "oppure" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "pp" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__small +msgid "small" +msgstr "piccolo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_from_id +msgid "versus" +msgstr "contro" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-large +msgid "x-large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-small +msgid "x-small" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-large +msgid "xx-large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-small +msgid "xx-small" +msgstr "" + +#, python-format +#~ msgid "Columns {} and {} are not comparable" +#~ msgstr "Le colonne {} e {} non sono confrontabili" + +#, python-format +#~ msgid "Generated on {} at {}" +#~ msgstr "Generato il {} al {}" + +#, python-format +#~ msgid "Can not update a multi kpi from the kpi line" +#~ msgstr "Non è possibile aggiornare un multi KPI dalla riga KPI" + +#~ msgid "Account model" +#~ msgstr "Modello contabile" + +#~ msgid "Analytic Account" +#~ msgstr "Conto analitico" + +#, python-format +#~ msgid "Analytic Account Filter" +#~ msgstr "Filtro conto analitico" + +#, python-format +#~ msgid "Analytic Account Group" +#~ msgstr "Gruppo conto analitico" + +#, python-format +#~ msgid "Analytic Account Group: %s" +#~ msgstr "Gruppo conto analitico: %s" + +#, python-format +#~ msgid "Analytic Account: %s" +#~ msgstr "Conto analitico: %s" + +#~ msgid "Analytic Tags" +#~ msgstr "Etichette analitiche" + +#, python-format +#~ msgid "Analytic Tags Filter" +#~ msgstr "Filtro etichette analitiche" + +#, python-format +#~ msgid "Analytic Tags: %s" +#~ msgstr "Etichette analitiche: %s" + +#~ msgid "Hide Analytic Filters" +#~ msgstr "Nascondi filtri analitici" + +#~ msgid "MIS Report Instances" +#~ msgstr "Istanze MIS Report" + +#~ msgid "MIS Report Result" +#~ msgstr "Risultato MIS Report" + +#~ msgid "Pivot date" +#~ msgstr "Data Pivot" + +#, python-format +#~ msgid "Unexpected accumulation method %s for %s." +#~ msgstr "Metodo di accumulo imprevisto %s for %s." + +#, python-format +#~ msgid "from %s to %s" +#~ msgstr "da %s a %s" + +#~ msgid "" +#~ "Check if you wish to specify children companies to be searched for data." +#~ msgstr "" +#~ "Spuntare se si desidera specificare le aziende figlie da ricercare per " +#~ "dati." + +#~ msgid "Companies" +#~ msgstr "Aziende" + +#~ msgid "Company" +#~ msgstr "Azienda" diff --git a/mis_builder/i18n/mis_builder.pot b/mis_builder/i18n/mis_builder.pot new file mode 100644 index 0000000..80f0d46 --- /dev/null +++ b/mis_builder/i18n/mis_builder.pot @@ -0,0 +1,1765 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mis_builder +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "%s (copy)" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[('user_type_id', '=',\n" +" ref('account.\n" +" data_account_type_receivable').id)][]\n" +" \n" +" : variation of the balance of all receivable accounts over\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[][('tax_line_id.tag_ids', '=', ref('l10n_be.tax_tag_56').id)]\n" +" \n" +" : balance of move lines related to tax grid 56." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" debp[55%][('journal_id.code', '=',\n" +" 'BNK1')]\n" +" \n" +" : sum of all debits on accounts 55 and journal BNK1 during\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"AccountingNone : a null value that behaves as 0 in\n" +" arithmetic operations." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal, crd, deb, \n" +" pbal, nbal : balance, debit, credit,\n" +" positive balance, negative balance." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal[70] : variation of the balance of account 70 over\n" +" the period (it is the same as balp[70]." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bale[1%] : balance of accounts starting with 1 at\n" +" end of period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "bali[70,60] : initial balance of accounts 70 and 60." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"balu[] : (u for unallocated) is a special expression\n" +" that shows the unallocated profit/loss of previous fiscal\n" +" years." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"crdp[40%] : sum of all credits on accounts starting\n" +" with 40 during the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"date_from, date_to : beginning and end date of the\n" +" period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"datetime, datetime, dateutil : the " +"python modules." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"p, i, e : respectively variation over the period,\n" +" initial balance, ending balance" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"pbale[55%] : sum of all ending balances of accounts\n" +" starting with 55 whose ending balance is positive." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"sum, min,\n" +" max, len,\n" +" avg : behave as expected, very\n" +" similar to the python builtins." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.report_mis_report_instance +msgid "-" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id" +" and company_id fields." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id" +" and company_id fields. This model is the data source for column Actuals." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "A date filter is mandatory for this source in column %s." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "A domain to additionally filter move lines considered in this column." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__analytic_domain +msgid "" +"A domain to additionally filter move lines considered in this report. " +"Caution: when using different move line sources in different columns, such " +"as budgets by account, make sure to use only fields that are available in " +"all move line sources." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__account_model +msgid "Account Model" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__accumulation_method +msgid "Accumulation Method" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Actual (alternative) models used in columns must have the same account model" +" in the Account field and must be the same defined in the report template: " +"%s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals +msgid "Actuals" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals_alt +msgid "Actuals (alternative)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source +msgid "" +"Actuals: current data, from accounting and other queries.\n" +"Actuals (alternative): current data from an alternative source (eg a database view providing look-alike account move lines).\n" +"Sum columns: summation (+/-) of other columns.\n" +"Compare to column: compare to other column.\n" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_prorata_read_group_mixin +msgid "Adapt model with date_from/date_to for pro-rata temporis read_group" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_add_to_dashboard_action +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Add to dashboard" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Additionally following variables are available\n" +" in the evaluation context:" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__aggregate +msgid "Aggregate" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__all +msgid "All Entries" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__all_kpi_ids +msgid "All Kpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__posted +msgid "All Posted Entries" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__allowed_cmpcol_ids +msgid "Allowed Cmpcol" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_ids +msgid "Allowed companies" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_id +msgid "Allowed company" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__amount +msgid "Amount" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__style_expression +msgid "" +"An expression that returns a style depending on the KPI value. Such style is" +" applied on top of the row style." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__analytic_domain +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "Analytic Domain" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Auto expand" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__avg +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__avg +#, python-format +msgid "Average" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color +msgid "Background Color" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color_inherit +msgid "Background Color Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__background_color +msgid "Background color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date +msgid "Base date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__bold +msgid "Bold" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Cancel" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__multi_company +msgid "" +"Check if you wish to specify several companies to be searched for data." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Color" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color_inherit +msgid "Color Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_to_sum_id +msgid "Column" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s cannot be compared to itrec." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s with move lines source must have from/to dates." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Columns" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "Columns %(descr)s and %(base_descr)s are not comparable" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Columns to compare must belong to the same report in %s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_ids +msgid "Columns to sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__query_company_ids +msgid "Companies for which data will be searched." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_to_id +msgid "Compare" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__cmpcol +msgid "Compare columns" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__compare_method +msgid "Comparison Method" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__comparison_mode +msgid "Comparison Mode" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_uid +msgid "Created by" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_date +msgid "Created on" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__currency_id +msgid "Currency" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__dashboard_id +msgid "Dashboard" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date +msgid "Date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__date_field +msgid "Date Field" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_from +msgid "Date From" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_range_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_id +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__date_range +#, python-format +msgid "Date Range" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_type_id +msgid "Date Range Type" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_to +msgid "Date To" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Dates" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__d +#, python-format +msgid "Day" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__description +msgid "Description" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__accumulation_method +msgid "" +"Determines how values of this kpi spanning over a time period are transformed to match the reporting period. Sum: values of shorter period are added, values of longest or partially overlapping periods are adjusted pro-rata temporis.\n" +"Average: values of included period are averaged with a pro-rata temporis weight." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__diff +#, python-format +msgid "Difference" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__no_auto_expand_accounts +msgid "Disable account details expansion" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display Columns Description" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__display_name +msgid "Display Name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts +msgid "Display details by account" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display the date range details in the column headers." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider_inherit +msgid "Divider Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__domain +msgid "Domain" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp_inherit +msgid "Dp Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_prorata_read_group_mixin__date +msgid "" +"Dummy field that adapts searches on date to searches on date_from/date_to." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__duration +msgid "Duration" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__query_company_ids +msgid "Effective companies" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Enter expression here, for example balp[70%]. See also help tab." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"Error while querying move line source \"%(model_name)s\". This is likely due to a filter or expression referencing a field that does not exist in the model.\n" +"\n" +"The technical error message is: %(exception)s. " +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Examples:" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Export" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__expression_ids +msgid "Expression" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions can be any valid python expressions." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Expressions can involve other KPI, sub KPI and\n" +" query results by name (eg kpi1 + kpi2,\n" +" kpi2.subkpi1, query1.field1)." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__normalize_factor +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider +msgid "Factor" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Factor inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__normalize_factor +msgid "Factor to use to normalize the period (used in comparison" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_names +msgid "Fetched fields name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_ids +msgid "Fields to fetch" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Filter box search view" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Filters" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__fix +msgid "Fixed dates" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Font" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size +msgid "Font Size" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size_inherit +msgid "Font Size Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style +msgid "Font Style" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style_inherit +msgid "Font Style Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight +msgid "Font Weight" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight_inherit +msgid "Font Weight Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Forces the start date to Jan 1st of the relevant year" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_from +msgid "From" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_from +msgid "From (computed)" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/report/mis_report_instance_xlsx.py:0 +#, python-format +msgid "Generated on %(gen_date)s at %(gen_time)s" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Help (for KPI expressions)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always +msgid "Hide Always" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always_inherit +msgid "Hide Always Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty +msgid "Hide Empty" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty_inherit +msgid "Hide Empty Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__id +msgid "ID" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"If currency_id is not provided, all companies must have the same currency." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Indent" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level +msgid "Indent Level" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level_inherit +msgid "Indent Level Inherit" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "Indent level must be greater than or equal to 0" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__italic +msgid "Italic" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__kpi_expression_id +msgid "KPI" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" has type %(type)s while a tuple was expected.\n" +"\n" +"This can be fixed by either:\n" +"\t- Changing the KPI value to a tuple of length %(length)s\n" +"or\n" +"\t- Changing the KPI to `multi` mode and giving an explicit value for each sub-KPI." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" is valued as a tuple of length %(length)s while a tuple of " +"length%(expected_length)s is expected." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq1 +msgid "KPI Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "KPI name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__kpi_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "KPI's" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__all_kpi_ids +msgid "KPIs of this report and subreports." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__kpi_id +msgid "Kpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__name +msgid "Label" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__landscape_pdf +msgid "Landscape PDF" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport____last_update +msgid "Last Modified on" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.last_mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.last_wizard_mis_report_instance_view_menu +msgid "Last Reports Generated" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_date +msgid "Last Updated on" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Layout" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_report_mis_builder_mis_report_instance_xlsx +msgid "MIS Builder XLSX report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_kpi_data +msgid "MIS Kpi Data Abtract class" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "MIS Report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subreport +msgid "MIS Report - Sub Reports Relation" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_add_mis_report_instance_dashboard_wizard +msgid "MIS Report Add to Dashboard Wizard" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "MIS Report Instance" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period +msgid "MIS Report Instance Period" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period_sum +msgid "MIS Report Instance Period Sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "MIS Report KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi_expression +msgid "MIS Report KPI Expression" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_result_view_form +msgid "MIS Report Preview" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_query +msgid "MIS Report Query" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_style +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "MIS Report Style" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_style_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_style_view_menu +msgid "MIS Report Styles" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subkpi +msgid "MIS Report Sub-KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report +msgid "MIS Report Template" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_view_menu +msgid "MIS Report Templates" +msgstr "" + +#. module: mis_builder +#: model:ir.ui.menu,name:mis_builder.mis_report_conf_menu +#: model:ir.ui.menu,name:mis_builder.mis_report_finance_menu +msgid "MIS Reporting" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_instance_view_menu +msgid "MIS Reports" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.qweb_pdf_export +msgid "MIS report instance QWEB PDF report" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.xls_export +msgid "MIS report instance XLS report" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__max +#, python-format +msgid "Max" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__min +#, python-format +msgid "Min" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__mode +msgid "Mode" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__model_id +msgid "Model" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__m +#, python-format +msgid "Month" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "Move Lines Source" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "Move lines source" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_name +msgid "Move lines source model name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__multi +msgid "Multi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__multi_company +msgid "Multiple companies" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__name +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__none +msgid "No date filter" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "No date filter is allowed for this source in column %s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__none +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__none +#, python-format +msgid "None" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__normal +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__nornal +msgid "Normal" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Number" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__duration +msgid "Number of periods" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__num +#, python-format +msgid "Numeric" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__offset +msgid "Offset" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__offset +msgid "Offset from current period" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_id +msgid "Parent column" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__pct +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__pct +#, python-format +msgid "Percentage" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_name_unique +msgid "Period name should be unique by report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__type +msgid "Period type" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__period_ids +msgid "Periods" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__pivot_date +msgid "Pivot Date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Please provide both columns to compare in %s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Please select a report template and/or save the report before adding " +"columns." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix +msgid "Prefix" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix_inherit +msgid "Prefix Inherit" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Preview" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Print" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__query_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Queries" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Query name ({}) must be valid python identifier" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Refresh" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__relative +msgid "Relative to report base date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__report_id +msgid "Report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_instance_id +msgid "Report Instance" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__date +msgid "Report base date (leave empty to use current date)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp +msgid "Rounding" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Rounding inherit" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Save" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Search view to customize the filter box in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__company_ids +msgid "Select companies for which data will be searched." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__currency_id +msgid "" +"Select target currency for the report. Required if companies have different " +"currencies." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__sequence +msgid "Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Settings" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_subreport_unique +msgid "" +"Should not include the same report more than once as sub report of a given " +"report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show Pivot Date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show filters box" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show settings button" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show the Pivot Date in the report widget filter bar." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show the filter bar in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show the settings button in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__sign +msgid "Sign" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Source" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__str +#, python-format +msgid "String" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__style_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_id +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Style" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_expression +msgid "Style Expression" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts_style_id +msgid "Style for account detail rows" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__name +msgid "Style name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subkpi_ids +msgid "Sub KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__subkpi_ids +msgid "Sub KPI Filter" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_kpi_expression_subkpi_kpi_unique +msgid "Sub KPI must be used once and only once for each KPI" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub KPI's" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub Reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subreport_ids +msgid "Sub reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq2 +msgid "Sub-KPI Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Sub-KPI name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__subkpi_id +msgid "Subkpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__subreport_id +msgid "Subreport" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport loop detected" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_name_unique +msgid "Subreport name should be unique by report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix +msgid "Suffix" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix_inherit +msgid "Suffix Inherit" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__sum +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__sum +#, python-format +msgid "Sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_accdet +msgid "Sum account details" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "" +"Sum cannot be computed in column {} because the columns to sum have no " +"common subkpis" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__sumcol +msgid "Sum columns" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__target_move +msgid "Target Moves" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +msgid "Template" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__temporary +msgid "Temporary" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color +msgid "Text color" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__color +msgid "Text color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The account selector is a like expression on the\n" +" account code (eg 70%, etc), or a domain over accounts\n" +" (eg [('code', 'like', '60%')])." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The journal items domain is an Odoo domain filter on\n" +" journal items." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The following special elements are recognized in the expressions\n" +" to compute accounting data: {bal|crd|deb|pbal|nbal}{pieu}[account\n" +" selector][journal items domain]." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_to +msgid "To" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_to +msgid "To (computed)" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_kpi_data.py:0 +#, python-format +msgid "Unexpected accumulation method %(method)s for %(name)s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Unexpected value %s for target_move." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/prorata_read_group_mixin.py:0 +#, python-format +msgid "Unsupported operator %s for searching on date" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.server,name:mis_builder.ir_cron_vacuum_temp_reports_ir_actions_server +#: model:ir.cron,cron_name:mis_builder.ir_cron_vacuum_temp_reports +msgid "Vacuum temporary reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__valid +msgid "Valid" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__type +msgid "Value type" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Visibility" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__w +#, python-format +msgid "Week" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Widget" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_duration +msgid "Wrong duration, it must be positive!" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_normalize_factor +msgid "Wrong normalize factor, it must be positive!" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__y +#, python-format +msgid "Year" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Year to date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "You cannot sum period %s with itself." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "from %(date_from)s to %(date_to)s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__large +msgid "large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__medium +msgid "medium" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "or" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "pp" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__small +msgid "small" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_from_id +msgid "versus" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-large +msgid "x-large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-small +msgid "x-small" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-large +msgid "xx-large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-small +msgid "xx-small" +msgstr "" diff --git a/mis_builder/i18n/nl.po b/mis_builder/i18n/nl.po new file mode 100644 index 0000000..167817b --- /dev/null +++ b/mis_builder/i18n/nl.po @@ -0,0 +1,2063 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mis_builder +# +# Translators: +# Frank Schellenberg , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-13 15:37+0000\n" +"PO-Revision-Date: 2018-01-13 15:37+0000\n" +"Last-Translator: Frank Schellenberg , 2018\n" +"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "%s (copy)" +msgstr "%s (kopie)" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[('user_type_id', '=',\n" +" ref('account.\n" +" data_account_type_receivable')." +"id)][]\n" +" \n" +" : variation of the balance of all " +"receivable accounts over\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[][('tax_line_id.tag_ids', " +"'=', ref('l10n_be.tax_tag_56').id)]\n" +" \n" +" : balance of move lines related to " +"tax grid 56." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" debp[55%][('journal_id.code', " +"'=',\n" +" 'BNK1')]\n" +" \n" +" : sum of all debits on accounts 55 " +"and journal BNK1 during\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"AccountingNone : a null value that behaves as 0 in\n" +" arithmetic operations." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal, crd, deb, \n" +" pbal, nbal : " +"balance, debit, credit,\n" +" positive balance, negative balance." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal[70] : variation of the balance of account 70 over\n" +" the period (it is the same as " +"balp[70]." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bale[1%] : balance of accounts starting with 1 at\n" +" end of period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "bali[70,60] : initial balance of accounts 70 and 60." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"balu[] : (u for unallocated) is a special " +"expression\n" +" that shows the unallocated profit/" +"loss of previous fiscal\n" +" years." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"crdp[40%] : sum of all credits on accounts starting\n" +" with 40 during the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"date_from, date_to : beginning and end date of " +"the\n" +" period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"datetime, datetime, dateutil : the " +"python modules." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"p, i, e : respectively variation over " +"the period,\n" +" initial balance, ending balance" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"pbale[55%] : sum of all ending balances of accounts\n" +" starting with 55 whose ending " +"balance is positive." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"sum, min,\n" +" max, len,\n" +" avg : behave as " +"expected, very\n" +" similar to the python builtins." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.report_mis_report_instance +msgid "-" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields." +msgstr "" +"Een 'boekingsregel-achtig' model, d.w.z. heeft minimaal debet, credit, " +"datum, account_id en company_id velden" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__source_aml_model_id +#, fuzzy +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields. This model is the data source for column Actuals." +msgstr "" +"Een 'boekingsregel-achtig' model, d.w.z. heeft minimaal debet, credit, " +"datum, account_id en company_id velden" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "A date filter is mandatory for this source in column %s." +msgstr "Een datum filter is verplicht voor deze bron in kolom %s." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "A domain to additionally filter move lines considered in this column." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__analytic_domain +msgid "" +"A domain to additionally filter move lines considered in this report. " +"Caution: when using different move line sources in different columns, such " +"as budgets by account, make sure to use only fields that are available in " +"all move line sources." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__account_model +msgid "Account Model" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__accumulation_method +msgid "Accumulation Method" +msgstr "Accumulatiemethode" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Actual (alternative) models used in columns must have the same account model " +"in the Account field and must be the same defined in the report template: %s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals +msgid "Actuals" +msgstr "Actuele" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals_alt +msgid "Actuals (alternative)" +msgstr "Actuele (alternatief)" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source +msgid "" +"Actuals: current data, from accounting and other queries.\n" +"Actuals (alternative): current data from an alternative source (eg a " +"database view providing look-alike account move lines).\n" +"Sum columns: summation (+/-) of other columns.\n" +"Compare to column: compare to other column.\n" +msgstr "" +"Actuele: Huidige data, van boekhouding en andere queries.\n" +"Actuele (alternatief): Huidige data van een alternatieve bron (eg een " +"database view welke ook boekingsregels kan laten zien).\n" +"Kolommen optellen: sommatie (+/-) van andere kolommen.\n" +"Vergelijk kolommen: vergelijk met andere kolom.\n" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_prorata_read_group_mixin +msgid "Adapt model with date_from/date_to for pro-rata temporis read_group" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_add_to_dashboard_action +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Add to dashboard" +msgstr "Voeg toe aan dashboard" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Additionally following variables are available\n" +" in the evaluation context:" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__aggregate +msgid "Aggregate" +msgstr "Samenvoegen" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__all +msgid "All Entries" +msgstr "Alle boekingen" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__all_kpi_ids +msgid "All Kpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__posted +msgid "All Posted Entries" +msgstr "Alle Geboekte Regels" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__allowed_cmpcol_ids +msgid "Allowed Cmpcol" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_ids +msgid "Allowed companies" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_id +msgid "Allowed company" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__amount +msgid "Amount" +msgstr "Hoeveelheid" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__style_expression +msgid "" +"An expression that returns a style depending on the KPI value. Such style is " +"applied on top of the row style." +msgstr "" +"Een uitdrukking die een stijl retourneert afhankelijk van de KPI-waarde. Een " +"dergelijke stijl wordt toegepast bovenop de regelstijl." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__analytic_domain +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "Analytic Domain" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Auto expand" +msgstr "automatisch uitbreiden" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__avg +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__avg +#, python-format +msgid "Average" +msgstr "Gemiddelde" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color +msgid "Background Color" +msgstr "Achtergrond Kleur" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color_inherit +msgid "Background Color Inherit" +msgstr "Achtergrond Kleur Overerven" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__background_color +msgid "Background color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "Achtergrondkleur als geldige HEX code (van #000000 tot #FFFFFF)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date +msgid "Base date" +msgstr "Uitgangsdatum" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__bold +msgid "Bold" +msgstr "Vet" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Cancel" +msgstr "Annuleer" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__multi_company +msgid "Check if you wish to specify several companies to be searched for data." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Color" +msgstr "Kleur" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color_inherit +msgid "Color Inherit" +msgstr "Kleur Overerven" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_to_sum_id +msgid "Column" +msgstr "Kolom" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, fuzzy, python-format +msgid "Column %s cannot be compared to itrec." +msgstr "Kolom %skan niet met zichzelf worden vergeleken." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, fuzzy, python-format +msgid "Column %s with move lines source must have from/to dates." +msgstr "Kolom %s met Actuele waardes moet van/tot data hebben." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Columns" +msgstr "Kolommen" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "Columns %(descr)s and %(base_descr)s are not comparable" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Columns to compare must belong to the same report in %s" +msgstr "Te vergelijken kolommen moeten tot hetzelfde rapport in %s behoren" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_ids +msgid "Columns to sum" +msgstr "Op te sommen kolommen" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__query_company_ids +msgid "Companies for which data will be searched." +msgstr "Bedrijven waarvoor de data wordt doorzocht." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_to_id +msgid "Compare" +msgstr "Vergelijk" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__cmpcol +msgid "Compare columns" +msgstr "Vergelijk kolommen" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__compare_method +msgid "Comparison Method" +msgstr "Vergelijkingsmethode" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__comparison_mode +msgid "Comparison Mode" +msgstr "Vergelijkingsmodus" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_uid +msgid "Created by" +msgstr "Aangemaakt door" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_date +msgid "Created on" +msgstr "Aangemaakt op" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__currency_id +msgid "Currency" +msgstr "Valuta" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__dashboard_id +msgid "Dashboard" +msgstr "Dashboard" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date +#, fuzzy +msgid "Date" +msgstr "Data" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__date_field +msgid "Date Field" +msgstr "Datumveld" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_from +#, fuzzy +msgid "Date From" +msgstr "Datumveld" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_range_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_id +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__date_range +#, python-format +msgid "Date Range" +msgstr "Datumbereik" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_type_id +msgid "Date Range Type" +msgstr "Datumbereik Type" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_to +#, fuzzy +msgid "Date To" +msgstr "Data" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Dates" +msgstr "Data" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__d +#, python-format +msgid "Day" +msgstr "Dag" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__description +msgid "Description" +msgstr "Omschrijving" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__accumulation_method +msgid "" +"Determines how values of this kpi spanning over a time period are " +"transformed to match the reporting period. Sum: values of shorter period are " +"added, values of longest or partially overlapping periods are adjusted pro-" +"rata temporis.\n" +"Average: values of included period are averaged with a pro-rata temporis " +"weight." +msgstr "" +"Bepaalt hoe waarden van deze kpi over een periode worden omgezet in " +"overeenstemming met de rapportageperiode. \n" +"Som: waarden van kortere periode worden toegevoegd, waarden van langste of " +"gedeeltelijk overlappende perioden worden pro-rata temporis aangepast.\n" +"Gemiddelde: waarden van de opgenomen periode worden gemiddeld met een pro-" +"rata temporis-gewicht." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__diff +#, python-format +msgid "Difference" +msgstr "Verschil" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__no_auto_expand_accounts +#, fuzzy +msgid "Disable account details expansion" +msgstr "Rekening details optellen" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display Columns Description" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__display_name +msgid "Display Name" +msgstr "Weergavenaam" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts +msgid "Display details by account" +msgstr "Laat details per rekening zien" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display the date range details in the column headers." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider_inherit +msgid "Divider Inherit" +msgstr "Verdeler Overerven" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__domain +msgid "Domain" +msgstr "Domein" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp_inherit +msgid "Dp Inherit" +msgstr "Dp Overerven" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_prorata_read_group_mixin__date +msgid "" +"Dummy field that adapts searches on date to searches on date_from/date_to." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__duration +msgid "Duration" +msgstr "Duur" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__query_company_ids +msgid "Effective companies" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Enter expression here, for example balp[70%]. See also help tab." +msgstr "" +"Vul hier een uitdrukking in, bijvoorbeeld balp[70%]. Zie ook het help " +"tabblad." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"Error while querying move line source \"%(model_name)s\". This is likely due " +"to a filter or expression referencing a field that does not exist in the " +"model.\n" +"\n" +"The technical error message is: %(exception)s. " +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Examples:" +msgstr "Voorbeelden:" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Export" +msgstr "Exporteer" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__expression_ids +msgid "Expression" +msgstr "Uitdrukking" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions" +msgstr "Uitdrukkingen" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions can be any valid python expressions." +msgstr "Uitdrukkingen kunnen alle geldige python uitdrukkingen zijn." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Expressions can involve other KPI, sub KPI and\n" +" query results by name (eg kpi1 + " +"kpi2,\n" +" kpi2.subkpi1, query1." +"field1)." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__normalize_factor +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider +msgid "Factor" +msgstr "Factor" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Factor inherit" +msgstr "Factor overerven" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__normalize_factor +msgid "Factor to use to normalize the period (used in comparison" +msgstr "" +"Te gebruiken factor om de periode te normaliseren (wordt gebruikt bij " +"vergelijking" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_names +msgid "Fetched fields name" +msgstr "Opgehaalde veld namen" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_ids +msgid "Fields to fetch" +msgstr "Op te halen velden" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Filter box search view" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Filters" +msgstr "Filters" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__fix +msgid "Fixed dates" +msgstr "Vaste data" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Font" +msgstr "Lettertype" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size +msgid "Font Size" +msgstr "Lettertypegrootte" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size_inherit +msgid "Font Size Inherit" +msgstr "Lettertypegrootte Overerven" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style +msgid "Font Style" +msgstr "Letterstijl" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style_inherit +msgid "Font Style Inherit" +msgstr "Letterstijl Overerven" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight +msgid "Font Weight" +msgstr "Lettertype Dikte" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight_inherit +msgid "Font Weight Inherit" +msgstr "Lettertype Dikte Overerven" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Forces the start date to Jan 1st of the relevant year" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_from +msgid "From" +msgstr "Van" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_from +msgid "From (computed)" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/report/mis_report_instance_xlsx.py:0 +#, python-format +msgid "Generated on %(gen_date)s at %(gen_time)s" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Help (for KPI expressions)" +msgstr "Help (voor KPI uitdrukkingen)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always +msgid "Hide Always" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always_inherit +#, fuzzy +msgid "Hide Always Inherit" +msgstr "Verberg Leeg Overerven" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty +msgid "Hide Empty" +msgstr "Verberg Leeg" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty_inherit +msgid "Hide Empty Inherit" +msgstr "Verberg Leeg Overerven" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__id +msgid "ID" +msgstr "ID" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"If currency_id is not provided, all companies must have the same currency." +msgstr "" +"Als currency_id niet bekend is, alle bedrijven moeten dezelfde valuta hebben." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Indent" +msgstr "Inspringen" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level +msgid "Indent Level" +msgstr "Inspring Niveau" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level_inherit +msgid "Indent Level Inherit" +msgstr "Inspring Niveau Overerven" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "Indent level must be greater than or equal to 0" +msgstr "Inspring niveau moet groter of gelijk zijn aan 0" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__italic +msgid "Italic" +msgstr "Cursief" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__kpi_expression_id +msgid "KPI" +msgstr "KPI" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" has type %(type)s while a tuple was expected.\n" +"\n" +"This can be fixed by either:\n" +"\t- Changing the KPI value to a tuple of length %(length)s\n" +"or\n" +"\t- Changing the KPI to `multi` mode and giving an explicit value for each " +"sub-KPI." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" is valued as a tuple of length %(length)s while a tuple of " +"length%(expected_length)s is expected." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq1 +#, fuzzy +msgid "KPI Sequence" +msgstr "Reeks" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, fuzzy, python-format +msgid "KPI name ({}) must be a valid python identifier" +msgstr "De naam moet een geldige python identifier zijn" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__kpi_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "KPI's" +msgstr "KPI's" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__all_kpi_ids +msgid "KPIs of this report and subreports." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__kpi_id +msgid "Kpi" +msgstr "Kpi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__name +msgid "Label" +msgstr "Label" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__landscape_pdf +msgid "Landscape PDF" +msgstr "Landschap PDF" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport____last_update +msgid "Last Modified on" +msgstr "Voor het laatst aangepast op" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.last_mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.last_wizard_mis_report_instance_view_menu +msgid "Last Reports Generated" +msgstr "Laatste Gegenereerde Rapport" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_uid +msgid "Last Updated by" +msgstr "Voor het laatst geüpdatet door" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_date +msgid "Last Updated on" +msgstr "Voor het laatst geüpdatet op" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Layout" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_report_mis_builder_mis_report_instance_xlsx +#, fuzzy +msgid "MIS Builder XLSX report" +msgstr "MIS rapportage instantie XLS rapport" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_kpi_data +msgid "MIS Kpi Data Abtract class" +msgstr "MIS Kpi Data Abtract class" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "MIS Report" +msgstr "MIS Rapport" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subreport +#, fuzzy +msgid "MIS Report - Sub Reports Relation" +msgstr "MIS Rapport Resultaat" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_add_mis_report_instance_dashboard_wizard +#, fuzzy +msgid "MIS Report Add to Dashboard Wizard" +msgstr "Voeg toe aan dashboard" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "MIS Report Instance" +msgstr "MIS Rapport Instantie" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period +#, fuzzy +msgid "MIS Report Instance Period" +msgstr "MIS Rapport Instantie" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period_sum +#, fuzzy +msgid "MIS Report Instance Period Sum" +msgstr "MIS Rapport Instantie" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "MIS Report KPI" +msgstr "MIS Rapport KPI" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi_expression +#, fuzzy +msgid "MIS Report KPI Expression" +msgstr "MIS Rapport KPI" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_result_view_form +msgid "MIS Report Preview" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_query +#, fuzzy +msgid "MIS Report Query" +msgstr "MIS Rapport" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_style +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "MIS Report Style" +msgstr "MIS Rapport Stijl" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_style_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_style_view_menu +msgid "MIS Report Styles" +msgstr "MIS Rapport Stijlen" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subkpi +#, fuzzy +msgid "MIS Report Sub-KPI" +msgstr "MIS Rapport KPI" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report +#, fuzzy +msgid "MIS Report Template" +msgstr "MIS Rapport Templates" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_view_menu +msgid "MIS Report Templates" +msgstr "MIS Rapport Templates" + +#. module: mis_builder +#: model:ir.ui.menu,name:mis_builder.mis_report_conf_menu +#: model:ir.ui.menu,name:mis_builder.mis_report_finance_menu +msgid "MIS Reporting" +msgstr "MIS Rapportage" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_instance_view_menu +msgid "MIS Reports" +msgstr "MIS Rapporten" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.qweb_pdf_export +msgid "MIS report instance QWEB PDF report" +msgstr "MIS rapportage instantie QWEB PDF rapport" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.xls_export +msgid "MIS report instance XLS report" +msgstr "MIS rapportage instantie XLS rapport" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__max +#, python-format +msgid "Max" +msgstr "Max" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__min +#, python-format +msgid "Min" +msgstr "Min" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__mode +msgid "Mode" +msgstr "Modus" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__model_id +msgid "Model" +msgstr "Model" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__m +#, python-format +msgid "Month" +msgstr "Maand" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "Move Lines Source" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "Move lines source" +msgstr "Bron boekingsregels" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_name +#, fuzzy +msgid "Move lines source model name" +msgstr "Bron boekingsregels" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__multi +msgid "Multi" +msgstr "Meerdere" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__multi_company +msgid "Multiple companies" +msgstr "Meerdere bedrijven" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__name +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Name" +msgstr "Naam" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__none +msgid "No date filter" +msgstr "Geen datum filter" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "No date filter is allowed for this source in column %s." +msgstr "Een datum filter is niet toegestaan voor deze bron in kolom %s." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__none +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__none +#, python-format +msgid "None" +msgstr "Geen" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__normal +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__nornal +msgid "Normal" +msgstr "Normaal" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Number" +msgstr "Aantal" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__duration +msgid "Number of periods" +msgstr "Aantal periodes" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__num +#, python-format +msgid "Numeric" +msgstr "Numeriek" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__offset +msgid "Offset" +msgstr "Offset" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__offset +msgid "Offset from current period" +msgstr "Offset t.o.v. huidige periode" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_id +msgid "Parent column" +msgstr "Bovenliggende kolom" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__pct +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__pct +#, python-format +msgid "Percentage" +msgstr "Percentage" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_name_unique +msgid "Period name should be unique by report" +msgstr "Periode naam dient per rapport uniek te zijn" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__type +msgid "Period type" +msgstr "Periode duur" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__period_ids +msgid "Periods" +msgstr "Periodes" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__pivot_date +msgid "Pivot Date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Please provide both columns to compare in %s." +msgstr "Geef beide kolommen op om te vergelijken in %s." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Please select a report template and/or save the report before adding columns." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix +msgid "Prefix" +msgstr "Voorvoegsel" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix_inherit +msgid "Prefix Inherit" +msgstr "Voorvoegsel Overerven" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Preview" +msgstr "Voorbeeld" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Print" +msgstr "Print" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__query_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Queries" +msgstr "Queries" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, fuzzy, python-format +msgid "Query name ({}) must be valid python identifier" +msgstr "De naam moet een geldige python identifier zijn" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Refresh" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__relative +msgid "Relative to report base date" +msgstr "Ten opzichte van de rapport uitgangsdatum" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__report_id +msgid "Report" +msgstr "Rapport" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_ir_actions_report +#, fuzzy +msgid "Report Action" +msgstr "Rapport instantie" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_instance_id +msgid "Report Instance" +msgstr "Rapport instantie" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__date +msgid "Report base date (leave empty to use current date)" +msgstr "Uitgangsdatum Rapport (voor vandaag laat leeg)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp +msgid "Rounding" +msgstr "Afronding" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Rounding inherit" +msgstr "Afronding overerven" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Save" +msgstr "Opslaan" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Search view to customize the filter box in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__company_ids +msgid "Select companies for which data will be searched." +msgstr "Selecteer de bedrijven waarvoor de data moet worden doorzocht." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__currency_id +msgid "" +"Select target currency for the report. Required if companies have different " +"currencies." +msgstr "" +"Selecteer de hoofdvaluta voor het rapport. Vereist als bedrijven " +"verschillende valuta hebben." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__sequence +msgid "Sequence" +msgstr "Reeks" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Settings" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_subreport_unique +msgid "" +"Should not include the same report more than once as sub report of a given " +"report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show Pivot Date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show filters box" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show settings button" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show the Pivot Date in the report widget filter bar." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show the filter bar in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show the settings button in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__sign +msgid "Sign" +msgstr "Teken" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Source" +msgstr "Bron" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__str +#, python-format +msgid "String" +msgstr "String" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__style_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_id +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Style" +msgstr "Stijl" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_expression +msgid "Style Expression" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts_style_id +msgid "Style for account detail rows" +msgstr "Stijl voor detail rekening regels" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__name +msgid "Style name" +msgstr "Stijl naam" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subkpi_ids +msgid "Sub KPI" +msgstr "Sub KPI" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__subkpi_ids +msgid "Sub KPI Filter" +msgstr "Sub KPI filter" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_kpi_expression_subkpi_kpi_unique +msgid "Sub KPI must be used once and only once for each KPI" +msgstr "Sub KPI moet één keer worden gebruikt voor iedere KPI" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub KPI's" +msgstr "Sub KPI's" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +#, fuzzy +msgid "Sub Reports" +msgstr "MIS Rapporten" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subreport_ids +#, fuzzy +msgid "Sub reports" +msgstr "MIS Rapporten" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq2 +#, fuzzy +msgid "Sub-KPI Sequence" +msgstr "Reeks" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, fuzzy, python-format +msgid "Sub-KPI name ({}) must be a valid python identifier" +msgstr "De naam moet een geldige python identifier zijn" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__subkpi_id +msgid "Subkpi" +msgstr "Subkpi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__subreport_id +#, fuzzy +msgid "Subreport" +msgstr "Rapport" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport loop detected" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, fuzzy, python-format +msgid "Subreport name ({}) must be a valid python identifier" +msgstr "De naam moet een geldige python identifier zijn" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_name_unique +#, fuzzy +msgid "Subreport name should be unique by report" +msgstr "Periode naam dient per rapport uniek te zijn" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix +msgid "Suffix" +msgstr "Achtervoegsel" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix_inherit +msgid "Suffix Inherit" +msgstr "Achtervoegsel Overerven" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__sum +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__sum +#, python-format +msgid "Sum" +msgstr "Optellen" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_accdet +msgid "Sum account details" +msgstr "Rekening details optellen" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "" +"Sum cannot be computed in column {} because the columns to sum have no " +"common subkpis" +msgstr "" +"Som kan niet worden berekend in kolom {} omdat de kolommen die moeten worden " +"opgeteld geen gemeenschappelijke subkpis hebben" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__sumcol +msgid "Sum columns" +msgstr "Kolommen optellen" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__target_move +msgid "Target Moves" +msgstr "Doel Boekingen" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +msgid "Template" +msgstr "Template" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__temporary +msgid "Temporary" +msgstr "Tijdelijk" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color +msgid "Text color" +msgstr "Tekst kleur" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__color +msgid "Text color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "Tekst kleur in geldige HEX code (van #000000 tot #FFFFFF)" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The account selector is a like expression on the\n" +" account code (eg 70%, " +"etc), or a domain over accounts\n" +" (eg [('code', 'like', '60%')])." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The journal items domain is an Odoo domain filter on\n" +" journal items." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The following special elements are recognized in the expressions\n" +" to compute accounting data: {bal|" +"crd|deb|pbal|nbal}{pieu}[account\n" +" selector][journal items domain]." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_to +msgid "To" +msgstr "Tot" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_to +msgid "To (computed)" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_kpi_data.py:0 +#, python-format +msgid "Unexpected accumulation method %(method)s for %(name)s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Unexpected value %s for target_move." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/prorata_read_group_mixin.py:0 +#, python-format +msgid "Unsupported operator %s for searching on date" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.server,name:mis_builder.ir_cron_vacuum_temp_reports_ir_actions_server +#: model:ir.cron,cron_name:mis_builder.ir_cron_vacuum_temp_reports +msgid "Vacuum temporary reports" +msgstr "Ledig tijdelijke rapporten" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__valid +msgid "Valid" +msgstr "Geldig" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__type +msgid "Value type" +msgstr "Waarde type" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Visibility" +msgstr "Zichtbaarheid" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__w +#, python-format +msgid "Week" +msgstr "Week" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Widget" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_duration +msgid "Wrong duration, it must be positive!" +msgstr "Ongeldige duur, moet positief zijn!" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_normalize_factor +msgid "Wrong normalize factor, it must be positive!" +msgstr "Ongeldige normalisatie factor, moet positief zijn!" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__y +#, python-format +msgid "Year" +msgstr "Jaar" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Year to date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "You cannot sum period %s with itself." +msgstr "Periode %s kan niet bij zichzelf worden opgeteld." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "from %(date_from)s to %(date_to)s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__large +msgid "large" +msgstr "L" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__medium +msgid "medium" +msgstr "M" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "or" +msgstr "of" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "pp" +msgstr "pp" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__small +msgid "small" +msgstr "S" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_from_id +msgid "versus" +msgstr "versus" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-large +msgid "x-large" +msgstr "XL" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-small +msgid "x-small" +msgstr "XS" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-large +msgid "xx-large" +msgstr "XXL" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-small +msgid "xx-small" +msgstr "XXS" + +#, python-format +#~ msgid "Columns {} and {} are not comparable" +#~ msgstr "Kolommen {} en {} zijn niet vergelijkbaar" + +#, python-format +#~ msgid "Can not update a multi kpi from the kpi line" +#~ msgstr "Kan een multi-kpi niet bijwerken vanaf de kpi-regel" + +#, fuzzy +#~ msgid "Account model" +#~ msgstr "Rekening details optellen" + +#~ msgid "MIS Report Instances" +#~ msgstr "MIS Rapport Instanties" + +#~ msgid "MIS Report Result" +#~ msgstr "MIS Rapport Resultaat" + +#~ msgid "Pivot date" +#~ msgstr "Uitgangsdatum" + +#~ msgid "Style expression" +#~ msgstr "Stijl uitdrukking" + +#, python-format +#~ msgid "Unexpected accumulation method %s for %s." +#~ msgstr "Onverwachte accumulatiemethode %s voor %s." + +#, python-format +#~ msgid "from %s to %s" +#~ msgstr "van %s tot %s" + +#~ msgid "" +#~ "Check if you wish to specify children companies to be searched for data." +#~ msgstr "" +#~ "Controleer of u dochterbedrijven wilt selecteren waarvan de data moet " +#~ "worden meegenomen." + +#~ msgid "Companies" +#~ msgstr "Bedrijven" + +#~ msgid "Company" +#~ msgstr "Bedrijf" + +#~ msgid "Query Company" +#~ msgstr "Query Bedrijf" + +#~ msgid "" +#~ "AccountingNone: a null value that behaves as 0 in arithmetic " +#~ "operations." +#~ msgstr "" +#~ "AccountingNone: een null waarde welke zich gedraagt als een 0 in " +#~ "rekenkundige bewerkingen." + +#, fuzzy +#~ msgid "" +#~ "bal, crd, deb, pbal, nbal: balance, debit, credit, positive " +#~ "balance, negative balance." +#~ msgstr "bal, crd, deb: balans, debet, credit." + +#~ msgid "" +#~ "bal[70]: variation of the balance of account 70 over the period " +#~ "(it is the same as balp[70]." +#~ msgstr "" +#~ "bal[70]: variatie van de balans van rekening 70 over de periode " +#~ "(is hetzelfde als balp[70]." + +#~ msgid "" +#~ "bale[1%]: balance of accounts starting with 1 at end of period." +#~ msgstr "" +#~ "bale[1%]: balans van de rekeningen beginnend met een 1 aan het " +#~ "einde van de periode." + +#~ msgid "bali[70,60]: initial balance of accounts 70 and 60." +#~ msgstr "bali[70,60]: openingsbalans van de rekeningen 70 en 60." + +#~ msgid "" +#~ "balp[('user_type_id', '=', ref('account.data_account_type_receivable')." +#~ "id)][]: variation of the balance of all receivable accounts over the " +#~ "period." +#~ msgstr "" +#~ "balp[('user_type_id', '=', ref('account.data_account_type_receivable')." +#~ "id)][]: variatie van de balans bam alle te ontvangen rekeningen over " +#~ "de periode." + +#~ msgid "" +#~ "balp[][('tax_line_id.tag_ids', '=', ref('l10n_be.tax_tag_56').id)]: balance of move lines related to tax grid 56." +#~ msgstr "" +#~ "balp[][('tax_line_id.tag_ids', '=', ref('l10n_be.tax_tag_56').id)]: balans van de boekingsregels gerelateerd aan de belastingraster 56." + +#~ msgid "" +#~ "balu[]: (u for unallocated) is a special expression that shows the " +#~ "unallocated profit/loss of previous\n" +#~ " fiscal years." +#~ msgstr "" +#~ "balu[]: (u voor unallocated) is een speciale uitdrukking welke " +#~ "niet toegewezen winst/verlies van vorige\n" +#~ " fiscale jaren laat zien." + +#~ msgid "" +#~ "crdp[40%]: sum of all credits on accounts starting with 40 during " +#~ "the period." +#~ msgstr "" +#~ "crdp[40%]: som van alle kredieten op rekeningen beginnend met 40 " +#~ "over de periode." + +#~ msgid "date_from, date_to: beginning and end date of the period." +#~ msgstr "date_from, date_to: begin- en einddatum van de periode." + +#~ msgid "datetime, datetime, dateutil: the python modules." +#~ msgstr "datetime, datetime, dateutil: de python modules." + +#~ msgid "" +#~ "debp[55%][('journal_id.code', '=', 'BNK1')]: sum of all debits on " +#~ "accounts 55 and journal BNK1 during the period." +#~ msgstr "" +#~ "debp[55%][('journal_id.code', '=', 'BNK1')]: som van alle debet op " +#~ "rekening 55 en journaal BNK1 over de periode." + +#, fuzzy +#~ msgid "" +#~ "p, i, e: respectively variation over the period, initial balance, " +#~ "ending balance" +#~ msgstr "" +#~ "p, i, e: respectievelijk de variatie over; de periode, " +#~ "beginbalans, eindsaldo" + +#~ msgid "" +#~ "sum, min, max, len, avg: behave as expected, very similar to the " +#~ "python builtins." +#~ msgstr "" +#~ "sum, min, max, len, avg: Standaard werking, zeer vergelijkbaar met " +#~ "de python-builtins." + +#~ msgid "" +#~ "Additionally following variables are available in the evaluation context:" +#~ msgstr "" +#~ "Daarnaast zijn de volgende variabelen beschikbaar in de evaluatiecontext:" + +#, fuzzy +#~ msgid "" +#~ "Expressions can involve other KPI, sub KPI and query results by name (eg " +#~ "kpi1 + kpi2, kpi2.subkpi1, query1.field1)." +#~ msgstr "" +#~ "Uitdrukking kan ook andere KPI- en queryresultaten met naam omvatten " +#~ "(bijv. Kpi1 + kpi2)." + +#~ msgid "" +#~ "The account selector is a like expression on the account code (eg " +#~ "70%, etc)." +#~ msgstr "" +#~ "De account selector is een like uitdrukking op de rekening code " +#~ "(bv 70%, etc)." + +#~ msgid "" +#~ "The journal items domain is an Odoo domain filter on journal items." +#~ msgstr "" +#~ "De journal items domain is een Odoo domein filter op journaal " +#~ "items." + +#, fuzzy +#~ msgid "" +#~ "The following special elements are recognized in the expressions to " +#~ "compute accounting data:\n" +#~ " {bal|crd|deb|pbal|nbal}" +#~ "{pieu}[account selector][journal items domain]." +#~ msgstr "" +#~ "De volgende speciale elementen worden herkend in de uitdrukkingen om " +#~ "boekhoudgegevens te berekenen: \n" +#~ " {bal|crd|deb}{pieu}" +#~ "[account selecor][journal items domain]." + +#~ msgid "MIS Budget" +#~ msgstr "MIS Budgetten" + +#~ msgid "report.mis_builder.mis_report_instance_xlsx" +#~ msgstr "report.mis_builder.mis_report_instance_xlsx" + +#~ msgid "" +#~ "Probably not your fault... but I'm really curious to know how you managed " +#~ "to raise this error so I can handle one more corner case!" +#~ msgstr "" +#~ "Waarschijnlijk niet jouw schuld... maar we zijn erg benieuwd wat je hebt " +#~ "gedaan om deze fout te veroorzaken. Dan kunnen we dit probleem proberen " +#~ "te verhelpen!" + +#~ msgid "µ" +#~ msgstr "µ" + +#~ msgid "add.mis.report.instance.dashboard.wizard" +#~ msgstr "add.mis.report.instance.dashboard.wizard" + +#~ msgid "ir.actions.report" +#~ msgstr "ir.actions.report" + +#~ msgid "mis.report" +#~ msgstr "mis.report" + +#~ msgid "mis.report.instance" +#~ msgstr "mis.report.instance" + +#~ msgid "mis.report.instance.period" +#~ msgstr "mis.report.instance.period" + +#~ msgid "mis.report.instance.period.sum" +#~ msgstr "mis.report.instance.period.sum" + +#~ msgid "mis.report.kpi" +#~ msgstr "mis.report.kpi" + +#~ msgid "mis.report.kpi.expression" +#~ msgstr "mis.report.kpi.expression" + +#~ msgid "mis.report.query" +#~ msgstr "mis.report.query" + +#~ msgid "mis.report.style" +#~ msgstr "mis.report.style" + +#~ msgid "mis.report.subkpi" +#~ msgstr "mis.report.subkpi" diff --git a/mis_builder/i18n/nl_NL.po b/mis_builder/i18n/nl_NL.po new file mode 100644 index 0000000..88039ef --- /dev/null +++ b/mis_builder/i18n/nl_NL.po @@ -0,0 +1,2066 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mis_builder +# +# Translators: +# OCA Transbot , 2018 +# Frank Schellenberg , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-13 15:37+0000\n" +"PO-Revision-Date: 2018-07-07 15:10+0000\n" +"Last-Translator: Thomas Pot \n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/" +"teams/23907/nl_NL/)\n" +"Language: nl_NL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.0.1\n" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "%s (copy)" +msgstr "%s (kopie)" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[('user_type_id', '=',\n" +" ref('account.\n" +" data_account_type_receivable')." +"id)][]\n" +" \n" +" : variation of the balance of all " +"receivable accounts over\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[][('tax_line_id.tag_ids', " +"'=', ref('l10n_be.tax_tag_56').id)]\n" +" \n" +" : balance of move lines related to " +"tax grid 56." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" debp[55%][('journal_id.code', " +"'=',\n" +" 'BNK1')]\n" +" \n" +" : sum of all debits on accounts 55 " +"and journal BNK1 during\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"AccountingNone : a null value that behaves as 0 in\n" +" arithmetic operations." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal, crd, deb, \n" +" pbal, nbal : " +"balance, debit, credit,\n" +" positive balance, negative balance." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal[70] : variation of the balance of account 70 over\n" +" the period (it is the same as " +"balp[70]." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bale[1%] : balance of accounts starting with 1 at\n" +" end of period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "bali[70,60] : initial balance of accounts 70 and 60." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"balu[] : (u for unallocated) is a special " +"expression\n" +" that shows the unallocated profit/" +"loss of previous fiscal\n" +" years." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"crdp[40%] : sum of all credits on accounts starting\n" +" with 40 during the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"date_from, date_to : beginning and end date of " +"the\n" +" period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"datetime, datetime, dateutil : the " +"python modules." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"p, i, e : respectively variation over " +"the period,\n" +" initial balance, ending balance" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"pbale[55%] : sum of all ending balances of accounts\n" +" starting with 55 whose ending " +"balance is positive." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"sum, min,\n" +" max, len,\n" +" avg : behave as " +"expected, very\n" +" similar to the python builtins." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.report_mis_report_instance +msgid "-" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields." +msgstr "" +"Een 'boekingsregel-achtig' model, d.w.z. heeft minimaal debet, credit, " +"datum, account_id en company_id velden" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__source_aml_model_id +#, fuzzy +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields. This model is the data source for column Actuals." +msgstr "" +"Een 'boekingsregel-achtig' model, d.w.z. heeft minimaal debet, credit, " +"datum, account_id en company_id velden" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "A date filter is mandatory for this source in column %s." +msgstr "Een datum filter is verplicht voor deze bron in kolom %s." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "A domain to additionally filter move lines considered in this column." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__analytic_domain +msgid "" +"A domain to additionally filter move lines considered in this report. " +"Caution: when using different move line sources in different columns, such " +"as budgets by account, make sure to use only fields that are available in " +"all move line sources." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__account_model +msgid "Account Model" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__accumulation_method +msgid "Accumulation Method" +msgstr "Accumulatiemethode" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Actual (alternative) models used in columns must have the same account model " +"in the Account field and must be the same defined in the report template: %s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals +msgid "Actuals" +msgstr "Actuele" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals_alt +msgid "Actuals (alternative)" +msgstr "Actuele (alternatief)" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source +msgid "" +"Actuals: current data, from accounting and other queries.\n" +"Actuals (alternative): current data from an alternative source (eg a " +"database view providing look-alike account move lines).\n" +"Sum columns: summation (+/-) of other columns.\n" +"Compare to column: compare to other column.\n" +msgstr "" +"Actuele: Huidige data, van boekhouding en andere queries.\n" +"Actuele (alternatief): Huidige data van een alternatieve bron (eg een " +"database view welke ook boekingsregels kan laten zien).\n" +"Kolommen optellen: sommatie (+/-) van andere kolommen.\n" +"Vergelijk kolommen: vergelijk met andere kolom.\n" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_prorata_read_group_mixin +msgid "Adapt model with date_from/date_to for pro-rata temporis read_group" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_add_to_dashboard_action +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Add to dashboard" +msgstr "Voeg toe aan dashboard" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Additionally following variables are available\n" +" in the evaluation context:" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__aggregate +msgid "Aggregate" +msgstr "Samenvoegen" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__all +msgid "All Entries" +msgstr "Alle boekingen" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__all_kpi_ids +msgid "All Kpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__posted +msgid "All Posted Entries" +msgstr "Alle Geboekte Regels" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__allowed_cmpcol_ids +msgid "Allowed Cmpcol" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_ids +msgid "Allowed companies" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_id +msgid "Allowed company" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__amount +msgid "Amount" +msgstr "Hoeveelheid" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__style_expression +msgid "" +"An expression that returns a style depending on the KPI value. Such style is " +"applied on top of the row style." +msgstr "" +"Een uitdrukking die een stijl retourneert afhankelijk van de KPI-waarde. Een " +"dergelijke stijl wordt toegepast bovenop de regelstijl." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__analytic_domain +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "Analytic Domain" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Auto expand" +msgstr "automatisch uitbreiden" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__avg +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__avg +#, python-format +msgid "Average" +msgstr "Gemiddelde" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color +msgid "Background Color" +msgstr "Achtergrond Kleur" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color_inherit +msgid "Background Color Inherit" +msgstr "Achtergrond Kleur Overerven" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__background_color +msgid "Background color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "Achtergrondkleur als geldige HEX code (van #000000 tot #FFFFFF)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date +msgid "Base date" +msgstr "Uitgangsdatum" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__bold +msgid "Bold" +msgstr "Vet" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Cancel" +msgstr "Annuleer" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__multi_company +msgid "Check if you wish to specify several companies to be searched for data." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Color" +msgstr "Kleur" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color_inherit +msgid "Color Inherit" +msgstr "Kleur Overerven" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_to_sum_id +msgid "Column" +msgstr "Kolom" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, fuzzy, python-format +msgid "Column %s cannot be compared to itrec." +msgstr "Kolom %skan niet met zichzelf worden vergeleken." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, fuzzy, python-format +msgid "Column %s with move lines source must have from/to dates." +msgstr "Kolom %s met Actuele waardes moet van/tot data hebben." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Columns" +msgstr "Kolommen" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "Columns %(descr)s and %(base_descr)s are not comparable" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Columns to compare must belong to the same report in %s" +msgstr "Te vergelijken kolommen moeten tot hetzelfde rapport in %s behoren" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_ids +msgid "Columns to sum" +msgstr "Op te sommen kolommen" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__query_company_ids +msgid "Companies for which data will be searched." +msgstr "Bedrijven waarvoor de data wordt doorzocht." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_to_id +msgid "Compare" +msgstr "Vergelijk" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__cmpcol +msgid "Compare columns" +msgstr "Vergelijk kolommen" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__compare_method +msgid "Comparison Method" +msgstr "Vergelijkingsmethode" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__comparison_mode +msgid "Comparison Mode" +msgstr "Vergelijkingsmodus" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_uid +msgid "Created by" +msgstr "Aangemaakt door" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_date +msgid "Created on" +msgstr "Aangemaakt op" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__currency_id +msgid "Currency" +msgstr "Valuta" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__dashboard_id +msgid "Dashboard" +msgstr "Dashboard" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date +#, fuzzy +msgid "Date" +msgstr "Data" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__date_field +msgid "Date Field" +msgstr "Datumveld" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_from +#, fuzzy +msgid "Date From" +msgstr "Datumveld" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_range_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_id +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__date_range +#, python-format +msgid "Date Range" +msgstr "Datumbereik" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_type_id +msgid "Date Range Type" +msgstr "Datumbereik Type" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_to +#, fuzzy +msgid "Date To" +msgstr "Data" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Dates" +msgstr "Data" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__d +#, python-format +msgid "Day" +msgstr "Dag" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__description +msgid "Description" +msgstr "Omschrijving" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__accumulation_method +msgid "" +"Determines how values of this kpi spanning over a time period are " +"transformed to match the reporting period. Sum: values of shorter period are " +"added, values of longest or partially overlapping periods are adjusted pro-" +"rata temporis.\n" +"Average: values of included period are averaged with a pro-rata temporis " +"weight." +msgstr "" +"Bepaalt hoe waarden van deze kpi over een periode worden omgezet in " +"overeenstemming met de rapportageperiode. \n" +"Som: waarden van kortere periode worden toegevoegd, waarden van langste of " +"gedeeltelijk overlappende perioden worden pro-rata temporis aangepast.\n" +"Gemiddelde: waarden van de opgenomen periode worden gemiddeld met een pro-" +"rata temporis-gewicht." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__diff +#, python-format +msgid "Difference" +msgstr "Verschil" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__no_auto_expand_accounts +#, fuzzy +msgid "Disable account details expansion" +msgstr "Rekening details optellen" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display Columns Description" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__display_name +msgid "Display Name" +msgstr "Weergavenaam" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts +msgid "Display details by account" +msgstr "Laat details per rekening zien" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display the date range details in the column headers." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider_inherit +msgid "Divider Inherit" +msgstr "Verdeler Overerven" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__domain +msgid "Domain" +msgstr "Domein" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp_inherit +msgid "Dp Inherit" +msgstr "Dp Overerven" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_prorata_read_group_mixin__date +msgid "" +"Dummy field that adapts searches on date to searches on date_from/date_to." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__duration +msgid "Duration" +msgstr "Duur" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__query_company_ids +msgid "Effective companies" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Enter expression here, for example balp[70%]. See also help tab." +msgstr "" +"Vul hier een uitdrukking in, bijvoorbeeld balp[70%]. Zie ook het help " +"tabblad." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"Error while querying move line source \"%(model_name)s\". This is likely due " +"to a filter or expression referencing a field that does not exist in the " +"model.\n" +"\n" +"The technical error message is: %(exception)s. " +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Examples:" +msgstr "Voorbeelden:" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Export" +msgstr "Exporteer" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__expression_ids +msgid "Expression" +msgstr "Uitdrukking" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions" +msgstr "Uitdrukkingen" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions can be any valid python expressions." +msgstr "Uitdrukkingen kunnen alle geldige python uitdrukkingen zijn." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Expressions can involve other KPI, sub KPI and\n" +" query results by name (eg kpi1 + " +"kpi2,\n" +" kpi2.subkpi1, query1." +"field1)." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__normalize_factor +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider +msgid "Factor" +msgstr "Factor" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Factor inherit" +msgstr "Factor overerven" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__normalize_factor +msgid "Factor to use to normalize the period (used in comparison" +msgstr "" +"Te gebruiken factor om de periode te normaliseren (wordt gebruikt bij " +"vergelijking" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_names +msgid "Fetched fields name" +msgstr "Opgehaalde veld namen" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_ids +msgid "Fields to fetch" +msgstr "Op te halen velden" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Filter box search view" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Filters" +msgstr "Filters" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__fix +msgid "Fixed dates" +msgstr "Vaste data" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Font" +msgstr "Lettertype" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size +msgid "Font Size" +msgstr "Lettertypegrootte" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size_inherit +msgid "Font Size Inherit" +msgstr "Lettertypegrootte Overerven" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style +msgid "Font Style" +msgstr "Letterstijl" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style_inherit +msgid "Font Style Inherit" +msgstr "Letterstijl Overerven" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight +msgid "Font Weight" +msgstr "Lettertype Dikte" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight_inherit +msgid "Font Weight Inherit" +msgstr "Lettertype Dikte Overerven" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Forces the start date to Jan 1st of the relevant year" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_from +msgid "From" +msgstr "Van" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_from +msgid "From (computed)" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/report/mis_report_instance_xlsx.py:0 +#, python-format +msgid "Generated on %(gen_date)s at %(gen_time)s" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Help (for KPI expressions)" +msgstr "Help (voor KPI uitdrukkingen)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always +msgid "Hide Always" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always_inherit +#, fuzzy +msgid "Hide Always Inherit" +msgstr "Verberg Leeg Overerven" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty +msgid "Hide Empty" +msgstr "Verberg Leeg" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty_inherit +msgid "Hide Empty Inherit" +msgstr "Verberg Leeg Overerven" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__id +msgid "ID" +msgstr "ID" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"If currency_id is not provided, all companies must have the same currency." +msgstr "" +"Als currency_id niet bekend is, alle bedrijven moeten dezelfde valuta hebben." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Indent" +msgstr "Inspringen" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level +msgid "Indent Level" +msgstr "Inspring Niveau" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level_inherit +msgid "Indent Level Inherit" +msgstr "Inspring Niveau Overerven" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "Indent level must be greater than or equal to 0" +msgstr "Inspring niveau moet groter of gelijk zijn aan 0" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__italic +msgid "Italic" +msgstr "Cursief" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__kpi_expression_id +msgid "KPI" +msgstr "KPI" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" has type %(type)s while a tuple was expected.\n" +"\n" +"This can be fixed by either:\n" +"\t- Changing the KPI value to a tuple of length %(length)s\n" +"or\n" +"\t- Changing the KPI to `multi` mode and giving an explicit value for each " +"sub-KPI." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" is valued as a tuple of length %(length)s while a tuple of " +"length%(expected_length)s is expected." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq1 +#, fuzzy +msgid "KPI Sequence" +msgstr "Reeks" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, fuzzy, python-format +msgid "KPI name ({}) must be a valid python identifier" +msgstr "De naam moet een geldige python identifier zijn" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__kpi_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "KPI's" +msgstr "KPI's" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__all_kpi_ids +msgid "KPIs of this report and subreports." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__kpi_id +msgid "Kpi" +msgstr "Kpi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__name +msgid "Label" +msgstr "Label" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__landscape_pdf +msgid "Landscape PDF" +msgstr "Landschap PDF" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport____last_update +msgid "Last Modified on" +msgstr "Voor het laatst aangepast op" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.last_mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.last_wizard_mis_report_instance_view_menu +msgid "Last Reports Generated" +msgstr "Laatste Gegenereerde Rapport" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_uid +msgid "Last Updated by" +msgstr "Voor het laatst geüpdatet door" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_date +msgid "Last Updated on" +msgstr "Voor het laatst geüpdatet op" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Layout" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_report_mis_builder_mis_report_instance_xlsx +#, fuzzy +msgid "MIS Builder XLSX report" +msgstr "MIS rapportage instantie XLS rapport" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_kpi_data +msgid "MIS Kpi Data Abtract class" +msgstr "MIS Kpi Data Abtract class" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "MIS Report" +msgstr "MIS Rapport" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subreport +#, fuzzy +msgid "MIS Report - Sub Reports Relation" +msgstr "MIS Rapport Resultaat" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_add_mis_report_instance_dashboard_wizard +#, fuzzy +msgid "MIS Report Add to Dashboard Wizard" +msgstr "Voeg toe aan dashboard" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "MIS Report Instance" +msgstr "MIS Rapport Instantie" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period +#, fuzzy +msgid "MIS Report Instance Period" +msgstr "MIS Rapport Instantie" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period_sum +#, fuzzy +msgid "MIS Report Instance Period Sum" +msgstr "MIS Rapport Instantie" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "MIS Report KPI" +msgstr "MIS Rapport KPI" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi_expression +#, fuzzy +msgid "MIS Report KPI Expression" +msgstr "MIS Rapport KPI" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_result_view_form +msgid "MIS Report Preview" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_query +#, fuzzy +msgid "MIS Report Query" +msgstr "MIS Rapport" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_style +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "MIS Report Style" +msgstr "MIS Rapport Stijl" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_style_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_style_view_menu +msgid "MIS Report Styles" +msgstr "MIS Rapport Stijlen" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subkpi +#, fuzzy +msgid "MIS Report Sub-KPI" +msgstr "MIS Rapport KPI" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report +#, fuzzy +msgid "MIS Report Template" +msgstr "MIS Rapport Templates" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_view_menu +msgid "MIS Report Templates" +msgstr "MIS Rapport Templates" + +#. module: mis_builder +#: model:ir.ui.menu,name:mis_builder.mis_report_conf_menu +#: model:ir.ui.menu,name:mis_builder.mis_report_finance_menu +msgid "MIS Reporting" +msgstr "MIS Rapportage" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_instance_view_menu +msgid "MIS Reports" +msgstr "MIS Rapporten" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.qweb_pdf_export +msgid "MIS report instance QWEB PDF report" +msgstr "MIS rapportage instantie QWEB PDF rapport" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.xls_export +msgid "MIS report instance XLS report" +msgstr "MIS rapportage instantie XLS rapport" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__max +#, python-format +msgid "Max" +msgstr "Max" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__min +#, python-format +msgid "Min" +msgstr "Min" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__mode +msgid "Mode" +msgstr "Modus" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__model_id +msgid "Model" +msgstr "Model" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__m +#, python-format +msgid "Month" +msgstr "Maand" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "Move Lines Source" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "Move lines source" +msgstr "Bron boekingsregels" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_name +#, fuzzy +msgid "Move lines source model name" +msgstr "Bron boekingsregels" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__multi +msgid "Multi" +msgstr "Meerdere" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__multi_company +msgid "Multiple companies" +msgstr "Meerdere bedrijven" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__name +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Name" +msgstr "Naam" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__none +msgid "No date filter" +msgstr "Geen datum filter" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "No date filter is allowed for this source in column %s." +msgstr "Een datum filter is niet toegestaan voor deze bron in kolom %s." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__none +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__none +#, python-format +msgid "None" +msgstr "Geen" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__normal +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__nornal +msgid "Normal" +msgstr "Normaal" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Number" +msgstr "Aantal" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__duration +msgid "Number of periods" +msgstr "Aantal periodes" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__num +#, python-format +msgid "Numeric" +msgstr "Numeriek" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__offset +msgid "Offset" +msgstr "Offset" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__offset +msgid "Offset from current period" +msgstr "Offset t.o.v. huidige periode" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_id +msgid "Parent column" +msgstr "Bovenliggende kolom" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__pct +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__pct +#, python-format +msgid "Percentage" +msgstr "Percentage" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_name_unique +msgid "Period name should be unique by report" +msgstr "Periode naam dient per rapport uniek te zijn" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__type +msgid "Period type" +msgstr "Periode duur" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__period_ids +msgid "Periods" +msgstr "Periodes" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__pivot_date +msgid "Pivot Date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Please provide both columns to compare in %s." +msgstr "Geef beide kolommen op om te vergelijken in %s." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Please select a report template and/or save the report before adding columns." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix +msgid "Prefix" +msgstr "Voorvoegsel" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix_inherit +msgid "Prefix Inherit" +msgstr "Voorvoegsel Overerven" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Preview" +msgstr "Voorbeeld" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Print" +msgstr "Afdrukken" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__query_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Queries" +msgstr "Query's" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, fuzzy, python-format +msgid "Query name ({}) must be valid python identifier" +msgstr "De naam moet een geldige python identifier zijn" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Refresh" +msgstr "Ververs" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__relative +msgid "Relative to report base date" +msgstr "Ten opzichte van de rapport uitgangsdatum" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__report_id +msgid "Report" +msgstr "Rapport" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_ir_actions_report +#, fuzzy +msgid "Report Action" +msgstr "Rapport instantie" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_instance_id +msgid "Report Instance" +msgstr "Rapport instantie" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__date +msgid "Report base date (leave empty to use current date)" +msgstr "Uitgangsdatum Rapport (voor vandaag laat leeg)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp +msgid "Rounding" +msgstr "Afronding" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Rounding inherit" +msgstr "Afronding overerven" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Save" +msgstr "Opslaan" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Search view to customize the filter box in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__company_ids +msgid "Select companies for which data will be searched." +msgstr "Selecteer de bedrijven waarvoor de data moet worden doorzocht." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__currency_id +msgid "" +"Select target currency for the report. Required if companies have different " +"currencies." +msgstr "" +"Selecteer de hoofdvaluta voor het rapport. Vereist als bedrijven " +"verschillende valuta hebben." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__sequence +msgid "Sequence" +msgstr "Reeks" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Settings" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_subreport_unique +msgid "" +"Should not include the same report more than once as sub report of a given " +"report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show Pivot Date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show filters box" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show settings button" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show the Pivot Date in the report widget filter bar." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show the filter bar in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show the settings button in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__sign +msgid "Sign" +msgstr "Teken" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Source" +msgstr "Bron" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__str +#, python-format +msgid "String" +msgstr "String" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__style_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_id +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Style" +msgstr "Stijl" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_expression +msgid "Style Expression" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts_style_id +msgid "Style for account detail rows" +msgstr "Stijl voor detail rekening regels" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__name +msgid "Style name" +msgstr "Stijl naam" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subkpi_ids +msgid "Sub KPI" +msgstr "Sub KPI" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__subkpi_ids +msgid "Sub KPI Filter" +msgstr "Sub KPI filter" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_kpi_expression_subkpi_kpi_unique +msgid "Sub KPI must be used once and only once for each KPI" +msgstr "Sub KPI moet één keer worden gebruikt voor iedere KPI" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub KPI's" +msgstr "Sub KPI's" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +#, fuzzy +msgid "Sub Reports" +msgstr "MIS Rapporten" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subreport_ids +#, fuzzy +msgid "Sub reports" +msgstr "MIS Rapporten" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq2 +#, fuzzy +msgid "Sub-KPI Sequence" +msgstr "Reeks" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, fuzzy, python-format +msgid "Sub-KPI name ({}) must be a valid python identifier" +msgstr "De naam moet een geldige python identifier zijn" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__subkpi_id +msgid "Subkpi" +msgstr "Subkpi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__subreport_id +#, fuzzy +msgid "Subreport" +msgstr "Rapport" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport loop detected" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, fuzzy, python-format +msgid "Subreport name ({}) must be a valid python identifier" +msgstr "De naam moet een geldige python identifier zijn" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_name_unique +#, fuzzy +msgid "Subreport name should be unique by report" +msgstr "Periode naam dient per rapport uniek te zijn" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix +msgid "Suffix" +msgstr "Achtervoegsel" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix_inherit +msgid "Suffix Inherit" +msgstr "Achtervoegsel Overerven" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__sum +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__sum +#, python-format +msgid "Sum" +msgstr "Optellen" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_accdet +msgid "Sum account details" +msgstr "Rekening details optellen" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "" +"Sum cannot be computed in column {} because the columns to sum have no " +"common subkpis" +msgstr "" +"Som kan niet worden berekend in kolom {} omdat de kolommen die moeten worden " +"opgeteld geen gemeenschappelijke subkpis hebben" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__sumcol +msgid "Sum columns" +msgstr "Kolommen optellen" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__target_move +msgid "Target Moves" +msgstr "Doel Boekingen" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +msgid "Template" +msgstr "Template" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__temporary +msgid "Temporary" +msgstr "Tijdelijk" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color +msgid "Text color" +msgstr "Tekst kleur" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__color +msgid "Text color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "Tekst kleur in geldige HEX code (van #000000 tot #FFFFFF)" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The account selector is a like expression on the\n" +" account code (eg 70%, " +"etc), or a domain over accounts\n" +" (eg [('code', 'like', '60%')])." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The journal items domain is an Odoo domain filter on\n" +" journal items." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The following special elements are recognized in the expressions\n" +" to compute accounting data: {bal|" +"crd|deb|pbal|nbal}{pieu}[account\n" +" selector][journal items domain]." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_to +msgid "To" +msgstr "Tot" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_to +msgid "To (computed)" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_kpi_data.py:0 +#, python-format +msgid "Unexpected accumulation method %(method)s for %(name)s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Unexpected value %s for target_move." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/prorata_read_group_mixin.py:0 +#, python-format +msgid "Unsupported operator %s for searching on date" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.server,name:mis_builder.ir_cron_vacuum_temp_reports_ir_actions_server +#: model:ir.cron,cron_name:mis_builder.ir_cron_vacuum_temp_reports +msgid "Vacuum temporary reports" +msgstr "Ledig tijdelijke rapporten" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__valid +msgid "Valid" +msgstr "Geldig" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__type +msgid "Value type" +msgstr "Waarde type" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Visibility" +msgstr "Zichtbaarheid" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__w +#, python-format +msgid "Week" +msgstr "Week" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Widget" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_duration +msgid "Wrong duration, it must be positive!" +msgstr "Ongeldige duur, moet positief zijn!" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_normalize_factor +msgid "Wrong normalize factor, it must be positive!" +msgstr "Ongeldige normalisatie factor, moet positief zijn!" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__y +#, python-format +msgid "Year" +msgstr "Jaar" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Year to date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "You cannot sum period %s with itself." +msgstr "Periode %s kan niet bij zichzelf worden opgeteld." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "from %(date_from)s to %(date_to)s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__large +msgid "large" +msgstr "L" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__medium +msgid "medium" +msgstr "M" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "or" +msgstr "of" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "pp" +msgstr "pp" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__small +msgid "small" +msgstr "S" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_from_id +msgid "versus" +msgstr "versus" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-large +msgid "x-large" +msgstr "XL" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-small +msgid "x-small" +msgstr "XS" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-large +msgid "xx-large" +msgstr "XXL" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-small +msgid "xx-small" +msgstr "XXS" + +#, python-format +#~ msgid "Columns {} and {} are not comparable" +#~ msgstr "Kolommen {} en {} zijn niet vergelijkbaar" + +#, python-format +#~ msgid "Can not update a multi kpi from the kpi line" +#~ msgstr "Kan een multi-kpi niet bijwerken vanaf de kpi-regel" + +#, fuzzy +#~ msgid "Account model" +#~ msgstr "Rekening details optellen" + +#~ msgid "MIS Report Instances" +#~ msgstr "MIS Rapport Instanties" + +#~ msgid "MIS Report Result" +#~ msgstr "MIS Rapport Resultaat" + +#~ msgid "Pivot date" +#~ msgstr "Uitgangsdatum" + +#~ msgid "Style expression" +#~ msgstr "Stijl uitdrukking" + +#, python-format +#~ msgid "Unexpected accumulation method %s for %s." +#~ msgstr "Onverwachte accumulatiemethode %s voor %s." + +#, python-format +#~ msgid "from %s to %s" +#~ msgstr "van %s tot %s" + +#~ msgid "" +#~ "Check if you wish to specify children companies to be searched for data." +#~ msgstr "" +#~ "Controleer of u dochterbedrijven wilt selecteren waarvan de data moet " +#~ "worden meegenomen." + +#~ msgid "Companies" +#~ msgstr "Bedrijven" + +#~ msgid "Company" +#~ msgstr "Bedrijf" + +#~ msgid "Query Company" +#~ msgstr "Query Bedrijf" + +#~ msgid "" +#~ "AccountingNone: a null value that behaves as 0 in arithmetic " +#~ "operations." +#~ msgstr "" +#~ "AccountingNone: een null waarde welke zich gedraagt als een 0 in " +#~ "rekenkundige bewerkingen." + +#, fuzzy +#~ msgid "" +#~ "bal, crd, deb, pbal, nbal: balance, debit, credit, positive " +#~ "balance, negative balance." +#~ msgstr "bal, crd, deb: balans, debet, credit." + +#~ msgid "" +#~ "bal[70]: variation of the balance of account 70 over the period " +#~ "(it is the same as balp[70]." +#~ msgstr "" +#~ "bal[70]: variatie van de balans van rekening 70 over de periode " +#~ "(is hetzelfde als balp[70]." + +#~ msgid "" +#~ "bale[1%]: balance of accounts starting with 1 at end of period." +#~ msgstr "" +#~ "bale[1%]: balans van de rekeningen beginnend met een 1 aan het " +#~ "einde van de periode." + +#~ msgid "bali[70,60]: initial balance of accounts 70 and 60." +#~ msgstr "bali[70,60]: openingsbalans van de rekeningen 70 en 60." + +#~ msgid "" +#~ "balp[('user_type_id', '=', ref('account.data_account_type_receivable')." +#~ "id)][]: variation of the balance of all receivable accounts over the " +#~ "period." +#~ msgstr "" +#~ "balp[('user_type_id', '=', ref('account.data_account_type_receivable')." +#~ "id)][]: variatie van de balans bam alle te ontvangen rekeningen over " +#~ "de periode." + +#~ msgid "" +#~ "balp[][('tax_line_id.tag_ids', '=', ref('l10n_be.tax_tag_56').id)]: balance of move lines related to tax grid 56." +#~ msgstr "" +#~ "balp[][('tax_line_id.tag_ids', '=', ref('l10n_be.tax_tag_56').id)]: balans van de boekingsregels gerelateerd aan de belastingraster 56." + +#~ msgid "" +#~ "balu[]: (u for unallocated) is a special expression that shows the " +#~ "unallocated profit/loss of previous\n" +#~ " fiscal years." +#~ msgstr "" +#~ "balu[]: (u voor unallocated) is een speciale uitdrukking welke " +#~ "niet toegewezen winst/verlies van vorige\n" +#~ " fiscale jaren laat zien." + +#~ msgid "" +#~ "crdp[40%]: sum of all credits on accounts starting with 40 during " +#~ "the period." +#~ msgstr "" +#~ "crdp[40%]: som van alle kredieten op rekeningen beginnend met 40 " +#~ "over de periode." + +#~ msgid "date_from, date_to: beginning and end date of the period." +#~ msgstr "date_from, date_to: begin- en einddatum van de periode." + +#~ msgid "datetime, datetime, dateutil: the python modules." +#~ msgstr "datetime, datetime, dateutil: de python modules." + +#~ msgid "" +#~ "debp[55%][('journal_id.code', '=', 'BNK1')]: sum of all debits on " +#~ "accounts 55 and journal BNK1 during the period." +#~ msgstr "" +#~ "debp[55%][('journal_id.code', '=', 'BNK1')]: som van alle debet op " +#~ "rekening 55 en journaal BNK1 over de periode." + +#, fuzzy +#~ msgid "" +#~ "p, i, e: respectively variation over the period, initial balance, " +#~ "ending balance" +#~ msgstr "" +#~ "p, i, e: respectievelijk de variatie over; de periode, " +#~ "beginbalans, eindsaldo" + +#~ msgid "" +#~ "sum, min, max, len, avg: behave as expected, very similar to the " +#~ "python builtins." +#~ msgstr "" +#~ "sum, min, max, len, avg: Standaard werking, zeer vergelijkbaar met " +#~ "de python-builtins." + +#~ msgid "" +#~ "Additionally following variables are available in the evaluation context:" +#~ msgstr "" +#~ "Daarnaast zijn de volgende variabelen beschikbaar in de evaluatiecontext:" + +#, fuzzy +#~ msgid "" +#~ "Expressions can involve other KPI, sub KPI and query results by name (eg " +#~ "kpi1 + kpi2, kpi2.subkpi1, query1.field1)." +#~ msgstr "" +#~ "Uitdrukking kan ook andere KPI- en queryresultaten met naam omvatten " +#~ "(bijv. Kpi1 + kpi2)." + +#~ msgid "" +#~ "The account selector is a like expression on the account code (eg " +#~ "70%, etc)." +#~ msgstr "" +#~ "De account selector is een like uitdrukking op de rekening code " +#~ "(bv 70%, etc)." + +#~ msgid "" +#~ "The journal items domain is an Odoo domain filter on journal items." +#~ msgstr "" +#~ "De journal items domain is een Odoo domein filter op journaal " +#~ "items." + +#, fuzzy +#~ msgid "" +#~ "The following special elements are recognized in the expressions to " +#~ "compute accounting data:\n" +#~ " {bal|crd|deb|pbal|nbal}" +#~ "{pieu}[account selector][journal items domain]." +#~ msgstr "" +#~ "De volgende speciale elementen worden herkend in de uitdrukkingen om " +#~ "boekhoudgegevens te berekenen: \n" +#~ " {bal|crd|deb}{pieu}" +#~ "[account selecor][journal items domain]." + +#~ msgid "MIS Budget" +#~ msgstr "MIS Budgetten" + +#~ msgid "report.mis_builder.mis_report_instance_xlsx" +#~ msgstr "report.mis_builder.mis_report_instance_xlsx" + +#~ msgid "" +#~ "Probably not your fault... but I'm really curious to know how you managed " +#~ "to raise this error so I can handle one more corner case!" +#~ msgstr "" +#~ "Waarschijnlijk niet jouw schuld... maar we zijn erg benieuwd wat je hebt " +#~ "gedaan om deze fout te veroorzaken. Dan kunnen we dit probleem proberen " +#~ "te verhelpen!" + +#~ msgid "µ" +#~ msgstr "µ" + +#~ msgid "add.mis.report.instance.dashboard.wizard" +#~ msgstr "add.mis.report.instance.dashboard.wizard" + +#~ msgid "ir.actions.report" +#~ msgstr "ir.actions.report" + +#~ msgid "mis.report" +#~ msgstr "mis.report" + +#~ msgid "mis.report.instance" +#~ msgstr "mis.report.instance" + +#~ msgid "mis.report.instance.period" +#~ msgstr "mis.report.instance.period" + +#~ msgid "mis.report.instance.period.sum" +#~ msgstr "mis.report.instance.period.sum" + +#~ msgid "mis.report.kpi" +#~ msgstr "mis.report.kpi" + +#~ msgid "mis.report.kpi.expression" +#~ msgstr "mis.report.kpi.expression" + +#~ msgid "mis.report.query" +#~ msgstr "mis.report.query" + +#~ msgid "mis.report.style" +#~ msgstr "mis.report.style" + +#~ msgid "mis.report.subkpi" +#~ msgstr "mis.report.subkpi" diff --git a/mis_builder/i18n/pt.po b/mis_builder/i18n/pt.po new file mode 100644 index 0000000..b11a35c --- /dev/null +++ b/mis_builder/i18n/pt.po @@ -0,0 +1,1793 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mis_builder +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-13 15:37+0000\n" +"PO-Revision-Date: 2018-01-13 15:37+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Portuguese (https://www.transifex.com/oca/teams/23907/pt/)\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "%s (copy)" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[('user_type_id', '=',\n" +" ref('account.\n" +" data_account_type_receivable')." +"id)][]\n" +" \n" +" : variation of the balance of all " +"receivable accounts over\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[][('tax_line_id.tag_ids', " +"'=', ref('l10n_be.tax_tag_56').id)]\n" +" \n" +" : balance of move lines related to " +"tax grid 56." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" debp[55%][('journal_id.code', " +"'=',\n" +" 'BNK1')]\n" +" \n" +" : sum of all debits on accounts 55 " +"and journal BNK1 during\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"AccountingNone : a null value that behaves as 0 in\n" +" arithmetic operations." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal, crd, deb, \n" +" pbal, nbal : " +"balance, debit, credit,\n" +" positive balance, negative balance." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal[70] : variation of the balance of account 70 over\n" +" the period (it is the same as " +"balp[70]." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bale[1%] : balance of accounts starting with 1 at\n" +" end of period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "bali[70,60] : initial balance of accounts 70 and 60." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"balu[] : (u for unallocated) is a special " +"expression\n" +" that shows the unallocated profit/" +"loss of previous fiscal\n" +" years." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"crdp[40%] : sum of all credits on accounts starting\n" +" with 40 during the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"date_from, date_to : beginning and end date of " +"the\n" +" period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"datetime, datetime, dateutil : the " +"python modules." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"p, i, e : respectively variation over " +"the period,\n" +" initial balance, ending balance" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"pbale[55%] : sum of all ending balances of accounts\n" +" starting with 55 whose ending " +"balance is positive." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"sum, min,\n" +" max, len,\n" +" avg : behave as " +"expected, very\n" +" similar to the python builtins." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.report_mis_report_instance +msgid "-" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields. This model is the data source for column Actuals." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "A date filter is mandatory for this source in column %s." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "A domain to additionally filter move lines considered in this column." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__analytic_domain +msgid "" +"A domain to additionally filter move lines considered in this report. " +"Caution: when using different move line sources in different columns, such " +"as budgets by account, make sure to use only fields that are available in " +"all move line sources." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__account_model +msgid "Account Model" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__accumulation_method +msgid "Accumulation Method" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Actual (alternative) models used in columns must have the same account model " +"in the Account field and must be the same defined in the report template: %s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals +msgid "Actuals" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals_alt +msgid "Actuals (alternative)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source +msgid "" +"Actuals: current data, from accounting and other queries.\n" +"Actuals (alternative): current data from an alternative source (eg a " +"database view providing look-alike account move lines).\n" +"Sum columns: summation (+/-) of other columns.\n" +"Compare to column: compare to other column.\n" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_prorata_read_group_mixin +msgid "Adapt model with date_from/date_to for pro-rata temporis read_group" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_add_to_dashboard_action +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Add to dashboard" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Additionally following variables are available\n" +" in the evaluation context:" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__aggregate +msgid "Aggregate" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__all +msgid "All Entries" +msgstr "Todos os lançamentos" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__all_kpi_ids +msgid "All Kpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__posted +msgid "All Posted Entries" +msgstr "Todos os lançamentos publicados" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__allowed_cmpcol_ids +msgid "Allowed Cmpcol" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_ids +msgid "Allowed companies" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_id +msgid "Allowed company" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__amount +msgid "Amount" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__style_expression +msgid "" +"An expression that returns a style depending on the KPI value. Such style is " +"applied on top of the row style." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__analytic_domain +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "Analytic Domain" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Auto expand" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__avg +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__avg +#, python-format +msgid "Average" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color +msgid "Background Color" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color_inherit +msgid "Background Color Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__background_color +msgid "Background color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date +msgid "Base date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__bold +msgid "Bold" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Cancel" +msgstr "Cancelar" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__multi_company +msgid "Check if you wish to specify several companies to be searched for data." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Color" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color_inherit +msgid "Color Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_to_sum_id +msgid "Column" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s cannot be compared to itrec." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s with move lines source must have from/to dates." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Columns" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "Columns %(descr)s and %(base_descr)s are not comparable" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Columns to compare must belong to the same report in %s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_ids +msgid "Columns to sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__query_company_ids +msgid "Companies for which data will be searched." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_to_id +msgid "Compare" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__cmpcol +msgid "Compare columns" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__compare_method +msgid "Comparison Method" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__comparison_mode +msgid "Comparison Mode" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_uid +msgid "Created by" +msgstr "Criado por" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_date +msgid "Created on" +msgstr "Criado em" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__currency_id +msgid "Currency" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__dashboard_id +msgid "Dashboard" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date +msgid "Date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__date_field +msgid "Date Field" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_from +msgid "Date From" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_range_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_id +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__date_range +#, python-format +msgid "Date Range" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_type_id +msgid "Date Range Type" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_to +msgid "Date To" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Dates" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__d +#, python-format +msgid "Day" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__description +msgid "Description" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__accumulation_method +msgid "" +"Determines how values of this kpi spanning over a time period are " +"transformed to match the reporting period. Sum: values of shorter period are " +"added, values of longest or partially overlapping periods are adjusted pro-" +"rata temporis.\n" +"Average: values of included period are averaged with a pro-rata temporis " +"weight." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__diff +#, python-format +msgid "Difference" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__no_auto_expand_accounts +msgid "Disable account details expansion" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display Columns Description" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__display_name +msgid "Display Name" +msgstr "Nome a exibir" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts +msgid "Display details by account" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display the date range details in the column headers." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider_inherit +msgid "Divider Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__domain +msgid "Domain" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp_inherit +msgid "Dp Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_prorata_read_group_mixin__date +msgid "" +"Dummy field that adapts searches on date to searches on date_from/date_to." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__duration +msgid "Duration" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__query_company_ids +msgid "Effective companies" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Enter expression here, for example balp[70%]. See also help tab." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"Error while querying move line source \"%(model_name)s\". This is likely due " +"to a filter or expression referencing a field that does not exist in the " +"model.\n" +"\n" +"The technical error message is: %(exception)s. " +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Examples:" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Export" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__expression_ids +msgid "Expression" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions can be any valid python expressions." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Expressions can involve other KPI, sub KPI and\n" +" query results by name (eg kpi1 + " +"kpi2,\n" +" kpi2.subkpi1, query1." +"field1)." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__normalize_factor +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider +msgid "Factor" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Factor inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__normalize_factor +msgid "Factor to use to normalize the period (used in comparison" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_names +msgid "Fetched fields name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_ids +msgid "Fields to fetch" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Filter box search view" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Filters" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__fix +msgid "Fixed dates" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Font" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size +msgid "Font Size" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size_inherit +msgid "Font Size Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style +msgid "Font Style" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style_inherit +msgid "Font Style Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight +msgid "Font Weight" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight_inherit +msgid "Font Weight Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Forces the start date to Jan 1st of the relevant year" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_from +msgid "From" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_from +msgid "From (computed)" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/report/mis_report_instance_xlsx.py:0 +#, python-format +msgid "Generated on %(gen_date)s at %(gen_time)s" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Help (for KPI expressions)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always +msgid "Hide Always" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always_inherit +msgid "Hide Always Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty +msgid "Hide Empty" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty_inherit +msgid "Hide Empty Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__id +msgid "ID" +msgstr "ID" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"If currency_id is not provided, all companies must have the same currency." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Indent" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level +msgid "Indent Level" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level_inherit +msgid "Indent Level Inherit" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "Indent level must be greater than or equal to 0" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__italic +msgid "Italic" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__kpi_expression_id +msgid "KPI" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" has type %(type)s while a tuple was expected.\n" +"\n" +"This can be fixed by either:\n" +"\t- Changing the KPI value to a tuple of length %(length)s\n" +"or\n" +"\t- Changing the KPI to `multi` mode and giving an explicit value for each " +"sub-KPI." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" is valued as a tuple of length %(length)s while a tuple of " +"length%(expected_length)s is expected." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq1 +msgid "KPI Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "KPI name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__kpi_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "KPI's" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__all_kpi_ids +msgid "KPIs of this report and subreports." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__kpi_id +msgid "Kpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__name +msgid "Label" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__landscape_pdf +msgid "Landscape PDF" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport____last_update +msgid "Last Modified on" +msgstr "Última Modificação em" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.last_mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.last_wizard_mis_report_instance_view_menu +msgid "Last Reports Generated" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_uid +msgid "Last Updated by" +msgstr "Última atualização por" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_date +msgid "Last Updated on" +msgstr "Última atualização em" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Layout" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_report_mis_builder_mis_report_instance_xlsx +msgid "MIS Builder XLSX report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_kpi_data +msgid "MIS Kpi Data Abtract class" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "MIS Report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subreport +msgid "MIS Report - Sub Reports Relation" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_add_mis_report_instance_dashboard_wizard +msgid "MIS Report Add to Dashboard Wizard" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "MIS Report Instance" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period +msgid "MIS Report Instance Period" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period_sum +msgid "MIS Report Instance Period Sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "MIS Report KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi_expression +msgid "MIS Report KPI Expression" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_result_view_form +msgid "MIS Report Preview" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_query +msgid "MIS Report Query" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_style +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "MIS Report Style" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_style_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_style_view_menu +msgid "MIS Report Styles" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subkpi +msgid "MIS Report Sub-KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report +msgid "MIS Report Template" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_view_menu +msgid "MIS Report Templates" +msgstr "" + +#. module: mis_builder +#: model:ir.ui.menu,name:mis_builder.mis_report_conf_menu +#: model:ir.ui.menu,name:mis_builder.mis_report_finance_menu +msgid "MIS Reporting" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_instance_view_menu +msgid "MIS Reports" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.qweb_pdf_export +msgid "MIS report instance QWEB PDF report" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.xls_export +msgid "MIS report instance XLS report" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__max +#, python-format +msgid "Max" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__min +#, python-format +msgid "Min" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__mode +msgid "Mode" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__model_id +msgid "Model" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__m +#, python-format +msgid "Month" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "Move Lines Source" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "Move lines source" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_name +msgid "Move lines source model name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__multi +msgid "Multi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__multi_company +msgid "Multiple companies" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__name +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Name" +msgstr "Nome" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__none +msgid "No date filter" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "No date filter is allowed for this source in column %s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__none +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__none +#, python-format +msgid "None" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__normal +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__nornal +msgid "Normal" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Number" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__duration +msgid "Number of periods" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__num +#, python-format +msgid "Numeric" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__offset +msgid "Offset" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__offset +msgid "Offset from current period" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_id +msgid "Parent column" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__pct +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__pct +#, python-format +msgid "Percentage" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_name_unique +msgid "Period name should be unique by report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__type +msgid "Period type" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__period_ids +msgid "Periods" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__pivot_date +msgid "Pivot Date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Please provide both columns to compare in %s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Please select a report template and/or save the report before adding columns." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix +msgid "Prefix" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix_inherit +msgid "Prefix Inherit" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Preview" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Print" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__query_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Queries" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Query name ({}) must be valid python identifier" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Refresh" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__relative +msgid "Relative to report base date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__report_id +msgid "Report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_instance_id +msgid "Report Instance" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__date +msgid "Report base date (leave empty to use current date)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp +msgid "Rounding" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Rounding inherit" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Save" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Search view to customize the filter box in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__company_ids +msgid "Select companies for which data will be searched." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__currency_id +msgid "" +"Select target currency for the report. Required if companies have different " +"currencies." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__sequence +msgid "Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Settings" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_subreport_unique +msgid "" +"Should not include the same report more than once as sub report of a given " +"report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show Pivot Date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show filters box" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show settings button" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show the Pivot Date in the report widget filter bar." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show the filter bar in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show the settings button in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__sign +msgid "Sign" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Source" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__str +#, python-format +msgid "String" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__style_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_id +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Style" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_expression +msgid "Style Expression" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts_style_id +msgid "Style for account detail rows" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__name +msgid "Style name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subkpi_ids +msgid "Sub KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__subkpi_ids +msgid "Sub KPI Filter" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_kpi_expression_subkpi_kpi_unique +msgid "Sub KPI must be used once and only once for each KPI" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub KPI's" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub Reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subreport_ids +msgid "Sub reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq2 +msgid "Sub-KPI Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Sub-KPI name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__subkpi_id +msgid "Subkpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__subreport_id +msgid "Subreport" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport loop detected" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_name_unique +msgid "Subreport name should be unique by report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix +msgid "Suffix" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix_inherit +msgid "Suffix Inherit" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__sum +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__sum +#, python-format +msgid "Sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_accdet +msgid "Sum account details" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "" +"Sum cannot be computed in column {} because the columns to sum have no " +"common subkpis" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__sumcol +msgid "Sum columns" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__target_move +msgid "Target Moves" +msgstr "Movimentos alvo" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +msgid "Template" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__temporary +msgid "Temporary" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color +msgid "Text color" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__color +msgid "Text color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The account selector is a like expression on the\n" +" account code (eg 70%, " +"etc), or a domain over accounts\n" +" (eg [('code', 'like', '60%')])." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The journal items domain is an Odoo domain filter on\n" +" journal items." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The following special elements are recognized in the expressions\n" +" to compute accounting data: {bal|" +"crd|deb|pbal|nbal}{pieu}[account\n" +" selector][journal items domain]." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_to +msgid "To" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_to +msgid "To (computed)" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_kpi_data.py:0 +#, python-format +msgid "Unexpected accumulation method %(method)s for %(name)s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Unexpected value %s for target_move." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/prorata_read_group_mixin.py:0 +#, python-format +msgid "Unsupported operator %s for searching on date" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.server,name:mis_builder.ir_cron_vacuum_temp_reports_ir_actions_server +#: model:ir.cron,cron_name:mis_builder.ir_cron_vacuum_temp_reports +msgid "Vacuum temporary reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__valid +msgid "Valid" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__type +msgid "Value type" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Visibility" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__w +#, python-format +msgid "Week" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Widget" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_duration +msgid "Wrong duration, it must be positive!" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_normalize_factor +msgid "Wrong normalize factor, it must be positive!" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__y +#, python-format +msgid "Year" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Year to date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "You cannot sum period %s with itself." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "from %(date_from)s to %(date_to)s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__large +msgid "large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__medium +msgid "medium" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "or" +msgstr "ou" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "pp" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__small +msgid "small" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_from_id +msgid "versus" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-large +msgid "x-large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-small +msgid "x-small" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-large +msgid "xx-large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-small +msgid "xx-small" +msgstr "" + +#~ msgid "Company" +#~ msgstr "Empresa" diff --git a/mis_builder/i18n/pt_BR.po b/mis_builder/i18n/pt_BR.po new file mode 100644 index 0000000..3b860f1 --- /dev/null +++ b/mis_builder/i18n/pt_BR.po @@ -0,0 +1,2179 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mis_builder +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-10-30 21:38+0000\n" +"Last-Translator: Adriano Prado \n" +"Language-Team: none\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "%s (copy)" +msgstr "%s (cópia)" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[('user_type_id', '=',\n" +" ref('account.\n" +" data_account_type_receivable')." +"id)][]\n" +" \n" +" : variation of the balance of all " +"receivable accounts over\n" +" the period." +msgstr "" +"\n" +" balp[('user_type_id', '=',\n" +" ref('account.\n" +" data_account_type_receivable')." +"id)][]\n" +" \n" +" : variação do saldo de todas as " +"contas a receber ao longo\n" +" do período." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[][('tax_line_id.tag_ids', " +"'=', ref('l10n_be.tax_tag_56').id)]\n" +" \n" +" : balance of move lines related to " +"tax grid 56." +msgstr "" +"\n" +" balp[][('tax_line_id.tag_ids', " +"'=', ref('l10n_be.tax_tag_56').id)]\n" +" \n" +" : saldo das linhas de movimento " +"relacionadas à grade tributária 56." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" debp[55%][('journal_id.code', " +"'=',\n" +" 'BNK1')]\n" +" \n" +" : sum of all debits on accounts 55 " +"and journal BNK1 during\n" +" the period." +msgstr "" +"\n" +" debp[55%][('journal_id.code', " +"'=',\n" +" 'BNK1')]\n" +" \n" +" : soma de todos os débitos nas " +"contas 55 e diário BNK1 durante\n" +" o período." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"AccountingNone : a null value that behaves as 0 in\n" +" arithmetic operations." +msgstr "" +"AccountingNone : um valor nulo que se comporta como 0 em\n" +" operações aritméticas." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal, crd, deb, \n" +" pbal, nbal : " +"balance, debit, credit,\n" +" positive balance, negative balance." +msgstr "" +"bal, crd, deb, \n" +" pbal, nbal : " +"saldo, débito, crédito,\n" +" saldo positivo, saldo negativo." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal[70] : variation of the balance of account 70 over\n" +" the period (it is the same as " +"balp[70]." +msgstr "" +"bal[70] : variação do saldo da conta 70 sobre\n" +" o período (é o mesmo que " +"balp[70]." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bale[1%] : balance of accounts starting with 1 at\n" +" end of period." +msgstr "" +"bale[1%] : saldo de contas começando com 1 no\n" +" final de período." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "bali[70,60] : initial balance of accounts 70 and 60." +msgstr "bali[70,60] : saldo inicial das contas 70 e 60." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"balu[] : (u for unallocated) is a special " +"expression\n" +" that shows the unallocated profit/" +"loss of previous fiscal\n" +" years." +msgstr "" +"balu[] : (u para não alocado) é uma expressão " +"especial\n" +" que mostra o lucro/prejuízo não " +"alocado do exercício fiscal dos\n" +" anos anteriores." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"crdp[40%] : sum of all credits on accounts starting\n" +" with 40 during the period." +msgstr "" +"crdp[40%] : soma de todos os créditos no período das contas " +"começando\n" +" com 40." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"date_from, date_to : beginning and end date of " +"the\n" +" period." +msgstr "" +"date_from, date_to : data inicial e final do\n" +" período." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"datetime, datetime, dateutil : the " +"python modules." +msgstr "" +"datetime, datetime, dateutil : os " +"módulos python." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"p, i, e : respectively variation over " +"the period,\n" +" initial balance, ending balance" +msgstr "" +"p, i, e : respectivamente variação ao " +"longo do período,\n" +" saldo inicial, saldo final" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"pbale[55%] : sum of all ending balances of accounts\n" +" starting with 55 whose ending " +"balance is positive." +msgstr "" +"pbale[55%] : soma de todos os saldos finais das contas\n" +" começando com 55 cujo saldo final é " +"positivo." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"sum, min,\n" +" max, len,\n" +" avg : behave as " +"expected, very\n" +" similar to the python builtins." +msgstr "" +"sum, min,\n" +" max, len,\n" +" avg : comportar-se como " +"esperado, muito\n" +" semelhante aos builtins python." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.report_mis_report_instance +msgid "-" +msgstr "-" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields." +msgstr "" +"Um modelo 'como a linha do movimento', ou seja, com ao menos os campos " +"debito, credito, data, account_id e company_id." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields. This model is the data source for column Actuals." +msgstr "" +"Um modelo 'como a linha do movimento', ou seja, com ao menos os campos " +"debito, credito, data, account_id e company_id. Este modelo é a fonte de " +"dados das coluna Reais." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "A date filter is mandatory for this source in column %s." +msgstr "Um filtro de data é obrigatório para esta fonte na coluna %s." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "A domain to additionally filter move lines considered in this column." +msgstr "" +"Um domínio para filtrar adicionalmente as linhas de movimento consideradas " +"nesta coluna." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__analytic_domain +msgid "" +"A domain to additionally filter move lines considered in this report. " +"Caution: when using different move line sources in different columns, such " +"as budgets by account, make sure to use only fields that are available in " +"all move line sources." +msgstr "" +"Um domínio para filtrar adicionalmente as linhas de movimentação " +"consideradas neste relatório. Cuidado: ao usar diferentes origens de linha " +"de movimentação em diferentes colunas, como orçamentos por conta, certifique-" +"se de usar apenas os campos disponíveis em todas as origens de linha de " +"movimentação." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__account_model +msgid "Account Model" +msgstr "Modelo de conta" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__accumulation_method +msgid "Accumulation Method" +msgstr "Método de Acumulação" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Actual (alternative) models used in columns must have the same account model " +"in the Account field and must be the same defined in the report template: %s" +msgstr "" +"Real (alternativo) modelos usados nas colunas devem possuir o mesmo modelo " +"de conta no campo Conta e devem ser o mesmo definido no modelo do relatório: " +"%s" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals +msgid "Actuals" +msgstr "Atuais" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals_alt +msgid "Actuals (alternative)" +msgstr "Atuais (alternativa)" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source +msgid "" +"Actuals: current data, from accounting and other queries.\n" +"Actuals (alternative): current data from an alternative source (eg a " +"database view providing look-alike account move lines).\n" +"Sum columns: summation (+/-) of other columns.\n" +"Compare to column: compare to other column.\n" +msgstr "" +"Dados reais: dados atuais, provenientes de contabilidade e outras " +"consultas.\n" +"Dados reais (alternativo): dados atuais de uma fonte alternativa (por " +"exemplo, uma visualização de banco de dados que fornece linhas de " +"movimentação de conta semelhantes).\n" +"Colunas de soma: soma (+/-) de outras colunas.\n" +"Compare com a coluna: compare com outra coluna.\n" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_prorata_read_group_mixin +msgid "Adapt model with date_from/date_to for pro-rata temporis read_group" +msgstr "" +"Adapte o modelo com date_from/date_to para read_group pro-rata temporis" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_add_to_dashboard_action +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Add to dashboard" +msgstr "Adicionar ao Painel" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Additionally following variables are available\n" +" in the evaluation context:" +msgstr "" +"Adicionalmente, as seguintes variáveis estão disponíveis\n" +" no contexto da avaliação:" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__aggregate +msgid "Aggregate" +msgstr "Agregar" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__all +msgid "All Entries" +msgstr "Todas as Entradas" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__all_kpi_ids +msgid "All Kpi" +msgstr "Todos os KPI" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__posted +msgid "All Posted Entries" +msgstr "Todas as Entradas Postadas" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__allowed_cmpcol_ids +msgid "Allowed Cmpcol" +msgstr "Cmpcol Permitida" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_ids +msgid "Allowed companies" +msgstr "Empresas permitidas" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_id +msgid "Allowed company" +msgstr "Empresa permitida" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__amount +msgid "Amount" +msgstr "Montante" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__style_expression +msgid "" +"An expression that returns a style depending on the KPI value. Such style is " +"applied on top of the row style." +msgstr "" +"Uma expressão que retorna um estilo dependendo do valor KPI. Esse estilo é " +"aplicado no topo do estilo da linha." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__analytic_domain +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "Analytic Domain" +msgstr "Domínio Analítico" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Auto expand" +msgstr "Expandir Automaticamente" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__avg +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__avg +#, python-format +msgid "Average" +msgstr "Média" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color +msgid "Background Color" +msgstr "Cor de Fundo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color_inherit +msgid "Background Color Inherit" +msgstr "Cor de Fundo Herdada" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__background_color +msgid "Background color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "Cor de fundo em código RGB válido (de #000000 a #FFFFFF)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date +msgid "Base date" +msgstr "Data base" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__bold +msgid "Bold" +msgstr "Negrito" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Cancel" +msgstr "Cancelar" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__multi_company +msgid "Check if you wish to specify several companies to be searched for data." +msgstr "" +"Marque se você desejar especificar várias empresas para serem buscadas por " +"dados." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Color" +msgstr "Cor" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color_inherit +msgid "Color Inherit" +msgstr "Cor Herdada" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_to_sum_id +msgid "Column" +msgstr "Coluna" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s cannot be compared to itrec." +msgstr "Coluna %s não pode ser comparada a itrec." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s with move lines source must have from/to dates." +msgstr "" +"Coluna %s com fonte nas linhas de lançamento devem ter datas inicial/final." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Columns" +msgstr "Colunas" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "Columns %(descr)s and %(base_descr)s are not comparable" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Columns to compare must belong to the same report in %s" +msgstr "Colunas para comparar devem pertencer ao mesmo relatório em %s" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_ids +msgid "Columns to sum" +msgstr "Colunas para somar" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__query_company_ids +msgid "Companies for which data will be searched." +msgstr "Empresas para as quais os dados serão pesquisados." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_to_id +msgid "Compare" +msgstr "Comparar" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__cmpcol +msgid "Compare columns" +msgstr "Comparar colunas" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__compare_method +msgid "Comparison Method" +msgstr "Método de Comparação" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__comparison_mode +msgid "Comparison Mode" +msgstr "Modo de Comparação" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_uid +msgid "Created by" +msgstr "Criado por" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_date +msgid "Created on" +msgstr "Criado em" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__currency_id +msgid "Currency" +msgstr "Moeda" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__dashboard_id +msgid "Dashboard" +msgstr "Painel" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date +msgid "Date" +msgstr "Data" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__date_field +msgid "Date Field" +msgstr "Campo de Data" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_from +msgid "Date From" +msgstr "Data Inicial" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_range_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_id +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__date_range +#, python-format +msgid "Date Range" +msgstr "Intervalo de Data" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_type_id +msgid "Date Range Type" +msgstr "Tipo de Intervalo de Data" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_to +msgid "Date To" +msgstr "Data Final" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Dates" +msgstr "Datas" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__d +#, python-format +msgid "Day" +msgstr "Dia" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__description +msgid "Description" +msgstr "Descrição" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__accumulation_method +msgid "" +"Determines how values of this kpi spanning over a time period are " +"transformed to match the reporting period. Sum: values of shorter period are " +"added, values of longest or partially overlapping periods are adjusted pro-" +"rata temporis.\n" +"Average: values of included period are averaged with a pro-rata temporis " +"weight." +msgstr "" +"Determina como os valores desse kpi abrangendo um período de tempo são " +"transformados para corresponder ao período do relatório. Soma: valores de " +"período mais curto são adicionados, valores de períodos mais longos ou " +"parcialmente sobrepostos são ajustados pro-rata temporis.\n" +"Média: os valores do período compreendido são ponderados com ponderação pro-" +"rata temporis." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__diff +#, python-format +msgid "Difference" +msgstr "Diferença" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__no_auto_expand_accounts +msgid "Disable account details expansion" +msgstr "Desabilitar expansão de detalhes de conta" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display Columns Description" +msgstr "Exibir Descrição de Colunas" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__display_name +msgid "Display Name" +msgstr "Exibir Nome" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts +msgid "Display details by account" +msgstr "Exibir detalhes por conta" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display the date range details in the column headers." +msgstr "Exibir os detalhes de intervalo de data nas colunas de cabeçalhos." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider_inherit +msgid "Divider Inherit" +msgstr "Divisor de Herança" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__domain +msgid "Domain" +msgstr "Domínio" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp_inherit +msgid "Dp Inherit" +msgstr "Herança Dp" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_prorata_read_group_mixin__date +msgid "" +"Dummy field that adapts searches on date to searches on date_from/date_to." +msgstr "" +"Campo fictício que adapta as buscas por data às buscas por date_from/date_to." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__duration +msgid "Duration" +msgstr "Duração" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__query_company_ids +msgid "Effective companies" +msgstr "Empresas efetivas" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Enter expression here, for example balp[70%]. See also help tab." +msgstr "" +"Digite a expressão aqui, por exemplo balp[70%]. Veja também a guia ajuda." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"Error while querying move line source \"%(model_name)s\". This is likely due " +"to a filter or expression referencing a field that does not exist in the " +"model.\n" +"\n" +"The technical error message is: %(exception)s. " +msgstr "" +"Erro ao consultar a origem da linha de movimento \"%(model_name)s\". Isso " +"provavelmente ocorre devido a um filtro ou expressão que faz referência a um " +"campo que não existe no modelo.\n" +"\n" +"A mensagem de erro técnico é: %(exception)s. " + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Examples:" +msgstr "Exemplos:" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Export" +msgstr "Exportar" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__expression_ids +msgid "Expression" +msgstr "Expressão" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions" +msgstr "Expressões" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions can be any valid python expressions." +msgstr "Expressões podem ser qualquer expressão python válida." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Expressions can involve other KPI, sub KPI and\n" +" query results by name (eg kpi1 + " +"kpi2,\n" +" kpi2.subkpi1, query1." +"field1)." +msgstr "" +"As expressões podem envolver outros KPI, sub KPI e\n" +" resultados da consulta por nome (por " +"exemplo, kpi1 + kpi2,\n" +" kpi2.subkpi1, query1." +"field1)." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__normalize_factor +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider +msgid "Factor" +msgstr "Fator" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Factor inherit" +msgstr "Fator herdado" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__normalize_factor +msgid "Factor to use to normalize the period (used in comparison" +msgstr "Fator para usar para normalizar o período (usado em comparação" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_names +msgid "Fetched fields name" +msgstr "Nome de campos buscados" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_ids +msgid "Fields to fetch" +msgstr "Campos para buscar" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Filter box search view" +msgstr "Visualização de pesquisa da caixa de filtro" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Filters" +msgstr "Filtros" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__fix +msgid "Fixed dates" +msgstr "Datas fixas" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Font" +msgstr "Fonte" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size +msgid "Font Size" +msgstr "Tamanho da Fonte" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size_inherit +msgid "Font Size Inherit" +msgstr "Tamanho da Fonte Herdada" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style +msgid "Font Style" +msgstr "Estilo da Fonte" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style_inherit +msgid "Font Style Inherit" +msgstr "Estilo da Fonte Herdada" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight +msgid "Font Weight" +msgstr "Espessura da Fonte" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight_inherit +msgid "Font Weight Inherit" +msgstr "Espessura da Fonte Herdada" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Forces the start date to Jan 1st of the relevant year" +msgstr "Force a data inicial para 1 Jan do respectivo ano" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_from +msgid "From" +msgstr "De" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_from +msgid "From (computed)" +msgstr "De (computado)" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/report/mis_report_instance_xlsx.py:0 +#, python-format +msgid "Generated on %(gen_date)s at %(gen_time)s" +msgstr "Gerado em %(gen_date)s às %(gen_time)s" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Help (for KPI expressions)" +msgstr "Ajuda (para expressões KPI)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always +msgid "Hide Always" +msgstr "Sempre Esconder" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always_inherit +msgid "Hide Always Inherit" +msgstr "Sempre Esconder Herdado" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty +msgid "Hide Empty" +msgstr "Esconder Vazio" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty_inherit +msgid "Hide Empty Inherit" +msgstr "Esconder Vazio Herdado" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__id +msgid "ID" +msgstr "ID" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"If currency_id is not provided, all companies must have the same currency." +msgstr "" +"Se id da moeda(currency_id) não é fornecido, todas as empresas devem possuir " +"a mesma moeda." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Indent" +msgstr "Endentação" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level +msgid "Indent Level" +msgstr "Nível de endentação" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level_inherit +msgid "Indent Level Inherit" +msgstr "Herança do Nível de Recuo" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "Indent level must be greater than or equal to 0" +msgstr "Nível de recuo deve ser maior ou igual a 0" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__italic +msgid "Italic" +msgstr "Itálico" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__kpi_expression_id +msgid "KPI" +msgstr "KPI" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" has type %(type)s while a tuple was expected.\n" +"\n" +"This can be fixed by either:\n" +"\t- Changing the KPI value to a tuple of length %(length)s\n" +"or\n" +"\t- Changing the KPI to `multi` mode and giving an explicit value for each " +"sub-KPI." +msgstr "" +"O KPI \"%(kpi)s\" tem o tipo %(type)s enquanto uma tupla era esperada.\n" +"\n" +"Isso pode ser corrigido por:\n" +"- Alterando o valor do KPI para uma tupla de comprimento %(length)s\n" +"ou\n" +"- Alterar o KPI para o modo `multi` e fornecer um valor explícito para cada " +"sub-KPI." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" is valued as a tuple of length %(length)s while a tuple of " +"length%(expected_length)s is expected." +msgstr "" +"O KPI \"%(kpi)s\" é avaliado como uma tupla de comprimento %(length)s " +"enquanto uma tupla de comprimento%(expected_length)s é esperada." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq1 +msgid "KPI Sequence" +msgstr "KPI sequencia" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "KPI name ({}) must be a valid python identifier" +msgstr "O nome do KPI ({}) deve ser um identificador python válido" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__kpi_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "KPI's" +msgstr "KPI's" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__all_kpi_ids +msgid "KPIs of this report and subreports." +msgstr "KPIs deste relatório e sub-relatórios." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__kpi_id +msgid "Kpi" +msgstr "Kpi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__name +msgid "Label" +msgstr "Rótulo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__landscape_pdf +msgid "Landscape PDF" +msgstr "PDF em modo paisagem" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport____last_update +msgid "Last Modified on" +msgstr "Última atualização em" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.last_mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.last_wizard_mis_report_instance_view_menu +msgid "Last Reports Generated" +msgstr "Últimos relatórios gerados" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_uid +msgid "Last Updated by" +msgstr "Última atualização por" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_date +msgid "Last Updated on" +msgstr "Última atualização em" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Layout" +msgstr "Layout" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_report_mis_builder_mis_report_instance_xlsx +msgid "MIS Builder XLSX report" +msgstr "Construtor de Relatório SIG XLSX" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_kpi_data +msgid "MIS Kpi Data Abtract class" +msgstr "Classe dados Abstratos SIG Kpi" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "MIS Report" +msgstr "Relatório SIG" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subreport +msgid "MIS Report - Sub Reports Relation" +msgstr "Relatório SIG - Relação de Sub-relatórios" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_add_mis_report_instance_dashboard_wizard +msgid "MIS Report Add to Dashboard Wizard" +msgstr "Assistente para Adicionar Relatório SIG ao Painel" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "MIS Report Instance" +msgstr "Instância de Relatório SIG" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period +msgid "MIS Report Instance Period" +msgstr "Período da Instância do Relatório SIG" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period_sum +msgid "MIS Report Instance Period Sum" +msgstr "Soma do Período da Instância do Relatório SIG" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "MIS Report KPI" +msgstr "Relatório KPI SIG" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi_expression +msgid "MIS Report KPI Expression" +msgstr "Expressão do KPI do Relatório SIG" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_result_view_form +msgid "MIS Report Preview" +msgstr "Visualização do Relatório SIG" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_query +msgid "MIS Report Query" +msgstr "Consulta do Relatório SIG" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_style +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "MIS Report Style" +msgstr "Estilo do Relatório SIG" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_style_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_style_view_menu +msgid "MIS Report Styles" +msgstr "Estilos do Relatório SIG" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subkpi +msgid "MIS Report Sub-KPI" +msgstr "Sub-KPI do Relatório SIG" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report +msgid "MIS Report Template" +msgstr "Modelo do Relatório SIG" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_view_menu +msgid "MIS Report Templates" +msgstr "Modelos do Relatório SIG" + +#. module: mis_builder +#: model:ir.ui.menu,name:mis_builder.mis_report_conf_menu +#: model:ir.ui.menu,name:mis_builder.mis_report_finance_menu +msgid "MIS Reporting" +msgstr "Relatórios SIG" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_instance_view_menu +msgid "MIS Reports" +msgstr "Relatórios SIG" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.qweb_pdf_export +msgid "MIS report instance QWEB PDF report" +msgstr "Instância de Relatório SIG QWEB PDF" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.xls_export +msgid "MIS report instance XLS report" +msgstr "Instância de Relatório SIG XLS" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__max +#, python-format +msgid "Max" +msgstr "Max" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__min +#, python-format +msgid "Min" +msgstr "Min" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__mode +msgid "Mode" +msgstr "Modo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__model_id +msgid "Model" +msgstr "Modelo" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__m +#, python-format +msgid "Month" +msgstr "Mês" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "Move Lines Source" +msgstr "Fonte das Linhas de Movimento" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "Move lines source" +msgstr "Fonte das Linhas de Movimento" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_name +msgid "Move lines source model name" +msgstr "Nome do modelo de origem das linhas de movimento" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__multi +msgid "Multi" +msgstr "Multi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__multi_company +msgid "Multiple companies" +msgstr "Múltiplas empresas" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__name +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Name" +msgstr "Nome" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__none +msgid "No date filter" +msgstr "Sem filtro de data" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "No date filter is allowed for this source in column %s." +msgstr "Nenhum filtro de data é permitido para esta fonte na coluna %s." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__none +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__none +#, python-format +msgid "None" +msgstr "Nada" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__normal +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__nornal +msgid "Normal" +msgstr "Normal" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Number" +msgstr "Número" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__duration +msgid "Number of periods" +msgstr "Número de períodos" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__num +#, python-format +msgid "Numeric" +msgstr "Numérico" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__offset +msgid "Offset" +msgstr "Deslocamento" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__offset +msgid "Offset from current period" +msgstr "Deslocamento a partir do período atual" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_id +msgid "Parent column" +msgstr "Coluna Superior" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__pct +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__pct +#, python-format +msgid "Percentage" +msgstr "Percentagem" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_name_unique +msgid "Period name should be unique by report" +msgstr "Nome do período deve ser único por relatório" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__type +msgid "Period type" +msgstr "Tipo do período" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__period_ids +msgid "Periods" +msgstr "Períodos" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__pivot_date +msgid "Pivot Date" +msgstr "Data Dinâmica" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Please provide both columns to compare in %s." +msgstr "Por favor forneça ambas as colunas para comparar em %s." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Please select a report template and/or save the report before adding columns." +msgstr "" +"Selecione um modelo de relatório e/ou salve o relatório antes de adicionar " +"colunas." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix +msgid "Prefix" +msgstr "Prefixo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix_inherit +msgid "Prefix Inherit" +msgstr "Herança de Prefixo" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Preview" +msgstr "Visualizar" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Print" +msgstr "Imprimir" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__query_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Queries" +msgstr "Consultas" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Query name ({}) must be valid python identifier" +msgstr "O nome da consulta ({}) deve ser um identificador python válido" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Refresh" +msgstr "Atualizar" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__relative +msgid "Relative to report base date" +msgstr "Relativo à data base do relatório" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__report_id +msgid "Report" +msgstr "Relatório" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_ir_actions_report +msgid "Report Action" +msgstr "Ação do Relatório" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_instance_id +msgid "Report Instance" +msgstr "Instância do Relatório" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__date +msgid "Report base date (leave empty to use current date)" +msgstr "Data Base do Relatório (deixar em branco para usar data atual)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp +msgid "Rounding" +msgstr "Arredondamento" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Rounding inherit" +msgstr "Herança de Arredondamento" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Save" +msgstr "Salvar" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Search view to customize the filter box in the report widget." +msgstr "" +"Exibição de pesquisa para personalizar a caixa de filtro no assistente de " +"relatório." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__company_ids +msgid "Select companies for which data will be searched." +msgstr "Selecione empresas para as quais os dados serão pesquisados." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__currency_id +msgid "" +"Select target currency for the report. Required if companies have different " +"currencies." +msgstr "" +"Selecione a moeda de destino para o relatório. Necessário se as empresas " +"tiverem moedas diferentes." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__sequence +msgid "Sequence" +msgstr "Sequência" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Settings" +msgstr "Configurações" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_subreport_unique +msgid "" +"Should not include the same report more than once as sub report of a given " +"report" +msgstr "" +"Não deve incluir o mesmo relatório mais de uma vez como sub-relatório de um " +"determinado relatório" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show Pivot Date" +msgstr "Exibir Data Dinâmica" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show filters box" +msgstr "Exibir caixa de filtros" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show settings button" +msgstr "Exibir botão de configurações" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show the Pivot Date in the report widget filter bar." +msgstr "Mostre a Data Dinâmica na barra de filtro do widget de relatório." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show the filter bar in the report widget." +msgstr "Mostre a barra de filtro no widget de relatório." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show the settings button in the report widget." +msgstr "Mostre o botão de configurações no widget de relatório." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__sign +msgid "Sign" +msgstr "Assinar" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Source" +msgstr "Fonte" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__str +#, python-format +msgid "String" +msgstr "Texto" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__style_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_id +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Style" +msgstr "Estilo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_expression +msgid "Style Expression" +msgstr "Expressão de estilo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts_style_id +msgid "Style for account detail rows" +msgstr "Estilo para linhas de detalhes da conta" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__name +msgid "Style name" +msgstr "Nome do estilo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subkpi_ids +msgid "Sub KPI" +msgstr "Sub KPI" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__subkpi_ids +msgid "Sub KPI Filter" +msgstr "Filtro do Sub KPI" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_kpi_expression_subkpi_kpi_unique +msgid "Sub KPI must be used once and only once for each KPI" +msgstr "O sub KPI deve ser usado uma vez e apenas uma vez para cada KPI" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub KPI's" +msgstr "Sub KPI's" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub Reports" +msgstr "Sub-Relatórios" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subreport_ids +msgid "Sub reports" +msgstr "Sub relatórios" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq2 +msgid "Sub-KPI Sequence" +msgstr "Sequência do Sub-KPI" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Sub-KPI name ({}) must be a valid python identifier" +msgstr "O nome do sub-KPI ({}) deve ser um identificador python válido" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__subkpi_id +msgid "Subkpi" +msgstr "Subkpi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__subreport_id +msgid "Subreport" +msgstr "Sub-relatório" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport loop detected" +msgstr "Loop de sub-relatório detectado" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport name ({}) must be a valid python identifier" +msgstr "O nome do sub-relatório ({}) deve ser um identificador python válido" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_name_unique +msgid "Subreport name should be unique by report" +msgstr "O nome do sub-relatório deve ser exclusivo por relatório" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix +msgid "Suffix" +msgstr "Sufixo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix_inherit +msgid "Suffix Inherit" +msgstr "Herança do Sufixo" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__sum +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__sum +#, python-format +msgid "Sum" +msgstr "Soma" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_accdet +msgid "Sum account details" +msgstr "Somar detalhes da conta" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "" +"Sum cannot be computed in column {} because the columns to sum have no " +"common subkpis" +msgstr "" +"A soma não pode ser calculada na coluna {} porque as colunas a serem somadas " +"não têm possuem subkpis comuns" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__sumcol +msgid "Sum columns" +msgstr "Somar colunas" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__target_move +msgid "Target Moves" +msgstr "Movimentos Alvo" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +msgid "Template" +msgstr "Modelo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__temporary +msgid "Temporary" +msgstr "Temporário" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color +msgid "Text color" +msgstr "Cor do texto" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__color +msgid "Text color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "Cor do texto em código RGB válido (de #000000 a #FFFFFF)" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The account selector is a like expression on the\n" +" account code (eg 70%, " +"etc), or a domain over accounts\n" +" (eg [('code', 'like', '60%')])." +msgstr "" +"O seletor de contas é uma expressão semelhante no\n" +" código da conta (por exemplo, " +"70%, etc) ou um domínio sobre contas\n" +" (ex. [('code', 'like', " +"'60%')])." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The journal items domain is an Odoo domain filter on\n" +" journal items." +msgstr "" +"O domínio de itens de diário é um filtro de domínio Odoo em\n" +" itens do diário." + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The following special elements are recognized in the expressions\n" +" to compute accounting data: {bal|" +"crd|deb|pbal|nbal}{pieu}[account\n" +" selector][journal items domain]." +msgstr "" +"Os seguintes elementos especiais são reconhecidos nas expressões\n" +" para computar dados contábeis: " +"{bal|crd|deb|pbal|nbal}{pieu}[account\n" +" selector][domínio de itens de diário]." + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_to +msgid "To" +msgstr "Para" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_to +msgid "To (computed)" +msgstr "Para (computado)" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_kpi_data.py:0 +#, python-format +msgid "Unexpected accumulation method %(method)s for %(name)s." +msgstr "Método de acúmulo inesperado %(method)s para %(name)s." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Unexpected value %s for target_move." +msgstr "Valor inesperado %s para target_move." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/prorata_read_group_mixin.py:0 +#, python-format +msgid "Unsupported operator %s for searching on date" +msgstr "Operador não suportado %s para pesquisar na data" + +#. module: mis_builder +#: model:ir.actions.server,name:mis_builder.ir_cron_vacuum_temp_reports_ir_actions_server +#: model:ir.cron,cron_name:mis_builder.ir_cron_vacuum_temp_reports +msgid "Vacuum temporary reports" +msgstr "Relatórios temporários de vácuo" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__valid +msgid "Valid" +msgstr "Válido" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__type +msgid "Value type" +msgstr "Tipo de valor" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Visibility" +msgstr "Visibilidade" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__w +#, python-format +msgid "Week" +msgstr "Semana" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Widget" +msgstr "Ferramenta" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_duration +msgid "Wrong duration, it must be positive!" +msgstr "Duração incorreta, deve ser positiva!" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_normalize_factor +msgid "Wrong normalize factor, it must be positive!" +msgstr "Fator de normalização incorreto, deve ser positivo!" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__y +#, python-format +msgid "Year" +msgstr "Ano" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Year to date" +msgstr "No acumulado do ano" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "You cannot sum period %s with itself." +msgstr "Você não pode somar o período %s com ele mesmo." + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "from %(date_from)s to %(date_to)s" +msgstr "de %(date_from)s a %(date_to)s" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__large +msgid "large" +msgstr "grande" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__medium +msgid "medium" +msgstr "médio" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "or" +msgstr "ou" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "pp" +msgstr "pp" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__small +msgid "small" +msgstr "pequeno" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_from_id +msgid "versus" +msgstr "versus" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-large +msgid "x-large" +msgstr "muito grande" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-small +msgid "x-small" +msgstr "muito pequeno" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-large +msgid "xx-large" +msgstr "grandíssimo" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-small +msgid "xx-small" +msgstr "extra-pequeno" + +#, python-format +#~ msgid "Columns %(descr)s and %(base_descr) are not comparable" +#~ msgstr "As colunas %(descr)s e %(base_descr) não são comparáveis" + +#, python-format +#~ msgid "Columns {} and {} are not comparable" +#~ msgstr "Colunas {} e {} não são comparáveis" + +#, python-format +#~ msgid "Generated on {} at {}" +#~ msgstr "Gerado em {} às {}" + +#, python-format +#~ msgid "" +#~ "KPI \"{}\" has type {} while a tuple was expected.\n" +#~ "\n" +#~ "This can be fixed by either:\n" +#~ "\t- Changing the KPI value to a tuple of length {}\n" +#~ "or\n" +#~ "\t- Changing the KPI to `multi` mode and giving an explicit value for " +#~ "each sub-KPI." +#~ msgstr "" +#~ "KPI \"{}\" possui o tipo {} enquanto uma tupla era o esperado.\n" +#~ "\n" +#~ "Isso pode ser corrigido assim:\n" +#~ "\t- Alterando o valor do KPI para uma tupla de comprimento {}\n" +#~ "ou\n" +#~ "\t- Alterando o KPI para modo `multi` e dando um valor explícito para " +#~ "cada sub-KPI." + +#, python-format +#~ msgid "" +#~ "KPI \"{}\" is valued as a tuple of length {} while a tuple of length {} " +#~ "is expected." +#~ msgstr "" +#~ "O KPI \"{}\" esta definido como uma tupla de comprimento {} enquanto uma " +#~ "tupla de comprimento {} era esperada." + +#, python-format +#~ msgid "Can not update a multi kpi from the kpi line" +#~ msgstr "Não é possível atualizar um multi kpi da linha kpi" + +#~ msgid "Account model" +#~ msgstr "Modelo de conta" + +#~ msgid "Analytic Account" +#~ msgstr "Conta Analítica" + +#, python-format +#~ msgid "Analytic Account Filter" +#~ msgstr "Filtro de Conta Analítica" + +#, python-format +#~ msgid "Analytic Account Group" +#~ msgstr "Grupo de Conta Analítica" + +#, python-format +#~ msgid "Analytic Account Group: %s" +#~ msgstr "Grupo de Conta Analítica: %s" + +#, python-format +#~ msgid "Analytic Account: %s" +#~ msgstr "Conta Analítica: %s" + +#~ msgid "Analytic Tags" +#~ msgstr "Marcador de Conta Analítica" + +#, python-format +#~ msgid "Analytic Tags Filter" +#~ msgstr "Filtro de Marcadores Analíticos" + +#, python-format +#~ msgid "Analytic Tags: %s" +#~ msgstr "Marcadores Analíticos: %s" + +#~ msgid "Hide Analytic Filters" +#~ msgstr "Esconder Filtros Analíticos" + +#~ msgid "MIS Report Instances" +#~ msgstr "Instâncias do Relatório SIG" + +#~ msgid "MIS Report Result" +#~ msgstr "Resultado do Relatório SIG" + +#~ msgid "Pivot date" +#~ msgstr "Data do Pivot" + +#~ msgid "Style expression" +#~ msgstr "Expressão de Estilo" + +#, python-format +#~ msgid "Unexpected accumulation method %s for %s." +#~ msgstr "Método de acumulação %s não esperado para %s." + +#, python-format +#~ msgid "from %s to %s" +#~ msgstr "de %s até %s" + +#~ msgid "" +#~ "Check if you wish to specify children companies to be searched for data." +#~ msgstr "" +#~ "Verifique se deseja especificar empresas filhas para serem pesquisadas " +#~ "por dados." + +#~ msgid "Companies" +#~ msgstr "Empresas" + +#~ msgid "Company" +#~ msgstr "Empresa" + +#~ msgid "Query Company" +#~ msgstr "Empresa de Consulta" + +#~ msgid "" +#~ "AccountingNone: a null value that behaves as 0 in arithmetic " +#~ "operations." +#~ msgstr "" +#~ "AccountingNone: um valor nulo que se comporta como 0 em operações " +#~ "aritméticas." + +#~ msgid "" +#~ "bal, crd, deb, pbal, nbal: balance, debit, credit, positive " +#~ "balance, negative balance." +#~ msgstr "" +#~ "bal, crd, deb, pbal, nbal: saldo, débito, crédito, balanço " +#~ "positivo, balanço negativo." + +#~ msgid "" +#~ "bal[70]: variation of the balance of account 70 over the period " +#~ "(it is the same as balp[70]." +#~ msgstr "" +#~ "bal[70]: variação do balanço da conta 70 ao longo do período (é o " +#~ "mesmo que balp [70]." + +#~ msgid "" +#~ "bale[1%]: balance of accounts starting with 1 at end of period." +#~ msgstr "" +#~ "bale[1%]: balanço de contas iniciando com 1 no final do período." + +#~ msgid "bali[70,60]: initial balance of accounts 70 and 60." +#~ msgstr "bali[70,60]: balanço inicial das contas 70 e 60." + +#~ msgid "" +#~ "balp[('user_type_id', '=', ref('account.data_account_type_receivable')." +#~ "id)][]: variation of the balance of all receivable accounts over the " +#~ "period." +#~ msgstr "" +#~ "balp[('user_type_id', '=', ref('account.data_account_type_receivable')." +#~ "id)][]: variação do balanço de todas as contas a receber durante o " +#~ "período." + +#~ msgid "" +#~ "balp[][('tax_line_id.tag_ids', '=', ref('l10n_be.tax_tag_56').id)]: balance of move lines related to tax grid 56." +#~ msgstr "" +#~ "balp[][('tax_line_id.tag_ids', '=', ref('l10n_be.tax_tag_56').id)]: saldo das linhas de movimento relacionadas ao imposto 56." + +#~ msgid "" +#~ "balu[]: (u for unallocated) is a special expression that shows the " +#~ "unallocated profit/loss of previous\n" +#~ " fiscal years." +#~ msgstr "" +#~ "balu[]: (u para não alocado) é uma expressão especial que exibe o " +#~ "lucro / perda não alocado de\n" +#~ " anos fiscais." + +#~ msgid "" +#~ "crdp[40%]: sum of all credits on accounts starting with 40 during " +#~ "the period." +#~ msgstr "" +#~ "crdp[40%]: soma de todos os créditos em contas iniciando com 40 " +#~ "durante o periodo." + +#~ msgid "date_from, date_to: beginning and end date of the period." +#~ msgstr "date_from, date_to: data inicial e final do período." + +#~ msgid "datetime, datetime, dateutil: the python modules." +#~ msgstr "datetime, datetime, dateutil: os módulos python." + +#~ msgid "" +#~ "debp[55%][('journal_id.code', '=', 'BNK1')]: sum of all debits on " +#~ "accounts 55 and journal BNK1 during the period." +#~ msgstr "" +#~ "debp[55%][('journal_id.code', '=', 'BNK1')]: soma de todos os " +#~ "débitos na conta 55 e diário BNK1 durante o período." + +#~ msgid "" +#~ "p, i, e: respectively variation over the period, initial balance, " +#~ "ending balance" +#~ msgstr "" +#~ "p, i, e: variação respectiva ao longo do período, balanço inicial, " +#~ "balanço final" + +#~ msgid "" +#~ "pbale[55%]: sum of all ending balances of accounts starting with " +#~ "55 whose\n" +#~ " ending balance is positive." +#~ msgstr "" +#~ "pbale[55%]: soma de todos os balanços finais de contas iniciando " +#~ "com 55 as quais\n" +#~ " o balanço final é positivo." + +#~ msgid "" +#~ "sum, min, max, len, avg: behave as expected, very similar to the " +#~ "python builtins." +#~ msgstr "" +#~ "sum, min, max, len, avg: comporta-se como o experado, muito " +#~ "similar aos builtins do python." + +#~ msgid "" +#~ "Additionally following variables are available in the evaluation context:" +#~ msgstr "" +#~ "Adicionalmente as seguintes variáveis estão disponíveis no contexto de " +#~ "avaliação:" + +#~ msgid "" +#~ "Expressions can involve other KPI, sub KPI and query results by name (eg " +#~ "kpi1 + kpi2, kpi2.subkpi1, query1.field1)." +#~ msgstr "" +#~ "Expressões podem envolver outros KPI, sub KPI e resultados de consultas " +#~ "por nome (ex: kpi1 + kpi2, kpi2.subkpi1, query1.field1)." + +#~ msgid "" +#~ "The account selector is a like expression on the account code (eg " +#~ "70%, etc)." +#~ msgstr "" +#~ "O seletor de conta é uma expressão semelhante no código da conta " +#~ "(ex 70%, etc)." + +#~ msgid "" +#~ "The journal items domain is an Odoo domain filter on journal items." +#~ msgstr "" +#~ "O domínio de itens do diário é um filtro de domínio do Odoo em " +#~ "itens de diário." + +#~ msgid "" +#~ "The following special elements are recognized in the expressions to " +#~ "compute accounting data:\n" +#~ " {bal|crd|deb|pbal|nbal}" +#~ "{pieu}[account selector][journal items domain]." +#~ msgstr "" +#~ "Os seguintes elementos especiais são reconhecidos na expressão para " +#~ "cálculo de dados da conta:\n" +#~ " {bal|crd|deb|pbal|nbal}" +#~ "{pieu}[account selector][journal items domain]." + +#~ msgid "MIS Budget" +#~ msgstr "Orçamento SIG" + +#~ msgid "report.mis_builder.mis_report_instance_xlsx" +#~ msgstr "report.mis_builder.mis_report_instance_xlsx" diff --git a/mis_builder/i18n/sv.po b/mis_builder/i18n/sv.po new file mode 100644 index 0000000..5840e10 --- /dev/null +++ b/mis_builder/i18n/sv.po @@ -0,0 +1,1798 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mis_builder +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-11-17 11:36+0000\n" +"Last-Translator: Simon S \n" +"Language-Team: none\n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3.2\n" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "%s (copy)" +msgstr "%s (kopia)" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[('user_type_id', '=',\n" +" ref('account.\n" +" data_account_type_receivable')." +"id)][]\n" +" \n" +" : variation of the balance of all " +"receivable accounts over\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[][('tax_line_id.tag_ids', " +"'=', ref('l10n_be.tax_tag_56').id)]\n" +" \n" +" : balance of move lines related to " +"tax grid 56." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" debp[55%][('journal_id.code', " +"'=',\n" +" 'BNK1')]\n" +" \n" +" : sum of all debits on accounts 55 " +"and journal BNK1 during\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"AccountingNone : a null value that behaves as 0 in\n" +" arithmetic operations." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal, crd, deb, \n" +" pbal, nbal : " +"balance, debit, credit,\n" +" positive balance, negative balance." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal[70] : variation of the balance of account 70 over\n" +" the period (it is the same as " +"balp[70]." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bale[1%] : balance of accounts starting with 1 at\n" +" end of period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "bali[70,60] : initial balance of accounts 70 and 60." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"balu[] : (u for unallocated) is a special " +"expression\n" +" that shows the unallocated profit/" +"loss of previous fiscal\n" +" years." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"crdp[40%] : sum of all credits on accounts starting\n" +" with 40 during the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"date_from, date_to : beginning and end date of " +"the\n" +" period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"datetime, datetime, dateutil : the " +"python modules." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"p, i, e : respectively variation over " +"the period,\n" +" initial balance, ending balance" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"pbale[55%] : sum of all ending balances of accounts\n" +" starting with 55 whose ending " +"balance is positive." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"sum, min,\n" +" max, len,\n" +" avg : behave as " +"expected, very\n" +" similar to the python builtins." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.report_mis_report_instance +msgid "-" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields. This model is the data source for column Actuals." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "A date filter is mandatory for this source in column %s." +msgstr "Ett datumfilter är obligatoriskt för denna källa i kolumn %s." + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "A domain to additionally filter move lines considered in this column." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__analytic_domain +msgid "" +"A domain to additionally filter move lines considered in this report. " +"Caution: when using different move line sources in different columns, such " +"as budgets by account, make sure to use only fields that are available in " +"all move line sources." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__account_model +msgid "Account Model" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__accumulation_method +msgid "Accumulation Method" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Actual (alternative) models used in columns must have the same account model " +"in the Account field and must be the same defined in the report template: %s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals +msgid "Actuals" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals_alt +msgid "Actuals (alternative)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source +msgid "" +"Actuals: current data, from accounting and other queries.\n" +"Actuals (alternative): current data from an alternative source (eg a " +"database view providing look-alike account move lines).\n" +"Sum columns: summation (+/-) of other columns.\n" +"Compare to column: compare to other column.\n" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_prorata_read_group_mixin +msgid "Adapt model with date_from/date_to for pro-rata temporis read_group" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_add_to_dashboard_action +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Add to dashboard" +msgstr "Lägg till på anslagstavlan" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Additionally following variables are available\n" +" in the evaluation context:" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__aggregate +msgid "Aggregate" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__all +msgid "All Entries" +msgstr "Alla poster" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__all_kpi_ids +msgid "All Kpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__posted +msgid "All Posted Entries" +msgstr "Alla bokförda poster" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__allowed_cmpcol_ids +msgid "Allowed Cmpcol" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_ids +msgid "Allowed companies" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_id +msgid "Allowed company" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__amount +msgid "Amount" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__style_expression +msgid "" +"An expression that returns a style depending on the KPI value. Such style is " +"applied on top of the row style." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__analytic_domain +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "Analytic Domain" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Auto expand" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__avg +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__avg +#, python-format +msgid "Average" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color +msgid "Background Color" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color_inherit +msgid "Background Color Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__background_color +msgid "Background color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date +msgid "Base date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__bold +msgid "Bold" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Cancel" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__multi_company +msgid "Check if you wish to specify several companies to be searched for data." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Color" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color_inherit +msgid "Color Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_to_sum_id +msgid "Column" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s cannot be compared to itrec." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s with move lines source must have from/to dates." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Columns" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "Columns %(descr)s and %(base_descr)s are not comparable" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Columns to compare must belong to the same report in %s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_ids +msgid "Columns to sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__query_company_ids +msgid "Companies for which data will be searched." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_to_id +msgid "Compare" +msgstr "Jämför" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__cmpcol +msgid "Compare columns" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__compare_method +msgid "Comparison Method" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__comparison_mode +msgid "Comparison Mode" +msgstr "Jämförelseläge" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_uid +msgid "Created by" +msgstr "Skapad av" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_date +msgid "Created on" +msgstr "Skapad den" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__currency_id +msgid "Currency" +msgstr "Valuta" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__dashboard_id +msgid "Dashboard" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date +msgid "Date" +msgstr "Datum" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__date_field +msgid "Date Field" +msgstr "Datumfält" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_from +msgid "Date From" +msgstr "Datum från" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_range_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_id +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__date_range +#, python-format +msgid "Date Range" +msgstr "Datumintervall" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_type_id +msgid "Date Range Type" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_to +msgid "Date To" +msgstr "Datum till" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Dates" +msgstr "Datum" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__d +#, python-format +msgid "Day" +msgstr "Dag" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__description +msgid "Description" +msgstr "Beskrivning" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__accumulation_method +msgid "" +"Determines how values of this kpi spanning over a time period are " +"transformed to match the reporting period. Sum: values of shorter period are " +"added, values of longest or partially overlapping periods are adjusted pro-" +"rata temporis.\n" +"Average: values of included period are averaged with a pro-rata temporis " +"weight." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__diff +#, python-format +msgid "Difference" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__no_auto_expand_accounts +msgid "Disable account details expansion" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display Columns Description" +msgstr "Visa kolumnbeskrivning" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__display_name +msgid "Display Name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts +msgid "Display details by account" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display the date range details in the column headers." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider_inherit +msgid "Divider Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__domain +msgid "Domain" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp_inherit +msgid "Dp Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_prorata_read_group_mixin__date +msgid "" +"Dummy field that adapts searches on date to searches on date_from/date_to." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__duration +msgid "Duration" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__query_company_ids +msgid "Effective companies" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Enter expression here, for example balp[70%]. See also help tab." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"Error while querying move line source \"%(model_name)s\". This is likely due " +"to a filter or expression referencing a field that does not exist in the " +"model.\n" +"\n" +"The technical error message is: %(exception)s. " +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Examples:" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Export" +msgstr "Exportera" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__expression_ids +msgid "Expression" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions can be any valid python expressions." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Expressions can involve other KPI, sub KPI and\n" +" query results by name (eg kpi1 + " +"kpi2,\n" +" kpi2.subkpi1, query1." +"field1)." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__normalize_factor +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider +msgid "Factor" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Factor inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__normalize_factor +msgid "Factor to use to normalize the period (used in comparison" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_names +msgid "Fetched fields name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_ids +msgid "Fields to fetch" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Filter box search view" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Filters" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__fix +msgid "Fixed dates" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Font" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size +msgid "Font Size" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size_inherit +msgid "Font Size Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style +msgid "Font Style" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style_inherit +msgid "Font Style Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight +msgid "Font Weight" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight_inherit +msgid "Font Weight Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Forces the start date to Jan 1st of the relevant year" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_from +msgid "From" +msgstr "Från" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_from +msgid "From (computed)" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/report/mis_report_instance_xlsx.py:0 +#, python-format +msgid "Generated on %(gen_date)s at %(gen_time)s" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Help (for KPI expressions)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always +msgid "Hide Always" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always_inherit +msgid "Hide Always Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty +msgid "Hide Empty" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty_inherit +msgid "Hide Empty Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__id +msgid "ID" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"If currency_id is not provided, all companies must have the same currency." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Indent" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level +msgid "Indent Level" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level_inherit +msgid "Indent Level Inherit" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "Indent level must be greater than or equal to 0" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__italic +msgid "Italic" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__kpi_expression_id +msgid "KPI" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" has type %(type)s while a tuple was expected.\n" +"\n" +"This can be fixed by either:\n" +"\t- Changing the KPI value to a tuple of length %(length)s\n" +"or\n" +"\t- Changing the KPI to `multi` mode and giving an explicit value for each " +"sub-KPI." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" is valued as a tuple of length %(length)s while a tuple of " +"length%(expected_length)s is expected." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq1 +msgid "KPI Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "KPI name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__kpi_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "KPI's" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__all_kpi_ids +msgid "KPIs of this report and subreports." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__kpi_id +msgid "Kpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__name +msgid "Label" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__landscape_pdf +msgid "Landscape PDF" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport____last_update +msgid "Last Modified on" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.last_mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.last_wizard_mis_report_instance_view_menu +msgid "Last Reports Generated" +msgstr "Senast genererade rapporter" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_date +msgid "Last Updated on" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Layout" +msgstr "Layout" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_report_mis_builder_mis_report_instance_xlsx +msgid "MIS Builder XLSX report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_kpi_data +msgid "MIS Kpi Data Abtract class" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "MIS Report" +msgstr "MIS-rapport" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subreport +msgid "MIS Report - Sub Reports Relation" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_add_mis_report_instance_dashboard_wizard +msgid "MIS Report Add to Dashboard Wizard" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "MIS Report Instance" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period +msgid "MIS Report Instance Period" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period_sum +msgid "MIS Report Instance Period Sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "MIS Report KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi_expression +msgid "MIS Report KPI Expression" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_result_view_form +msgid "MIS Report Preview" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_query +msgid "MIS Report Query" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_style +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "MIS Report Style" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_style_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_style_view_menu +msgid "MIS Report Styles" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subkpi +msgid "MIS Report Sub-KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report +msgid "MIS Report Template" +msgstr "Mall för MIS-rapport" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_view_menu +msgid "MIS Report Templates" +msgstr "Mallar för MIS-rapporter" + +#. module: mis_builder +#: model:ir.ui.menu,name:mis_builder.mis_report_conf_menu +#: model:ir.ui.menu,name:mis_builder.mis_report_finance_menu +msgid "MIS Reporting" +msgstr "MIS-rapportering" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_instance_view_menu +msgid "MIS Reports" +msgstr "MIS-rapporter" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.qweb_pdf_export +msgid "MIS report instance QWEB PDF report" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.xls_export +msgid "MIS report instance XLS report" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__max +#, python-format +msgid "Max" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__min +#, python-format +msgid "Min" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__mode +msgid "Mode" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__model_id +msgid "Model" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__m +#, python-format +msgid "Month" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "Move Lines Source" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "Move lines source" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_name +msgid "Move lines source model name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__multi +msgid "Multi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__multi_company +msgid "Multiple companies" +msgstr "Flera företag" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__name +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Name" +msgstr "Namn" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__none +msgid "No date filter" +msgstr "Inget datumfilter" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "No date filter is allowed for this source in column %s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__none +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__none +#, python-format +msgid "None" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__normal +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__nornal +msgid "Normal" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Number" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__duration +msgid "Number of periods" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__num +#, python-format +msgid "Numeric" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__offset +msgid "Offset" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__offset +msgid "Offset from current period" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_id +msgid "Parent column" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__pct +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__pct +#, python-format +msgid "Percentage" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_name_unique +msgid "Period name should be unique by report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__type +msgid "Period type" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__period_ids +msgid "Periods" +msgstr "Perioder" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__pivot_date +msgid "Pivot Date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Please provide both columns to compare in %s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Please select a report template and/or save the report before adding columns." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix +msgid "Prefix" +msgstr "Prefix" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix_inherit +msgid "Prefix Inherit" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Preview" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Print" +msgstr "Skriv ut" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__query_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Queries" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Query name ({}) must be valid python identifier" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Refresh" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__relative +msgid "Relative to report base date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__report_id +msgid "Report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_instance_id +msgid "Report Instance" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__date +msgid "Report base date (leave empty to use current date)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp +msgid "Rounding" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Rounding inherit" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Save" +msgstr "Spara" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Search view to customize the filter box in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__company_ids +msgid "Select companies for which data will be searched." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__currency_id +msgid "" +"Select target currency for the report. Required if companies have different " +"currencies." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__sequence +msgid "Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Settings" +msgstr "Inställningar" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_subreport_unique +msgid "" +"Should not include the same report more than once as sub report of a given " +"report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show Pivot Date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show filters box" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show settings button" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show the Pivot Date in the report widget filter bar." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show the filter bar in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show the settings button in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__sign +msgid "Sign" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Source" +msgstr "Källa" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__str +#, python-format +msgid "String" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__style_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_id +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Style" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_expression +msgid "Style Expression" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts_style_id +msgid "Style for account detail rows" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__name +msgid "Style name" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subkpi_ids +msgid "Sub KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__subkpi_ids +msgid "Sub KPI Filter" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_kpi_expression_subkpi_kpi_unique +msgid "Sub KPI must be used once and only once for each KPI" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub KPI's" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub Reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subreport_ids +msgid "Sub reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq2 +msgid "Sub-KPI Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Sub-KPI name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__subkpi_id +msgid "Subkpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__subreport_id +msgid "Subreport" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport loop detected" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_name_unique +msgid "Subreport name should be unique by report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix +msgid "Suffix" +msgstr "Suffix" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix_inherit +msgid "Suffix Inherit" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__sum +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__sum +#, python-format +msgid "Sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_accdet +msgid "Sum account details" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "" +"Sum cannot be computed in column {} because the columns to sum have no " +"common subkpis" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__sumcol +msgid "Sum columns" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__target_move +msgid "Target Moves" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +msgid "Template" +msgstr "Mall" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__temporary +msgid "Temporary" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color +msgid "Text color" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__color +msgid "Text color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The account selector is a like expression on the\n" +" account code (eg 70%, " +"etc), or a domain over accounts\n" +" (eg [('code', 'like', '60%')])." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The journal items domain is an Odoo domain filter on\n" +" journal items." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The following special elements are recognized in the expressions\n" +" to compute accounting data: {bal|" +"crd|deb|pbal|nbal}{pieu}[account\n" +" selector][journal items domain]." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_to +msgid "To" +msgstr "Till" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_to +msgid "To (computed)" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_kpi_data.py:0 +#, python-format +msgid "Unexpected accumulation method %(method)s for %(name)s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Unexpected value %s for target_move." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/prorata_read_group_mixin.py:0 +#, python-format +msgid "Unsupported operator %s for searching on date" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.server,name:mis_builder.ir_cron_vacuum_temp_reports_ir_actions_server +#: model:ir.cron,cron_name:mis_builder.ir_cron_vacuum_temp_reports +msgid "Vacuum temporary reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__valid +msgid "Valid" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__type +msgid "Value type" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Visibility" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__w +#, python-format +msgid "Week" +msgstr "Vecka" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Widget" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_duration +msgid "Wrong duration, it must be positive!" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_normalize_factor +msgid "Wrong normalize factor, it must be positive!" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__y +#, python-format +msgid "Year" +msgstr "År" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Year to date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "You cannot sum period %s with itself." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "from %(date_from)s to %(date_to)s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__large +msgid "large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__medium +msgid "medium" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "or" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "pp" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__small +msgid "small" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_from_id +msgid "versus" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-large +msgid "x-large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-small +msgid "x-small" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-large +msgid "xx-large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-small +msgid "xx-small" +msgstr "" + +#~ msgid "Analytic Account" +#~ msgstr "Objektkonto" + +#, python-format +#~ msgid "Analytic Account Group" +#~ msgstr "Objektkontogrupp" + +#~ msgid "Company" +#~ msgstr "Bolag" diff --git a/mis_builder/i18n/tr.po b/mis_builder/i18n/tr.po new file mode 100644 index 0000000..9de5ccc --- /dev/null +++ b/mis_builder/i18n/tr.po @@ -0,0 +1,1788 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mis_builder +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-10-09 09:12+0000\n" +"Last-Translator: Metin GÜLSOY \n" +"Language-Team: none\n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "%s (copy)" +msgstr "%s (Kopya)" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[('user_type_id', '=',\n" +" ref('account.\n" +" data_account_type_receivable')." +"id)][]\n" +" \n" +" : variation of the balance of all " +"receivable accounts over\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" balp[][('tax_line_id.tag_ids', " +"'=', ref('l10n_be.tax_tag_56').id)]\n" +" \n" +" : balance of move lines related to " +"tax grid 56." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"\n" +" debp[55%][('journal_id.code', " +"'=',\n" +" 'BNK1')]\n" +" \n" +" : sum of all debits on accounts 55 " +"and journal BNK1 during\n" +" the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"AccountingNone : a null value that behaves as 0 in\n" +" arithmetic operations." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal, crd, deb, \n" +" pbal, nbal : " +"balance, debit, credit,\n" +" positive balance, negative balance." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bal[70] : variation of the balance of account 70 over\n" +" the period (it is the same as " +"balp[70]." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"bale[1%] : balance of accounts starting with 1 at\n" +" end of period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "bali[70,60] : initial balance of accounts 70 and 60." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"balu[] : (u for unallocated) is a special " +"expression\n" +" that shows the unallocated profit/" +"loss of previous fiscal\n" +" years." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"crdp[40%] : sum of all credits on accounts starting\n" +" with 40 during the period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"date_from, date_to : beginning and end date of " +"the\n" +" period." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"datetime, datetime, dateutil : the " +"python modules." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"p, i, e : respectively variation over " +"the period,\n" +" initial balance, ending balance" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"pbale[55%] : sum of all ending balances of accounts\n" +" starting with 55 whose ending " +"balance is positive." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"sum, min,\n" +" max, len,\n" +" avg : behave as " +"expected, very\n" +" similar to the python builtins." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.report_mis_report_instance +msgid "-" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "" +"A 'move line like' model, ie having at least debit, credit, date, account_id " +"and company_id fields. This model is the data source for column Actuals." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "A date filter is mandatory for this source in column %s." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "A domain to additionally filter move lines considered in this column." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__analytic_domain +msgid "" +"A domain to additionally filter move lines considered in this report. " +"Caution: when using different move line sources in different columns, such " +"as budgets by account, make sure to use only fields that are available in " +"all move line sources." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__account_model +msgid "Account Model" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__accumulation_method +msgid "Accumulation Method" +msgstr "Birikim Yöntemi" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Actual (alternative) models used in columns must have the same account model " +"in the Account field and must be the same defined in the report template: %s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals +msgid "Actuals" +msgstr "Gerçek Değerler" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__actuals_alt +msgid "Actuals (alternative)" +msgstr "Gerçek değerler(alternatif)" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__source +msgid "" +"Actuals: current data, from accounting and other queries.\n" +"Actuals (alternative): current data from an alternative source (eg a " +"database view providing look-alike account move lines).\n" +"Sum columns: summation (+/-) of other columns.\n" +"Compare to column: compare to other column.\n" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_prorata_read_group_mixin +msgid "Adapt model with date_from/date_to for pro-rata temporis read_group" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_add_to_dashboard_action +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Add to dashboard" +msgstr "Kontrol Paneline Ekle" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Additionally following variables are available\n" +" in the evaluation context:" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__aggregate +msgid "Aggregate" +msgstr "Toplam" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__all +msgid "All Entries" +msgstr "Tüm Kayıtlar" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__all_kpi_ids +msgid "All Kpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance__target_move__posted +msgid "All Posted Entries" +msgstr "Tüm Onaylı Kayıtlar" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__allowed_cmpcol_ids +msgid "Allowed Cmpcol" +msgstr "İzin Verilmiş Şirketler" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_ids +msgid "Allowed companies" +msgstr "İzin Verilmiş Şirket" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__company_id +msgid "Allowed company" +msgstr "İzin Verilmiş Şirket" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__amount +msgid "Amount" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__style_expression +msgid "" +"An expression that returns a style depending on the KPI value. Such style is " +"applied on top of the row style." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__analytic_domain +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__analytic_domain +msgid "Analytic Domain" +msgstr "Analitik Etki Alanı(sorgu)" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Auto expand" +msgstr "Otomatik genişlet" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__avg +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__avg +#, python-format +msgid "Average" +msgstr "Ortalama" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color +msgid "Background Color" +msgstr "Arka Plan Rengi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__background_color_inherit +msgid "Background Color Inherit" +msgstr "Arka Plan Rengi Devralma" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__background_color +msgid "Background color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date +msgid "Base date" +msgstr "Temel tarih" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__bold +msgid "Bold" +msgstr "Kalın" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Cancel" +msgstr "iptal" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__multi_company +msgid "Check if you wish to specify several companies to be searched for data." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Color" +msgstr "Renk" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color_inherit +msgid "Color Inherit" +msgstr "Renk Devralma" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_to_sum_id +msgid "Column" +msgstr "Sütün" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s cannot be compared to itrec." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Column %s with move lines source must have from/to dates." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Columns" +msgstr "Sütünlar" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "Columns %(descr)s and %(base_descr)s are not comparable" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Columns to compare must belong to the same report in %s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_ids +msgid "Columns to sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__query_company_ids +msgid "Companies for which data will be searched." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_to_id +msgid "Compare" +msgstr "Karşılaştır" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__cmpcol +msgid "Compare columns" +msgstr "Sütunları Karşılaştır" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__compare_method +msgid "Comparison Method" +msgstr "Karşılaştırma Yöntemi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__comparison_mode +msgid "Comparison Mode" +msgstr "Karşılaştırma Modu" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_uid +msgid "Created by" +msgstr "Oluşturan" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__create_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__create_date +msgid "Created on" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__currency_id +msgid "Currency" +msgstr "Para Birimi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__dashboard_id +msgid "Dashboard" +msgstr "Pano" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date +msgid "Date" +msgstr "Tarih" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__date_field +msgid "Date Field" +msgstr "Tarih Alanı" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_from +msgid "Date From" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_range_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_id +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__date_range +#, python-format +msgid "Date Range" +msgstr "Dönem" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_range_type_id +msgid "Date Range Type" +msgstr "Dönem Türü" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_prorata_read_group_mixin__date_to +msgid "Date To" +msgstr "Başlangıç" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Dates" +msgstr "Tarihler" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__d +#, python-format +msgid "Day" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__description +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__description +msgid "Description" +msgstr "Açıklama" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_kpi__accumulation_method +msgid "" +"Determines how values of this kpi spanning over a time period are " +"transformed to match the reporting period. Sum: values of shorter period are " +"added, values of longest or partially overlapping periods are adjusted pro-" +"rata temporis.\n" +"Average: values of included period are averaged with a pro-rata temporis " +"weight." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__diff +#, python-format +msgid "Difference" +msgstr "Fark" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__no_auto_expand_accounts +msgid "Disable account details expansion" +msgstr "Hesap ayrıntılarını genişletmeyi devre dışı bırak" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display Columns Description" +msgstr "Sütun Açıklamalarını Görüntüle" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__display_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__display_name +msgid "Display Name" +msgstr "Görünen Ad" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts +msgid "Display details by account" +msgstr "Ayrıntıları hesaba göre göster" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__display_columns_description +msgid "Display the date range details in the column headers." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider_inherit +msgid "Divider Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__domain +msgid "Domain" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp_inherit +msgid "Dp Inherit" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_prorata_read_group_mixin__date +msgid "" +"Dummy field that adapts searches on date to searches on date_from/date_to." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__duration +msgid "Duration" +msgstr "Süre" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__query_company_ids +msgid "Effective companies" +msgstr "Etkili Şirketler" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Enter expression here, for example balp[70%]. See also help tab." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"Error while querying move line source \"%(model_name)s\". This is likely due " +"to a filter or expression referencing a field that does not exist in the " +"model.\n" +"\n" +"The technical error message is: %(exception)s. " +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Examples:" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Export" +msgstr "Dışarı Aktar" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__expression_ids +msgid "Expression" +msgstr "İfade" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__expression_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions" +msgstr "İfadeler" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Expressions can be any valid python expressions." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"Expressions can involve other KPI, sub KPI and\n" +" query results by name (eg kpi1 + " +"kpi2,\n" +" kpi2.subkpi1, query1." +"field1)." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__normalize_factor +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__divider +msgid "Factor" +msgstr "Faktör" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Factor inherit" +msgstr "Faktör devralma" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__normalize_factor +msgid "Factor to use to normalize the period (used in comparison" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_names +msgid "Fetched fields name" +msgstr "Getirilen alanların adı" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__field_ids +msgid "Fields to fetch" +msgstr "Getirilen alanlar" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Filter box search view" +msgstr "Filtre kutusu arama görünümü" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Filters" +msgstr "Filtreler" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__fix +msgid "Fixed dates" +msgstr "Sabit tarih" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Font" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size +msgid "Font Size" +msgstr "Font Boyutu" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_size_inherit +msgid "Font Size Inherit" +msgstr "Font Boyutu Devralma" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style +msgid "Font Style" +msgstr "Font Stil" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_style_inherit +msgid "Font Style Inherit" +msgstr "Font Stil Devralma" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight +msgid "Font Weight" +msgstr "Font Kalınlığı" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__font_weight_inherit +msgid "Font Weight Inherit" +msgstr "Yazı Kalınlığı Devralma" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Forces the start date to Jan 1st of the relevant year" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_from +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_from +msgid "From" +msgstr "Başlangıç" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_from +msgid "From (computed)" +msgstr "Başlangıç(Hesaplanmış)" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/report/mis_report_instance_xlsx.py:0 +#, python-format +msgid "Generated on %(gen_date)s at %(gen_time)s" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "Help (for KPI expressions)" +msgstr "Yardım(KPI ifadesi için)" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always +msgid "Hide Always" +msgstr "Her Zaman Gizle" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_always_inherit +msgid "Hide Always Inherit" +msgstr "Her Zaman Devralmayı Gizle" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty +msgid "Hide Empty" +msgstr "Boşları Gizle" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__hide_empty_inherit +msgid "Hide Empty Inherit" +msgstr "Boş Devralmayı Gizle" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__id +msgid "ID" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/aep.py:0 +#, python-format +msgid "" +"If currency_id is not provided, all companies must have the same currency." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Indent" +msgstr "Girinti" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level +msgid "Indent Level" +msgstr "Girinti Düzeyi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__indent_level_inherit +msgid "Indent Level Inherit" +msgstr "Girinti Düzeyi Devralma" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "Indent level must be greater than or equal to 0" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__italic +msgid "Italic" +msgstr "Eğik" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__kpi_expression_id +msgid "KPI" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" has type %(type)s while a tuple was expected.\n" +"\n" +"This can be fixed by either:\n" +"\t- Changing the KPI value to a tuple of length %(length)s\n" +"or\n" +"\t- Changing the KPI to `multi` mode and giving an explicit value for each " +"sub-KPI." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "" +"KPI \"%(kpi)s\" is valued as a tuple of length %(length)s while a tuple of " +"length%(expected_length)s is expected." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq1 +msgid "KPI Sequence" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "KPI name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__kpi_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "KPI's" +msgstr "KPI'lar" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report__all_kpi_ids +msgid "KPIs of this report and subreports." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__kpi_id +msgid "Kpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__name +msgid "Label" +msgstr "Etiket" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__landscape_pdf +msgid "Landscape PDF" +msgstr "Yatay PDF" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi____last_update +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport____last_update +msgid "Last Modified on" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.last_mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.last_wizard_mis_report_instance_view_menu +msgid "Last Reports Generated" +msgstr "Son Oluşturulan Raporlar" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_uid +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__write_date +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__write_date +msgid "Last Updated on" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Layout" +msgstr "Düzen" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_report_mis_builder_mis_report_instance_xlsx +msgid "MIS Builder XLSX report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_kpi_data +msgid "MIS Kpi Data Abtract class" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "MIS Report" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subreport +msgid "MIS Report - Sub Reports Relation" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_add_mis_report_instance_dashboard_wizard +msgid "MIS Report Add to Dashboard Wizard" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "MIS Report Instance" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period +msgid "MIS Report Instance Period" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_instance_period_sum +msgid "MIS Report Instance Period Sum" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "MIS Report KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_kpi_expression +msgid "MIS Report KPI Expression" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_result_view_form +msgid "MIS Report Preview" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_query +msgid "MIS Report Query" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_style +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "MIS Report Style" +msgstr "Mali Rapor Stili" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_style_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_style_view_menu +msgid "MIS Report Styles" +msgstr "Mali Rapor Stilleri" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report_subkpi +msgid "MIS Report Sub-KPI" +msgstr "" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_mis_report +msgid "MIS Report Template" +msgstr "Mali Rapor Şablonu" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_view_menu +msgid "MIS Report Templates" +msgstr "Mali Rapor Şablonları" + +#. module: mis_builder +#: model:ir.ui.menu,name:mis_builder.mis_report_conf_menu +#: model:ir.ui.menu,name:mis_builder.mis_report_finance_menu +msgid "MIS Reporting" +msgstr "Mali Raporlama" + +#. module: mis_builder +#: model:ir.actions.act_window,name:mis_builder.mis_report_instance_view_action +#: model:ir.ui.menu,name:mis_builder.mis_report_instance_view_menu +msgid "MIS Reports" +msgstr "Mali Raporlar" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.qweb_pdf_export +msgid "MIS report instance QWEB PDF report" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.report,name:mis_builder.xls_export +msgid "MIS report instance XLS report" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__max +#, python-format +msgid "Max" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__min +#, python-format +msgid "Min" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__mode +msgid "Mode" +msgstr "Şekil" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__model_id +msgid "Model" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__m +#, python-format +msgid "Month" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__move_lines_source +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__source_aml_model_id +msgid "Move Lines Source" +msgstr "Yevmiye Kalemleri Kaynağı" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_id +msgid "Move lines source" +msgstr "Yevmiye kalemleri kaynağı" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_aml_model_name +msgid "Move lines source model name" +msgstr "Yevmiye Kalemleri Kaynağı Model Adı" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__multi +msgid "Multi" +msgstr "Çoklu" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__multi_company +msgid "Multiple companies" +msgstr "Çoklu şirketler" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_add_mis_report_instance_dashboard_wizard__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__name +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__name +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Name" +msgstr "Adı" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__none +msgid "No date filter" +msgstr "Tarih filtresi yok" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "No date filter is allowed for this source in column %s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__none +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__none +#, python-format +msgid "None" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_style__normal +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_weight__nornal +msgid "Normal" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Number" +msgstr "Numara" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__duration +msgid "Number of periods" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__num +#, python-format +msgid "Numeric" +msgstr "Sayısal" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__offset +msgid "Offset" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__offset +msgid "Offset from current period" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__period_id +msgid "Parent column" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__compare_method__pct +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__pct +#, python-format +msgid "Percentage" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_name_unique +msgid "Period name should be unique by report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__type +msgid "Period type" +msgstr "Dönem Tipi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__period_ids +msgid "Periods" +msgstr "Dönemler" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__pivot_date +msgid "Pivot Date" +msgstr "Pivot Tarih" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "Please provide both columns to compare in %s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "" +"Please select a report template and/or save the report before adding columns." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix +msgid "Prefix" +msgstr "Önek" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__prefix_inherit +msgid "Prefix Inherit" +msgstr "Önek Devralma" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Preview" +msgstr "Önizleme" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +#, python-format +msgid "Print" +msgstr "Yazdır" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__query_ids +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Queries" +msgstr "Sorgular" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Query name ({}) must be valid python identifier" +msgstr "" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Refresh" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__mode__relative +msgid "Relative to report base date" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_query__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__report_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__report_id +msgid "Report" +msgstr "Rapor" + +#. module: mis_builder +#: model:ir.model,name:mis_builder.model_ir_actions_report +msgid "Report Action" +msgstr "Rapor İşlemi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__report_instance_id +msgid "Report Instance" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__date +msgid "Report base date (leave empty to use current date)" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__dp +msgid "Rounding" +msgstr "Yuvarlama" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Rounding inherit" +msgstr "Yuvarlama Devralma" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "Save" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_search_view_id +msgid "Search view to customize the filter box in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__company_ids +msgid "Select companies for which data will be searched." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__currency_id +msgid "" +"Select target currency for the report. Required if companies have different " +"currencies." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__sequence +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subkpi__sequence +msgid "Sequence" +msgstr "Sıra" + +#. module: mis_builder +#. odoo-javascript +#: code:addons/mis_builder/static/src/components/mis_report_widget.xml:0 +#, python-format +msgid "Settings" +msgstr "Ayarlar" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_subreport_unique +msgid "" +"Should not include the same report more than once as sub report of a given " +"report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show Pivot Date" +msgstr "Pivot Tarih Göster" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show filters box" +msgstr "Filtre kutusu göster" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show settings button" +msgstr "Ayarlar düğmesini göster" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_pivot_date +msgid "Show the Pivot Date in the report widget filter bar." +msgstr "Rapor widgetı filtre çubuğunda pivot tarihini göster" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_filters +msgid "Show the filter bar in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_instance__widget_show_settings_button +msgid "Show the settings button in the report widget." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period_sum__sign +msgid "Sign" +msgstr "İmza" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_period_view_form +msgid "Source" +msgstr "Kaynak" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__type__str +#, python-format +msgid "String" +msgstr "Dizi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__style_id +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_id +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Style" +msgstr "Stil" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__style_expression +msgid "Style Expression" +msgstr "Stil İfadesi" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__auto_expand_accounts_style_id +msgid "Style for account detail rows" +msgstr "Hesap ayrıntı satırları için stil" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__name +msgid "Style name" +msgstr "Stil adı" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subkpi_ids +msgid "Sub KPI" +msgstr "Alt KPI" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__subkpi_ids +msgid "Sub KPI Filter" +msgstr "Alt KPI'lar" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_kpi_expression_subkpi_kpi_unique +msgid "Sub KPI must be used once and only once for each KPI" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub KPI's" +msgstr "Alt KPI'lar" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_form +msgid "Sub Reports" +msgstr "Alt Raporlar" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report__subreport_ids +msgid "Sub reports" +msgstr "Alt raporlar" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__seq2 +msgid "Sub-KPI Sequence" +msgstr "Alt Raporlar Sırası" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Sub-KPI name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi_expression__subkpi_id +msgid "Subkpi" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_subreport__subreport_id +msgid "Subreport" +msgstr "Alt Rapor" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport loop detected" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_subreport.py:0 +#, python-format +msgid "Subreport name ({}) must be a valid python identifier" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_subreport_name_unique +msgid "Subreport name should be unique by report" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix +msgid "Suffix" +msgstr "Sonek" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__suffix_inherit +msgid "Suffix Inherit" +msgstr "Sonek Devralma" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_kpi__accumulation_method__sum +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_query__aggregate__sum +#, python-format +msgid "Sum" +msgstr "Toplam" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_sumcol_accdet +msgid "Sum account details" +msgstr "Hesap ayrıntılarını topla" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/kpimatrix.py:0 +#, python-format +msgid "" +"Sum cannot be computed in column {} because the columns to sum have no " +"common subkpis" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__source__sumcol +msgid "Sum columns" +msgstr "Sütunlar" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__target_move +msgid "Target Moves" +msgstr "Hedef Kayıtlar" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_tree +msgid "Template" +msgstr "Şablon" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__temporary +msgid "Temporary" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_style__color +msgid "Text color" +msgstr "Metin rengi" + +#. module: mis_builder +#: model:ir.model.fields,help:mis_builder.field_mis_report_style__color +msgid "Text color in valid RGB code (from #000000 to #FFFFFF)" +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The account selector is a like expression on the\n" +" account code (eg 70%, " +"etc), or a domain over accounts\n" +" (eg [('code', 'like', '60%')])." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The journal items domain is an Odoo domain filter on\n" +" journal items." +msgstr "" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form +msgid "" +"The following special elements are recognized in the expressions\n" +" to compute accounting data: {bal|" +"crd|deb|pbal|nbal}{pieu}[account\n" +" selector][journal items domain]." +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__date_to +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__manual_date_to +msgid "To" +msgstr "Bitiş" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__date_to +msgid "To (computed)" +msgstr "Bitiş(hesaplanmış)" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_kpi_data.py:0 +#, python-format +msgid "Unexpected accumulation method %(method)s for %(name)s." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report.py:0 +#, python-format +msgid "Unexpected value %s for target_move." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/prorata_read_group_mixin.py:0 +#, python-format +msgid "Unsupported operator %s for searching on date" +msgstr "" + +#. module: mis_builder +#: model:ir.actions.server,name:mis_builder.ir_cron_vacuum_temp_reports_ir_actions_server +#: model:ir.cron,cron_name:mis_builder.ir_cron_vacuum_temp_reports +msgid "Vacuum temporary reports" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__valid +msgid "Valid" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_kpi__type +msgid "Value type" +msgstr "Değer türü" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_style_view_form +msgid "Visibility" +msgstr "Görünürlük" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__w +#, python-format +msgid "Week" +msgstr "Hafta" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_view_form +msgid "Widget" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_duration +msgid "Wrong duration, it must be positive!" +msgstr "" + +#. module: mis_builder +#: model:ir.model.constraint,message:mis_builder.constraint_mis_report_instance_period_normalize_factor +msgid "Wrong normalize factor, it must be positive!" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_instance_period__type__y +#, python-format +msgid "Year" +msgstr "Yıl" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__is_ytd +msgid "Year to date" +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "You cannot sum period %s with itself." +msgstr "" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_instance.py:0 +#, python-format +msgid "from %(date_from)s to %(date_to)s" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__large +msgid "large" +msgstr "büyük" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__medium +msgid "medium" +msgstr "orta" + +#. module: mis_builder +#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_instance_add_to_dashboard_form_view +#: model_terms:ir.ui.view,arch_db:mis_builder.wizard_mis_report_instance_view_form +msgid "or" +msgstr "ve" + +#. module: mis_builder +#. odoo-python +#: code:addons/mis_builder/models/mis_report_style.py:0 +#, python-format +msgid "pp" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__small +msgid "small" +msgstr "küçük" + +#. module: mis_builder +#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__source_cmpcol_from_id +msgid "versus" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-large +msgid "x-large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__x-small +msgid "x-small" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-large +msgid "xx-large" +msgstr "" + +#. module: mis_builder +#: model:ir.model.fields.selection,name:mis_builder.selection__mis_report_style__font_size__xx-small +msgid "xx-small" +msgstr "" diff --git a/mis_builder/migrations/16.0.5.0.0/end-migrate.py b/mis_builder/migrations/16.0.5.0.0/end-migrate.py new file mode 100644 index 0000000..a6ee1a2 --- /dev/null +++ b/mis_builder/migrations/16.0.5.0.0/end-migrate.py @@ -0,0 +1,10 @@ +# Copyright 2023 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import flectra +from flectra import api + + +def migrate(cr, installed_version): + env = api.Environment(cr, flectra.SUPERUSER_ID, {}) + env["mis.report.instance.period"].search([])._compute_source_aml_model_id() diff --git a/mis_builder/migrations/8.0.2.0.0/post-migration.py b/mis_builder/migrations/8.0.2.0.0/post-migration.py new file mode 100644 index 0000000..421bb33 --- /dev/null +++ b/mis_builder/migrations/8.0.2.0.0/post-migration.py @@ -0,0 +1,29 @@ +# Copyright 2017 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + + +def migrate(cr, version): + cr.execute( + """ + INSERT INTO mis_report_kpi_expression + (create_uid, create_date, write_uid, write_date, + kpi_id, name, sequence) + SELECT create_uid, create_date, write_uid, write_date, + id, old_expression, sequence + FROM mis_report_kpi + """ + ) + cr.execute( + """ + ALTER TABLE mis_report_kpi + DROP COLUMN old_expression + """ + ) + # set default mode to relative for existing periods + # as it was the only mode in previous versions + cr.execute( + """ + UPDATE mis_report_instance_period + SET mode='relative' + """ + ) diff --git a/mis_builder/migrations/8.0.2.0.0/pre-migration.py b/mis_builder/migrations/8.0.2.0.0/pre-migration.py new file mode 100644 index 0000000..83fc4b5 --- /dev/null +++ b/mis_builder/migrations/8.0.2.0.0/pre-migration.py @@ -0,0 +1,20 @@ +# Copyright 2017 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + + +def migrate(cr, version): + cr.execute( + """ + ALTER TABLE mis_report_kpi + RENAME COLUMN expression TO old_expression + """ + ) + # this migration to date_range type is partial, + # actual date ranges needs to be created manually + cr.execute( + """ + UPDATE mis_report_instance_period + SET type='date_range' + WHERE type='fp' + """ + ) diff --git a/mis_builder/models/__init__.py b/mis_builder/models/__init__.py new file mode 100644 index 0000000..af7bfa7 --- /dev/null +++ b/mis_builder/models/__init__.py @@ -0,0 +1,10 @@ +# Copyright 2014 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import mis_report +from . import mis_report_subreport +from . import mis_report_instance +from . import mis_report_style +from . import aep +from . import mis_kpi_data +from . import prorata_read_group_mixin diff --git a/mis_builder/models/accounting_none.py b/mis_builder/models/accounting_none.py new file mode 100644 index 0000000..9372306 --- /dev/null +++ b/mis_builder/models/accounting_none.py @@ -0,0 +1,215 @@ +# Copyright 2016 Thomas Binsfeld +# Copyright 2016 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +""" +Provides the AccountingNone singleton. + +AccountingNone is a null value that dissolves in basic arithmetic operations, +as illustrated in the examples below. In comparisons, AccountingNone behaves +the same as zero. + +>>> 1 + 1 +2 +>>> 1 + AccountingNone +1 +>>> AccountingNone + 1 +1 +>>> AccountingNone + None +AccountingNone +>>> None + AccountingNone +AccountingNone +>>> +AccountingNone +AccountingNone +>>> -AccountingNone +AccountingNone +>>> -(AccountingNone) +AccountingNone +>>> AccountingNone - 1 +-1 +>>> 1 - AccountingNone +1 +>>> abs(AccountingNone) +AccountingNone +>>> AccountingNone - None +AccountingNone +>>> None - AccountingNone +AccountingNone +>>> AccountingNone / 2 +0.0 +>>> 2 / AccountingNone +Traceback (most recent call last): + ... +ZeroDivisionError +>>> AccountingNone / AccountingNone +AccountingNone +>>> AccountingNone // 2 +0.0 +>>> 2 // AccountingNone +Traceback (most recent call last): + ... +ZeroDivisionError +>>> AccountingNone // AccountingNone +AccountingNone +>>> AccountingNone * 2 +0.0 +>>> 2 * AccountingNone +0.0 +>>> AccountingNone * AccountingNone +AccountingNone +>>> AccountingNone * None +AccountingNone +>>> None * AccountingNone +AccountingNone +>>> str(AccountingNone) +'' +>>> bool(AccountingNone) +False +>>> AccountingNone > 0 +False +>>> AccountingNone < 0 +False +>>> AccountingNone < 1 +True +>>> AccountingNone > 1 +False +>>> 0 < AccountingNone +False +>>> 0 > AccountingNone +False +>>> 1 < AccountingNone +False +>>> 1 > AccountingNone +True +>>> AccountingNone == 0 +True +>>> AccountingNone == 0.0 +True +>>> AccountingNone == None +True +>>> AccountingNone >= AccountingNone +True +>>> AccountingNone <= AccountingNone +True +>>> round(AccountingNone, 2) +0.0 +>>> float(AccountingNone) +0.0 +>>> int(AccountingNone) +0 +""" + +__all__ = ["AccountingNone"] + + +class AccountingNoneType: + def __add__(self, other): + if other is None: + return AccountingNone + return other + + __radd__ = __add__ + + def __sub__(self, other): + if other is None: + return AccountingNone + return -other + + def __rsub__(self, other): + if other is None: + return AccountingNone + return other + + def __iadd__(self, other): + if other is None: + return AccountingNone + return other + + def __isub__(self, other): + if other is None: + return AccountingNone + return -other + + def __abs__(self): + return self + + def __pos__(self): + return self + + def __neg__(self): + return self + + def __div__(self, other): + if other is AccountingNone: + return AccountingNone + return 0.0 + + def __rdiv__(self, other): + raise ZeroDivisionError + + def __floordiv__(self, other): + if other is AccountingNone: + return AccountingNone + return 0.0 + + def __rfloordiv__(self, other): + raise ZeroDivisionError + + def __truediv__(self, other): + if other is AccountingNone: + return AccountingNone + return 0.0 + + def __rtruediv__(self, other): + raise ZeroDivisionError + + def __mul__(self, other): + if other is None or other is AccountingNone: + return AccountingNone + return 0.0 + + __rmul__ = __mul__ + + def __repr__(self): + return "AccountingNone" + + def __str__(self): + return "" + + def __nonzero__(self): + return False + + def __bool__(self): + return False + + def __eq__(self, other): + return other == 0 or other is None or other is AccountingNone + + def __lt__(self, other): + return other > 0 + + def __gt__(self, other): + return other < 0 + + def __le__(self, other): + return other >= 0 + + def __ge__(self, other): + return other <= 0 + + def __float__(self): + return 0.0 + + def __int__(self): + return 0 + + def __round__(self, ndigits): + return 0.0 + + +AccountingNone = AccountingNoneType() + + +if __name__ == "__main__": # pragma: no cover + import doctest + + doctest.testmod() diff --git a/mis_builder/models/aep.py b/mis_builder/models/aep.py new file mode 100644 index 0000000..ba8e97a --- /dev/null +++ b/mis_builder/models/aep.py @@ -0,0 +1,546 @@ +# Copyright 2014 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import logging +import re +from collections import defaultdict + +from flectra import _, fields +from flectra.exceptions import UserError +from flectra.models import expression +from flectra.tools.float_utils import float_is_zero +from flectra.tools.safe_eval import datetime, dateutil, safe_eval, time + +from .accounting_none import AccountingNone + +_logger = logging.getLogger(__name__) + +_DOMAIN_START_RE = re.compile(r"\(|(['\"])[!&|]\1") + + +def _is_domain(s): + """Test if a string looks like an Flectra domain""" + return _DOMAIN_START_RE.match(s) + + +class AccountingExpressionProcessor: + """Processor for accounting expressions. + + Expressions of the form [accounts][optional move line domain] + are supported, where: + * field is bal, crd, deb, pbal (positive balances only), + nbal (negative balance only) + * mode is i (initial balance), e (ending balance), + p (moves over period) + * there is also a special u mode (unallocated P&L) which computes + the sum from the beginning until the beginning of the fiscal year + of the period; it is only meaningful for P&L accounts + * accounts is a list of accounts, possibly containing % wildcards, + or a domain expression on account.account + * 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 and company_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. + """ + + MODE_VARIATION = "p" + MODE_INITIAL = "i" + MODE_END = "e" + MODE_UNALLOCATED = "u" + + _ACC_RE = re.compile( + r"(?P\bbal|\bpbal|\bnbal|\bcrd|\bdeb)" + r"(?P[piseu])?" + r"\s*" + r"(?P_[a-zA-Z0-9]+|\[.*?\])" + r"\s*" + r"(?P\[.*?\])?" + ) + + def __init__(self, companies, currency=None, account_model="account.account"): + self.env = companies.env + self.companies = companies + if not currency: + self.currency = companies.mapped("currency_id") + if len(self.currency) > 1: + raise UserError( + _( + "If currency_id is not provided, " + "all companies must have the same currency." + ) + ) + else: + self.currency = currency + self.dp = self.currency.decimal_places + # before done_parsing: {(ml_domain, mode): set(acc_domain)} + # after done_parsing: {(ml_domain, mode): list(account_ids)} + self._map_account_ids = defaultdict(set) + # {account_domain: set(account_ids)} + self._account_ids_by_acc_domain = defaultdict(set) + # smart ending balance (returns AccountingNone if there + # are no moves in period and 0 initial balance), implies + # a first query to get the initial balance and another + # to get the variation, so it's a bit slower + self.smart_end = True + # Account model + self._account_model = self.env[account_model].with_context(active_test=False) + + def _account_codes_to_domain(self, account_codes): + """Convert a comma separated list of account codes + (possibly with wildcards) to a domain on account.account. + """ + elems = [] + for account_code in account_codes.split(","): + account_code = account_code.strip() + if "%" in account_code: + elems.append([("code", "=like", account_code)]) + else: + elems.append([("code", "=", account_code)]) + return tuple(expression.OR(elems)) + + def _parse_match_object(self, mo): + """Split a match object corresponding to an accounting variable + + Returns field, mode, account domain, move line domain. + """ + domain_eval_context = { + "ref": self.env.ref, + "user": self.env.user, + "time": time, + "datetime": datetime, + "dateutil": dateutil, + } + field, mode, account_sel, ml_domain = mo.groups() + # handle some legacy modes + if not mode: + mode = self.MODE_VARIATION + elif mode == "s": + mode = self.MODE_END + # convert account selector to account domain + if account_sel.startswith("_"): + # legacy bal_NNN% + acc_domain = self._account_codes_to_domain(account_sel[1:]) + else: + assert account_sel[0] == "[" and account_sel[-1] == "]" + inner_account_sel = account_sel[1:-1].strip() + if not inner_account_sel: + # empty selector: select all accounts + acc_domain = tuple() + elif _is_domain(inner_account_sel): + # account selector is a domain + acc_domain = tuple(safe_eval(account_sel, domain_eval_context)) + else: + # account selector is a list of account codes + acc_domain = self._account_codes_to_domain(inner_account_sel) + # move line domain + if ml_domain: + assert ml_domain[0] == "[" and ml_domain[-1] == "]" + ml_domain = tuple(safe_eval(ml_domain, domain_eval_context)) + else: + ml_domain = tuple() + return field, mode, acc_domain, ml_domain + + def parse_expr(self, expr): + """Parse an expression, extracting accounting variables. + + Move line domains and account selectors are extracted and + stored in the map so when all expressions have been parsed, + we know which account domains to query for each move line domain + and mode. + """ + for mo in self._ACC_RE.finditer(expr): + _, mode, acc_domain, ml_domain = self._parse_match_object(mo) + if mode == self.MODE_END and self.smart_end: + modes = (self.MODE_INITIAL, self.MODE_VARIATION, self.MODE_END) + else: + modes = (mode,) + for mode in modes: + key = (ml_domain, mode) + self._map_account_ids[key].add(acc_domain) + + def done_parsing(self): + """Replace account domains by account ids in map""" + for key, acc_domains in self._map_account_ids.items(): + all_account_ids = set() + for acc_domain in acc_domains: + acc_domain_with_company = expression.AND( + [acc_domain, [("company_id", "in", self.companies.ids)]] + ) + account_ids = self._account_model.search(acc_domain_with_company).ids + self._account_ids_by_acc_domain[acc_domain].update(account_ids) + all_account_ids.update(account_ids) + self._map_account_ids[key] = list(all_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_account_ids_for_expr(self, expr): + """Get a set of account ids that are involved in an expression. + + Prerequisite: done_parsing() must have been invoked. + """ + account_ids = set() + for mo in self._ACC_RE.finditer(expr): + field, mode, acc_domain, ml_domain = self._parse_match_object(mo) + account_ids.update(self._account_ids_by_acc_domain[acc_domain]) + return account_ids + + def get_aml_domain_for_expr(self, expr, date_from, date_to, account_id=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, acc_domain, ml_domain = self._parse_match_object(mo) + aml_domain = list(ml_domain) + account_ids = set() + account_ids.update(self._account_ids_by_acc_domain[acc_domain]) + if not account_id: + aml_domain.append(("account_id", "in", tuple(account_ids))) + else: + # filter on account_id + if account_id in account_ids: + aml_domain.append(("account_id", "=", account_id)) + else: + continue + if field == "crd": + aml_domain.append(("credit", "<>", 0.0)) + elif field == "deb": + aml_domain.append(("debit", "<>", 0.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( + date_from, date_to, mode + ) + assert aml_domains + # TODO we could do this for more precision: + # AND(OR(aml_domains[mode]), date_domain[mode]) for each mode + return expression.OR(aml_domains) + expression.OR(date_domain_by_mode.values()) + + def get_aml_domain_for_dates(self, date_from, date_to, mode): + if mode == self.MODE_VARIATION: + domain = [("date", ">=", date_from), ("date", "<=", date_to)] + elif mode in (self.MODE_INITIAL, self.MODE_END): + # for income and expense account, sum from the beginning + # of the current fiscal year only, for balance sheet accounts + # sum from the beginning of time + date_from_date = fields.Date.from_string(date_from) + # TODO this takes the fy from the first company + # make that user controllable (nice to have)? + fy_date_from = self.companies[0].compute_fiscalyear_dates(date_from_date)[ + "date_from" + ] + domain = [ + "|", + ("date", ">=", fields.Date.to_string(fy_date_from)), + ("account_id.include_initial_balance", "=", True), + ] + if mode == self.MODE_INITIAL: + domain.append(("date", "<", date_from)) + elif mode == self.MODE_END: + domain.append(("date", "<=", date_to)) + elif mode == self.MODE_UNALLOCATED: + date_from_date = fields.Date.from_string(date_from) + # TODO this takes the fy from the first company + # make that user controllable (nice to have)? + fy_date_from = self.companies[0].compute_fiscalyear_dates(date_from_date)[ + "date_from" + ] + domain = [ + ("date", "<", fields.Date.to_string(fy_date_from)), + ("account_id.include_initial_balance", "=", False), + ] + return expression.normalize_domain(domain) + + def _get_company_rates(self, date): + # get exchange rates for each company with its rouding + company_rates = {} + target_rate = self.currency.with_context(date=date).rate + for company in self.companies: + if company.currency_id != self.currency: + rate = target_rate / company.currency_id.with_context(date=date).rate + else: + rate = 1.0 + company_rates[company.id] = (rate, company.currency_id.decimal_places) + return company_rates + + def do_queries( + self, + date_from, + date_to, + additional_move_line_filter=None, + aml_model=None, + ): + """Query sums of debit and credit for all accounts and domains + used in expressions. + + This method must be executed after done_parsing(). + """ + if not aml_model: + aml_model = self.env["account.move.line"] + else: + aml_model = self.env[aml_model] + aml_model = aml_model.with_context(active_test=False) + company_rates = self._get_company_rates(date_to) + # {(domain, mode): {account_id: (debit, credit)}} + self._data = defaultdict(dict) + domain_by_mode = {} + ends = [] + for key in self._map_account_ids: + domain, mode = key + if mode == self.MODE_END and self.smart_end: + # postpone computation of ending balance + ends.append((domain, mode)) + continue + if mode not in domain_by_mode: + domain_by_mode[mode] = self.get_aml_domain_for_dates( + date_from, date_to, mode + ) + 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 + _logger.debug("read_group domain: %s", domain) + try: + accs = aml_model.read_group( + domain, + ["debit", "credit", "account_id", "company_id"], + ["account_id", "company_id"], + lazy=False, + ) + except ValueError as e: + raise UserError( + _( + 'Error while querying move line source "%(model_name)s". ' + "This is likely due to a filter or expression referencing " + "a field that does not exist in the model.\n\n" + "The technical error message is: %(exception)s. " + ) + % dict( + model_name=aml_model._description, + exception=e, + ) + ) from e + for acc in accs: + rate, dp = company_rates[acc["company_id"][0]] + debit = acc["debit"] or 0.0 + credit = acc["credit"] or 0.0 + if mode in (self.MODE_INITIAL, self.MODE_UNALLOCATED) and float_is_zero( + debit - credit, precision_digits=self.dp + ): + # in initial mode, ignore accounts with 0 balance + continue + self._data[key][acc["account_id"][0]] = (debit * rate, credit * rate) + # compute ending balances by summing initial and variation + for key in ends: + domain, mode = key + initial_data = self._data[(domain, self.MODE_INITIAL)] + variation_data = self._data[(domain, self.MODE_VARIATION)] + account_ids = set(initial_data.keys()) | set(variation_data.keys()) + for account_id in account_ids: + di, ci = initial_data.get(account_id, (AccountingNone, AccountingNone)) + dv, cv = variation_data.get( + account_id, (AccountingNone, AccountingNone) + ) + self._data[key][account_id] = (di + dv, ci + cv) + + 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, acc_domain, ml_domain = self._parse_match_object(mo) + key = (ml_domain, mode) + account_ids_data = self._data[key] + v = AccountingNone + account_ids = self._account_ids_by_acc_domain[acc_domain] + for account_id in account_ids: + debit, credit = account_ids_data.get( + account_id, (AccountingNone, AccountingNone) + ) + if field == "bal": + v += debit - credit + elif field == "pbal" and debit >= credit: + v += debit - credit + elif field == "nbal" and debit < credit: + v += debit - credit + elif field == "deb": + v += debit + elif field == "crd": + v += credit + # in initial balance mode, assume 0 is None + # as it does not make sense to distinguish 0 from "no data" + if ( + v is not AccountingNone + and mode in (self.MODE_INITIAL, self.MODE_UNALLOCATED) + and float_is_zero(v, precision_digits=self.dp) + ): + v = AccountingNone + return "(" + repr(v) + ")" + + return self._ACC_RE.sub(f, expr) + + def replace_exprs_by_account_id(self, exprs): + """Replace accounting variables in a list of expression + by their amount, iterating by accounts involved in the expression. + + yields account_id, replaced_expr + + This method must be executed after do_queries(). + """ + + def f(mo): + field, mode, acc_domain, ml_domain = self._parse_match_object(mo) + key = (ml_domain, mode) + # first check if account_id is involved in + # the current expression part + if account_id not in self._account_ids_by_acc_domain[acc_domain]: + return "(AccountingNone)" + # here we know account_id is involved in acc_domain + account_ids_data = self._data[key] + debit, credit = account_ids_data.get( + account_id, (AccountingNone, AccountingNone) + ) + if field == "bal": + v = debit - credit + elif field == "pbal": + if debit >= credit: + v = debit - credit + else: + v = AccountingNone + elif field == "nbal": + if debit < credit: + v = debit - credit + else: + v = AccountingNone + elif field == "deb": + v = debit + elif field == "crd": + v = credit + # in initial balance mode, assume 0 is None + # as it does not make sense to distinguish 0 from "no data" + if ( + v is not AccountingNone + and mode in (self.MODE_INITIAL, self.MODE_UNALLOCATED) + and float_is_zero(v, precision_digits=self.dp) + ): + v = AccountingNone + return "(" + repr(v) + ")" + + account_ids = set() + for expr in exprs: + for mo in self._ACC_RE.finditer(expr): + field, mode, acc_domain, ml_domain = self._parse_match_object(mo) + key = (ml_domain, mode) + account_ids_data = self._data[key] + for account_id in self._account_ids_by_acc_domain[acc_domain]: + if account_id in account_ids_data: + account_ids.add(account_id) + + for account_id in account_ids: + yield account_id, [self._ACC_RE.sub(f, expr) for expr in exprs] + + @classmethod + def _get_balances(cls, mode, companies, date_from, date_to): + expr = f"deb{mode}[], crd{mode}[]" + aep = AccountingExpressionProcessor(companies) + # disable smart_end to have the data at once, instead + # of initial + variation + aep.smart_end = False + aep.parse_expr(expr) + aep.done_parsing() + aep.do_queries(date_from, date_to) + return aep._data[((), mode)] + + @classmethod + def get_balances_initial(cls, companies, date): + """A convenience method to obtain the initial balances of all accounts + at a given date. + + It is the same as get_balances_end(date-1). + + :param companies: + :param date: + + Returns a dictionary: {account_id, (debit, credit)} + """ + return cls._get_balances(cls.MODE_INITIAL, companies, date, date) + + @classmethod + def get_balances_end(cls, companies, date): + """A convenience method to obtain the ending balances of all accounts + at a given date. + + It is the same as get_balances_initial(date+1). + + :param companies: + :param date: + + Returns a dictionary: {account_id, (debit, credit)} + """ + return cls._get_balances(cls.MODE_END, companies, date, date) + + @classmethod + def get_balances_variation(cls, companies, date_from, date_to): + """A convenience method to obtain the variation of the + balances of all accounts over a period. + + :param companies: + :param date: + + Returns a dictionary: {account_id, (debit, credit)} + """ + return cls._get_balances(cls.MODE_VARIATION, companies, date_from, date_to) + + @classmethod + def get_unallocated_pl(cls, companies, date): + """A convenience method to obtain the unallocated profit/loss + of the previous fiscal years at a given date. + + :param companies: + :param date: + + Returns a tuple (debit, credit) + """ + # TODO shoud we include here the accounts of type "unaffected" + # or leave that to the caller? + bals = cls._get_balances(cls.MODE_UNALLOCATED, companies, date, date) + return tuple(map(sum, zip(*bals.values(), strict=True))) diff --git a/mis_builder/models/aggregate.py b/mis_builder/models/aggregate.py new file mode 100644 index 0000000..32e34bd --- /dev/null +++ b/mis_builder/models/aggregate.py @@ -0,0 +1,129 @@ +# Copyright 2014 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + + +def _sum(lst): + """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 lst: + return None + return sum(lst) + + +def _avg(lst): + """Arithmetic mean of a sequence. Returns None in case of empty sequence. + + >>> _avg([1]) + 1.0 + >>> _avg([1, 2]) + 1.5 + >>> _avg([]) + """ + if not lst: + return None + return sum(lst) / float(len(lst)) + + +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__": # pragma: no cover + import doctest + + doctest.testmod() diff --git a/mis_builder/models/data_error.py b/mis_builder/models/data_error.py new file mode 100644 index 0000000..400ad39 --- /dev/null +++ b/mis_builder/models/data_error.py @@ -0,0 +1,17 @@ +# Copyright 2016 ACSONE SA/NV () +# Copyright 2016 Akretion () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + + +class DataError(Exception): + def __init__(self, name, msg): + super().__init__() + self.name = name + self.msg = msg + + def __repr__(self): + return f"{self.__class__.__name__}({repr(self.name)})" + + +class NameDataError(DataError): + pass diff --git a/mis_builder/models/expression_evaluator.py b/mis_builder/models/expression_evaluator.py new file mode 100644 index 0000000..309bfc2 --- /dev/null +++ b/mis_builder/models/expression_evaluator.py @@ -0,0 +1,68 @@ +# Copyright 2020 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from .mis_safe_eval import NameDataError, mis_safe_eval + + +class ExpressionEvaluator: + def __init__( + self, + aep, + date_from, + date_to, + additional_move_line_filter=None, + aml_model=None, + ): + self.aep = aep + self.date_from = date_from + self.date_to = date_to + self.additional_move_line_filter = additional_move_line_filter + self.aml_model = aml_model + self._aep_queries_done = False + + def aep_do_queries(self): + if self.aep and not self._aep_queries_done: + self.aep.do_queries( + self.date_from, + self.date_to, + self.additional_move_line_filter, + self.aml_model, + ) + self._aep_queries_done = True + + def eval_expressions(self, expressions, locals_dict): + vals = [] + drilldown_args = [] + name_error = False + for expression in expressions: + expr = expression and expression.name or "AccountingNone" + if self.aep: + replaced_expr = self.aep.replace_expr(expr) + else: + replaced_expr = expr + val = mis_safe_eval(replaced_expr, locals_dict) + vals.append(val) + if isinstance(val, NameDataError): + name_error = True + if replaced_expr != expr: + drilldown_args.append({"expr": expr}) + else: + drilldown_args.append(None) + return vals, drilldown_args, name_error + + def eval_expressions_by_account(self, expressions, locals_dict): + if not self.aep: + return + exprs = [e and e.name or "AccountingNone" for e in expressions] + for account_id, replaced_exprs in self.aep.replace_exprs_by_account_id(exprs): + vals = [] + drilldown_args = [] + name_error = False + for expr, replaced_expr in zip(exprs, replaced_exprs, strict=True): + val = mis_safe_eval(replaced_expr, locals_dict) + vals.append(val) + if replaced_expr != expr: + drilldown_args.append({"expr": expr, "account_id": account_id}) + else: + drilldown_args.append(None) + yield account_id, vals, drilldown_args, name_error diff --git a/mis_builder/models/kpimatrix.py b/mis_builder/models/kpimatrix.py new file mode 100644 index 0000000..0150b4e --- /dev/null +++ b/mis_builder/models/kpimatrix.py @@ -0,0 +1,542 @@ +# Copyright 2014 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import logging +from collections import OrderedDict, defaultdict + +from flectra import _ +from flectra.exceptions import UserError + +from .accounting_none import AccountingNone +from .mis_kpi_data import ACC_SUM +from .mis_safe_eval import DataError, mis_safe_eval +from .simple_array import SimpleArray + +_logger = logging.getLogger(__name__) + + +class KpiMatrixRow: + # TODO: ultimately, the kpi matrix will become ignorant of KPI's and + # accounts and know about rows, columns, sub columns and styles only. + # It is already ignorant of period and only knowns about columns. + # This will require a correct abstraction for expanding row details. + + def __init__(self, matrix, kpi, account_id=None, parent_row=None): + self._matrix = matrix + self.kpi = kpi + self.account_id = account_id + self.description = "" + self.parent_row = parent_row + if not self.account_id: + self.style_props = self._matrix._style_model.merge( + [self.kpi.report_id.style_id, self.kpi.style_id] + ) + else: + self.style_props = self._matrix._style_model.merge( + [self.kpi.report_id.style_id, self.kpi.auto_expand_accounts_style_id] + ) + + @property + def label(self): + if not self.account_id: + return self.kpi.description + else: + return self._matrix.get_account_name(self.account_id) + + @property + def row_id(self): + if not self.account_id: + return self.kpi.name + else: + return f"{self.kpi.name}:{self.account_id}" + + def iter_cell_tuples(self, cols=None): + if cols is None: + cols = self._matrix.iter_cols() + for col in cols: + yield col.get_cell_tuple_for_row(self) + + def iter_cells(self, subcols=None): + if subcols is None: + subcols = self._matrix.iter_subcols() + for subcol in subcols: + yield subcol.get_cell_for_row(self) + + def is_empty(self): + for cell in self.iter_cells(): + if cell and cell.val not in (AccountingNone, None): + return False + return True + + +class KpiMatrixCol: + def __init__(self, key, label, description, locals_dict, subkpis): + self.key = key + self.label = label + self.description = description + self.locals_dict = locals_dict + self.colspan = subkpis and len(subkpis) or 1 + self._subcols = [] + self.subkpis = subkpis + if not subkpis: + subcol = KpiMatrixSubCol(self, "", "", 0) + self._subcols.append(subcol) + else: + for i, subkpi in enumerate(subkpis): + subcol = KpiMatrixSubCol(self, subkpi.description, "", i) + self._subcols.append(subcol) + self._cell_tuples_by_row = {} # {row: (cells tuple)} + + def _set_cell_tuple(self, row, cell_tuple): + self._cell_tuples_by_row[row] = cell_tuple + + def iter_subcols(self): + return self._subcols + + def iter_cell_tuples(self): + return self._cell_tuples_by_row.values() + + def get_cell_tuple_for_row(self, row): + return self._cell_tuples_by_row.get(row) + + +class KpiMatrixSubCol: + def __init__(self, col, label, description, index=0): + self.col = col + self.label = label + self.description = description + self.index = index + + @property + def subkpi(self): + if self.col.subkpis: + return self.col.subkpis[self.index] + + def iter_cells(self): + for cell_tuple in self.col.iter_cell_tuples(): + yield cell_tuple[self.index] + + def get_cell_for_row(self, row): + cell_tuple = self.col.get_cell_tuple_for_row(row) + if cell_tuple is None: + return None + return cell_tuple[self.index] + + +class KpiMatrixCell: # noqa: B903 (immutable data class) + def __init__( + self, + row, + subcol, + val, + val_rendered, + val_comment, + style_props, + drilldown_arg, + val_type, + ): + self.row = row + self.subcol = subcol + self.val = val + self.val_rendered = val_rendered + self.val_comment = val_comment + self.style_props = style_props + self.drilldown_arg = drilldown_arg + self.val_type = val_type + + +class KpiMatrix: + def __init__(self, env, multi_company=False, account_model="account.account"): + # cache language id for faster rendering + lang_model = env["res.lang"] + self.lang = lang_model._lang_get(env.user.lang) + self._style_model = env["mis.report.style"] + self._account_model = env[account_model] + # data structures + # { kpi: KpiMatrixRow } + self._kpi_rows = OrderedDict() + # { kpi: {account_id: KpiMatrixRow} } + self._detail_rows = {} + # { col_key: KpiMatrixCol } + self._cols = OrderedDict() + # { col_key (left of comparison): [(col_key, base_col_key)] } + self._comparison_todo = defaultdict(list) + # { col_key (left of sum): (col_key, [(sign, sum_col_key)]) + self._sum_todo = {} + # { account_id: account_name } + self._account_names = {} + self._multi_company = multi_company + + def declare_kpi(self, kpi): + """Declare a new kpi (row) in the matrix. + + Invoke this first for all kpi, in display order. + """ + self._kpi_rows[kpi] = KpiMatrixRow(self, kpi) + self._detail_rows[kpi] = {} + + def declare_col(self, col_key, label, description, locals_dict, subkpis): + """Declare a new column, giving it an identifier (key). + + Invoke the declare_* methods in display order. + """ + col = KpiMatrixCol(col_key, label, description, locals_dict, subkpis) + self._cols[col_key] = col + return col + + def declare_comparison( + self, cmpcol_key, col_key, base_col_key, label, description=None + ): + """Declare a new comparison column. + + Invoke the declare_* methods in display order. + """ + self._comparison_todo[cmpcol_key] = (col_key, base_col_key, label, description) + self._cols[cmpcol_key] = None # reserve slot in insertion order + + def declare_sum( + self, sumcol_key, col_to_sum_keys, label, description=None, sum_accdet=False + ): + """Declare a new summation column. + + Invoke the declare_* methods in display order. + :param col_to_sum_keys: [(sign, col_key)] + """ + self._sum_todo[sumcol_key] = (col_to_sum_keys, label, description, sum_accdet) + self._cols[sumcol_key] = None # reserve slot in insertion order + + def set_values(self, kpi, col_key, vals, drilldown_args, tooltips=True): + """Set values for a kpi and a colum. + + Invoke this after declaring the kpi and the column. + """ + self.set_values_detail_account( + kpi, col_key, None, vals, drilldown_args, tooltips + ) + + def set_values_detail_account( + self, kpi, col_key, account_id, vals, drilldown_args, tooltips=True + ): + """Set values for a kpi and a column and a detail account. + + Invoke this after declaring the kpi and the column. + """ + if not account_id: + row = self._kpi_rows[kpi] + else: + kpi_row = self._kpi_rows[kpi] + if account_id in self._detail_rows[kpi]: + row = self._detail_rows[kpi][account_id] + else: + row = KpiMatrixRow(self, kpi, account_id, parent_row=kpi_row) + self._detail_rows[kpi][account_id] = row + col = self._cols[col_key] + cell_tuple = [] + assert len(vals) == col.colspan + assert len(drilldown_args) == col.colspan + for val, drilldown_arg, subcol in zip( + vals, drilldown_args, col.iter_subcols(), strict=True + ): + if isinstance(val, DataError): + val_rendered = val.name + val_comment = val.msg + else: + val_rendered = self._style_model.render( + self.lang, row.style_props, kpi.type, val + ) + if row.kpi.multi and subcol.subkpi: + val_comment = "{}.{} = {}".format( + row.kpi.name, + subcol.subkpi.name, + row.kpi._get_expression_str_for_subkpi(subcol.subkpi), + ) + else: + val_comment = f"{row.kpi.name} = {row.kpi.expression}" + cell_style_props = row.style_props + if row.kpi.style_expression: + # evaluate style expression + try: + style_name = mis_safe_eval( + row.kpi.style_expression, col.locals_dict + ) + except Exception: + _logger.error( + "Error evaluating style expression <%s>", + row.kpi.style_expression, + exc_info=True, + ) + if style_name: + style = self._style_model.search([("name", "=", style_name)]) + if style: + cell_style_props = self._style_model.merge( + [row.style_props, style[0]] + ) + else: + _logger.error("Style '%s' not found.", style_name) + cell = KpiMatrixCell( + row, + subcol, + val, + val_rendered, + tooltips and val_comment or None, + cell_style_props, + drilldown_arg, + kpi.type, + ) + cell_tuple.append(cell) + assert len(cell_tuple) == col.colspan + col._set_cell_tuple(row, cell_tuple) + + def _common_subkpis(self, cols): + if not cols: + return set() + common_subkpis = set(cols[0].subkpis) + for col in cols[1:]: + common_subkpis = common_subkpis & set(col.subkpis) + return common_subkpis + + def compute_comparisons(self): + """Compute comparisons. + + Invoke this after setting all values. + """ + for ( + cmpcol_key, + (col_key, base_col_key, label, description), + ) in self._comparison_todo.items(): + col = self._cols[col_key] + base_col = self._cols[base_col_key] + common_subkpis = self._common_subkpis([col, base_col]) + if (col.subkpis or base_col.subkpis) and not common_subkpis: + raise UserError( + _( + "Columns %(descr)s and %(base_descr)s are not comparable", + descr=col.description, + base_descr=base_col.description, + ) + ) + if not label: + label = f"{col.label} vs {base_col.label}" + comparison_col = KpiMatrixCol( + cmpcol_key, + label, + description, + {}, + sorted(common_subkpis, key=lambda s: s.sequence), + ) + self._cols[cmpcol_key] = comparison_col + for row in self.iter_rows(): + cell_tuple = col.get_cell_tuple_for_row(row) + base_cell_tuple = base_col.get_cell_tuple_for_row(row) + if cell_tuple is None and base_cell_tuple is None: + continue + if cell_tuple is None: + vals = [AccountingNone] * (len(common_subkpis) or 1) + else: + vals = [ + cell.val + for cell in cell_tuple + if not common_subkpis or cell.subcol.subkpi in common_subkpis + ] + if base_cell_tuple is None: + base_vals = [AccountingNone] * (len(common_subkpis) or 1) + else: + base_vals = [ + cell.val + for cell in base_cell_tuple + if not common_subkpis or cell.subcol.subkpi in common_subkpis + ] + comparison_cell_tuple = [] + for val, base_val, comparison_subcol in zip( + vals, + base_vals, + comparison_col.iter_subcols(), + strict=True, + ): + # TODO FIXME average factors + comparison = self._style_model.compare_and_render( + self.lang, + row.style_props, + row.kpi.type, + row.kpi.compare_method, + val, + base_val, + 1, + 1, + ) + delta, delta_r, delta_style, delta_type = comparison + comparison_cell_tuple.append( + KpiMatrixCell( + row, + comparison_subcol, + delta, + delta_r, + None, + delta_style, + None, + delta_type, + ) + ) + comparison_col._set_cell_tuple(row, comparison_cell_tuple) + + def compute_sums(self): + """Compute comparisons. + + Invoke this after setting all values. + """ + for ( + sumcol_key, + (col_to_sum_keys, label, description, sum_accdet), + ) in self._sum_todo.items(): + sumcols = [self._cols[k] for (sign, k) in col_to_sum_keys] + # TODO check all sumcols are resolved; we need a kind of + # recompute queue here so we don't depend on insertion + # order + common_subkpis = self._common_subkpis(sumcols) + if any(c.subkpis for c in sumcols) and not common_subkpis: + raise UserError( + _( + "Sum cannot be computed in column {} " + "because the columns to sum have no " + "common subkpis" + ).format(label) + ) + sum_col = KpiMatrixCol( + sumcol_key, + label, + description, + {}, + sorted(common_subkpis, key=lambda s: s.sequence), + ) + self._cols[sumcol_key] = sum_col + for row in self.iter_rows(): + acc = SimpleArray([AccountingNone] * (len(common_subkpis) or 1)) + if row.kpi.accumulation_method == ACC_SUM and not ( + row.account_id and not sum_accdet + ): + for sign, col_to_sum in col_to_sum_keys: + cell_tuple = self._cols[col_to_sum].get_cell_tuple_for_row(row) + if cell_tuple is None: + vals = [AccountingNone] * (len(common_subkpis) or 1) + else: + vals = [ + cell.val + for cell in cell_tuple + if not common_subkpis + or cell.subcol.subkpi in common_subkpis + ] + if sign == "+": + acc += SimpleArray(vals) + else: + acc -= SimpleArray(vals) + self.set_values_detail_account( + row.kpi, + sumcol_key, + row.account_id, + acc, + [None] * (len(common_subkpis) or 1), + tooltips=False, + ) + + def iter_rows(self): + """Iterate rows in display order. + + yields KpiMatrixRow. + """ + for kpi_row in self._kpi_rows.values(): + yield kpi_row + detail_rows = self._detail_rows[kpi_row.kpi].values() + detail_rows = sorted(detail_rows, key=lambda r: r.label) + yield from detail_rows + + def iter_cols(self): + """Iterate columns in display order. + + yields KpiMatrixCol: one for each column or comparison. + """ + for _col_key, col in self._cols.items(): + yield col + + def iter_subcols(self): + """Iterate sub columns in display order. + + yields KpiMatrixSubCol: one for each subkpi in each column + and comparison. + """ + for col in self.iter_cols(): + yield from col.iter_subcols() + + def _load_account_names(self): + account_ids = set() + for detail_rows in self._detail_rows.values(): + account_ids.update(detail_rows.keys()) + accounts = self._account_model.search([("id", "in", list(account_ids))]) + self._account_names = {a.id: self._get_account_name(a) for a in accounts} + + def _get_account_name(self, account): + result = f"{account.code} {account.name}" + if self._multi_company: + result = f"{result} [{account.company_id.name}]" + return result + + def get_account_name(self, account_id): + if account_id not in self._account_names: + self._load_account_names() + return self._account_names[account_id] + + def as_dict(self): + header = [{"cols": []}, {"cols": []}] + for col in self.iter_cols(): + header[0]["cols"].append( + { + "label": col.label, + "description": col.description, + "colspan": col.colspan, + } + ) + for subcol in col.iter_subcols(): + header[1]["cols"].append( + { + "label": subcol.label, + "description": subcol.description, + "colspan": 1, + } + ) + + body = [] + for row in self.iter_rows(): + if ( + row.style_props.hide_empty and row.is_empty() + ) or row.style_props.hide_always: + continue + row_data = { + "row_id": row.row_id, + "parent_row_id": (row.parent_row and row.parent_row.row_id or None), + "label": row.label, + "description": row.description, + "style": self._style_model.to_css_style(row.style_props), + "cells": [], + } + for cell in row.iter_cells(): + if cell is None: + # TODO use subcol style here + row_data["cells"].append({}) + else: + if cell.val is AccountingNone or isinstance(cell.val, DataError): + val = None + else: + val = cell.val + col_data = { + "val": val, + "val_r": cell.val_rendered, + "val_c": cell.val_comment, + "style": self._style_model.to_css_style( + cell.style_props, no_indent=True + ), + } + if cell.drilldown_arg: + col_data["drilldown_arg"] = cell.drilldown_arg + row_data["cells"].append(col_data) + body.append(row_data) + + return {"header": header, "body": body} diff --git a/mis_builder/models/mis_kpi_data.py b/mis_builder/models/mis_kpi_data.py new file mode 100644 index 0000000..058a90a --- /dev/null +++ b/mis_builder/models/mis_kpi_data.py @@ -0,0 +1,115 @@ +# Copyright 2017 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from collections import defaultdict + +from flectra import _, api, fields, models +from flectra.exceptions import UserError +from flectra.osv import expression + +ACC_SUM = "sum" +ACC_AVG = "avg" +ACC_NONE = "none" + + +def intersect_days(item_dt_from, item_dt_to, dt_from, dt_to): + item_days = (item_dt_to - item_dt_from).days + 1.0 + i_dt_from = max(dt_from, item_dt_from) + i_dt_to = min(dt_to, item_dt_to) + i_days = (i_dt_to - i_dt_from).days + 1.0 + return i_days, item_days + + +class MisKpiData(models.AbstractModel): + """Abstract class for manually entered KPI values.""" + + _name = "mis.kpi.data" + _description = "MIS Kpi Data Abtract class" + + name = fields.Char(compute="_compute_name", required=False, readonly=True) + kpi_expression_id = fields.Many2one( + comodel_name="mis.report.kpi.expression", + required=True, + ondelete="restrict", + string="KPI", + ) + date_from = fields.Date(required=True, string="From") + date_to = fields.Date(required=True, string="To") + amount = fields.Float() + seq1 = fields.Integer( + related="kpi_expression_id.kpi_id.sequence", + store=True, + readonly=True, + string="KPI Sequence", + ) + seq2 = fields.Integer( + related="kpi_expression_id.subkpi_id.sequence", + store=True, + readonly=True, + string="Sub-KPI Sequence", + ) + + @api.depends( + "kpi_expression_id.subkpi_id.name", + "kpi_expression_id.kpi_id.name", + "date_from", + "date_to", + ) + def _compute_name(self): + for rec in self: + subkpi_name = rec.kpi_expression_id.subkpi_id.name + if subkpi_name: + subkpi_name = "." + subkpi_name + else: + subkpi_name = "" + rec.name = "{}{}: {} - {}".format( + rec.kpi_expression_id.kpi_id.name, + subkpi_name, + rec.date_from, + rec.date_to, + ) + + @api.model + def _intersect_days(self, item_dt_from, item_dt_to, dt_from, dt_to): + return intersect_days(item_dt_from, item_dt_to, dt_from, dt_to) + + @api.model + def _query_kpi_data(self, date_from, date_to, base_domain): + """Query mis.kpi.data over a time period. + + Returns {mis.report.kpi.expression: amount} + """ + dt_from = fields.Date.from_string(date_from) + dt_to = fields.Date.from_string(date_to) + # all data items within or overlapping [date_from, date_to] + date_domain = [("date_from", "<=", date_to), ("date_to", ">=", date_from)] + domain = expression.AND([date_domain, base_domain]) + res = defaultdict(float) + res_avg = defaultdict(list) + for item in self.search(domain): + item_dt_from = fields.Date.from_string(item.date_from) + item_dt_to = fields.Date.from_string(item.date_to) + i_days, item_days = self._intersect_days( + item_dt_from, item_dt_to, dt_from, dt_to + ) + if item.kpi_expression_id.kpi_id.accumulation_method == ACC_SUM: + # accumulate pro-rata overlap between item and reporting period + res[item.kpi_expression_id] += item.amount * i_days / item_days + elif item.kpi_expression_id.kpi_id.accumulation_method == ACC_AVG: + # memorize the amount and number of days overlapping + # the reporting period (used as weight in average) + res_avg[item.kpi_expression_id].append((i_days, item.amount)) + else: + raise UserError( + _( + "Unexpected accumulation method %(method)s for %(name)s.", + method=item.kpi_expression_id.kpi_id.accumulation_method, + name=item.name, + ) + ) + # compute weighted average for ACC_AVG + for kpi_expression, amounts in res_avg.items(): + res[kpi_expression] = sum(d * a for d, a in amounts) / sum( + d for d, a in amounts + ) + return res diff --git a/mis_builder/models/mis_report.py b/mis_builder/models/mis_report.py new file mode 100644 index 0000000..2623f24 --- /dev/null +++ b/mis_builder/models/mis_report.py @@ -0,0 +1,1015 @@ +# Copyright 2014 ACSONE SA/NV () +# Copyright 2020 CorporateHub (https://corporatehub.eu) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import datetime +import logging +import re +import time +from collections import defaultdict + +import dateutil +import pytz + +from flectra import _, api, fields, models +from flectra.exceptions import UserError, ValidationError +from flectra.models import expression as osv_expression +from flectra.tools.safe_eval import ( + datetime as safe_datetime, +) +from flectra.tools.safe_eval import ( + dateutil as safe_dateutil, +) +from flectra.tools.safe_eval import ( + safe_eval, +) +from flectra.tools.safe_eval import ( + time as safe_time, +) + +from .accounting_none import AccountingNone +from .aep import AccountingExpressionProcessor as AEP +from .aggregate import _avg, _max, _min, _sum +from .expression_evaluator import ExpressionEvaluator +from .kpimatrix import KpiMatrix +from .mis_kpi_data import ACC_AVG, ACC_NONE, ACC_SUM +from .mis_report_style import CMP_DIFF, CMP_NONE, CMP_PCT, TYPE_NUM, TYPE_PCT, TYPE_STR +from .mis_safe_eval import DataError +from .simple_array import SimpleArray, named_simple_array + +_logger = logging.getLogger(__name__) + + +class SubKPITupleLengthError(UserError): + pass + + +class SubKPIUnknownTypeError(UserError): + pass + + +class AutoStruct: + def __init__(self, **kwargs): + for k, v in kwargs.items(): + setattr(self, k, v) + + +def _utc_midnight(d, tz_name, add_day=0): + d = fields.Datetime.from_string(d) + datetime.timedelta(days=add_day) + utc_tz = pytz.timezone("UTC") + context_tz = pytz.timezone(tz_name) + local_timestamp = context_tz.localize(d, is_dst=False) + return fields.Datetime.to_string(local_timestamp.astimezone(utc_tz)) + + +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(models.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 prefix, 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" + _description = "MIS Report KPI" + + name = fields.Char(required=True) + description = fields.Char(required=True, translate=True) + multi = fields.Boolean() + expression = fields.Char( + compute="_compute_expression", + inverse="_inverse_expression", + ) + expression_ids = fields.One2many( + comodel_name="mis.report.kpi.expression", + inverse_name="kpi_id", + copy=True, + string="Expressions", + ) + auto_expand_accounts = fields.Boolean(string="Display details by account") + auto_expand_accounts_style_id = fields.Many2one( + string="Style for account detail rows", + comodel_name="mis.report.style", + required=False, + ) + style_id = fields.Many2one( + string="Style", comodel_name="mis.report.style", required=False + ) + style_expression = fields.Char( + help="An expression that returns a style depending on the KPI value. " + "Such style is applied on top of the row style.", + ) + type = fields.Selection( + [ + (TYPE_NUM, _("Numeric")), + (TYPE_PCT, _("Percentage")), + (TYPE_STR, _("String")), + ], + required=True, + string="Value type", + default=TYPE_NUM, + ) + compare_method = fields.Selection( + [ + (CMP_DIFF, _("Difference")), + (CMP_PCT, _("Percentage")), + (CMP_NONE, _("None")), + ], + required=True, + string="Comparison Method", + default=CMP_PCT, + ) + accumulation_method = fields.Selection( + [(ACC_SUM, _("Sum")), (ACC_AVG, _("Average")), (ACC_NONE, _("None"))], + required=True, + default=ACC_SUM, + help="Determines how values of this kpi spanning over a " + "time period are transformed to match the reporting period. " + "Sum: values of shorter period are added, " + "values of longest or partially overlapping periods are " + "adjusted pro-rata temporis.\n" + "Average: values of included period are averaged " + "with a pro-rata temporis weight.", + ) + sequence = fields.Integer(default=100) + report_id = fields.Many2one("mis.report", required=True, ondelete="cascade") + + _order = "sequence, id" + + def name_get(self): + res = [] + for rec in self: + name = f"{rec.description} ({rec.name})" + res.append((rec.id, name)) + return res + + @api.model + def name_search(self, name="", args=None, operator="ilike", limit=100): + domain = args or [] + domain += ["|", ("name", operator, name), ("description", operator, name)] + return self.search(domain, limit=limit).name_get() + + @api.constrains("name") + def _check_name(self): + for record in self: + if not _is_valid_python_var(record.name): + raise ValidationError( + _("KPI name ({}) must be a valid python identifier").format( + record.name + ) + ) + + @api.depends("expression_ids.subkpi_id.name", "expression_ids.name") + def _compute_expression(self): + for kpi in self: + exprs = [] + for expression in kpi.expression_ids: + if expression.subkpi_id: + exprs.append( + f"{expression.subkpi_id.name}\xa0=\xa0{expression.name}" + ) + else: + exprs.append(expression.name or "AccountingNone") + kpi.expression = ",\n".join(exprs) + + def _inverse_expression(self): + for kpi in self: + if kpi.multi: + continue + if kpi.expression_ids: + kpi.expression_ids[0].write({"name": kpi.expression, "subkpi_id": None}) + for expression in kpi.expression_ids[1:]: + expression.unlink() + else: + expression = self.env["mis.report.kpi.expression"].new( + {"name": kpi.expression} + ) + kpi.expression_ids += expression + + @api.onchange("multi") + def _onchange_multi(self): + for kpi in self: + if not kpi.multi: + if kpi.expression_ids: + kpi.expression = kpi.expression_ids[0].name + else: + kpi.expression = None + else: + expressions = [] + for subkpi in kpi.report_id.subkpi_ids: + expressions.append( + (0, 0, {"name": kpi.expression, "subkpi_id": subkpi.id}) + ) + kpi.expression_ids = expressions + + @api.onchange("description") + def _onchange_description(self): + """construct name from description""" + if self.description and not self.name: + self.name = _python_var(self.description) + + @api.onchange("type") + def _onchange_type(self): + if self.type == TYPE_NUM: + self.compare_method = CMP_PCT + self.accumulation_method = ACC_SUM + elif self.type == TYPE_PCT: + self.compare_method = CMP_DIFF + self.accumulation_method = ACC_AVG + elif self.type == TYPE_STR: + self.compare_method = CMP_NONE + self.accumulation_method = ACC_NONE + + def _get_expression_str_for_subkpi(self, subkpi): + e = self._get_expression_for_subkpi(subkpi) + return e and e.name or "" + + def _get_expression_for_subkpi(self, subkpi): + for expression in self.expression_ids: + if expression.subkpi_id == subkpi: + return expression + return None + + def _get_expressions(self, subkpis): + if subkpis and self.multi: + return [self._get_expression_for_subkpi(subkpi) for subkpi in subkpis] + else: + if self.expression_ids: + assert len(self.expression_ids) == 1 + assert not self.expression_ids[0].subkpi_id + return self.expression_ids + else: + return [None] + + +class MisReportSubkpi(models.Model): + _name = "mis.report.subkpi" + _description = "MIS Report Sub-KPI" + _order = "sequence, id" + + sequence = fields.Integer(default=1) + report_id = fields.Many2one( + comodel_name="mis.report", required=True, ondelete="cascade" + ) + name = fields.Char(required=True) + description = fields.Char(required=True, translate=True) + expression_ids = fields.One2many("mis.report.kpi.expression", "subkpi_id") + + @api.constrains("name") + def _check_name(self): + for record in self: + if not _is_valid_python_var(record.name): + raise ValidationError( + _("Sub-KPI name ({}) must be a valid python identifier").format( + record.name + ) + ) + + @api.onchange("description") + def _onchange_description(self): + """construct name from description""" + if self.description and not self.name: + self.name = _python_var(self.description) + + +class MisReportKpiExpression(models.Model): + """A KPI Expression is an expression of a line of a MIS report Kpi. + It's used to compute the kpi value. + """ + + _name = "mis.report.kpi.expression" + _description = "MIS Report KPI Expression" + _order = "sequence, name, id" + + sequence = fields.Integer(related="subkpi_id.sequence", store=True, readonly=True) + name = fields.Char(string="Expression") + kpi_id = fields.Many2one("mis.report.kpi", required=True, ondelete="cascade") + # TODO FIXME set readonly=True when onchange('subkpi_ids') below works + subkpi_id = fields.Many2one("mis.report.subkpi", readonly=False, ondelete="cascade") + + _sql_constraints = [ + ( + "subkpi_kpi_unique", + "unique(subkpi_id, kpi_id)", + "Sub KPI must be used once and only once for each KPI", + ) + ] + + def name_get(self): + res = [] + for rec in self: + kpi = rec.kpi_id + subkpi = rec.subkpi_id + if subkpi: + name = "{} / {} ({}.{})".format( + kpi.description, subkpi.description, kpi.name, subkpi.name + ) + else: + name = rec.kpi_id.display_name + res.append((rec.id, name)) + return res + + @api.model + def name_search(self, name="", args=None, operator="ilike", limit=100): + # TODO maybe implement negative search operators, although + # there is not really a use case for that + domain = args or [] + splitted_name = name.split(".", 2) + name_search_domain = [] + if "." in name: + kpi_name, subkpi_name = splitted_name[0], splitted_name[1] + name_search_domain = osv_expression.AND( + [ + name_search_domain, + [ + "|", + "|", + "&", + ("kpi_id.name", "=", kpi_name), + ("subkpi_id.name", operator, subkpi_name), + ("kpi_id.description", operator, name), + ("subkpi_id.description", operator, name), + ], + ] + ) + name_search_domain = osv_expression.OR( + [ + name_search_domain, + [ + "|", + ("kpi_id.name", operator, name), + ("kpi_id.description", operator, name), + ], + ] + ) + domain = osv_expression.AND([domain, name_search_domain]) + return self.search(domain, limit=limit).name_get() + + +class MisReportQuery(models.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" + _description = "MIS Report Query" + + @api.depends("field_ids") + def _compute_field_names(self): + for record in self: + field_names = [field.name for field in record.field_ids] + record.field_names = ", ".join(field_names) + + name = fields.Char(required=True) + model_id = fields.Many2one("ir.model", required=True, ondelete="cascade") + field_ids = fields.Many2many( + "ir.model.fields", required=True, string="Fields to fetch" + ) + field_names = fields.Char( + compute="_compute_field_names", string="Fetched fields name" + ) + aggregate = fields.Selection( + [ + ("sum", _("Sum")), + ("avg", _("Average")), + ("min", _("Min")), + ("max", _("Max")), + ], + ) + date_field = fields.Many2one( + comodel_name="ir.model.fields", + required=True, + domain=[("ttype", "in", ("date", "datetime"))], + ondelete="cascade", + ) + domain = fields.Char() + report_id = fields.Many2one( + comodel_name="mis.report", required=True, ondelete="cascade" + ) + + _order = "name" + + @api.constrains("name") + def _check_name(self): + for record in self: + if not _is_valid_python_var(record.name): + raise ValidationError( + _("Query name ({}) must be valid python identifier").format( + record.name + ) + ) + + +class MisReport(models.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" + _description = "MIS Report Template" + + def _default_move_lines_source(self): + return self.env["ir.model"].sudo().search([("model", "=", "account.move.line")]) + + name = fields.Char(required=True, translate=True) + description = fields.Char(required=False, translate=True) + style_id = fields.Many2one(string="Style", comodel_name="mis.report.style") + query_ids = fields.One2many( + "mis.report.query", "report_id", string="Queries", copy=True + ) + kpi_ids = fields.One2many("mis.report.kpi", "report_id", string="KPI's", copy=True) + subkpi_ids = fields.One2many( + "mis.report.subkpi", "report_id", string="Sub KPI", copy=True + ) + subreport_ids = fields.One2many( + "mis.report.subreport", "report_id", string="Sub reports", copy=True + ) + all_kpi_ids = fields.One2many( + comodel_name="mis.report.kpi", + compute="_compute_all_kpi_ids", + help="KPIs of this report and subreports.", + ) + move_lines_source = fields.Many2one( + comodel_name="ir.model", + domain=[ + ("field_id.name", "=", "debit"), + ("field_id.name", "=", "credit"), + ("field_id.name", "=", "account_id"), + ("field_id.name", "=", "date"), + ("field_id.name", "=", "company_id"), + ], + default=_default_move_lines_source, + required=True, + ondelete="cascade", + help="A 'move line like' model, ie having at least debit, credit, " + "date, account_id and company_id fields. This model is the " + "data source for column Actuals.", + ) + account_model = fields.Char(compute="_compute_account_model") + + @api.depends("kpi_ids", "subreport_ids") + def _compute_all_kpi_ids(self): + for rec in self: + rec.all_kpi_ids = rec.kpi_ids | rec.subreport_ids.mapped( + "subreport_id.kpi_ids" + ) + + @api.depends("move_lines_source") + def _compute_account_model(self): + for record in self: + record.account_model = ( + record.move_lines_source.sudo() + .field_id.filtered(lambda r: r.name == "account_id") + .relation + ) + + @api.onchange("subkpi_ids") + def _on_change_subkpi_ids(self): + """Update kpi expressions when subkpis change on the report, + so the list of kpi expressions is always up-to-date""" + for kpi in self.kpi_ids: + if not kpi.multi: + continue + new_subkpis = {subkpi for subkpi in self.subkpi_ids} + expressions = [] + for expression in kpi.expression_ids: + assert expression.subkpi_id # must be true if kpi is multi + if expression.subkpi_id not in self.subkpi_ids: + expressions.append((2, expression.id, None)) # remove + else: + new_subkpis.remove(expression.subkpi_id) # no change + for subkpi in new_subkpis: + # TODO FIXME this does not work, while the remove above works + expressions.append( + (0, None, {"name": False, "subkpi_id": subkpi.id}) + ) # add empty expressions for new subkpis + if expressions: + kpi.expression_ids = expressions + + def get_wizard_report_action(self): + xmlid = "mis_builder.mis_report_instance_view_action" + action = self.env["ir.actions.act_window"]._for_xml_id(xmlid) + view = self.env.ref("mis_builder.wizard_mis_report_instance_view_form") + action.update( + { + "view_id": view.id, + "views": [(view.id, "form")], + "target": "new", + "context": { + "default_report_id": self.id, + "default_name": self.name, + "default_temporary": True, + }, + } + ) + return action + + def copy(self, default=None): + self.ensure_one() + default = dict(default or []) + default["name"] = _("%s (copy)") % self.name + new = super().copy(default) + # after a copy, we have new subkpis, but the expressions + # subkpi_id fields still point to the original one, so + # we patch them after copying + subkpis_by_name = {sk.name: sk for sk in new.subkpi_ids} + for subkpi in self.subkpi_ids: + # search expressions linked to subkpis of the original report + exprs = self.env["mis.report.kpi.expression"].search( + [("kpi_id.report_id", "=", new.id), ("subkpi_id", "=", subkpi.id)] + ) + # and replace them with references to subkpis of the new report + exprs.write({"subkpi_id": subkpis_by_name[subkpi.name].id}) + return new + + # TODO: kpi name cannot be start with query name + + def prepare_kpi_matrix(self, multi_company=False): + self.ensure_one() + kpi_matrix = KpiMatrix(self.env, multi_company, self.account_model) + for kpi in self.kpi_ids: + kpi_matrix.declare_kpi(kpi) + return kpi_matrix + + def _prepare_aep(self, companies, currency=None): + self.ensure_one() + aep = AEP(companies, currency, self.account_model) + for kpi in self.all_kpi_ids: + for expression in kpi.expression_ids: + if expression.name: + aep.parse_expr(expression.name) + aep.done_parsing() + return aep + + def prepare_locals_dict(self): + return { + "sum": _sum, + "min": _min, + "max": _max, + "len": len, + "avg": _avg, + "time": time, + "datetime": datetime, + "dateutil": dateutil, + "AccountingNone": AccountingNone, + "SimpleArray": SimpleArray, + } + + def _fetch_queries(self, date_from, date_to, get_additional_query_filter=None): + self.ensure_one() + res = {} + for query in self.query_ids: + query_sudo = query.sudo() + model = self.env[query_sudo.model_id.model] + eval_context = { + "env": self.env, + "time": safe_time, + "datetime": safe_datetime, + "dateutil": safe_dateutil, + # deprecated + "uid": self.env.uid, + "context": self.env.context, + } + domain = query.domain and safe_eval(query.domain, eval_context) or [] + if get_additional_query_filter: + domain.extend(get_additional_query_filter(query)) + if query_sudo.date_field.ttype == "date": + domain.extend( + [ + (query_sudo.date_field.name, ">=", date_from), + (query_sudo.date_field.name, "<=", date_to), + ] + ) + else: + tz = str(self.env["ir.fields.converter"]._input_tz()) + datetime_from = _utc_midnight(date_from, tz) + datetime_to = _utc_midnight(date_to, tz, add_day=1) + domain.extend( + [ + (query_sudo.date_field.name, ">=", datetime_from), + (query_sudo.date_field.name, "<", datetime_to), + ] + ) + field_names = [f.name for f in query_sudo.field_ids] + all_stored = all([model._fields[f].store for f in field_names]) + if not query.aggregate: + data = model.search_read(domain, field_names) + res[query.name] = [AutoStruct(**d) for d in data] + elif query.aggregate == "sum" and all_stored: + # use read_group to sum stored fields + data = model.read_group(domain, field_names, []) + s = AutoStruct(count=data[0]["__count"]) + for field_name in field_names: + try: + v = data[0][field_name] + except KeyError: + _logger.error( + "field %s not found in read_group " "for %s; not summable?", + field_name, + model._name, + ) + v = AccountingNone + setattr(s, field_name, v) + res[query.name] = s + else: + data = model.search_read(domain, field_names) + s = AutoStruct(count=len(data)) + if query.aggregate == "min": + agg = _min + elif query.aggregate == "max": + agg = _max + elif query.aggregate == "avg": + agg = _avg + elif query.aggregate == "sum": + agg = _sum + 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 _declare_and_compute_col( # noqa: C901 (TODO simplify this fnction) + self, + expression_evaluator, + kpi_matrix, + col_key, + col_label, + col_description, + subkpis_filter, + locals_dict, + no_auto_expand_accounts=False, + ): + """This is the main computation loop. + + It evaluates the kpis and puts the results in the KpiMatrix. + Evaluation is done through the expression_evaluator so data sources + can provide their own mean of obtaining the data (eg preset + kpi values for budget, or alternative move line sources). + """ + + if subkpis_filter: + # TODO filter by subkpi names + subkpis = [subkpi for subkpi in self.subkpi_ids if subkpi in subkpis_filter] + else: + subkpis = self.subkpi_ids + + SimpleArray_cls = named_simple_array( + f"SimpleArray_{col_key}", [subkpi.name for subkpi in subkpis] + ) + locals_dict["SimpleArray"] = SimpleArray_cls + + col = kpi_matrix.declare_col( + col_key, col_label, col_description, locals_dict, subkpis + ) + + compute_queue = self.kpi_ids + recompute_queue = [] + while True: + for kpi in compute_queue: + # build the list of expressions for this kpi + expressions = kpi._get_expressions(subkpis) + + ( + vals, + drilldown_args, + name_error, + ) = expression_evaluator.eval_expressions(expressions, locals_dict) + for drilldown_arg in drilldown_args: + if not drilldown_arg: + continue + drilldown_arg["period_id"] = col_key + drilldown_arg["kpi_id"] = kpi.id + + if name_error: + recompute_queue.append(kpi) + else: + # no error, set it in locals_dict so it can be used + # in computing other kpis + if not subkpis or not kpi.multi: + locals_dict[kpi.name] = vals[0] + else: + locals_dict[kpi.name] = SimpleArray_cls(vals) + + # even in case of name error we set the result in the matrix + # so the name error will be displayed if it cannot be + # resolved by recomputing later + + if subkpis and not kpi.multi: + # here we have one expression for this kpi, but + # multiple subkpis (so this kpi is most probably + # a sum or other operation on multi-valued kpis) + if isinstance(vals[0], tuple): + vals = vals[0] + if len(vals) != col.colspan: + raise SubKPITupleLengthError( + _( + 'KPI "%(kpi)s" is valued as a tuple of ' + "length %(length)s while a tuple of length" + "%(expected_length)s is expected.", + kpi=kpi.description, + length=len(vals), + expected_length=col.colspan, + ) + ) + elif isinstance(vals[0], DataError): + vals = (vals[0],) * col.colspan + else: + raise SubKPIUnknownTypeError( + _( + 'KPI "%(kpi)s" has type %(type)s while a tuple was ' + "expected.\n\nThis can be fixed by either:\n\t- " + "Changing the KPI value to a tuple of length " + "%(length)s\nor\n\t- Changing the " + "KPI to `multi` mode and giving an explicit " + "value for each sub-KPI.", + kpi=kpi.description, + type=type(vals[0]), + length=col.colspan, + ) + ) + if len(drilldown_args) != col.colspan: + drilldown_args = [None] * col.colspan + + kpi_matrix.set_values(kpi, col_key, vals, drilldown_args) + + if ( + name_error + or no_auto_expand_accounts + or not kpi.auto_expand_accounts + ): + continue + + for ( + account_id, + vals, + drilldown_args, + _name_error, + ) in expression_evaluator.eval_expressions_by_account( + expressions, locals_dict + ): + for drilldown_arg in drilldown_args: + if not drilldown_arg: + continue + drilldown_arg["period_id"] = col_key + drilldown_arg["kpi_id"] = kpi.id + kpi_matrix.set_values_detail_account( + kpi, col_key, account_id, vals, drilldown_args + ) + + 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 Name errors or cyclic dependency) + # so we stop trying + break + # try again + compute_queue = recompute_queue + recompute_queue = [] + + def declare_and_compute_period( + self, + kpi_matrix, + col_key, + col_label, + col_description, + aep, + date_from, + date_to, + subkpis_filter=None, + get_additional_move_line_filter=None, + get_additional_query_filter=None, + locals_dict=None, + aml_model=None, + no_auto_expand_accounts=False, + ): + _logger.warning( + "declare_and_compute_period() is deprecated, " + "use _declare_and_compute_period() instead" + ) + expression_evaluator = ExpressionEvaluator( + aep, + date_from, + date_to, + get_additional_move_line_filter() + if get_additional_move_line_filter + else None, + aml_model, + ) + return self._declare_and_compute_period( + expression_evaluator, + kpi_matrix, + col_key, + col_label, + col_description, + subkpis_filter, + get_additional_query_filter, + locals_dict, + no_auto_expand_accounts, + ) + + def _declare_and_compute_period( + self, + expression_evaluator, + kpi_matrix, + col_key, + col_label, + col_description, + subkpis_filter=None, + get_additional_query_filter=None, + locals_dict=None, + no_auto_expand_accounts=False, + ): + """Evaluate a report for a given period, populating a KpiMatrix. + + :param expression_evaluator: an ExpressionEvaluator instance + :param kpi_matrix: the KpiMatrix object to be populated created + with prepare_kpi_matrix() + :param col_key: the period key to use when populating the KpiMatrix + :param subkpis_filter: a list of subkpis to include in the evaluation + (if empty, use all subkpis) + :param get_additional_query_filter: a bound method that takes a single + query argument and returns a + domain compatible with the query + underlying model + :param locals_dict: personalized locals dictionary used as evaluation + context for the KPI expressions + :param no_auto_expand_accounts: disable expansion of account details + """ + self.ensure_one() + + # prepare the localsdict + if locals_dict is None: + locals_dict = {} + + # Evaluate subreports + for subreport in self.subreport_ids: + subreport_locals_dict = subreport.subreport_id._evaluate( + expression_evaluator, subkpis_filter, get_additional_query_filter + ) + locals_dict[subreport.name] = AutoStruct( + **{ + srk.name: subreport_locals_dict.get(srk.name, AccountingNone) + for srk in subreport.subreport_id.kpi_ids + } + ) + + locals_dict.update(self.prepare_locals_dict()) + locals_dict["date_from"] = fields.Date.from_string( + expression_evaluator.date_from + ) + locals_dict["date_to"] = fields.Date.from_string(expression_evaluator.date_to) + + # fetch non-accounting queries + locals_dict.update( + self._fetch_queries( + expression_evaluator.date_from, + expression_evaluator.date_to, + get_additional_query_filter, + ) + ) + + # use AEP to do the accounting queries + expression_evaluator.aep_do_queries() + + self._declare_and_compute_col( + expression_evaluator, + kpi_matrix, + col_key, + col_label, + col_description, + subkpis_filter, + locals_dict, + no_auto_expand_accounts, + ) + + def get_kpis_by_account_id(self, company): + """Return { account_id: set(kpi) }""" + aep = self._prepare_aep(company) + res = defaultdict(set) + for kpi in self.kpi_ids: + for expression in kpi.expression_ids: + if not expression.name: + continue + account_ids = aep.get_account_ids_for_expr(expression.name) + for account_id in account_ids: + res[account_id].add(kpi) + return res + + @api.model + def _supports_target_move_filter(self, aml_model_name): + return "parent_state" in self.env[aml_model_name]._fields + + @api.model + def _get_target_move_domain(self, target_move, aml_model_name): + """ + Obtain a domain to apply on a move-line-like model, to get posted + entries or return all of them (always excluding cancelled entries). + + :param: target_move: all|posted + :param: aml_model_name: an optional move-line-like model name + (defaults to account.move.line) + """ + if not self._supports_target_move_filter(aml_model_name): + return [] + + if target_move == "posted": + return [("parent_state", "=", "posted")] + elif target_move == "all": + # all (in Flectra 13+, there is also the cancel state that we must ignore) + return [("parent_state", "in", ("posted", "draft"))] + else: + raise UserError(_("Unexpected value %s for target_move.") % (target_move,)) + + def evaluate( + self, + aep, + date_from, + date_to, + target_move="posted", + aml_model=None, + subkpis_filter=None, + get_additional_move_line_filter=None, + get_additional_query_filter=None, + ): + """Simplified method to evaluate a report over a time period. + + :param aep: an AccountingExpressionProcessor instance created + using _prepare_aep() + :param date_from, date_to: the starting and ending date + :param target_move: all|posted + :param aml_model: the name of a model that is compatible with + account.move.line (default: account.move.line) + :param subkpis_filter: a list of subkpis to include in the evaluation + (if empty, use all subkpis) + :param get_additional_move_line_filter: a bound method that takes + no arguments and returns + a domain compatible with + account.move.line + :param get_additional_query_filter: a bound method that takes a single + query argument and returns a + domain compatible with the query + underlying model + :return: a dictionary where keys are KPI names, and values are the + evaluated results; some additional keys might be present: + these should be ignored as they might be removed in + the future. + """ + additional_move_line_filter = self._get_target_move_domain( + target_move, aml_model or "account.move.line" + ) + if get_additional_move_line_filter: + additional_move_line_filter.extend(get_additional_move_line_filter()) + expression_evaluator = ExpressionEvaluator( + aep, + date_from, + date_to, + additional_move_line_filter, + aml_model, + ) + return self._evaluate( + expression_evaluator, subkpis_filter, get_additional_query_filter + ) + + def _evaluate( + self, + expression_evaluator, + subkpis_filter=None, + get_additional_query_filter=None, + ): + locals_dict = {} + kpi_matrix = self.prepare_kpi_matrix() + self._declare_and_compute_period( + expression_evaluator, + kpi_matrix, + col_key=1, + col_label="", + col_description="", + subkpis_filter=subkpis_filter, + get_additional_query_filter=get_additional_query_filter, + locals_dict=locals_dict, + no_auto_expand_accounts=True, + ) + return locals_dict diff --git a/mis_builder/models/mis_report_instance.py b/mis_builder/models/mis_report_instance.py new file mode 100644 index 0000000..89fd983 --- /dev/null +++ b/mis_builder/models/mis_report_instance.py @@ -0,0 +1,922 @@ +# Copyright 2014 ACSONE SA/NV () +# Copyright 2020 CorporateHub (https://corporatehub.eu) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import ast +import datetime +import logging + +from dateutil.relativedelta import relativedelta + +from flectra import _, api, fields, models +from flectra.exceptions import UserError, ValidationError + +from .aep import AccountingExpressionProcessor as AEP +from .expression_evaluator import ExpressionEvaluator + +_logger = logging.getLogger(__name__) + + +SRC_ACTUALS = "actuals" +SRC_ACTUALS_ALT = "actuals_alt" +SRC_CMPCOL = "cmpcol" +SRC_SUMCOL = "sumcol" + +MODE_NONE = "none" +MODE_FIX = "fix" +MODE_REL = "relative" + + +class DateFilterRequired(ValidationError): + pass + + +class DateFilterForbidden(ValidationError): + pass + + +class MisReportInstancePeriodSum(models.Model): + _name = "mis.report.instance.period.sum" + _description = "MIS Report Instance Period Sum" + + period_id = fields.Many2one( + comodel_name="mis.report.instance.period", + string="Parent column", + ondelete="cascade", + required=True, + ) + period_to_sum_id = fields.Many2one( + comodel_name="mis.report.instance.period", + string="Column", + ondelete="restrict", + required=True, + ) + sign = fields.Selection([("+", "+"), ("-", "-")], required=True, default="+") + + @api.constrains("period_id", "period_to_sum_id") + def _check_period_to_sum(self): + for rec in self: + if rec.period_id == rec.period_to_sum_id: + raise ValidationError( + _("You cannot sum period %s with itself.") % rec.period_id.name + ) + + +class MisReportInstancePeriod(models.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. + """ + + @api.depends( + "report_instance_id.pivot_date", + "report_instance_id.comparison_mode", + "date_range_type_id", + "type", + "offset", + "duration", + "mode", + "manual_date_from", + "manual_date_to", + "is_ytd", + ) + def _compute_dates(self): + for record in self: + record.date_from = False + record.date_to = False + record.valid = False + report = record.report_instance_id + d = fields.Date.from_string(report.pivot_date) + if not report.comparison_mode: + record.date_from = report.date_from + record.date_to = report.date_to + record.valid = record.date_from and record.date_to + elif record.mode == MODE_NONE: + record.date_from = False + record.date_to = False + record.valid = True + elif record.mode == MODE_FIX: + record.date_from = record.manual_date_from + record.date_to = record.manual_date_to + record.valid = record.date_from and record.date_to + elif record.mode == MODE_REL and record.type == "d": + date_from = d + datetime.timedelta(days=record.offset) + date_to = date_from + datetime.timedelta(days=record.duration - 1) + record.date_from = fields.Date.to_string(date_from) + record.date_to = fields.Date.to_string(date_to) + record.valid = True + elif record.mode == MODE_REL and record.type == "w": + date_from = d - datetime.timedelta(d.weekday()) + date_from = date_from + datetime.timedelta(days=record.offset * 7) + date_to = date_from + datetime.timedelta(days=(7 * record.duration) - 1) + record.date_from = fields.Date.to_string(date_from) + record.date_to = fields.Date.to_string(date_to) + record.valid = True + elif record.mode == MODE_REL and record.type == "m": + date_from = d.replace(day=1) + date_from = date_from + relativedelta(months=record.offset) + date_to = ( + date_from + + relativedelta(months=record.duration - 1) + + relativedelta(day=31) + ) + record.date_from = fields.Date.to_string(date_from) + record.date_to = fields.Date.to_string(date_to) + record.valid = True + elif record.mode == MODE_REL and record.type == "y": + date_from = d.replace(month=1, day=1) + date_from = date_from + relativedelta(years=record.offset) + date_to = date_from + relativedelta(years=record.duration - 1) + date_to = date_to.replace(month=12, day=31) + record.date_from = fields.Date.to_string(date_from) + record.date_to = fields.Date.to_string(date_to) + record.valid = True + elif record.mode == MODE_REL and record.type == "date_range": + date_range_obj = record.env["date.range"] + current_periods = date_range_obj.search( + [ + ("type_id", "=", record.date_range_type_id.id), + ("date_start", "<=", d), + ("date_end", ">=", d), + "|", + ("company_id", "=", False), + ( + "company_id", + "in", + record.report_instance_id.query_company_ids.ids, + ), + ] + ) + if current_periods: + # TODO we take the first date range we found as current + # this may be surprising if several companies + # have overlapping date ranges with different dates + current_period = current_periods[0] + all_periods = date_range_obj.search( + [ + ("type_id", "=", current_period.type_id.id), + ("company_id", "=", current_period.company_id.id), + ], + order="date_start", + ) + p = all_periods.ids.index(current_period.id) + record.offset + if p >= 0 and p + record.duration <= len(all_periods): + periods = all_periods[p : p + record.duration] + record.date_from = periods[0].date_start + record.date_to = periods[-1].date_end + record.valid = True + if record.mode == MODE_REL and record.valid and record.is_ytd: + record.date_from = fields.Date.from_string(record.date_to).replace( + day=1, month=1 + ) + + _name = "mis.report.instance.period" + _description = "MIS Report Instance Period" + + name = fields.Char(required=True, string="Label", translate=True) + mode = fields.Selection( + [ + (MODE_FIX, "Fixed dates"), + (MODE_REL, "Relative to report base date"), + (MODE_NONE, "No date filter"), + ], + required=True, + default=MODE_FIX, + ) + type = fields.Selection( + [ + ("d", _("Day")), + ("w", _("Week")), + ("m", _("Month")), + ("y", _("Year")), + ("date_range", _("Date Range")), + ], + string="Period type", + ) + is_ytd = fields.Boolean( + default=False, + string="Year to date", + help="Forces the start date to Jan 1st of the relevant year", + ) + date_range_type_id = fields.Many2one( + comodel_name="date.range.type", + string="Date Range Type", + domain=[("allow_overlap", "=", False)], + ) + offset = fields.Integer(help="Offset from current period", default=-1) + duration = fields.Integer(help="Number of periods", default=1) + date_from = fields.Date(compute="_compute_dates", string="From (computed)") + date_to = fields.Date(compute="_compute_dates", string="To (computed)") + manual_date_from = fields.Date(string="From") + manual_date_to = fields.Date(string="To") + date_range_id = fields.Many2one(comodel_name="date.range", string="Date Range") + valid = fields.Boolean(compute="_compute_dates", type="boolean") + sequence = fields.Integer(default=100) + report_instance_id = fields.Many2one( + comodel_name="mis.report.instance", + string="Report Instance", + required=True, + ondelete="cascade", + ) + report_id = fields.Many2one(related="report_instance_id.report_id") + normalize_factor = fields.Integer( + string="Factor", + help="Factor to use to normalize the period (used in comparison", + default=1, + ) + subkpi_ids = fields.Many2many("mis.report.subkpi", string="Sub KPI Filter") + + source = fields.Selection( + [ + (SRC_ACTUALS, "Actuals"), + (SRC_ACTUALS_ALT, "Actuals (alternative)"), + (SRC_SUMCOL, "Sum columns"), + (SRC_CMPCOL, "Compare columns"), + ], + default=SRC_ACTUALS, + required=True, + help="Actuals: current data, from accounting and other queries.\n" + "Actuals (alternative): current data from an " + "alternative source (eg a database view providing look-alike " + "account move lines).\n" + "Sum columns: summation (+/-) of other columns.\n" + "Compare to column: compare to other column.\n", + ) + source_aml_model_id = fields.Many2one( + comodel_name="ir.model", + string="Move lines source", + domain=[ + ("field_id.name", "=", "debit"), + ("field_id.name", "=", "credit"), + ("field_id.name", "=", "account_id"), + ("field_id.name", "=", "date"), + ("field_id.name", "=", "company_id"), + ("field_id.model_id.model", "!=", "account.move.line"), + ], + compute="_compute_source_aml_model_id", + store=True, + readonly=False, + help="A 'move line like' model, ie having at least debit, credit, " + "date, account_id and company_id fields.", + ) + source_aml_model_name = fields.Char( + string="Move lines source model name", related="source_aml_model_id.model" + ) + source_sumcol_ids = fields.One2many( + comodel_name="mis.report.instance.period.sum", + inverse_name="period_id", + string="Columns to sum", + ) + source_sumcol_accdet = fields.Boolean(string="Sum account details") + source_cmpcol_from_id = fields.Many2one( + comodel_name="mis.report.instance.period", string="versus" + ) + source_cmpcol_to_id = fields.Many2one( + comodel_name="mis.report.instance.period", string="Compare" + ) + allowed_cmpcol_ids = fields.Many2many( + comodel_name="mis.report.instance.period", compute="_compute_allowed_cmpcol_ids" + ) + analytic_domain = fields.Text( + default="[]", + help="A domain to additionally filter move lines considered in this column.", + ) + + _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", + ), + ] + + @api.depends("source", "report_instance_id.report_id.move_lines_source") + def _compute_source_aml_model_id(self): + for record in self: + if record.source == SRC_ACTUALS: + if not record.report_instance_id.report_id: + raise UserError( + _( + "Please select a report template and/or " + "save the report before adding columns." + ) + ) + # use the default model defined on the report template + record.source_aml_model_id = ( + record.report_instance_id.report_id.move_lines_source + ) + elif record.source in (SRC_SUMCOL, SRC_CMPCOL): + record.source_aml_model_id = False + elif record.source == SRC_ACTUALS_ALT: + pass # let the user choose + + @api.depends("report_instance_id") + def _compute_allowed_cmpcol_ids(self): + """Compute actual records while in NewId context""" + for record in self: + record.allowed_cmpcol_ids = record.report_instance_id.period_ids - record + + @api.constrains("source_aml_model_id") + def _check_source_aml_model_id(self): + for record in self: + if record.source_aml_model_id: + record_model = record.source_aml_model_id.field_id.filtered( + lambda r: r.name == "account_id" + ).relation + report_account_model = record.report_id.account_model + if record_model != report_account_model: + raise ValidationError( + _( + "Actual (alternative) models used in columns must " + "have the same account model in the Account field and must " + "be the same defined in the " + "report template: %s" + ) + % report_account_model + ) + + @api.onchange("date_range_id") + def _onchange_date_range(self): + if self.date_range_id: + self.manual_date_from = self.date_range_id.date_start + self.manual_date_to = self.date_range_id.date_end + + @api.onchange("manual_date_from", "manual_date_to") + def _onchange_dates(self): + if self.date_range_id: + if ( + self.manual_date_from != self.date_range_id.date_start + or self.manual_date_to != self.date_range_id.date_end + ): + self.date_range_id = False + + @api.onchange("source") + def _onchange_source(self): + if self.source in (SRC_SUMCOL, SRC_CMPCOL): + self.mode = MODE_NONE + # Dirty hack to solve bug https://github.com/OCA/mis-builder/issues/393 + if self.source and not self.report_instance_id.id: + self.report_instance_id = self.report_instance_id._origin.id + + def _get_additional_move_line_filter(self): + """Prepare a filter to apply on all move lines + + This filter will be 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. + + The default filter is obtained from the report-instance-level + ``_get_filter_domain`` method, extended with a per column analytic domain. + + Returns an Flectra domain expression (a python list) compatible with + account.move.line. + """ + self.ensure_one() + if not self.source_aml_model_name: + # This column does not have a move line source, so this additional move line + # filter does not apply + return [] + # First get the report-level filter domain. + domain = self.report_instance_id._get_filter_domain(self.source_aml_model_name) + if self.analytic_domain: + # Then extend it with the column-level analytic domain. + domain.extend(ast.literal_eval(self.analytic_domain)) + return domain + + def _get_additional_query_filter(self, query): + """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 Flectra domain expression (a python list) + compatible with the model of the query.""" + self.ensure_one() + return [] + + @api.constrains("mode", "source") + def _check_mode_source(self): + for rec in self: + if rec.source in (SRC_ACTUALS, SRC_ACTUALS_ALT): + if rec.mode == MODE_NONE: + raise DateFilterRequired( + _("A date filter is mandatory for this source " "in column %s.") + % rec.name + ) + elif rec.source in (SRC_SUMCOL, SRC_CMPCOL): + if rec.mode != MODE_NONE: + raise DateFilterForbidden( + _("No date filter is allowed for this source " "in column %s.") + % rec.name + ) + + @api.constrains("source", "source_cmpcol_from_id", "source_cmpcol_to_id") + def _check_source_cmpcol(self): + for rec in self: + if rec.source == SRC_CMPCOL: + if not rec.source_cmpcol_from_id or not rec.source_cmpcol_to_id: + raise ValidationError( + _("Please provide both columns to compare in %s.") % rec.name + ) + if rec.source_cmpcol_from_id == rec or rec.source_cmpcol_to_id == rec: + raise ValidationError( + _("Column %s cannot be compared to itrec.") % rec.name + ) + if ( + rec.source_cmpcol_from_id.report_instance_id + != rec.report_instance_id + or rec.source_cmpcol_to_id.report_instance_id + != rec.report_instance_id + ): + raise ValidationError( + _("Columns to compare must belong to the same report " "in %s") + % rec.name + ) + + def copy_data(self, default=None): + if self.source == SRC_CMPCOL: + # While duplicating a MIS report instance, comparison columns are + # ignored because they would raise an error, as they keep the old + # `source_cmpcol_from_id` and `source_cmpcol_to_id` from the + # original record. + return [ + False, + ] + return super().copy_data(default=default) + + +class MisReportInstance(models.Model): + """The MIS report instance combines everything to compute + a MIS report template for a set of periods.""" + + @api.depends("date") + def _compute_pivot_date(self): + for record in self: + if self.env.context.get("mis_pivot_date"): + record.pivot_date = self.env.context.get("mis_pivot_date") + elif record.date: + record.pivot_date = record.date + else: + record.pivot_date = fields.Date.context_today(record) + + _name = "mis.report.instance" + _description = "MIS Report Instance" + + name = fields.Char(required=True, translate=True) + description = fields.Char(related="report_id.description", readonly=True) + date = fields.Date( + string="Base date", help="Report base date " "(leave empty to use current date)" + ) + pivot_date = fields.Date(compute="_compute_pivot_date") + report_id = fields.Many2one("mis.report", required=True, string="Report") + period_ids = fields.One2many( + comodel_name="mis.report.instance.period", + inverse_name="report_instance_id", + required=True, + string="Periods", + copy=True, + ) + target_move = fields.Selection( + [("posted", "All Posted Entries"), ("all", "All Entries")], + string="Target Moves", + required=True, + default="posted", + ) + company_id = fields.Many2one( + comodel_name="res.company", + string="Allowed company", + default=lambda self: self.env.company, + required=False, + ) + multi_company = fields.Boolean( + string="Multiple companies", + help="Check if you wish to specify several companies to be searched for data.", + default=False, + ) + company_ids = fields.Many2many( + comodel_name="res.company", + string="Allowed companies", + help="Select companies for which data will be searched.", + ) + query_company_ids = fields.Many2many( + string="Effective companies", + comodel_name="res.company", + compute="_compute_query_company_ids", + help="Companies for which data will be searched.", + ) + currency_id = fields.Many2one( + comodel_name="res.currency", + string="Currency", + help="Select target currency for the report. " + "Required if companies have different currencies.", + required=False, + ) + landscape_pdf = fields.Boolean(string="Landscape PDF") + no_auto_expand_accounts = fields.Boolean(string="Disable account details expansion") + display_columns_description = fields.Boolean( + help="Display the date range details in the column headers." + ) + comparison_mode = fields.Boolean( + compute="_compute_comparison_mode", inverse="_inverse_comparison_mode" + ) + date_range_id = fields.Many2one(comodel_name="date.range", string="Date Range") + date_from = fields.Date(string="From") + date_to = fields.Date(string="To") + temporary = fields.Boolean(default=False) + source_aml_model_id = fields.Many2one( + related="report_id.move_lines_source", + readonly=True, + ) + source_aml_model_name = fields.Char( + related="source_aml_model_id.model", + related_sudo=True, + readonly=True, + ) + analytic_domain = fields.Text( + default="[]", + help=( + "A domain to additionally filter move lines considered in this report. " + "Caution: when using different move line sources in different columns, " + "such as budgets by account, " + "make sure to use only fields that are available in " + "all move line sources." + ), + ) + widget_show_filters = fields.Boolean( + default=True, + string="Show filters box", + help="Show the filter bar in the report widget.", + ) + widget_show_settings_button = fields.Boolean( + default=False, + string="Show settings button", + help="Show the settings button in the report widget.", + ) + widget_show_pivot_date = fields.Boolean( + default=False, + string="Show Pivot Date", + help="Show the Pivot Date in the report widget filter bar.", + ) + widget_search_view_id = fields.Many2one( + comodel_name="ir.ui.view", + domain='[("type", "=", "search"), ("model", "=", source_aml_model_name)]', + compute="_compute_widget_search_view_id", + store=True, + readonly=False, + string="Filter box search view", + help="Search view to customize the filter box in the report widget.", + ) + + @api.depends("report_id.move_lines_source") + def _compute_widget_search_view_id(self): + for rec in self: + rec.widget_search_view_id = ( + self.env["ir.ui.view"] + .sudo() + .search( + [ + ("type", "=", "search"), + ("model", "=", rec.report_id.move_lines_source.model), + ], + limit=1, + ) + ) + + @api.onchange("multi_company") + def _onchange_company(self): + if self.multi_company: + self.company_ids |= self.company_id + self.company_id = False + else: + prev = self.company_ids.ids + company = False + if self.env.company.id in prev or not prev: + company = self.env.company + else: + for c_id in prev: + if c_id in self.env.companies.ids: + company = self.env["res.company"].browse(c_id) + break + + self.company_id = company + self.company_ids = False + + @api.depends("multi_company", "company_id", "company_ids") + @api.depends_context("allowed_company_ids") + def _compute_query_company_ids(self): + for rec in self: + if rec.multi_company: + if not rec.company_ids: + rec.query_company_ids = self.env.companies + else: + rec.query_company_ids = rec.company_ids & self.env.companies + else: + rec.query_company_ids = rec.company_id or self.env.company + + @api.model + def get_filter_descriptions(self): + return [] + + def save_report(self): + self.ensure_one() + self.write({"temporary": False}) + xmlid = "mis_builder.mis_report_instance_view_action" + action = self.env["ir.actions.act_window"]._for_xml_id(xmlid) + view = self.env.ref("mis_builder.mis_report_instance_view_form") + action.update({"views": [(view.id, "form")], "res_id": self.id}) + return action + + @api.model + def _vacuum_report(self, hours=24): + clear_date = fields.Datetime.to_string( + datetime.datetime.now() - datetime.timedelta(hours=hours) + ) + reports = self.search( + [("write_date", "<", clear_date), ("temporary", "=", True)] + ) + _logger.debug("Vacuum %s Temporary MIS Builder Report", len(reports)) + return reports.unlink() + + def copy(self, default=None): + self.ensure_one() + default = dict(default or {}) + default["name"] = _("%s (copy)") % self.name + return super().copy(default) + + def _format_date(self, date): + # format date following user language + lang_model = self.env["res.lang"] + lang = lang_model._lang_get(self.env.user.lang) + date_format = lang.date_format + return datetime.datetime.strftime(fields.Date.from_string(date), date_format) + + @api.depends("date_from") + def _compute_comparison_mode(self): + for instance in self: + instance.comparison_mode = bool(instance.period_ids) and not bool( + instance.date_from + ) + + def _inverse_comparison_mode(self): + for record in self: + if not record.comparison_mode: + if not record.date_from: + record.date_from = fields.Date.context_today(self) + if not record.date_to: + record.date_to = fields.Date.context_today(self) + record.period_ids.unlink() + record.write({"period_ids": [(0, 0, {"name": "Default"})]}) + else: + record.date_from = None + record.date_to = None + + @api.onchange("date_range_id") + def _onchange_date_range(self): + if self.date_range_id: + self.date_from = self.date_range_id.date_start + self.date_to = self.date_range_id.date_end + + @api.onchange("date_from", "date_to") + def _onchange_dates(self): + if self.date_range_id: + if ( + self.date_from != self.date_range_id.date_start + or self.date_to != self.date_range_id.date_end + ): + self.date_range_id = False + + def _add_analytic_filters_to_context(self, context): + self.ensure_one() + context["mis_analytic_domain"] = ast.literal_eval(self.analytic_domain) + + def _get_filter_domain(self, source_aml_model_name): + """Return the domain to filter the source move lines. + + It combines + - the draft/posted filter (if the move line source has a parent_state + field). + - the analytic domain field configured on this report instance + - a mis_analytic_domain obtained from the context (typically populated + by the mis builder widget) + """ + domain = [] + # draft/posted filter + domain.extend( + self.report_id._get_target_move_domain( + self.target_move, source_aml_model_name + ) + ) + # report-level analytic domain filter + domain.extend(ast.literal_eval(self.analytic_domain)) + # contextual analytic domain filter + domain.extend(self.env.context.get("mis_analytic_domain", [])) + return domain + + @api.model + def get_views(self, views, options=None): + """ + Override to get correct form view on dashboard + """ + context = self.env.context + if ( + context.get("from_dashboard") + and context.get("active_model") == "mis.report.instance" + ): + view_id = self.env.ref( + "mis_builder." "mis_report_instance_result_view_form" + ) + mis_report_form_view = view_id and [view_id.id, "form"] + for view in views: + if view and view[1] == "form": + views.remove(view) + views.append(mis_report_form_view) + result = super().get_views(views, options) + return result + + def preview(self): + self.ensure_one() + view_id = self.env.ref("mis_builder." "mis_report_instance_result_view_form") + return { + "type": "ir.actions.act_window", + "res_model": "mis.report.instance", + "res_id": self.id, + "view_mode": "form", + "view_id": view_id.id, + "target": "current", + "context": self.env.context, + } + + def print_pdf(self): + self.ensure_one() + return ( + self.env.ref("mis_builder.qweb_pdf_export") + .with_context(landscape=self.landscape_pdf) + .report_action(self, data=dict(dummy=True)) # required to propagate context + ) + + def export_xls(self): + self.ensure_one() + return self.env.ref("mis_builder.xls_export").report_action( + self, data=dict(dummy=True) + ) # required to propagate context + + def display_settings(self): + assert len(self.ids) <= 1 + view_id = self.env.ref("mis_builder.mis_report_instance_view_form") + return { + "type": "ir.actions.act_window", + "res_model": "mis.report.instance", + "res_id": self.id if self.id else False, + "view_mode": "form", + "views": [(view_id.id, "form")], + "view_id": view_id.id, + "target": "current", + } + + def _add_column_move_lines(self, aep, kpi_matrix, period, label, description): + if not period.date_from or not period.date_to: + raise UserError( + _("Column %s with move lines source must have from/to dates.") + % (period.name,) + ) + expression_evaluator = ExpressionEvaluator( + aep, + period.date_from, + period.date_to, + period._get_additional_move_line_filter(), + period.source_aml_model_name, + ) + self.report_id._declare_and_compute_period( + expression_evaluator, + kpi_matrix, + period.id, + label, + description, + period.subkpi_ids, + period._get_additional_query_filter, + no_auto_expand_accounts=self.no_auto_expand_accounts, + ) + + def _add_column_sumcol(self, aep, kpi_matrix, period, label, description): + kpi_matrix.declare_sum( + period.id, + [(c.sign, c.period_to_sum_id.id) for c in period.source_sumcol_ids], + label, + description, + period.source_sumcol_accdet, + ) + + def _add_column_cmpcol(self, aep, kpi_matrix, period, label, description): + kpi_matrix.declare_comparison( + period.id, + period.source_cmpcol_to_id.id, + period.source_cmpcol_from_id.id, + label, + description, + ) + + def _add_column(self, aep, kpi_matrix, period, label, description): + if period.source == SRC_ACTUALS: + return self._add_column_move_lines( + aep, kpi_matrix, period, label, description + ) + elif period.source == SRC_ACTUALS_ALT: + return self._add_column_move_lines( + aep, kpi_matrix, period, label, description + ) + elif period.source == SRC_SUMCOL: + return self._add_column_sumcol(aep, kpi_matrix, period, label, description) + elif period.source == SRC_CMPCOL: + return self._add_column_cmpcol(aep, kpi_matrix, period, label, description) + + def _compute_matrix(self): + """Compute a report and return a KpiMatrix. + + The key attribute of the matrix columns (KpiMatrixCol) + is guaranteed to be the id of the mis.report.instance.period. + """ + self.ensure_one() + aep = self.report_id._prepare_aep(self.query_company_ids, self.currency_id) + kpi_matrix = self.report_id.prepare_kpi_matrix(self.multi_company) + for period in self.period_ids: + description = None + if period.mode == MODE_NONE: + pass + elif not self.display_columns_description: + pass + elif period.date_from == period.date_to and period.date_from: + description = self._format_date(period.date_from) + elif period.date_from and period.date_to: + date_from = self._format_date(period.date_from) + date_to = self._format_date(period.date_to) + description = _( + "from %(date_from)s to %(date_to)s", + date_from=date_from, + date_to=date_to, + ) + self._add_column(aep, kpi_matrix, period, period.name, description) + kpi_matrix.compute_comparisons() + kpi_matrix.compute_sums() + return kpi_matrix + + def compute(self): + self.ensure_one() + kpi_matrix = self._compute_matrix() + return kpi_matrix.as_dict() + + def drilldown(self, arg): + self.ensure_one() + period_id = arg.get("period_id") + expr = arg.get("expr") + account_id = arg.get("account_id") + if period_id and expr and AEP.has_account_var(expr): + period = self.env["mis.report.instance.period"].browse(period_id) + aep = AEP( + self.query_company_ids, self.currency_id, self.report_id.account_model + ) + aep.parse_expr(expr) + aep.done_parsing() + domain = aep.get_aml_domain_for_expr( + expr, + period.date_from, + period.date_to, + account_id, + ) + domain.extend(period._get_additional_move_line_filter()) + return { + "name": self._get_drilldown_action_name(arg), + "domain": domain, + "type": "ir.actions.act_window", + "res_model": period.source_aml_model_name, + "views": [[False, "list"], [False, "form"]], + "view_mode": "list", + "target": "current", + "context": {"active_test": False}, + } + else: + return False + + def _get_drilldown_action_name(self, arg): + kpi_id = arg.get("kpi_id") + kpi = self.env["mis.report.kpi"].browse(kpi_id) + period_id = arg.get("period_id") + period = self.env["mis.report.instance.period"].browse(period_id) + account_id = arg.get("account_id") + + if account_id: + account = self.env[self.report_id.account_model].browse(account_id) + return f"{kpi.description} - {account.display_name} - {period.display_name}" + else: + return f"{kpi.description} - {period.display_name}" diff --git a/mis_builder/models/mis_report_style.py b/mis_builder/models/mis_report_style.py new file mode 100644 index 0000000..0fc7ed0 --- /dev/null +++ b/mis_builder/models/mis_report_style.py @@ -0,0 +1,311 @@ +# Copyright 2016 Therp BV () +# Copyright 2016 ACSONE SA/NV () +# Copyright 2020 CorporateHub (https://corporatehub.eu) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import sys + +from flectra import _, api, fields, models +from flectra.exceptions import ValidationError + +from .accounting_none import AccountingNone +from .data_error import DataError + +if sys.version_info.major >= 3: + unicode = str + + +class PropertyDict(dict): + def __getattr__(self, name): + return self.get(name) + + def copy(self): # pylint: disable=copy-wo-api-one,method-required-super + return PropertyDict(self) + + +PROPS = [ + "color", + "background_color", + "font_style", + "font_weight", + "font_size", + "indent_level", + "prefix", + "suffix", + "dp", + "divider", + "hide_empty", + "hide_always", +] + +TYPE_NUM = "num" +TYPE_PCT = "pct" +TYPE_STR = "str" + +CMP_DIFF = "diff" +CMP_PCT = "pct" +CMP_NONE = "none" + + +class MisReportKpiStyle(models.Model): + _name = "mis.report.style" + _description = "MIS Report Style" + + @api.constrains("indent_level") + def check_positive_val(self): + for record in self: + if record.indent_level < 0: + raise ValidationError( + _("Indent level must be greater than " "or equal to 0") + ) + + _font_style_selection = [("normal", "Normal"), ("italic", "Italic")] + + _font_weight_selection = [("nornal", "Normal"), ("bold", "Bold")] + + _font_size_selection = [ + ("medium", "medium"), + ("xx-small", "xx-small"), + ("x-small", "x-small"), + ("small", "small"), + ("large", "large"), + ("x-large", "x-large"), + ("xx-large", "xx-large"), + ] + + _font_size_to_xlsx_size = { + "medium": 11, + "xx-small": 5, + "x-small": 7, + "small": 9, + "large": 13, + "x-large": 15, + "xx-large": 17, + } + + # style name + # TODO enforce uniqueness + name = fields.Char(string="Style name", required=True) + + # color + color_inherit = fields.Boolean(default=True) + color = fields.Char( + string="Text color", + help="Text color in valid RGB code (from #000000 to #FFFFFF)", + default="#000000", + ) + background_color_inherit = fields.Boolean(default=True) + background_color = fields.Char( + help="Background color in valid RGB code (from #000000 to #FFFFFF)", + default="#FFFFFF", + ) + # font + font_style_inherit = fields.Boolean(default=True) + font_style = fields.Selection(selection=_font_style_selection) + font_weight_inherit = fields.Boolean(default=True) + font_weight = fields.Selection(selection=_font_weight_selection) + font_size_inherit = fields.Boolean(default=True) + font_size = fields.Selection(selection=_font_size_selection) + # indent + indent_level_inherit = fields.Boolean(default=True) + indent_level = fields.Integer() + # number format + prefix_inherit = fields.Boolean(default=True) + prefix = fields.Char() + suffix_inherit = fields.Boolean(default=True) + suffix = fields.Char() + dp_inherit = fields.Boolean(default=True) + dp = fields.Integer(string="Rounding", default=0) + divider_inherit = fields.Boolean(default=True) + divider = fields.Selection( + [ + ("1e-6", _("µ")), + ("1e-3", _("m")), + ("1", _("1")), + ("1e3", _("k")), + ("1e6", _("M")), + ], + string="Factor", + default="1", + ) + hide_empty_inherit = fields.Boolean(default=True) + hide_empty = fields.Boolean(default=False) + hide_always_inherit = fields.Boolean(default=True) + hide_always = fields.Boolean(default=False) + + @api.model + def merge(self, styles): + """Merge several styles, giving priority to the last. + + Returns a PropertyDict of style properties. + """ + r = PropertyDict() + for style in styles: + if not style: + continue + if isinstance(style, dict): + r.update(style) + else: + for prop in PROPS: + inherit = getattr(style, prop + "_inherit", None) + if not inherit: + value = getattr(style, prop) + r[prop] = value + return r + + @api.model + def render(self, lang, style_props, var_type, value, sign="-"): + if var_type == TYPE_NUM: + return self.render_num( + lang, + value, + style_props.divider, + style_props.dp, + style_props.prefix, + style_props.suffix, + sign=sign, + ) + elif var_type == TYPE_PCT: + return self.render_pct(lang, value, style_props.dp, sign=sign) + else: + return self.render_str(lang, value) + + @api.model + def render_num( + self, lang, value, divider=1.0, dp=0, prefix=None, suffix=None, sign="-" + ): + # format number following user language + if value is None or value is AccountingNone: + return "" + value = round(value / float(divider or 1), dp or 0) or 0 + r = lang.format("%%%s.%df" % (sign, dp or 0), value, grouping=True) + r = r.replace("-", "\N{NON-BREAKING HYPHEN}") + if prefix: + r = prefix + "\N{NO-BREAK SPACE}" + r + if suffix: + r = r + "\N{NO-BREAK SPACE}" + suffix + return r + + @api.model + def render_pct(self, lang, value, dp=1, sign="-"): + return self.render_num(lang, value, divider=0.01, dp=dp, suffix="%", sign=sign) + + @api.model + def render_str(self, lang, value): + if value is None or value is AccountingNone: + return "" + return unicode(value) + + @api.model + def compare_and_render( + self, + lang, + style_props, + var_type, + compare_method, + value, + base_value, + average_value=1, + average_base_value=1, + ): + """ + :param lang: res.lang record + :param style_props: PropertyDict with style properties + :param var_type: num, pct or str + :param compare_method: diff, pct, none + :param value: value to compare (value - base_value) + :param base_value: value compared with (value - base_value) + :param average_value: value = value / average_value + :param average_base_value: base_value = base_value / average_base_value + :return: tuple with 4 elements + - delta = comparison result (Float or AccountingNone) + - delta_r = delta rendered in formatted string (String) + - delta_style = PropertyDict with style properties + - delta_type = Type of the comparison result (num or pct) + """ + delta = AccountingNone + delta_r = "" + delta_style = style_props.copy() + delta_type = TYPE_NUM + if isinstance(value, DataError) or isinstance(base_value, DataError): + return AccountingNone, "", delta_style, delta_type + if value is None: + value = AccountingNone + if base_value is None: + base_value = AccountingNone + if var_type == TYPE_PCT: + delta = value - base_value + if delta and round(delta, (style_props.dp or 0) + 2) != 0: + delta_style.update(divider=0.01, prefix="", suffix=_("pp")) + else: + delta = AccountingNone + elif var_type == TYPE_NUM: + if value and average_value: + # pylint: disable=redefined-variable-type + value = value / float(average_value) + if base_value and average_base_value: + # pylint: disable=redefined-variable-type + base_value = base_value / float(average_base_value) + if compare_method == CMP_DIFF: + delta = value - base_value + if delta and round(delta, style_props.dp or 0) != 0: + pass + else: + delta = AccountingNone + elif compare_method == CMP_PCT: + if base_value and round(base_value, style_props.dp or 0) != 0: + delta = (value - base_value) / abs(base_value) + if delta and round(delta, 3) != 0: + delta_style.update(dp=1) + delta_type = TYPE_PCT + else: + delta = AccountingNone + if delta is not AccountingNone: + delta_r = self.render(lang, delta_style, delta_type, delta, sign="+") + return delta, delta_r, delta_style, delta_type + + @api.model + def to_xlsx_style(self, var_type, props, no_indent=False): + xlsx_attributes = [ + ("italic", props.font_style == "italic"), + ("bold", props.font_weight == "bold"), + ("size", self._font_size_to_xlsx_size.get(props.font_size, 11)), + ("font_color", props.color), + ("bg_color", props.background_color), + ] + if var_type == TYPE_NUM: + num_format = "#,##0" + if props.dp: + num_format += "." + num_format += "0" * props.dp + if props.prefix: + num_format = f'"{props.prefix} "{num_format}' + if props.suffix: + num_format = f'{num_format}" {props.suffix}"' + xlsx_attributes.append(("num_format", num_format)) + elif var_type == TYPE_PCT: + num_format = "0" + if props.dp: + num_format += "." + num_format += "0" * props.dp + num_format += "%" + xlsx_attributes.append(("num_format", num_format)) + if props.indent_level is not None and not no_indent: + xlsx_attributes.append(("indent", props.indent_level)) + return dict([a for a in xlsx_attributes if a[1] is not None]) + + @api.model + def to_css_style(self, props, no_indent=False): + css_attributes = [ + ("font-style", props.font_style), + ("font-weight", props.font_weight), + ("font-size", props.font_size), + ("color", props.color), + ("background-color", props.background_color), + ] + if props.indent_level is not None and not no_indent: + css_attributes.append(("text-indent", f"{props.indent_level}em")) + return ( + "; ".join(["{}: {}".format(*a) for a in css_attributes if a[1] is not None]) + or None + ) diff --git a/mis_builder/models/mis_report_subreport.py b/mis_builder/models/mis_report_subreport.py new file mode 100644 index 0000000..5cdb894 --- /dev/null +++ b/mis_builder/models/mis_report_subreport.py @@ -0,0 +1,74 @@ +# Copyright 2020 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from flectra import _, api, fields, models +from flectra.exceptions import ValidationError + +from .mis_report import _is_valid_python_var + + +class ParentLoopError(ValidationError): + pass + + +class InvalidNameError(ValidationError): + pass + + +class MisReportSubReport(models.Model): + _name = "mis.report.subreport" + _description = "MIS Report - Sub Reports Relation" + + name = fields.Char(required=True) + report_id = fields.Many2one( + comodel_name="mis.report", + required=True, + ondelete="cascade", + ) + subreport_id = fields.Many2one( + comodel_name="mis.report", + required=True, + ondelete="restrict", + ) + + _sql_constraints = [ + ( + "name_unique", + "unique(name, report_id)", + "Subreport name should be unique by report", + ), + ( + "subreport_unique", + "unique(subreport_id, report_id)", + "Should not include the same report more than once as sub report " + "of a given report", + ), + ] + + @api.constrains("name") + def _check_name(self): + for rec in self: + if not _is_valid_python_var(rec.name): + raise InvalidNameError( + _("Subreport name ({}) must be a valid python identifier").format( + rec.name + ) + ) + + @api.constrains("report_id", "subreport_id") + def _check_loop(self): + def _has_subreport(reports, report): + if not reports: + return False + if report in reports: + return True + return any( + _has_subreport(r.subreport_ids.mapped("subreport_id"), report) + for r in reports + ) + + for rec in self: + if _has_subreport(rec.subreport_id, rec.report_id): + raise ParentLoopError(_("Subreport loop detected")) + + # TODO check subkpi compatibility in subreports diff --git a/mis_builder/models/mis_safe_eval.py b/mis_builder/models/mis_safe_eval.py new file mode 100644 index 0000000..6d62722 --- /dev/null +++ b/mis_builder/models/mis_safe_eval.py @@ -0,0 +1,33 @@ +# Copyright 2016 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import traceback + +from flectra.tools.safe_eval import _BUILTINS, _SAFE_OPCODES, test_expr + +from .data_error import DataError, NameDataError + +__all__ = ["mis_safe_eval"] + + +def mis_safe_eval(expr, locals_dict): + """Evaluate an expression using safe_eval + + Returns the evaluated value or DataError. + + Raises NameError if the evaluation depends on a variable that is not + present in local_dict. + """ + try: + c = test_expr(expr, _SAFE_OPCODES, mode="eval") + globals_dict = {"__builtins__": _BUILTINS} + # pylint: disable=eval-used,eval-referenced + val = eval(c, globals_dict, locals_dict) + except NameError: + val = NameDataError("#NAME", traceback.format_exc()) + except ZeroDivisionError: + # pylint: disable=redefined-variable-type + val = DataError("#DIV/0", traceback.format_exc()) + except Exception: + val = DataError("#ERR", traceback.format_exc()) + return val diff --git a/mis_builder/models/prorata_read_group_mixin.py b/mis_builder/models/prorata_read_group_mixin.py new file mode 100644 index 0000000..4e6543d --- /dev/null +++ b/mis_builder/models/prorata_read_group_mixin.py @@ -0,0 +1,96 @@ +# Copyright 2020 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from flectra import _, api, fields, models +from flectra.exceptions import UserError +from flectra.fields import Date + +from .mis_kpi_data import intersect_days + + +class ProRataReadGroupMixin(models.AbstractModel): + _name = "prorata.read_group.mixin" + _description = "Adapt model with date_from/date_to for pro-rata temporis read_group" + + date_from = fields.Date(required=True) + date_to = fields.Date(required=True) + date = fields.Date( + compute=lambda self: None, + search="_search_date", + help=( + "Dummy field that adapts searches on date " + "to searches on date_from/date_to." + ), + ) + + def _search_date(self, operator, value): + if operator in (">=", ">"): + return [("date_to", operator, value)] + elif operator in ("<=", "<"): + return [("date_from", operator, value)] + raise UserError( + _("Unsupported operator %s for searching on date") % (operator,) + ) + + @api.model + def _intersect_days(self, item_dt_from, item_dt_to, dt_from, dt_to): + return intersect_days(item_dt_from, item_dt_to, dt_from, dt_to) + + @api.model + def read_group( + self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True + ): + """Override read_group to perform pro-rata temporis adjustments. + + When read_group is invoked with a domain that filters on + a time period (date >= from and date <= to, or + date_from <= to and date_to >= from), adjust the accumulated + values pro-rata temporis. + """ + date_from = None + date_to = None + assert isinstance(domain, list) + for domain_item in domain: + if isinstance(domain_item, list | tuple): + field, op, value = domain_item + if field == "date" and op == ">=": + date_from = value + elif field == "date_to" and op == ">=": + date_from = value + elif field == "date" and op == "<=": + date_to = value + elif field == "date_from" and op == "<=": + date_to = value + if ( + date_from is not None + and date_to is not None + and not any(":" in f for f in fields) + ): + dt_from = Date.from_string(date_from) + dt_to = Date.from_string(date_to) + res = {} + sum_fields = set(fields) - set(groupby) + read_fields = set(fields + ["date_from", "date_to"]) + for item in self.search(domain).read(read_fields): + key = tuple(item[k] for k in groupby) + if key not in res: + res[key] = {k: item[k] for k in groupby} + res[key].update({k: 0.0 for k in sum_fields}) + res_item = res[key] + for sum_field in sum_fields: + item_dt_from = Date.from_string(item["date_from"]) + item_dt_to = Date.from_string(item["date_to"]) + i_days, item_days = self._intersect_days( + item_dt_from, item_dt_to, dt_from, dt_to + ) + res_item[sum_field] += item[sum_field] * i_days / item_days + return res.values() + return super().read_group( + domain, + fields, + groupby, + offset=offset, + limit=limit, + orderby=orderby, + lazy=lazy, + ) diff --git a/mis_builder/models/simple_array.py b/mis_builder/models/simple_array.py new file mode 100644 index 0000000..fa67b42 --- /dev/null +++ b/mis_builder/models/simple_array.py @@ -0,0 +1,184 @@ +# Copyright 2014 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +""" A trivial immutable array that supports basic arithmetic operations. + +>>> a = SimpleArray((1.0, 2.0, 3.0)) +>>> b = SimpleArray((4.0, 5.0, 6.0)) +>>> t = (4.0, 5.0, 6.0) +>>> +a +SimpleArray((1.0, 2.0, 3.0)) +>>> -a +SimpleArray((-1.0, -2.0, -3.0)) +>>> a + b +SimpleArray((5.0, 7.0, 9.0)) +>>> b + a +SimpleArray((5.0, 7.0, 9.0)) +>>> a + t +SimpleArray((5.0, 7.0, 9.0)) +>>> t + a +SimpleArray((5.0, 7.0, 9.0)) +>>> a - b +SimpleArray((-3.0, -3.0, -3.0)) +>>> a - t +SimpleArray((-3.0, -3.0, -3.0)) +>>> t - a +SimpleArray((3.0, 3.0, 3.0)) +>>> a * b +SimpleArray((4.0, 10.0, 18.0)) +>>> b * a +SimpleArray((4.0, 10.0, 18.0)) +>>> a * t +SimpleArray((4.0, 10.0, 18.0)) +>>> t * a +SimpleArray((4.0, 10.0, 18.0)) +>>> a / b +SimpleArray((0.25, 0.4, 0.5)) +>>> b / a +SimpleArray((4.0, 2.5, 2.0)) +>>> a / t +SimpleArray((0.25, 0.4, 0.5)) +>>> t / a +SimpleArray((4.0, 2.5, 2.0)) +>>> b / 2 +SimpleArray((2.0, 2.5, 3.0)) +>>> 2 * b +SimpleArray((8.0, 10.0, 12.0)) +>>> 1 - b +SimpleArray((-3.0, -4.0, -5.0)) +>>> b += 2 ; b +SimpleArray((6.0, 7.0, 8.0)) +>>> a / ((1.0, 0.0, 1.0)) +SimpleArray((1.0, DataError('#DIV/0'), 3.0)) +>>> a / 0.0 +SimpleArray((DataError('#DIV/0'), DataError('#DIV/0'), DataError('#DIV/0'))) +>>> a * ((1.0, 'a', 1.0)) +SimpleArray((1.0, DataError('#ERR'), 3.0)) +>>> 6.0 / a +SimpleArray((6.0, 3.0, 2.0)) +>>> Vector = named_simple_array('Vector', ('x', 'y')) +>>> p1 = Vector((1, 2)) +>>> print(p1.x, p1.y, p1) +1 2 Vector((1, 2)) +>>> p2 = Vector((2, 3)) +>>> print(p2.x, p2.y, p2) +2 3 Vector((2, 3)) +>>> p3 = p1 + p2 +>>> print(p3.x, p3.y, p3) +3 5 Vector((3, 5)) +>>> p4 = (4, 5) + p2 +>>> print(p4.x, p4.y, p4) +6 8 Vector((6, 8)) +>>> p1 * 2 +Vector((2, 4)) +>>> 2 * p1 +Vector((2, 4)) +>>> p1 - 1 +Vector((0, 1)) +>>> 1 - p1 +Vector((0, -1)) +>>> p1 / 2.0 +Vector((0.5, 1.0)) +>>> v = 2.0 / p1 +>>> print(v.x, v.y, v) +2.0 1.0 Vector((2.0, 1.0)) +""" + +import itertools +import operator +import traceback + +from .data_error import DataError + +__all__ = ["SimpleArray", "named_simple_array"] + + +class SimpleArray(tuple): + def _op(self, op, other): + def _o2(x, y): + try: + return op(x, y) + except ZeroDivisionError: + return DataError("#DIV/0", traceback.format_exc()) + except Exception: + return DataError("#ERR", traceback.format_exc()) + + if isinstance(other, tuple): + if len(other) != len(self): + raise TypeError("tuples must have same length for %s" % op) + return self.__class__(map(_o2, self, other)) + else: + return self.__class__(_o2(z, other) for z in self) + + def _cast(self, other): + if isinstance(other, self.__class__): + return other + elif isinstance(other, tuple): + return self.__class__(other) + else: + # other is a scalar + return self.__class__(itertools.repeat(other, len(self))) + + def __add__(self, other): + return self._op(operator.add, other) + + __radd__ = __add__ + + def __pos__(self): + return self.__class__(map(operator.pos, self)) + + def __neg__(self): + return self.__class__(map(operator.neg, self)) + + def __sub__(self, other): + return self._op(operator.sub, other) + + def __rsub__(self, other): + return self._cast(other)._op(operator.sub, self) + + def __mul__(self, other): + return self._op(operator.mul, other) + + __rmul__ = __mul__ + + def __div__(self, other): + return self._op(operator.div, other) + + def __floordiv__(self, other): + return self._op(operator.floordiv, other) + + def __truediv__(self, other): + return self._op(operator.truediv, other) + + def __rdiv__(self, other): + return self._cast(other)._op(operator.div, self) + + def __rfloordiv__(self, other): + return self._cast(other)._op(operator.floordiv, self) + + def __rtruediv__(self, other): + return self._cast(other)._op(operator.truediv, self) + + def __repr__(self): + return f"{self.__class__.__name__}({tuple.__repr__(self)})" + + +def named_simple_array(typename, field_names): + """Return a subclass of SimpleArray, with named properties. + + This method is to SimpleArray what namedtuple is to tuple. + It's less sophisticated than namedtuple so some namedtuple + advanced use cases may not work, but it's good enough for + our needs in mis_builder, ie referring to subkpi values + by name. + """ + props = { + field_name: property(operator.itemgetter(i)) + for i, field_name in enumerate(field_names) + } + return type(typename, (SimpleArray,), props) + + +if __name__ == "__main__": # pragma: no cover + import doctest + + doctest.testmod() diff --git a/mis_builder/pyproject.toml b/mis_builder/pyproject.toml new file mode 100644 index 0000000..4231d0c --- /dev/null +++ b/mis_builder/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/mis_builder/report/__init__.py b/mis_builder/report/__init__.py new file mode 100644 index 0000000..6f814d6 --- /dev/null +++ b/mis_builder/report/__init__.py @@ -0,0 +1,5 @@ +# Copyright 2014 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import mis_report_instance_qweb +from . import mis_report_instance_xlsx diff --git a/mis_builder/report/mis_report_instance_qweb.py b/mis_builder/report/mis_report_instance_qweb.py new file mode 100644 index 0000000..bdbfa8f --- /dev/null +++ b/mis_builder/report/mis_report_instance_qweb.py @@ -0,0 +1,27 @@ +# Copyright 2014 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import logging + +from flectra import models + +_logger = logging.getLogger(__name__) + + +class Report(models.Model): + _inherit = "ir.actions.report" + + def _render_qweb_pdf(self, report_ref, res_ids=None, data=None): + if ( + self._get_report(report_ref).report_name + == "mis_builder.report_mis_report_instance" + ): + if not res_ids: + res_ids = self.env.context.get("active_ids") + mis_report_instance = self.env["mis.report.instance"].browse(res_ids)[0] + # data=None, because it was there only to force Flectra + # to propagate context + return super( + Report, self.with_context(landscape=mis_report_instance.landscape_pdf) + )._render_qweb_pdf(report_ref, res_ids, data=None) + return super()._render_qweb_pdf(report_ref, res_ids, data) diff --git a/mis_builder/report/mis_report_instance_qweb.xml b/mis_builder/report/mis_report_instance_qweb.xml new file mode 100644 index 0000000..aa0e829 --- /dev/null +++ b/mis_builder/report/mis_report_instance_qweb.xml @@ -0,0 +1,111 @@ + + + + MIS report instance QWEB PDF report + mis.report.instance + ir.actions.report + mis_builder.report_mis_report_instance + qweb-pdf + + + + diff --git a/mis_builder/report/mis_report_instance_xlsx.py b/mis_builder/report/mis_report_instance_xlsx.py new file mode 100644 index 0000000..db67d7f --- /dev/null +++ b/mis_builder/report/mis_report_instance_xlsx.py @@ -0,0 +1,176 @@ +# Copyright 2014 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import logging +import numbers +from collections import defaultdict +from datetime import datetime + +from flectra import _, fields, models + +from ..models.accounting_none import AccountingNone +from ..models.data_error import DataError +from ..models.mis_report_style import TYPE_STR + +_logger = logging.getLogger(__name__) + + +ROW_HEIGHT = 15 # xlsxwriter units +COL_WIDTH = 0.9 # xlsxwriter units +MIN_COL_WIDTH = 10 # characters +MAX_COL_WIDTH = 50 # characters + + +class MisBuilderXlsx(models.AbstractModel): + _name = "report.mis_builder.mis_report_instance_xlsx" + _description = "MIS Builder XLSX report" + _inherit = "report.report_xlsx.abstract" + + def generate_xlsx_report(self, workbook, data, objects): + # get the computed result of the report + matrix = objects._compute_matrix() + style_obj = self.env["mis.report.style"] + + # create worksheet + report_name = "{} - {}".format( + objects[0].name, ", ".join([a.name for a in objects[0].query_company_ids]) + ) + sheet = workbook.add_worksheet(report_name[:31]) + row_pos = 0 + col_pos = 0 + # width of the labels column + label_col_width = MIN_COL_WIDTH + # {col_pos: max width in characters} + col_width = defaultdict(lambda: MIN_COL_WIDTH) + + # document title + bold = workbook.add_format({"bold": True}) + header_format = workbook.add_format( + {"bold": True, "align": "center", "bg_color": "#F0EEEE"} + ) + sheet.write(row_pos, 0, report_name, bold) + row_pos += 2 + + # filters + filter_descriptions = objects.get_filter_descriptions() + if filter_descriptions: + for filter_description in objects.get_filter_descriptions(): + sheet.write(row_pos, 0, filter_description) + row_pos += 1 + row_pos += 1 + + # column headers + sheet.write(row_pos, 0, "", header_format) + col_pos = 1 + for col in matrix.iter_cols(): + label = col.label + if col.description: + label += "\n" + col.description + sheet.set_row(row_pos, ROW_HEIGHT * 2) + if col.colspan > 1: + sheet.merge_range( + row_pos, + col_pos, + row_pos, + col_pos + col.colspan - 1, + label, + header_format, + ) + else: + sheet.write(row_pos, col_pos, label, header_format) + col_width[col_pos] = max( + col_width[col_pos], len(col.label or ""), len(col.description or "") + ) + col_pos += col.colspan + row_pos += 1 + + # sub column headers + sheet.write(row_pos, 0, "", header_format) + col_pos = 1 + for subcol in matrix.iter_subcols(): + label = subcol.label + if subcol.description: + label += "\n" + subcol.description + sheet.set_row(row_pos, ROW_HEIGHT * 2) + sheet.write(row_pos, col_pos, label, header_format) + col_width[col_pos] = max( + col_width[col_pos], + len(subcol.label or ""), + len(subcol.description or ""), + ) + col_pos += 1 + row_pos += 1 + + # rows + for row in matrix.iter_rows(): + if ( + row.style_props.hide_empty and row.is_empty() + ) or row.style_props.hide_always: + continue + row_xlsx_style = style_obj.to_xlsx_style(TYPE_STR, row.style_props) + row_format = workbook.add_format(row_xlsx_style) + col_pos = 0 + label = row.label + if row.description: + label += "\n" + row.description + sheet.set_row(row_pos, ROW_HEIGHT * 2) + sheet.write(row_pos, col_pos, label, row_format) + label_col_width = max( + label_col_width, len(row.label or ""), len(row.description or "") + ) + for cell in row.iter_cells(): + col_pos += 1 + if not cell or cell.val is AccountingNone: + # TODO col/subcol format + sheet.write(row_pos, col_pos, "", row_format) + continue + cell_xlsx_style = style_obj.to_xlsx_style( + cell.val_type, cell.style_props, no_indent=True + ) + cell_xlsx_style["align"] = "right" + cell_format = workbook.add_format(cell_xlsx_style) + if isinstance(cell.val, DataError): + val = cell.val.name + # TODO display cell.val.msg as Excel comment? + elif cell.val is None or cell.val is AccountingNone: + val = "" + else: + divider = float(cell.style_props.get("divider", 1)) + if ( + divider != 1 + and isinstance(cell.val, numbers.Number) + and not cell.val_type == "pct" + ): + val = cell.val / divider + else: + val = cell.val + sheet.write(row_pos, col_pos, val, cell_format) + col_width[col_pos] = max( + col_width[col_pos], len(cell.val_rendered or "") + ) + row_pos += 1 + + # Add date/time footer + row_pos += 1 + footer_format = workbook.add_format( + {"italic": True, "font_color": "#202020", "size": 9} + ) + lang_model = self.env["res.lang"] + lang = lang_model._lang_get(self.env.user.lang) + + now_tz = fields.Datetime.context_timestamp( + self.env["res.users"], datetime.now() + ) + create_date = _( + "Generated on %(gen_date)s at %(gen_time)s", + gen_date=now_tz.strftime(lang.date_format), + gen_time=now_tz.strftime(lang.time_format), + ) + sheet.write(row_pos, 0, create_date, footer_format) + + # adjust col widths + sheet.set_column(0, 0, min(label_col_width, MAX_COL_WIDTH) * COL_WIDTH) + data_col_width = min(MAX_COL_WIDTH, max(col_width.values())) + min_col_pos = min(col_width.keys()) + max_col_pos = max(col_width.keys()) + sheet.set_column(min_col_pos, max_col_pos, data_col_width * COL_WIDTH) diff --git a/mis_builder/report/mis_report_instance_xlsx.xml b/mis_builder/report/mis_report_instance_xlsx.xml new file mode 100644 index 0000000..93d2e02 --- /dev/null +++ b/mis_builder/report/mis_report_instance_xlsx.xml @@ -0,0 +1,11 @@ + + + + MIS report instance XLS report + mis.report.instance + ir.actions.report + mis_builder.mis_report_instance_xlsx + xlsx + mis_report_instance + + diff --git a/mis_builder/security/ir.model.access.csv b/mis_builder/security/ir.model.access.csv new file mode 100644 index 0000000..5a61ee7 --- /dev/null +++ b/mis_builder/security/ir.model.access.csv @@ -0,0 +1,22 @@ +"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_period_sum,manage_mis_report_instance_period_sum,model_mis_report_instance_period_sum,account.group_account_manager,1,1,1,1 +access_mis_report_instance_period_sum,access_mis_report_instance_period_sum,model_mis_report_instance_period_sum,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 +manage_mis_report_subkpi,access_mis_report_subkpi,model_mis_report_subkpi,account.group_account_manager,1,1,1,1 +access_mis_report_subkpi,access_mis_report_subkpi,model_mis_report_subkpi,base.group_user,1,0,0,0 +manage_mis_report_kpi_expression,access_mis_report_kpi_expression,model_mis_report_kpi_expression,account.group_account_manager,1,1,1,1 +access_mis_report_kpi_expression,access_mis_report_kpi_expression,model_mis_report_kpi_expression,base.group_user,1,0,0,0 +manage_mis_report_subreport,access_mis_report_subreport,model_mis_report_subreport,account.group_account_manager,1,1,1,1 +access_mis_report_subreport,access_mis_report_subreport,model_mis_report_subreport,base.group_user,1,0,0,0 +manage_mis_report_style,access_mis_report_style,model_mis_report_style,account.group_account_manager,1,1,1,1 +access_mis_report_style,access_mis_report_style,model_mis_report_style,base.group_user,1,0,0,0 +access_add_to_dashboard_wizard,access_add_to_dashboard_wizard,model_add_mis_report_instance_dashboard_wizard,base.group_user,1,1,1,0 diff --git a/mis_builder/security/mis_builder_security.xml b/mis_builder/security/mis_builder_security.xml new file mode 100644 index 0000000..cf4d64b --- /dev/null +++ b/mis_builder/security/mis_builder_security.xml @@ -0,0 +1,11 @@ + + + + Mis Report Instance multi company + + + ['|',('company_id','=',False),('company_id','in',company_ids), '|', + ('company_ids', '=', False), ('company_ids', 'in', company_ids)] + + + diff --git a/mis_builder/static/description/ex_report_preview.png b/mis_builder/static/description/ex_report_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..e818c5244272f9a71fe6e0300fa5d58fe8431e07 GIT binary patch literal 96172 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

GE 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%0DV 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

;l##9jMdi5m+OCr|ZVoc5dllQwahBKfyP$zQn? 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

tGkt7(hn=XR;h1q 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%0DU!OSVWPY-pDLQelfPs5MXFmfgNp~}wMes( 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 literal 0 KcmV+b0RR6000031 diff --git a/mis_builder/static/description/ex_report_settings.png b/mis_builder/static/description/ex_report_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..f2633b99ecf336313095a69f547318d573b6e647 GIT binary patch literal 103790 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%0ANys=WKD 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 l09*k^Mt&c6 literal 0 KcmV+b0RR6000031 diff --git a/mis_builder/static/description/icon.png b/mis_builder/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1afa781fabb8088818f3940ef56711e6281bd31e GIT binary patch literal 4770 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 + + + + + +MIS Builder + + + +

+

MIS Builder

+ + +

Production/Stable License: AGPL-3 OCA/mis-builder Translate me on Weblate Try me on Runboat

+

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.

+

Table of contents

+ +
+

Installation

+

Your preferred way to install addons will work with MIS Builder.

+

An easy way to install it with all its dependencies is using pip:

+
    +
  • pip install --pre odoo12-addon-mis_builder
  • +
  • then restart Odoo, update the addons list in your database, and install +the MIS Builder application.
  • +
+
+
+

Usage

+

To configure this module, you need to:

+
    +
  • Go to Accounting > Configuration > MIS Reporting > 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 > Reports > MIS Reporting > MIS Reports you can create report instance by +binding the templates to time periods, hence defining the columns of your reports.
  • +
+
+Sample report configuration +
+
    +
  • From the MIS Reports view, you can preview the report, add it to and Odoo dashboard, +and export it to PDF or Excel.
  • +
+
+Sample preview +
+
+
+

Development

+

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

+

The mis_builder roadmap +and known issues can +be found on GitHub.

+
+
+

Changelog

+
+

16.0.5.1.0 (2023-04-04)

+

Features

+
    +
  • Improve UX by adding the option to edit the pivot date directly on the view.
  • +
+
+
+

16.0.5.0.0 (2023-04-01)

+

Features

+
    +
  • Migration to 16.0
      +
    • Addition of a generic filter domain on reports and columns.
    • +
    • Addition of a search bar to the widget. The corresponding search view is configurable +per report.
    • +
    • Huge improvement of the widget style. This was long overdue.
    • +
    • Make the MIS Report menu accessible to the Billing Administrator group +(instead of the hidden Show Full Accounting Features), to align with the access rules +and avoid giving a false sense of security. This also makes the menu discoverable to +new users.
    • +
    • Removal of analytic fetures because the upstream analytic_distribution mechanism +is not compatible; support may be introduced in separate module, depending on use +cases.
    • +
    • Abandon the mis_report_filters context key which had security implication. +It is replaced by a mis_analytic_domain context key which is ANDed with other +report-defined filters. (#472)
    • +
    • Rename the get_filter_descriptions_from_context method to +get_filter_descriptions. This method may be overridden to provide additional +subtitles on the PDF or XLS report, representing user-selected filters.
    • +
    • The hide_analytic_filters has been replaced by widget_show_filters.
    • +
    • The visibility of the settings button on the widget is now controlled by a +show_settings_button. Before it was visible only for the account_user group +but this was not flexible enough.
    • +
    • The widget configuration settings are now grouped in a dedicated Widget tab in +the report configuration form.
    • +
    +
  • +
+

Bugfixes

+
    +
  • Fix access error when previewing or printing report. (#415)
  • +
+
+
+

15.0.4.0.5 (2022-07-19)

+

Bugfixes

+
    +
  • Support users without timezone. (#388)
  • +
+
+
+

15.0.4.0.4 (2022-07-19)

+

Bugfixes

+
    +
  • Allow deleting a report that has subreports. (#431)
  • +
+
+
+

15.0.4.0.2 (2022-02-16)

+

Bugfixes

+
    +
  • Fix access right issue when clicking the “Save” button on a MIS Report Instance form. (#410)
  • +
+
+
+

14.0.4.0.0 (2022-01-08)

+

Features

+
    +
  • Remove various field size limits. (#332)
  • +
+

Bugfixes

+
    +
  • Support for the Odoo 13+ multi-company model. In multi-company mode, several allowed +companies can be declared on MIS Report instances, and the report operates on the +intersection of report companies and companies selected in the user context. (#327)

    +
  • +
  • The get_additional_query_filter argument of evaluate() is now propagated +correctly. (#375)

    +
  • +
  • Use the parent_state field of account.move.line to filter entries in posted +and draft state only. Before, when reporting in draft mode, all entries were used +(i.e. there was no filter), and that started including the cancelled entries/invoices in +Odoo 13.+.

    +

    This change also contains a breaking change in the internal API. For quite a while +the target_move argument of AEP and other methods was not used by MIS Builder itself +and was kept for backward compatibility. To avoid rippling effects of the necessary +change to use parent_state, we now remove this argument. (#377)

    +
  • +
+
+
+

14.0.3.6.7 (2021-06-02)

+

Bugfixes

+
    +
  • When on a MIS Report Instance, if you wanted to generate a new line of type comparison, you couldn’t currently select any existing period to compare. +This happened because the field domain was searching in a NewId context, thus not finding a correct period. +Changing the domain and making it use a computed field with a search for the _origin record solves the problem. (#361)
  • +
+
+
+

14.0.3.6.6 (2021-04-23)

+

Bugfixes

+
    +
  • Fix drilldown action name when the account model has been customized. (#350)
  • +
+
+
+

14.0.3.6.5 (2021-04-23)

+

Bugfixes

+
    +
  • While duplicating a MIS report instance, comparison columns are ignored because +they would raise an error otherwise, as they keep the old source_cmpcol_from_id +and source_cmpcol_to_id from the original record. (#343)
  • +
+
+
+

14.0.3.6.4 (2021-04-06)

+

Features

+
    +
  • The drilldown action name displayed on the breadcrumb has been revised. +The kpi description and the account display_name are shown instead +of the kpi’s technical definition. (#304)
  • +
  • Add analytic group filters on report instance, periods and in the interactive +view. (#320)
  • +
+
+
+

13.0.3.6.3 (2020-08-28)

+

Bugfixes

+
    +
  • Having a “Compare columns” added on a KPI with an associated style using a +Factor/Divider did lead to the said factor being applied on the percentages +when exporting to XLSX. (#300)
  • +
+

Misc

+ +
+
+

13.0.3.6.2 (2020-04-22)

+

Bugfixes

+
    +
  • The “Settings” button is now displayed for users with the “Show full accounting features” right when previewing a report. (#281)
  • +
+
+
+

13.0.3.6.1 (2020-04-22)

+

Bugfixes

+
    +
  • Fix TypeError: 'module' object is not iterable when using +budgets by account. (#276)
  • +
+
+
+

13.0.3.6.0 (2020-03-28)

+

Features

+
    +
  • Add column-level filters on analytic account and analytic tags. +These filters are combined with a AND with the report-level filters +and cannot be modified in the preview. (#138)
  • +
  • Access to KPI from other reports in KPI expressions, aka subreports. In a +report template, one can list named “subreports” (other report templates). When +evaluating expressions, you can access KPI’s of subreports with a dot-prefix +notation. Example: you can define a MIS Report for a “Balance Sheet”, and then +have another MIS Report “Balance Sheet Ratios” that fetches KPI’s from “Balance +Sheet” to create new KPI’s for the ratios (e.g. balance_sheet.current_assets / +balance_sheet.total_assets). (#155)
  • +
+
+
+

13.0.3.5.0 (2020-01-??)

+

Migration to odoo 13.0.

+
+
+

12.0.3.5.0 (2019-10-26)

+

Features

+
    +
  • The account_id field of the model selected in ‘Move lines source’ +in the Period form can now be a Many2one +relationship with any model that has a code field (not only with +account.account model). To this end, the model to be used for Actuals +move lines can be configured on the report template. It can be something else +than move lines and the only constraint is that its account_id field +has a code field. (#149)
  • +
  • Add source_aml_model_name field so extension modules providing +alternative data sources can more easily customize their data source. (#214)
  • +
  • Support analytic tag filters in the backend view and preview widget. +Selecting several tags in the filter means filtering on move lines which +have all these tags set. This is to support the most common use case of +using tags for different dimensions. The filter also makes a AND with the +analytic account filter. (#228)
  • +
  • Display company in account details rows in multi-company mode. (#242)
  • +
+

Bugfixes

+
    +
  • Propagate context to xlsx report, so the analytic account filter +works when exporting to xslx too. This also requires a fix to +report_xlsx (see https://github.com/OCA/reporting-engine/pull/259). (#178)
  • +
  • In columns of type Sum, preserve styles for KPIs that are not summable +(eg percentage values). Before this fix, such cells were displayed without +style. (#219)
  • +
  • In Excel export, keep the percentage point suffix (pp) instead of replacing it with %. (#220)
  • +
+
+
+

12.0.3.4.0 (2019-07-09)

+

Features

+
    +
  • New year-to-date mode for defining periods. (#165)
  • +
  • Add support for move lines with negative debit or credit. +Used by some for storno accounting. Not officially supported. (#175)
  • +
  • In Excel export, use a number format with thousands separator. The +specific separator used depends on the Excel configuration (eg regional +settings). (#190)
  • +
  • Add generation date/time at the end of the XLS export. (#191)
  • +
  • In presence of Sub KPIs, report more informative user errors when +non-multi expressions yield tuples of incorrect lenght. (#196)
  • +
+

Bugfixes

+
    +
  • Fix rendering of percentage types in Excel export. (#192)
  • +
+
+
+

12.0.3.3.0 (2019-01-26)

+

Features

+

Dynamic analytic filters in report preview are not yet available in 11, +this requires an update to the JS widget that proved difficult to implement +so far. Help welcome.

+
    +
  • Analytic account filters. On a report, an analytic +account can be selected for filtering. The filter will +be applied to move lines queries. A filter box is also +available in the widget to let the user select the analytic +account during report preview. (#15)
  • +
  • Control visibility of analytic filter combo box in widget. +This is useful to hide the analytic filters on reports where +they do not make sense, such as balance sheet reports. (#42)
  • +
  • Display analytic filters in the header of exported pdf and xls. (#44)
  • +
  • Replace the last old gtk icons with fontawesome icons. (#104)
  • +
  • Use active_test=False in AEP queries. +This is important for reports involving inactive taxes. +This should not negatively effect existing reports, because +an accounting report must take into account all existing move lines +even if they reference objects such as taxes, journals, accounts types +that have been deactivated since their creation. (#107)
  • +
  • int(), float() and round() support for AccountingNone. (#108)
  • +
  • Allow referencing subkpis by name by writing kpi_x.subkpi_y in expressions. (#114)
  • +
  • Add an option to control the display of the start/end dates in the +column headers. It is disabled by default (this is a change compared +to previous behaviour). (#118)
  • +
  • Add evaluate method to mis.report. This is a simplified +method to evaluate kpis of a report over a time period, +without creating a mis.report.instance. (#123)
  • +
+

Bugs

+
    +
  • In the style form, hide the “Hide always” checkbox when “Hide always inherit” +is checked, as for all other syle elements. (#121 <https://github.com/OCA/mis-builder/pull/121>_)
  • +
+

Upgrading from 3.2 (breaking changes)

+

If you use Actuals (alternative) data source in combination with analytic +filters, the underlying model must now have an analytic_account_id field.

+
+
+

11.0.3.2.2 (2018-06-30)

+
    +
  • [FIX] Fix bug in company_default_get call returning +id instead of recordset +(#103)
  • +
  • [IMP] add “hide always” style property to make hidden KPI’s +(for KPI that serve as basis for other formulas, but do not +need to be displayed). +(#46)
  • +
+
+
+

11.0.3.2.1 (2018-05-29)

+
    +
  • [FIX] Missing comparison operator for AccountingNone +leading to errors in pbal computations +(#93)
  • +
+
+
+

10.0.3.2.0 (2018-05-02)

+
    +
  • [FIX] make subkpi ordering deterministic +(#71)
  • +
  • [ADD] report instance level option to disable account expansion, +enabling the creation of detailed templates while deferring the decision +of rendering the details or not to the report instance +(#74)
  • +
  • [ADD] pbal and nbal accounting expressions, to sum positive +and negative balances respectively (ie ignoring accounts with negative, +resp positive balances) +(#86)
  • +
+
+
+

11.0.3.1.2 (2018-02-04)

+

Migration to Odoo 11. No new feature. +(#67)

+
+
+

10.0.3.1.1 (2017-11-14)

+

New features:

+
    +
  • [ADD] month and year relative periods, easier to use than +date ranges for the most common case. +(#2)
  • +
  • [ADD] multi-company consolidation support, with currency conversion +(the conversion rate date is the end of the reporting period) +(#7, +#3)
  • +
  • [ADD] provide ref, datetime, dateutil, time, user in the evaluation +context of move line domains; among other things, this allows using +references to xml ids (such as account types or tax tags) when +querying move lines +(#26).
  • +
  • [ADD] extended account selectors: you can now select accounts using +any domain on account.account, not only account codes +balp[('account_type', '=', 'asset_receivable')] +(#4).
  • +
  • [IMP] in the report instance configuration form, the filters are +now grouped in a notebook page, this improves readability and +extensibility +(#39).
  • +
+

Bug fixes:

+
    +
  • [FIX] fix error when saving periods in comparison mode on newly +created (not yet saved) report instances. +#50
  • +
  • [FIX] improve display of Base Date report instance view. +#51
  • +
+

Upgrading from 3.0 (breaking changes):

+
    +
  • Alternative move line data sources must have a company_id field.
  • +
+
+
+

10.0.3.0.4 (2017-10-14)

+

Bug fix:

+
    +
  • [FIX] issue with initial balance rounding. +#30
  • +
+
+
+

10.0.3.0.3 (2017-10-03)

+

Bug fix:

+
    +
  • [FIX] fix error saving KPI on newly created reports. +#18
  • +
+
+
+

10.0.3.0.2 (2017-10-01)

+

New features:

+
    +
  • [ADD] Alternative move line source per report column. +This makes mis buidler accounting expressions work on any model +that has debit, credit, account_id and date fields. Provided you can +expose, say, committed purchases, or your budget as a view with +debit, credit and account_id, this opens up a lot of possibilities
  • +
  • [ADD] Comparison column source (more flexible than the previous, +now deprecated, comparison mechanism). +CAVEAT: there is no automated migration to the new mechanism.
  • +
  • [ADD] Sum column source, to create columns that add/subtract +other columns.
  • +
  • [ADD] mis.kpi.data abstract model as a basis for manual KPI values +supporting automatic ajustment to the reporting time period (the basis +for budget item, but could also server other purposes, such as manually +entering some KPI values, such as number of employee)
  • +
  • [ADD] mis_builder_budget module providing a new budget data source
  • +
  • [ADD] new “hide empty” style property
  • +
  • [IMP] new AEP method to get accounts involved in an expression +(this is useful to find which KPI relate to a given P&L +acount, to implement budget control)
  • +
  • [IMP] many UI improvements
  • +
  • [IMP] many code style improvements and some refactoring
  • +
  • [IMP] add the column date_from, date_to in expression evaluation context, +as well as time, datetime and dateutil modules
  • +
+

Main bug fixes:

+ +
+
+

10.0.2.0.3 (unreleased)

+
    +
  • [IMP] more robust behaviour in presence of missing expressions
  • +
  • [FIX] indent style
  • +
  • [FIX] local variable ‘ctx’ referenced before assignment when generating +reports with no objects
  • +
  • [IMP] use fontawesome icons
  • +
  • [MIG] migrate to 10.0
  • +
  • [FIX] unicode error when exporting to Excel
  • +
  • [IMP] provide full access to mis builder style for group Adviser.
  • +
+
+
+

9.0.2.0.2 (2016-09-27)

+
    +
  • [IMP] Add refresh button in mis report preview.
  • +
  • [IMP] Widget code changes to allow to add fields in the widget more easily.
  • +
+
+
+

9.0.2.0.1 (2016-05-26)

+
    +
  • [IMP] remove unused argument in declare_and_compute_period() +for a cleaner API. This is a breaking API changing merged in +urgency before it is used by other modules.
  • +
+
+
+

9.0.2.0.0 (2016-05-24)

+

Part of the work for this release has been done at the Sorrento sprint +April 26-29, 2016. The rest (ie a major refactoring) has been done in +the weeks after.

+
    +
  • [IMP] hide button box in edit mode on the report instance settings form
  • +
  • [FIX] Fix sum aggregation of non-stored fields +(https://github.com/OCA/account-financial-reporting/issues/178)
  • +
  • [IMP] There is now a default style at the report level
  • +
  • [CHG] Number display properties (rounding, prefix, suffix, factor) are +now defined in styles
  • +
  • [CHG] Percentage difference are rounded to 1 digit instead of the kpi’s +rounding, as the KPI rounding does not make sense in this case
  • +
  • [CHG] The divider suffix (k, M, etc) is not inserted automatically anymore +because it is inconsistent when working with prefixes; you need to add it +manually in the suffix
  • +
  • [IMP] AccountingExpressionProcessor now supports ‘balu’ expressions +to obtain the unallocated profit/loss of previous fiscal years; +get_unallocated_pl is the corresponding convenience method
  • +
  • [IMP] AccountingExpressionProcessor now has easy methods to obtain +balances by account: get_balances_initial, get_balances_end, +get_balances_variation
  • +
  • [IMP] there is now an auto-expand feature to automatically display +a detail by account for selected kpis
  • +
  • [IMP] the kpi and period lists are now manipulated through forms instead +of directly in the tree views
  • +
  • [IMP] it is now possible to create a report through a wizard, such +reports are deemed temporary and available through a “Last Reports Generated” +menu, they are garbaged collected automatically, unless saved permanently, +which can be done using a Save button
  • +
  • [IMP] there is now a beginner mode to configure simple reports with +only one period
  • +
  • [IMP] it is now easier to configure periods with fixed start/end dates
  • +
  • [IMP] the new sub-kpi mechanism allows the creation of columns +with multiple values, or columns with different values
  • +
  • [IMP] thanks to the new style model, the Excel export is now styled
  • +
  • [IMP] a new style model is now used to centralize style configuration
  • +
  • [FIX] use =like instead of like to search for accounts, because +the % are added by the user in the expressions
  • +
  • [FIX] Correctly compute the initial balance of income and expense account +based on the start of the fiscal year
  • +
  • [IMP] Support date ranges (from OCA/server-tools/date_range) as a more +flexible alternative to fiscal periods
  • +
  • v9 migration: fiscal periods are removed, account charts are removed, +consolidation accounts have been removed
  • +
+
+
+

8.0.1.0.0 (2016-04-27)

+ +
+
+

8.0.0.2.0

+

Pre-history. Or rather, you need to look at the git log.

+
+
+
+

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 to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • ACSONE SA/NV
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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.

+

Current maintainer:

+

sbidoul

+

This module is part of the OCA/mis-builder project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/mis_builder/static/src/components/mis_report_widget.css b/mis_builder/static/src/components/mis_report_widget.css new file mode 100644 index 0000000..e3bb177 --- /dev/null +++ b/mis_builder/static/src/components/mis_report_widget.css @@ -0,0 +1,67 @@ +.o_web_client .mis_builder_amount { + text-align: right; +} + +.o_web_client .mis_builder_collabel { + text-align: center; +} + +.o_web_client .mis_builder_rowlabel { + text-align: left; +} + +.o_web_client .mis_builder a { + /* we don't want the link color, to respect user styles */ + color: inherit; +} + +.o_web_client .mis_builder a:hover { + /* underline links on hover to give a visual cue */ + text-decoration: underline; +} + +.oe_mis_builder_content { +} + +/* style for the control panel (search box and buttons) */ + +.oe_mis_builder_cp { + display: flex; + flex-direction: row; + padding-bottom: 20px; +} + +.oe_mis_builder_cp_left { + display: flex; + flex-direction: column; + flex-grow: 1; +} + +.oe_mis_builder_cp_right { + display: flex; + flex-direction: column; + flex-grow: 2; + max-width: 1280px; +} + +.oe_mis_builder_cp_right_top { + display: flex; + flex-direction: row; +} + +.oe_mis_builder_cp_right_bottom { + display: flex; + flex-direction: row; +} + +.oe_mis_builder_filter_buttons { + display: flex; + flex-grow: 1; + justify-content: flex-start; +} + +.oe_mis_builder_action_buttons { + display: flex; + flex-grow: 1; + justify-content: flex-end; +} diff --git a/mis_builder/static/src/components/mis_report_widget.esm.js b/mis_builder/static/src/components/mis_report_widget.esm.js new file mode 100644 index 0000000..7f3af93 --- /dev/null +++ b/mis_builder/static/src/components/mis_report_widget.esm.js @@ -0,0 +1,182 @@ +/** @flectra-module **/ + +import {Component, onWillStart, useState, useSubEnv} from "@flectra/owl"; +import {useBus, useService} from "@web/core/utils/hooks"; +import {DatePicker} from "@web/core/datepicker/datepicker"; +import {FilterMenu} from "@web/search/filter_menu/filter_menu"; +import {SearchBar} from "@web/search/search_bar/search_bar"; +import {SearchModel} from "@web/search/search_model"; +import {parseDate} from "@web/core/l10n/dates"; +import {registry} from "@web/core/registry"; + +export class MisReportWidget extends Component { + setup() { + super.setup(); + this.orm = useService("orm"); + this.user = useService("user"); + this.action = useService("action"); + this.view = useService("view"); + this.JSON = JSON; + this.state = useState({ + mis_report_data: {header: [], body: []}, + pivot_date: null, + }); + this.searchModel = new SearchModel(this.env, { + user: this.user, + orm: this.orm, + view: this.view, + }); + useSubEnv({searchModel: this.searchModel}); + useBus(this.env.searchModel, "update", async () => { + await this.env.searchModel.sectionsPromise; + this.refresh(); + }); + onWillStart(this.willStart); + } + + // Lifecycle + async willStart() { + const [result] = await this.orm.read( + "mis.report.instance", + [this._instanceId()], + [ + "source_aml_model_name", + "widget_show_filters", + "widget_show_settings_button", + "widget_search_view_id", + "pivot_date", + "widget_show_pivot_date", + ], + {context: this.context} + ); + this.source_aml_model_name = result.source_aml_model_name; + this.widget_show_filters = result.widget_show_filters; + this.widget_show_settings_button = result.widget_show_settings_button; + this.widget_search_view_id = + result.widget_search_view_id && result.widget_search_view_id[0]; + this.state.pivot_date = parseDate(result.pivot_date); + this.widget_show_pivot_date = result.widget_show_pivot_date; + if (this.showSearchBar) { + // Initialize the search model + await this.searchModel.load({ + resModel: this.source_aml_model_name, + searchViewId: this.widget_search_view_id, + }); + } + + // Compute the report + this.refresh(); + } + + get showSearchBar() { + return ( + this.source_aml_model_name && + this.widget_show_filters && + this.widget_search_view_id + ); + } + + get showPivotDate() { + return this.widget_show_pivot_date; + } + + /** + * Return the id of the mis.report.instance to which the widget is + * bound. + * + * @returns int + */ + _instanceId() { + if (this.props.value) { + return this.props.value; + } + + /* + * This trick is needed because in a dashboard the view does + * not seem to be bound to an instance: it seems to be a limitation + * of Flectra dashboards that are not designed to contain forms but + * rather tree views or charts. + */ + var context = this.props.record.context; + if (context.active_model === "mis.report.instance") { + return context.active_id; + } + } + + get context() { + var ctx = super.context; + if (this.showSearchBar) { + ctx = { + ...ctx, + mis_analytic_domain: this.searchModel.searchDomain, + }; + } + if (this.showPivotDate && this.state.pivot_date) { + ctx = { + ...ctx, + mis_pivot_date: this.state.pivot_date, + }; + } + return ctx; + } + + async drilldown(event) { + const drilldown = $(event.target).data("drilldown"); + const action = await this.orm.call( + "mis.report.instance", + "drilldown", + [this._instanceId(), drilldown], + {context: this.context} + ); + this.action.doAction(action); + } + + async refresh() { + this.state.mis_report_data = await this.orm.call( + "mis.report.instance", + "compute", + [this._instanceId()], + {context: this.context} + ); + } + + async printPdf() { + const action = await this.orm.call( + "mis.report.instance", + "print_pdf", + [this._instanceId()], + {context: this.context} + ); + this.action.doAction(action); + } + + async exportXls() { + const action = await this.orm.call( + "mis.report.instance", + "export_xls", + [this._instanceId()], + {context: this.context} + ); + this.action.doAction(action); + } + + async displaySettings() { + const action = await this.orm.call( + "mis.report.instance", + "display_settings", + [this._instanceId()], + {context: this.context} + ); + this.action.doAction(action); + } + + onDateTimeChanged(ev) { + this.state.pivot_date = ev; + this.refresh(); + } +} + +MisReportWidget.components = {FilterMenu, SearchBar, DatePicker}; +MisReportWidget.template = "mis_builder.MisReportWidget"; + +registry.category("fields").add("mis_report_widget", MisReportWidget); diff --git a/mis_builder/static/src/components/mis_report_widget.xml b/mis_builder/static/src/components/mis_report_widget.xml new file mode 100644 index 0000000..c5e2206 --- /dev/null +++ b/mis_builder/static/src/components/mis_report_widget.xml @@ -0,0 +1,115 @@ + + + + +
+ +
+
+
+
+
+ +
+
+
+ + +
+
+ + + + +
+
+
+
+
+ + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+ + +
+ + +
+ + + + + + + + +
+
+
+
+
+ +
diff --git a/mis_builder/static/src/css/report.css b/mis_builder/static/src/css/report.css new file mode 100644 index 0000000..0d58939 --- /dev/null +++ b/mis_builder/static/src/css/report.css @@ -0,0 +1,46 @@ +.mis_table { + display: table; + width: 100%; + table-layout: fixed; +} +.mis_row { + display: table-row; + page-break-inside: avoid; +} +.mis_cell { + display: table-cell; + page-break-inside: avoid; +} +.mis_thead { + display: table-header-group; +} +.mis_tbody { + display: table-row-group; +} +.mis_table, +.mis_table .mis_row { + border-left: 0px; + border-right: 0px; + text-align: left; + padding-right: 3px; + padding-left: 3px; + padding-top: 2px; + padding-bottom: 2px; + border-collapse: collapse; +} +.mis_table .mis_row { + border-color: grey; + border-bottom: 1px solid lightGrey; +} +.mis_table .mis_cell.mis_collabel { + font-weight: bold; + background-color: #f0f0f0; + text-align: center; +} +.mis_table .mis_cell.mis_rowlabel { + text-align: left; + /*white-space: nowrap;*/ +} +.mis_table .mis_cell.mis_amount { + text-align: right; +} diff --git a/mis_builder/tests/__init__.py b/mis_builder/tests/__init__.py new file mode 100644 index 0000000..85ac64f --- /dev/null +++ b/mis_builder/tests/__init__.py @@ -0,0 +1,16 @@ +# Copyright 2014 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import test_accounting_none +from . import test_aep +from . import test_multi_company_aep +from . import test_aggregate +from . import test_data_sources +from . import test_kpi_data +from . import test_mis_report_instance +from . import test_mis_safe_eval +from . import test_period_dates +from . import test_render +from . import test_simple_array +from . import test_target_move +from . import test_utc_midnight diff --git a/mis_builder/tests/common.py b/mis_builder/tests/common.py new file mode 100644 index 0000000..c609241 --- /dev/null +++ b/mis_builder/tests/common.py @@ -0,0 +1,67 @@ +# Copyright 2017 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import doctest + +from flectra.tests import BaseCase, tagged + + +def _zip(iter1, iter2): + i = 0 + iter1 = iter(iter1) + iter2 = iter(iter2) + while True: + i1 = next(iter1, None) + i2 = next(iter2, None) + if i1 is None and i2 is None: + return + yield i, i1, i2 + i += 1 + + +def assert_matrix(matrix, expected): + for i, row, expected_row in _zip(matrix.iter_rows(), expected): + if row is None and expected_row is not None: + raise AssertionError("not enough rows") + if row is not None and expected_row is None: + raise AssertionError("too many rows") + for j, cell, expected_val in _zip(row.iter_cells(), expected_row): + assert ( + cell and cell.val + ) == expected_val, "{} != {} in row {} col {}".format( + cell and cell.val, expected_val, i, j + ) + + +@tagged("doctest") +class FlectraDocTestCase(BaseCase): + """ + We need a custom DocTestCase class in order to: + - define test_tags to run as part of standard tests + - output a more meaningful test name than default "DocTestCase.runTest" + """ + + __qualname__ = "doctests for " + + def __init__(self, test): + self.__test = test + self.__name = test._dt_test.name + super().__init__(self.__name) + + def __getattr__(self, item): + if item == self.__name: + return self.__test + + +def load_doctests(module): + """ + Generates a tests loading method for the doctests of the given module + https://docs.python.org/3/library/unittest.html#load-tests-protocol + """ + + def load_tests(loader, tests, ignore): + for test in doctest.DocTestSuite(module): + tests.addTest(FlectraDocTestCase(test)) + return tests + + return load_tests diff --git a/mis_builder/tests/fake_models.py b/mis_builder/tests/fake_models.py new file mode 100644 index 0000000..12ca84e --- /dev/null +++ b/mis_builder/tests/fake_models.py @@ -0,0 +1,7 @@ +from flectra import models + + +class MisKpiDataTestItem(models.Model): + _name = "mis.kpi.data.test.item" + _inherit = "mis.kpi.data" + _description = "MIS Kpi Data test item" diff --git a/mis_builder/tests/test_accounting_none.py b/mis_builder/tests/test_accounting_none.py new file mode 100644 index 0000000..ced8c3e --- /dev/null +++ b/mis_builder/tests/test_accounting_none.py @@ -0,0 +1,8 @@ +# Copyright 2014 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + + +from ..models import accounting_none +from .common import load_doctests + +load_tests = load_doctests(accounting_none) diff --git a/mis_builder/tests/test_aep.py b/mis_builder/tests/test_aep.py new file mode 100644 index 0000000..4fe80fb --- /dev/null +++ b/mis_builder/tests/test_aep.py @@ -0,0 +1,397 @@ +# Copyright 2014 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import datetime +import time + +import flectra.tests.common as common +from flectra import fields +from flectra.exceptions import UserError +from flectra.tools.safe_eval import safe_eval + +from ..models.accounting_none import AccountingNone +from ..models.aep import AccountingExpressionProcessor as AEP +from ..models.aep import _is_domain + + +class TestAEP(common.TransactionCase): + def setUp(self): + super().setUp() + self.res_company = self.env["res.company"] + self.account_model = self.env["account.account"] + self.move_model = self.env["account.move"] + self.journal_model = self.env["account.journal"] + self.curr_year = datetime.date.today().year + self.prev_year = self.curr_year - 1 + # create company + self.company = self.res_company.create({"name": "AEP Company"}) + # create receivable bs account + self.account_ar = self.account_model.create( + { + "company_id": self.company.id, + "code": "400AR", + "name": "Receivable", + "account_type": "asset_receivable", + "reconcile": True, + } + ) + # create income pl account + self.account_in = self.account_model.create( + { + "company_id": self.company.id, + "code": "700IN", + "name": "Income", + "account_type": "income", + } + ) + # create journal + self.journal = self.journal_model.create( + { + "company_id": self.company.id, + "name": "Sale journal", + "code": "VEN", + "type": "sale", + } + ) + # create move in December last year + self._create_move( + date=datetime.date(self.prev_year, 12, 1), + amount=100, + debit_acc=self.account_ar, + credit_acc=self.account_in, + ) + # create move in January this year + self._create_move( + date=datetime.date(self.curr_year, 1, 1), + amount=300, + debit_acc=self.account_ar, + credit_acc=self.account_in, + ) + # create move in March this year + self._create_move( + date=datetime.date(self.curr_year, 3, 1), + amount=500, + debit_acc=self.account_ar, + credit_acc=self.account_in, + ) + # create the AEP, and prepare the expressions we'll need + self.aep = AEP(self.company) + self.aep.parse_expr("bali[]") + self.aep.parse_expr("bale[]") + self.aep.parse_expr("balp[]") + self.aep.parse_expr("balu[]") + self.aep.parse_expr("bali[700IN]") + self.aep.parse_expr("bale[700IN]") + self.aep.parse_expr("balp[700IN]") + self.aep.parse_expr("bali[400AR]") + self.aep.parse_expr("bale[400AR]") + self.aep.parse_expr("balp[400AR]") + self.aep.parse_expr("debp[400A%]") + self.aep.parse_expr("crdp[700I%]") + self.aep.parse_expr("bali[400%]") + self.aep.parse_expr("bale[700%]") + self.aep.parse_expr("balp[]" "[('account_id.code', '=', '400AR')]") + self.aep.parse_expr( + "balp[]" "[('account_id.account_type', '=', " " 'asset_receivable')]" + ) + self.aep.parse_expr("balp[('account_type', '=', " " 'asset_receivable')]") + self.aep.parse_expr( + "balp['&', " + " ('account_type', '=', " + " 'asset_receivable'), " + " ('code', '=', '400AR')]" + ) + self.aep.parse_expr("bal_700IN") # deprecated + self.aep.parse_expr("bals[700IN]") # deprecated + + def _create_move(self, date, amount, debit_acc, credit_acc, post=True): + move = self.move_model.create( + { + "journal_id": self.journal.id, + "date": fields.Date.to_string(date), + "line_ids": [ + (0, 0, {"name": "/", "debit": amount, "account_id": debit_acc.id}), + ( + 0, + 0, + {"name": "/", "credit": amount, "account_id": credit_acc.id}, + ), + ], + } + ) + if post: + move._post() + return move + + def _do_queries(self, date_from, date_to): + self.aep.do_queries( + date_from=fields.Date.to_string(date_from), + date_to=fields.Date.to_string(date_to), + ) + + def _eval(self, expr): + eval_dict = {"AccountingNone": AccountingNone} + return safe_eval(self.aep.replace_expr(expr), eval_dict) + + def _eval_by_account_id(self, expr): + res = {} + eval_dict = {"AccountingNone": AccountingNone} + for account_id, replaced_exprs in self.aep.replace_exprs_by_account_id([expr]): + res[account_id] = safe_eval(replaced_exprs[0], eval_dict) + return res + + def test_sanity_check(self): + self.assertEqual(self.company.fiscalyear_last_day, 31) + self.assertEqual(self.company.fiscalyear_last_month, "12") + + def test_aep_basic(self): + self.aep.done_parsing() + # let's query for december + self._do_queries( + datetime.date(self.prev_year, 12, 1), datetime.date(self.prev_year, 12, 31) + ) + # initial balance must be None + self.assertIs(self._eval("bali[400AR]"), AccountingNone) + self.assertIs(self._eval("bali[700IN]"), AccountingNone) + # check variation + self.assertEqual(self._eval("balp[400AR]"), 100) + self.assertEqual(self._eval("balp[][('account_id.code', '=', '400AR')]"), 100) + self.assertEqual( + self._eval( + "balp[]" "[('account_id.account_type', '=', " " 'asset_receivable')]" + ), + 100, + ) + self.assertEqual( + self._eval("balp[('account_type', '=', " " 'asset_receivable')]"), + 100, + ) + self.assertEqual( + self._eval( + "balp['&', " + " ('account_type', '=', " + " 'asset_receivable'), " + " ('code', '=', '400AR')]" + ), + 100, + ) + self.assertEqual(self._eval("balp[700IN]"), -100) + # check ending balance + self.assertEqual(self._eval("bale[400AR]"), 100) + self.assertEqual(self._eval("bale[700IN]"), -100) + + # let's query for January + self._do_queries( + datetime.date(self.curr_year, 1, 1), datetime.date(self.curr_year, 1, 31) + ) + # initial balance is None for income account (it's not carried over) + self.assertEqual(self._eval("bali[400AR]"), 100) + self.assertIs(self._eval("bali[700IN]"), AccountingNone) + # check variation + self.assertEqual(self._eval("balp[400AR]"), 300) + self.assertEqual(self._eval("balp[700IN]"), -300) + # check ending balance + self.assertEqual(self._eval("bale[400AR]"), 400) + self.assertEqual(self._eval("bale[700IN]"), -300) + + # let's query for March + self._do_queries( + datetime.date(self.curr_year, 3, 1), datetime.date(self.curr_year, 3, 31) + ) + # initial balance is the ending balance fo January + self.assertEqual(self._eval("bali[400AR]"), 400) + self.assertEqual(self._eval("bali[700IN]"), -300) + self.assertEqual(self._eval("pbali[400AR]"), 400) + self.assertEqual(self._eval("nbali[400AR]"), 0) + self.assertEqual(self._eval("nbali[700IN]"), -300) + self.assertEqual(self._eval("pbali[700IN]"), 0) + # check variation + self.assertEqual(self._eval("balp[400AR]"), 500) + self.assertEqual(self._eval("balp[700IN]"), -500) + self.assertEqual(self._eval("nbalp[400AR]"), 0) + self.assertEqual(self._eval("pbalp[400AR]"), 500) + self.assertEqual(self._eval("nbalp[700IN]"), -500) + self.assertEqual(self._eval("pbalp[700IN]"), 0) + # check ending balance + self.assertEqual(self._eval("bale[400AR]"), 900) + self.assertEqual(self._eval("nbale[400AR]"), 0) + self.assertEqual(self._eval("pbale[400AR]"), 900) + self.assertEqual(self._eval("bale[700IN]"), -800) + self.assertEqual(self._eval("nbale[700IN]"), -800) + self.assertEqual(self._eval("pbale[700IN]"), 0) + # check some variant expressions, for coverage + self.assertEqual(self._eval("crdp[700I%]"), 500) + self.assertEqual(self._eval("debp[400A%]"), 500) + self.assertEqual(self._eval("bal_700IN"), -500) + self.assertEqual(self._eval("bals[700IN]"), -800) + + # unallocated p&l from previous year + self.assertEqual(self._eval("balu[]"), -100) + + # TODO allocate profits, and then... + + def test_aep_by_account(self): + self.aep.done_parsing() + self._do_queries( + datetime.date(self.curr_year, 3, 1), datetime.date(self.curr_year, 3, 31) + ) + variation = self._eval_by_account_id("balp[]") + self.assertEqual(variation, {self.account_ar.id: 500, self.account_in.id: -500}) + variation = self._eval_by_account_id("pbalp[]") + self.assertEqual( + variation, {self.account_ar.id: 500, self.account_in.id: AccountingNone} + ) + variation = self._eval_by_account_id("nbalp[]") + self.assertEqual( + variation, {self.account_ar.id: AccountingNone, self.account_in.id: -500} + ) + variation = self._eval_by_account_id("balp[700IN]") + self.assertEqual(variation, {self.account_in.id: -500}) + variation = self._eval_by_account_id("crdp[700IN] - debp[400AR]") + self.assertEqual(variation, {self.account_ar.id: -500, self.account_in.id: 500}) + end = self._eval_by_account_id("bale[]") + self.assertEqual(end, {self.account_ar.id: 900, self.account_in.id: -800}) + + def test_aep_convenience_methods(self): + initial = AEP.get_balances_initial(self.company, time.strftime("%Y") + "-03-01") + self.assertEqual( + initial, {self.account_ar.id: (400, 0), self.account_in.id: (0, 300)} + ) + variation = AEP.get_balances_variation( + self.company, + time.strftime("%Y") + "-03-01", + time.strftime("%Y") + "-03-31", + ) + self.assertEqual( + variation, {self.account_ar.id: (500, 0), self.account_in.id: (0, 500)} + ) + end = AEP.get_balances_end(self.company, time.strftime("%Y") + "-03-31") + self.assertEqual( + end, {self.account_ar.id: (900, 0), self.account_in.id: (0, 800)} + ) + unallocated = AEP.get_unallocated_pl( + self.company, time.strftime("%Y") + "-03-15" + ) + self.assertEqual(unallocated, (0, 100)) + + def test_float_is_zero(self): + dp = self.company.currency_id.decimal_places + self.assertEqual(dp, 2) + # make initial balance at Jan 1st equal to 0.01 + self._create_move( + date=datetime.date(self.prev_year, 12, 1), + amount=100.01, + debit_acc=self.account_in, + credit_acc=self.account_ar, + ) + initial = AEP.get_balances_initial(self.company, time.strftime("%Y") + "-01-01") + self.assertEqual(initial, {self.account_ar.id: (100.00, 100.01)}) + # make initial balance at Jan 1st equal to 0.001 + self._create_move( + date=datetime.date(self.prev_year, 12, 1), + amount=0.009, + debit_acc=self.account_ar, + credit_acc=self.account_in, + ) + initial = AEP.get_balances_initial(self.company, time.strftime("%Y") + "-01-01") + # epsilon initial balances is reported as empty + self.assertEqual(initial, {}) + + def test_get_account_ids_for_expr(self): + self.aep.done_parsing() + expr = "balp[700IN]" + account_ids = self.aep.get_account_ids_for_expr(expr) + self.assertEqual(account_ids, {self.account_in.id}) + expr = "balp[700%]" + account_ids = self.aep.get_account_ids_for_expr(expr) + self.assertEqual(account_ids, {self.account_in.id}) + expr = "bali[400%], bale[700%]" # subkpis combined expression + account_ids = self.aep.get_account_ids_for_expr(expr) + self.assertEqual(account_ids, {self.account_in.id, self.account_ar.id}) + + def test_get_aml_domain_for_expr(self): + self.aep.done_parsing() + expr = "balp[700IN]" + domain = self.aep.get_aml_domain_for_expr(expr, "2017-01-01", "2017-03-31") + self.assertEqual( + domain, + [ + ("account_id", "in", (self.account_in.id,)), + "&", + ("date", ">=", "2017-01-01"), + ("date", "<=", "2017-03-31"), + ], + ) + expr = "debi[700IN] - crdi[400AR]" + domain = self.aep.get_aml_domain_for_expr(expr, "2017-02-01", "2017-03-31") + self.assertEqual( + domain, + [ + "|", + # debi[700IN] + "&", + ("account_id", "in", (self.account_in.id,)), + ("debit", "<>", 0.0), + # crdi[400AR] + "&", + ("account_id", "in", (self.account_ar.id,)), + ("credit", "<>", 0.0), + "&", + # for P&L accounts, only after fy start + "|", + ("date", ">=", "2017-01-01"), + ("account_id.include_initial_balance", "=", True), + # everything must be before from_date for initial balance + ("date", "<", "2017-02-01"), + ], + ) + + def test_is_domain(self): + self.assertTrue(_is_domain("('a', '=' 1)")) + self.assertTrue(_is_domain("'&', ('a', '=' 1), ('b', '=', 1)")) + self.assertTrue(_is_domain("'|', ('a', '=' 1), ('b', '=', 1)")) + self.assertTrue(_is_domain("'!', ('a', '=' 1), ('b', '=', 1)")) + self.assertTrue(_is_domain("\"&\", ('a', '=' 1), ('b', '=', 1)")) + self.assertTrue(_is_domain("\"|\", ('a', '=' 1), ('b', '=', 1)")) + self.assertTrue(_is_domain("\"!\", ('a', '=' 1), ('b', '=', 1)")) + self.assertFalse(_is_domain("123%")) + self.assertFalse(_is_domain("123%,456")) + self.assertFalse(_is_domain("")) + + def test_inactive_tax(self): + expr = 'balp[][("tax_ids.name", "=", "test tax")]' + self.aep.parse_expr(expr) + self.aep.done_parsing() + + tax = self.env["account.tax"].create( + dict(name="test tax", active=True, amount=0, company_id=self.company.id) + ) + move = self._create_move( + date=datetime.date(self.prev_year, 12, 1), + amount=100, + debit_acc=self.account_ar, + credit_acc=self.account_in, + post=False, + ) + for ml in move.line_ids: + if ml.credit: + ml.write(dict(tax_ids=[(6, 0, [tax.id])])) + tax.active = False + move._post() + # let's query for december 1st + self._do_queries( + datetime.date(self.prev_year, 12, 1), datetime.date(self.prev_year, 12, 1) + ) + # let's see if there was a match + self.assertEqual(self._eval(expr), -100) + + def test_invalid_field(self): + expr = 'balp[][("invalid_field", "=", "...")]' + self.aep.parse_expr(expr) + self.aep.done_parsing() + with self.assertRaises(UserError) as cm: + self._do_queries( + datetime.date(self.prev_year, 12, 1), + datetime.date(self.prev_year, 12, 1), + ) + assert "Error while querying move line source" in str(cm.exception) diff --git a/mis_builder/tests/test_aggregate.py b/mis_builder/tests/test_aggregate.py new file mode 100644 index 0000000..f1650f1 --- /dev/null +++ b/mis_builder/tests/test_aggregate.py @@ -0,0 +1,7 @@ +# Copyright 2014 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from ..models import aggregate +from .common import load_doctests + +load_tests = load_doctests(aggregate) diff --git a/mis_builder/tests/test_data_sources.py b/mis_builder/tests/test_data_sources.py new file mode 100644 index 0000000..977d89f --- /dev/null +++ b/mis_builder/tests/test_data_sources.py @@ -0,0 +1,219 @@ +# Copyright 2016 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import flectra.tests.common as common + +from ..models.accounting_none import AccountingNone +from ..models.mis_report import CMP_DIFF +from ..models.mis_report_instance import ( + MODE_NONE, + SRC_ACTUALS_ALT, + SRC_CMPCOL, + SRC_SUMCOL, +) +from .common import assert_matrix + + +class TestMisReportInstanceDataSources(common.TransactionCase): + """Test sum and comparison data source.""" + + def _create_move(self, date, amount, debit_acc, credit_acc): + move = self.move_model.create( + { + "journal_id": self.journal.id, + "date": date, + "line_ids": [ + (0, 0, {"name": "/", "debit": amount, "account_id": debit_acc.id}), + ( + 0, + 0, + {"name": "/", "credit": amount, "account_id": credit_acc.id}, + ), + ], + } + ) + move._post() + return move + + def setUp(self): + super().setUp() + self.account_model = self.env["account.account"] + self.move_model = self.env["account.move"] + self.journal_model = self.env["account.journal"] + # create receivable bs account + self.account_ar = self.account_model.create( + { + "company_id": self.env.user.company_id.id, + "code": "400AR", + "name": "Receivable", + "account_type": "asset_receivable", + "reconcile": True, + } + ) + # create income account + self.account_in = self.account_model.create( + { + "company_id": self.env.user.company_id.id, + "code": "700IN", + "name": "Income", + "account_type": "income", + } + ) + self.account_in2 = self.account_model.create( + { + "company_id": self.env.user.company_id.id, + "code": "700IN2", + "name": "Income", + "account_type": "income", + } + ) + # create journal + self.journal = self.journal_model.create( + { + "company_id": self.env.user.company_id.id, + "name": "Sale journal", + "code": "VEN", + "type": "sale", + } + ) + # create move + self._create_move( + date="2017-01-01", + amount=11, + debit_acc=self.account_ar, + credit_acc=self.account_in, + ) + # create move + self._create_move( + date="2017-02-01", + amount=13, + debit_acc=self.account_ar, + credit_acc=self.account_in, + ) + self._create_move( + date="2017-02-01", + amount=17, + debit_acc=self.account_ar, + credit_acc=self.account_in2, + ) + # create report + self.report = self.env["mis.report"].create(dict(name="test report")) + self.kpi1 = self.env["mis.report.kpi"].create( + dict( + report_id=self.report.id, + name="k1", + description="kpi 1", + expression="-balp[700IN]", + compare_method=CMP_DIFF, + ) + ) + self.expr1 = self.kpi1.expression_ids[0] + self.kpi2 = self.env["mis.report.kpi"].create( + dict( + report_id=self.report.id, + name="k2", + description="kpi 2", + expression="-balp[700%]", + compare_method=CMP_DIFF, + auto_expand_accounts=True, + ) + ) + self.instance = self.env["mis.report.instance"].create( + dict(name="test instance", report_id=self.report.id, comparison_mode=True) + ) + self.p1 = self.env["mis.report.instance.period"].create( + dict( + name="p1", + report_instance_id=self.instance.id, + manual_date_from="2017-01-01", + manual_date_to="2017-01-31", + ) + ) + self.p2 = self.env["mis.report.instance.period"].create( + dict( + name="p2", + report_instance_id=self.instance.id, + manual_date_from="2017-02-01", + manual_date_to="2017-02-28", + ) + ) + + def test_sum(self): + self.psum = self.env["mis.report.instance.period"].create( + dict( + name="psum", + report_instance_id=self.instance.id, + mode=MODE_NONE, + source=SRC_SUMCOL, + source_sumcol_ids=[ + (0, 0, dict(period_to_sum_id=self.p1.id, sign="+")), + (0, 0, dict(period_to_sum_id=self.p2.id, sign="+")), + ], + ) + ) + matrix = self.instance._compute_matrix() + # None in last col because account details are not summed by default + assert_matrix( + matrix, + [ + [11, 13, 24], + [11, 30, 41], + [11, 13, AccountingNone], + [AccountingNone, 17, AccountingNone], + ], + ) + + def test_sum_diff(self): + self.psum = self.env["mis.report.instance.period"].create( + dict( + name="psum", + report_instance_id=self.instance.id, + mode=MODE_NONE, + source=SRC_SUMCOL, + source_sumcol_ids=[ + (0, 0, dict(period_to_sum_id=self.p1.id, sign="+")), + (0, 0, dict(period_to_sum_id=self.p2.id, sign="-")), + ], + source_sumcol_accdet=True, + ) + ) + matrix = self.instance._compute_matrix() + assert_matrix( + matrix, + [[11, 13, -2], [11, 30, -19], [11, 13, -2], [AccountingNone, 17, -17]], + ) + + def test_cmp(self): + self.pcmp = self.env["mis.report.instance.period"].create( + dict( + name="pcmp", + report_instance_id=self.instance.id, + mode=MODE_NONE, + source=SRC_CMPCOL, + source_cmpcol_from_id=self.p1.id, + source_cmpcol_to_id=self.p2.id, + ) + ) + matrix = self.instance._compute_matrix() + assert_matrix( + matrix, [[11, 13, 2], [11, 30, 19], [11, 13, 2], [AccountingNone, 17, 17]] + ) + + def test_actuals(self): + matrix = self.instance._compute_matrix() + assert_matrix(matrix, [[11, 13], [11, 30], [11, 13], [AccountingNone, 17]]) + + def test_actuals_disable_auto_expand_accounts(self): + self.instance.no_auto_expand_accounts = True + matrix = self.instance._compute_matrix() + assert_matrix(matrix, [[11, 13], [11, 30]]) + + def test_actuals_alt(self): + aml_model = self.env["ir.model"].search([("name", "=", "account.move.line")]) + self.kpi2.auto_expand_accounts = False + self.p1.source = SRC_ACTUALS_ALT + self.p1.source_aml_model_id = aml_model.id + self.p2.source = SRC_ACTUALS_ALT + self.p1.source_aml_model_id = aml_model.id + matrix = self.instance._compute_matrix() + assert_matrix(matrix, [[11, 13], [11, 30]]) diff --git a/mis_builder/tests/test_kpi_data.py b/mis_builder/tests/test_kpi_data.py new file mode 100644 index 0000000..66e586f --- /dev/null +++ b/mis_builder/tests/test_kpi_data.py @@ -0,0 +1,142 @@ +# Copyright 2017 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from flectra_test_helper import FakeModelLoader + +from flectra.tests.common import TransactionCase + +from ..models.mis_kpi_data import ACC_AVG, ACC_SUM + + +class TestKpiData(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + + cls.loader = FakeModelLoader(cls.env, cls.__module__) + cls.loader.backup_registry() + from .fake_models import MisKpiDataTestItem + + cls.loader.update_registry((MisKpiDataTestItem,)) + + report = cls.env["mis.report"].create(dict(name="test report")) + cls.kpi1 = cls.env["mis.report.kpi"].create( + dict( + report_id=report.id, + name="k1", + description="kpi 1", + expression="AccountingNone", + ) + ) + cls.expr1 = cls.kpi1.expression_ids[0] + cls.kpi2 = cls.env["mis.report.kpi"].create( + dict( + report_id=report.id, + name="k2", + description="kpi 2", + expression="AccountingNone", + ) + ) + cls.expr2 = cls.kpi2.expression_ids[0] + cls.kd11 = cls.env["mis.kpi.data.test.item"].create( + dict( + kpi_expression_id=cls.expr1.id, + date_from="2017-05-01", + date_to="2017-05-10", + amount=10, + ) + ) + cls.kd12 = cls.env["mis.kpi.data.test.item"].create( + dict( + kpi_expression_id=cls.expr1.id, + date_from="2017-05-11", + date_to="2017-05-20", + amount=20, + ) + ) + cls.kd13 = cls.env["mis.kpi.data.test.item"].create( + dict( + kpi_expression_id=cls.expr1.id, + date_from="2017-05-21", + date_to="2017-05-25", + amount=30, + ) + ) + cls.kd21 = cls.env["mis.kpi.data.test.item"].create( + dict( + kpi_expression_id=cls.expr2.id, + date_from="2017-06-01", + date_to="2017-06-30", + amount=3, + ) + ) + + @classmethod + def tearDownClass(cls): + cls.loader.restore_registry() + return super().tearDownClass() + + def test_kpi_data_name(self): + self.assertEqual(self.kd11.name, "k1: 2017-05-01 - 2017-05-10") + self.assertEqual(self.kd12.name, "k1: 2017-05-11 - 2017-05-20") + + def test_kpi_data_sum(self): + self.assertEqual(self.kpi1.accumulation_method, ACC_SUM) + # one full + r = self.env["mis.kpi.data.test.item"]._query_kpi_data( + "2017-05-01", "2017-05-10", [] + ) + self.assertEqual(r, {self.expr1: 10}) + # one half + r = self.env["mis.kpi.data.test.item"]._query_kpi_data( + "2017-05-01", "2017-05-05", [] + ) + self.assertEqual(r, {self.expr1: 5}) + # two full + r = self.env["mis.kpi.data.test.item"]._query_kpi_data( + "2017-05-01", "2017-05-20", [] + ) + self.assertEqual(r, {self.expr1: 30}) + # two half + r = self.env["mis.kpi.data.test.item"]._query_kpi_data( + "2017-05-06", "2017-05-15", [] + ) + self.assertEqual(r, {self.expr1: 15}) + # more than covered range + r = self.env["mis.kpi.data.test.item"]._query_kpi_data( + "2017-01-01", "2017-05-31", [] + ) + self.assertEqual(r, {self.expr1: 60}) + # two kpis + r = self.env["mis.kpi.data.test.item"]._query_kpi_data( + "2017-05-21", "2017-06-30", [] + ) + self.assertEqual(r, {self.expr1: 30, self.expr2: 3}) + + def test_kpi_data_avg(self): + self.kpi1.accumulation_method = ACC_AVG + # one full + r = self.env["mis.kpi.data.test.item"]._query_kpi_data( + "2017-05-01", "2017-05-10", [] + ) + self.assertEqual(r, {self.expr1: 10}) + # one half + r = self.env["mis.kpi.data.test.item"]._query_kpi_data( + "2017-05-01", "2017-05-05", [] + ) + self.assertEqual(r, {self.expr1: 10}) + # two full + r = self.env["mis.kpi.data.test.item"]._query_kpi_data( + "2017-05-01", "2017-05-20", [] + ) + self.assertEqual(r, {self.expr1: (10 * 10 + 20 * 10) / 20}) + # two half + r = self.env["mis.kpi.data.test.item"]._query_kpi_data( + "2017-05-06", "2017-05-15", [] + ) + self.assertEqual(r, {self.expr1: (10 * 5 + 20 * 5) / 10}) + # more than covered range + r = self.env["mis.kpi.data.test.item"]._query_kpi_data( + "2017-01-01", "2017-05-31", [] + ) + self.assertEqual(r, {self.expr1: (10 * 10 + 20 * 10 + 30 * 5) / 25}) diff --git a/mis_builder/tests/test_mis_report_instance.py b/mis_builder/tests/test_mis_report_instance.py new file mode 100644 index 0000000..830fa19 --- /dev/null +++ b/mis_builder/tests/test_mis_report_instance.py @@ -0,0 +1,589 @@ +# Copyright 2016 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import flectra.tests.common as common +from flectra.tools import test_reports + +from ..models.accounting_none import AccountingNone +from ..models.mis_report import TYPE_STR, SubKPITupleLengthError, SubKPIUnknownTypeError + + +class TestMisReportInstance(common.HttpCase): + """Basic integration test to exercise mis.report.instance. + + We don't check the actual results here too much as computation correctness + should be covered by lower level unit tests. + """ + + def setUp(self): + super().setUp() + partner_model_id = self.env.ref("base.model_res_partner").id + partner_create_date_field_id = self.env.ref( + "base.field_res_partner__create_date" + ).id + partner_debit_field_id = self.env.ref("account.field_res_partner__debit").id + # create a report with 2 subkpis and one query + self.report = self.env["mis.report"].create( + dict( + name="test report", + subkpi_ids=[ + (0, 0, dict(name="sk1", description="subkpi 1", sequence=1)), + (0, 0, dict(name="sk2", description="subkpi 2", sequence=2)), + ], + query_ids=[ + ( + 0, + 0, + dict( + name="partner", + model_id=partner_model_id, + field_ids=[(4, partner_debit_field_id, None)], + date_field=partner_create_date_field_id, + aggregate="sum", + ), + ) + ], + ) + ) + # create another report with 2 subkpis, no query + self.report_2 = self.env["mis.report"].create( + dict( + name="another test report", + subkpi_ids=[ + ( + 0, + 0, + dict( + name="subkpi1_report2", + description="subkpi 1, report 2", + sequence=1, + ), + ), + ( + 0, + 0, + dict( + name="subkpi2_report2", + description="subkpi 2, report 2", + sequence=2, + ), + ), + ], + ) + ) + # Third report, 2 subkpis, no query + self.report_3 = self.env["mis.report"].create( + dict( + name="test report 3", + subkpi_ids=[ + ( + 0, + 0, + dict( + name="subkpi1_report3", + description="subkpi 1, report 3", + sequence=1, + ), + ), + ( + 0, + 0, + dict( + name="subkpi2_report3", + description="subkpi 2, report 3", + sequence=2, + ), + ), + ], + ) + ) + # kpi with accounting formulas + self.kpi1 = self.env["mis.report.kpi"].create( + dict( + report_id=self.report.id, + description="kpi 1", + name="k1", + multi=True, + expression_ids=[ + ( + 0, + 0, + dict(name="bale[200%]", subkpi_id=self.report.subkpi_ids[0].id), + ), + ( + 0, + 0, + dict(name="balp[200%]", subkpi_id=self.report.subkpi_ids[1].id), + ), + ], + ) + ) + # kpi with accounting formula and query + self.kpi2 = self.env["mis.report.kpi"].create( + dict( + report_id=self.report.id, + description="kpi 2", + name="k2", + multi=True, + expression_ids=[ + ( + 0, + 0, + dict(name="balp[200%]", subkpi_id=self.report.subkpi_ids[0].id), + ), + ( + 0, + 0, + dict( + name="partner.debit", subkpi_id=self.report.subkpi_ids[1].id + ), + ), + ], + ) + ) + # kpi with a simple expression summing other multi-valued kpis + self.env["mis.report.kpi"].create( + dict( + report_id=self.report.id, + description="kpi 4", + name="k4", + multi=False, + expression="k1 + k2 + k3", + ) + ) + # kpi with 2 constants + self.env["mis.report.kpi"].create( + dict( + report_id=self.report.id, + description="kpi 3", + name="k3", + multi=True, + expression_ids=[ + ( + 0, + 0, + dict( + name="AccountingNone", + subkpi_id=self.report.subkpi_ids[0].id, + ), + ), + (0, 0, dict(name="1.0", subkpi_id=self.report.subkpi_ids[1].id)), + ], + ) + ) + # kpi with a NameError (x not defined) + self.env["mis.report.kpi"].create( + dict( + report_id=self.report.id, + description="kpi 5", + name="k5", + multi=True, + expression_ids=[ + (0, 0, dict(name="x", subkpi_id=self.report.subkpi_ids[0].id)), + (0, 0, dict(name="1.0", subkpi_id=self.report.subkpi_ids[1].id)), + ], + ) + ) + # string-type kpi + self.env["mis.report.kpi"].create( + dict( + report_id=self.report.id, + description="kpi 6", + name="k6", + multi=True, + type=TYPE_STR, + expression_ids=[ + (0, 0, dict(name='"bla"', subkpi_id=self.report.subkpi_ids[0].id)), + ( + 0, + 0, + dict(name='"blabla"', subkpi_id=self.report.subkpi_ids[1].id), + ), + ], + ) + ) + # kpi that references another subkpi by name + self.env["mis.report.kpi"].create( + dict( + report_id=self.report.id, + description="kpi 7", + name="k7", + multi=True, + expression_ids=[ + (0, 0, dict(name="k3.sk1", subkpi_id=self.report.subkpi_ids[0].id)), + (0, 0, dict(name="k3.sk2", subkpi_id=self.report.subkpi_ids[1].id)), + ], + ) + ) + # Report 2 : kpi with AccountingNone value + self.env["mis.report.kpi"].create( + dict( + report_id=self.report_2.id, + description="AccountingNone kpi", + name="AccountingNoneKPI", + multi=False, + ) + ) + # Report 2 : 'classic' kpi with values for each sub-KPI + self.env["mis.report.kpi"].create( + dict( + report_id=self.report_2.id, + description="Classic kpi", + name="classic_kpi_r2", + multi=True, + expression_ids=[ + ( + 0, + 0, + dict( + name="bale[200%]", subkpi_id=self.report_2.subkpi_ids[0].id + ), + ), + ( + 0, + 0, + dict( + name="balp[200%]", subkpi_id=self.report_2.subkpi_ids[1].id + ), + ), + ], + ) + ) + # Report 3 : kpi with wrong tuple length + self.env["mis.report.kpi"].create( + dict( + report_id=self.report_3.id, + description="Wrong tuple length kpi", + name="wrongTupleLen", + multi=False, + expression="('hello', 'does', 'this', 'work')", + ) + ) + # Report 3 : 'classic' kpi + self.env["mis.report.kpi"].create( + dict( + report_id=self.report_3.id, + description="Classic kpi", + name="classic_kpi_r2", + multi=True, + expression_ids=[ + ( + 0, + 0, + dict( + name="bale[200%]", subkpi_id=self.report_3.subkpi_ids[0].id + ), + ), + ( + 0, + 0, + dict( + name="balp[200%]", subkpi_id=self.report_3.subkpi_ids[1].id + ), + ), + ], + ) + ) + # create a report instance + self.report_instance = self.env["mis.report.instance"].create( + dict( + name="test instance", + report_id=self.report.id, + company_id=self.env.ref("base.main_company").id, + period_ids=[ + ( + 0, + 0, + dict( + name="p1", + mode="relative", + type="d", + subkpi_ids=[(4, self.report.subkpi_ids[0].id, None)], + ), + ), + ( + 0, + 0, + dict( + name="p2", + mode="fix", + manual_date_from="2014-01-01", + manual_date_to="2014-12-31", + ), + ), + ], + ) + ) + # same for report 2 + self.report_instance_2 = self.env["mis.report.instance"].create( + dict( + name="test instance 2", + report_id=self.report_2.id, + company_id=self.env.ref("base.main_company").id, + period_ids=[ + ( + 0, + 0, + dict( + name="p3", + mode="fix", + manual_date_from="2019-01-01", + manual_date_to="2019-12-31", + ), + ) + ], + ) + ) + # and for report 3 + self.report_instance_3 = self.env["mis.report.instance"].create( + dict( + name="test instance 3", + report_id=self.report_3.id, + company_id=self.env.ref("base.main_company").id, + period_ids=[ + ( + 0, + 0, + dict( + name="p4", + mode="fix", + manual_date_from="2019-01-01", + manual_date_to="2019-12-31", + ), + ) + ], + ) + ) + + def test_compute(self): + matrix = self.report_instance._compute_matrix() + for row in matrix.iter_rows(): + vals = [c.val for c in row.iter_cells()] + if row.kpi.name == "k3": + # k3 is constant + self.assertEqual(vals, [AccountingNone, AccountingNone, 1.0]) + elif row.kpi.name == "k6": + # k6 is a string kpi + self.assertEqual(vals, ["bla", "bla", "blabla"]) + elif row.kpi.name == "k7": + # k7 references k3 via subkpi names + self.assertEqual(vals, [AccountingNone, AccountingNone, 1.0]) + + def test_multi_company_compute(self): + self.report_instance.write( + { + "multi_company": True, + "company_ids": [(6, 0, self.report_instance.company_id.ids)], + } + ) + self.report_instance.report_id.kpi_ids.write({"auto_expand_accounts": True}) + matrix = self.report_instance._compute_matrix() + for row in matrix.iter_rows(): + if row.account_id: + account = self.env["account.account"].browse(row.account_id) + self.assertEqual( + row.label, + f"{account.code} {account.name} [{account.company_id.name}]", + ) + self.report_instance.write({"multi_company": False}) + matrix = self.report_instance._compute_matrix() + for row in matrix.iter_rows(): + if row.account_id: + account = self.env["account.account"].browse(row.account_id) + self.assertEqual(row.label, f"{account.code} {account.name}") + + def test_evaluate(self): + company = self.env.ref("base.main_company") + aep = self.report._prepare_aep(company) + r = self.report.evaluate(aep, date_from="2014-01-01", date_to="2014-12-31") + self.assertEqual(r["k3"], (AccountingNone, 1.0)) + self.assertEqual(r["k6"], ("bla", "blabla")) + self.assertEqual(r["k7"], (AccountingNone, 1.0)) + + def test_json(self): + self.report_instance.compute() + + def test_drilldown(self): + action = self.report_instance.drilldown( + dict(expr="balp[200%]", period_id=self.report_instance.period_ids[0].id) + ) + account_ids = ( + self.env["account.account"] + .search( + [ + ("code", "=like", "200%"), + ("company_id", "=", self.env.ref("base.main_company").id), + ] + ) + .ids + ) + self.assertTrue(("account_id", "in", tuple(account_ids)) in action["domain"]) + self.assertEqual(action["res_model"], "account.move.line") + + def test_drilldown_action_name_with_account(self): + period = self.report_instance.period_ids[0] + account = self.env["account.account"].search([], limit=1) + args = { + "period_id": period.id, + "kpi_id": self.kpi1.id, + "account_id": account.id, + } + action_name = self.report_instance._get_drilldown_action_name(args) + expected_name = "{kpi} - {account} - {period}".format( + kpi=self.kpi1.description, + account=account.display_name, + period=period.display_name, + ) + assert action_name == expected_name + + def test_drilldown_action_name_without_account(self): + period = self.report_instance.period_ids[0] + args = { + "period_id": period.id, + "kpi_id": self.kpi1.id, + } + action_name = self.report_instance._get_drilldown_action_name(args) + expected_name = f"{self.kpi1.description} - {period.display_name}" + assert action_name == expected_name + + def test_qweb(self): + self.report_instance.print_pdf() # get action + test_reports.try_report( + self.env.cr, + self.env.uid, + "mis_builder.report_mis_report_instance", + [self.report_instance.id], + report_type="qweb-pdf", + ) + + def test_xlsx(self): + self.report_instance.export_xls() # get action + test_reports.try_report( + self.env.cr, + self.env.uid, + "mis_builder.mis_report_instance_xlsx", + [self.report_instance.id], + report_type="xlsx", + ) + + def test_get_kpis_by_account_id(self): + account_ids = ( + self.env["account.account"] + .search( + [ + ("code", "=like", "200%"), + ("company_id", "=", self.env.ref("base.main_company").id), + ] + ) + .ids + ) + kpi200 = {self.kpi1, self.kpi2} + res = self.report.get_kpis_by_account_id(self.env.ref("base.main_company")) + for account_id in account_ids: + self.assertTrue(account_id in res) + self.assertEqual(res[account_id], kpi200) + + def test_kpi_name_get_name_search(self): + r = self.env["mis.report.kpi"].name_search("k1") + self.assertEqual(len(r), 1) + self.assertEqual(r[0][0], self.kpi1.id) + self.assertEqual(r[0][1], "kpi 1 (k1)") + r = self.env["mis.report.kpi"].name_search("kpi 1") + self.assertEqual(len(r), 1) + self.assertEqual(r[0][0], self.kpi1.id) + self.assertEqual(r[0][1], "kpi 1 (k1)") + + def test_kpi_expr_name_get_name_search(self): + r = self.env["mis.report.kpi.expression"].name_search("k1") + self.assertEqual( + [i[1] for i in r], + ["kpi 1 / subkpi 1 (k1.sk1)", "kpi 1 / subkpi 2 (k1.sk2)"], + ) + r = self.env["mis.report.kpi.expression"].name_search("k1.sk1") + self.assertEqual([i[1] for i in r], ["kpi 1 / subkpi 1 (k1.sk1)"]) + r = self.env["mis.report.kpi.expression"].name_search("k4") + self.assertEqual([i[1] for i in r], ["kpi 4 (k4)"]) + + def test_query_company_ids(self): + # sanity check single company mode + assert not self.report_instance.multi_company + assert self.report_instance.company_id + assert self.report_instance.query_company_ids == self.report_instance.company_id + # create a second company + c1 = self.report_instance.company_id + c2 = self.env["res.company"].create( + dict( + name="company 2", + ) + ) + self.report_instance.write(dict(multi_company=True, company_id=False)) + self.report_instance.company_ids |= c1 + self.report_instance.company_ids |= c2 + assert len(self.report_instance.company_ids) == 2 + self.assertFalse(self.report_instance.query_company_ids - self.env.companies) + # In a user context where there is only one company, ensure + # query_company_ids only has one company too. + assert ( + self.report_instance.with_context( + allowed_company_ids=(c1.id,) + ).query_company_ids + == c1 + ) + + def test_multi_company_onchange(self): + # not multi company + self.assertTrue(self.report_instance.company_id) + self.assertFalse(self.report_instance.multi_company) + self.assertFalse(self.report_instance.company_ids) + self.assertEqual( + self.report_instance.query_company_ids[0], self.report_instance.company_id + ) + # create a child company + self.env["res.company"].create( + dict(name="company 2", parent_id=self.report_instance.company_id.id) + ) + self.report_instance.multi_company = True + # multi company, company_ids not set + self.assertEqual(self.report_instance.query_company_ids, self.env.companies) + # set company_ids + previous_company = self.report_instance.company_id + self.report_instance._onchange_company() + self.assertFalse(self.report_instance.company_id) + self.assertTrue(self.report_instance.multi_company) + self.assertEqual(self.report_instance.company_ids, previous_company) + self.assertEqual(self.report_instance.query_company_ids, previous_company) + # reset single company mode + self.report_instance.multi_company = False + self.report_instance._onchange_company() + self.assertEqual( + self.report_instance.query_company_ids[0], self.report_instance.company_id + ) + self.assertFalse(self.report_instance.company_ids) + + def test_mis_report_analytic_filters(self): + # Check that matrix has no values when using a filter with a non existing value + matrix = self.report_instance.with_context( + analytic_domain=[("partner_id", "=", -1)] + )._compute_matrix() + for row in matrix.iter_rows(): + vals = [c.val for c in row.iter_cells()] + if row.kpi.name == "k1": + self.assertEqual(vals, [AccountingNone, AccountingNone, AccountingNone]) + elif row.kpi.name == "k2": + self.assertEqual(vals, [AccountingNone, AccountingNone, None]) + elif row.kpi.name == "k4": + self.assertEqual(vals, [AccountingNone, AccountingNone, 1.0]) + + def test_raise_when_unknown_kpi_value_type(self): + with self.assertRaises(SubKPIUnknownTypeError): + self.report_instance_2.compute() + + def test_raise_when_wrong_tuple_length_with_subkpis(self): + with self.assertRaises(SubKPITupleLengthError): + self.report_instance_3.compute() + + def test_unprivileged(self): + test_user = common.new_test_user( + self.env, "mis_you", groups="base.group_user,account.group_account_readonly" + ) + self.report_instance.with_user(test_user).compute() diff --git a/mis_builder/tests/test_mis_safe_eval.py b/mis_builder/tests/test_mis_safe_eval.py new file mode 100644 index 0000000..e0f220d --- /dev/null +++ b/mis_builder/tests/test_mis_safe_eval.py @@ -0,0 +1,25 @@ +# Copyright 2016 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import flectra.tests.common as common + +from ..models.mis_safe_eval import DataError, NameDataError, mis_safe_eval + + +class TestMisSafeEval(common.TransactionCase): + def test_nominal(self): + val = mis_safe_eval("a + 1", {"a": 1}) + self.assertEqual(val, 2) + + def test_exceptions(self): + val = mis_safe_eval("1/0", {}) # division by zero + self.assertTrue(isinstance(val, DataError)) + self.assertEqual(val.name, "#DIV/0") + val = mis_safe_eval("1a", {}) # syntax error + self.assertTrue(isinstance(val, DataError)) + self.assertEqual(val.name, "#ERR") + + def test_name_error(self): + val = mis_safe_eval("a + 1", {}) + self.assertTrue(isinstance(val, NameDataError)) + self.assertEqual(val.name, "#NAME") diff --git a/mis_builder/tests/test_multi_company_aep.py b/mis_builder/tests/test_multi_company_aep.py new file mode 100644 index 0000000..199fae7 --- /dev/null +++ b/mis_builder/tests/test_multi_company_aep.py @@ -0,0 +1,208 @@ +# Copyright 2014 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import datetime + +import flectra.tests.common as common +from flectra import fields +from flectra.tools.safe_eval import safe_eval + +from ..models.accounting_none import AccountingNone +from ..models.aep import AccountingExpressionProcessor as AEP + + +class TestMultiCompanyAEP(common.TransactionCase): + def setUp(self): + super().setUp() + self.res_company = self.env["res.company"] + self.account_model = self.env["account.account"] + self.move_model = self.env["account.move"] + self.journal_model = self.env["account.journal"] + self.currency_model = self.env["res.currency"] + self.curr_year = datetime.date.today().year + self.prev_year = self.curr_year - 1 + self.usd = self.currency_model.with_context(active_test=False).search( + [("name", "=", "USD")] + ) + self.eur = self.currency_model.with_context(active_test=False).search( + [("name", "=", "EUR")] + ) + # create company A and B + self.company_eur = self.res_company.create( + {"name": "CYEUR", "currency_id": self.eur.id} + ) + self.company_usd = self.res_company.create( + {"name": "CYUSD", "currency_id": self.usd.id} + ) + self.env["res.currency.rate"].search([]).unlink() + for company, divider in [(self.company_eur, 1.0), (self.company_usd, 2.0)]: + # create receivable bs account + company_key = company.name + setattr( + self, + "account_ar_" + company_key, + self.account_model.create( + { + "company_id": company.id, + "code": "400AR", + "name": "Receivable", + "account_type": "asset_receivable", + "reconcile": True, + } + ), + ) + # create income pl account + setattr( + self, + "account_in_" + company_key, + self.account_model.create( + { + "company_id": company.id, + "code": "700IN", + "name": "Income", + "account_type": "income", + } + ), + ) + # create journal + setattr( + self, + "journal" + company_key, + self.journal_model.create( + { + "company_id": company.id, + "name": "Sale journal", + "code": "VEN", + "type": "sale", + } + ), + ) + # create move in december last year + self._create_move( + journal=getattr(self, "journal" + company_key), + date=datetime.date(self.prev_year, 12, 1), + amount=100 / divider, + debit_acc=getattr(self, "account_ar_" + company_key), + credit_acc=getattr(self, "account_in_" + company_key), + ) + # create move in january this year + self._create_move( + journal=getattr(self, "journal" + company_key), + date=datetime.date(self.curr_year, 1, 1), + amount=300 / divider, + debit_acc=getattr(self, "account_ar_" + company_key), + credit_acc=getattr(self, "account_in_" + company_key), + ) + # create move in february this year + self._create_move( + journal=getattr(self, "journal" + company_key), + date=datetime.date(self.curr_year, 3, 1), + amount=500 / divider, + debit_acc=getattr(self, "account_ar_" + company_key), + credit_acc=getattr(self, "account_in_" + company_key), + ) + + def _create_move(self, journal, date, amount, debit_acc, credit_acc): + move = self.move_model.create( + { + "journal_id": journal.id, + "date": fields.Date.to_string(date), + "line_ids": [ + (0, 0, {"name": "/", "debit": amount, "account_id": debit_acc.id}), + ( + 0, + 0, + {"name": "/", "credit": amount, "account_id": credit_acc.id}, + ), + ], + } + ) + move._post() + return move + + def _do_queries(self, companies, currency, date_from, date_to): + # create the AEP, and prepare the expressions we'll need + aep = AEP(companies, currency) + aep.parse_expr("bali[]") + aep.parse_expr("bale[]") + aep.parse_expr("balp[]") + aep.parse_expr("balu[]") + aep.parse_expr("bali[700IN]") + aep.parse_expr("bale[700IN]") + aep.parse_expr("balp[700IN]") + aep.parse_expr("bali[400AR]") + aep.parse_expr("bale[400AR]") + aep.parse_expr("balp[400AR]") + aep.parse_expr("debp[400A%]") + aep.parse_expr("crdp[700I%]") + aep.parse_expr("bali[400%]") + aep.parse_expr("bale[700%]") + aep.done_parsing() + aep.do_queries( + date_from=fields.Date.to_string(date_from), + date_to=fields.Date.to_string(date_to), + ) + return aep + + def _eval(self, aep, expr): + eval_dict = {"AccountingNone": AccountingNone} + return safe_eval(aep.replace_expr(expr), eval_dict) + + def _eval_by_account_id(self, aep, expr): + res = {} + eval_dict = {"AccountingNone": AccountingNone} + for account_id, replaced_exprs in aep.replace_exprs_by_account_id([expr]): + res[account_id] = safe_eval(replaced_exprs[0], eval_dict) + return res + + def test_aep_basic(self): + # let's query for december, one company + aep = self._do_queries( + self.company_eur, + None, + datetime.date(self.prev_year, 12, 1), + datetime.date(self.prev_year, 12, 31), + ) + self.assertEqual(self._eval(aep, "balp[700IN]"), -100) + aep = self._do_queries( + self.company_usd, + None, + datetime.date(self.prev_year, 12, 1), + datetime.date(self.prev_year, 12, 31), + ) + self.assertEqual(self._eval(aep, "balp[700IN]"), -50) + # let's query for december, two companies + aep = self._do_queries( + self.company_eur | self.company_usd, + self.eur, + datetime.date(self.prev_year, 12, 1), + datetime.date(self.prev_year, 12, 31), + ) + self.assertEqual(self._eval(aep, "balp[700IN]"), -150) + + def test_aep_multi_currency(self): + date_from = datetime.date(self.prev_year, 12, 1) + date_to = datetime.date(self.prev_year, 12, 31) + today = datetime.date.today() + self.env["res.currency.rate"].create( + dict(currency_id=self.usd.id, name=date_to, rate=1.1) + ) + self.env["res.currency.rate"].create( + dict(currency_id=self.usd.id, name=today, rate=1.2) + ) + # let's query for december, one company, default currency = eur + aep = self._do_queries(self.company_eur, None, date_from, date_to) + self.assertEqual(self._eval(aep, "balp[700IN]"), -100) + # let's query for december, two companies + aep = self._do_queries( + self.company_eur | self.company_usd, self.eur, date_from, date_to + ) + self.assertAlmostEqual(self._eval(aep, "balp[700IN]"), -100 - 50 / 1.1) + # let's query for december, one company, currency = usd + aep = self._do_queries(self.company_eur, self.usd, date_from, date_to) + self.assertAlmostEqual(self._eval(aep, "balp[700IN]"), -100 * 1.1) + # let's query for december, two companies, currency = usd + aep = self._do_queries( + self.company_eur | self.company_usd, self.usd, date_from, date_to + ) + self.assertAlmostEqual(self._eval(aep, "balp[700IN]"), -100 * 1.1 - 50) diff --git a/mis_builder/tests/test_period_dates.py b/mis_builder/tests/test_period_dates.py new file mode 100644 index 0000000..d37303c --- /dev/null +++ b/mis_builder/tests/test_period_dates.py @@ -0,0 +1,159 @@ +# Copyright 2017 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import flectra.tests.common as common +from flectra import fields + +from ..models.mis_report_instance import ( + MODE_FIX, + MODE_NONE, + MODE_REL, + SRC_SUMCOL, + DateFilterForbidden, + DateFilterRequired, +) +from .common import assert_matrix + + +class TestPeriodDates(common.TransactionCase): + def setUp(self): + super().setUp() + self.report_obj = self.env["mis.report"] + self.instance_obj = self.env["mis.report.instance"] + self.period_obj = self.env["mis.report.instance.period"] + self.report = self.report_obj.create(dict(name="test-report")) + self.instance = self.instance_obj.create( + dict(name="test-instance", report_id=self.report.id, comparison_mode=False) + ) + self.assertEqual(len(self.instance.period_ids), 1) + self.period = self.instance.period_ids[0] + + def assertDateEqual(self, first, second, msg=None): + self.assertEqual(first, fields.Date.from_string(second), msg) + + def test_date_filter_constraints(self): + self.instance.comparison_mode = True + with self.assertRaises(DateFilterRequired): + self.period.write(dict(mode=MODE_NONE)) + with self.assertRaises(DateFilterForbidden): + self.period.write(dict(mode=MODE_FIX, source=SRC_SUMCOL)) + + def test_simple_mode(self): + # not comparison_mode + self.assertFalse(self.instance.comparison_mode) + period = self.instance.period_ids[0] + self.assertEqual(period.date_from, self.instance.date_from) + self.assertEqual(period.date_to, self.instance.date_to) + + def tests_mode_none(self): + self.instance.comparison_mode = True + self.period.write(dict(mode=MODE_NONE, source=SRC_SUMCOL)) + self.assertFalse(self.period.date_from) + self.assertFalse(self.period.date_to) + self.assertTrue(self.period.valid) + + def tests_mode_fix(self): + self.instance.comparison_mode = True + self.period.write( + dict( + mode=MODE_FIX, + manual_date_from="2017-01-01", + manual_date_to="2017-12-31", + ) + ) + self.assertDateEqual(self.period.date_from, "2017-01-01") + self.assertDateEqual(self.period.date_to, "2017-12-31") + self.assertTrue(self.period.valid) + + def test_rel_day(self): + self.instance.write(dict(comparison_mode=True, date="2017-01-01")) + self.period.write(dict(mode=MODE_REL, type="d", offset="-2")) + self.assertDateEqual(self.period.date_from, "2016-12-30") + self.assertDateEqual(self.period.date_to, "2016-12-30") + self.assertTrue(self.period.valid) + + def test_rel_day_ytd(self): + self.instance.write(dict(comparison_mode=True, date="2019-05-03")) + self.period.write(dict(mode=MODE_REL, type="d", offset="-2", is_ytd=True)) + self.assertDateEqual(self.period.date_from, "2019-01-01") + self.assertDateEqual(self.period.date_to, "2019-05-01") + self.assertTrue(self.period.valid) + + def test_rel_week(self): + self.instance.write(dict(comparison_mode=True, date="2016-12-30")) + self.period.write(dict(mode=MODE_REL, type="w", offset="1", duration=2)) + # from Monday to Sunday, the week after 2016-12-30 + self.assertDateEqual(self.period.date_from, "2017-01-02") + self.assertDateEqual(self.period.date_to, "2017-01-15") + self.assertTrue(self.period.valid) + + def test_rel_week_ytd(self): + self.instance.write(dict(comparison_mode=True, date="2019-05-27")) + self.period.write( + dict(mode=MODE_REL, type="w", offset="1", duration=2, is_ytd=True) + ) + self.assertDateEqual(self.period.date_from, "2019-01-01") + self.assertDateEqual(self.period.date_to, "2019-06-16") + self.assertTrue(self.period.valid) + + def test_rel_month(self): + self.instance.write(dict(comparison_mode=True, date="2017-01-05")) + self.period.write(dict(mode=MODE_REL, type="m", offset="1")) + self.assertDateEqual(self.period.date_from, "2017-02-01") + self.assertDateEqual(self.period.date_to, "2017-02-28") + self.assertTrue(self.period.valid) + + def test_rel_month_ytd(self): + self.instance.write(dict(comparison_mode=True, date="2019-05-15")) + self.period.write(dict(mode=MODE_REL, type="m", offset="-1", is_ytd=True)) + self.assertDateEqual(self.period.date_from, "2019-01-01") + self.assertDateEqual(self.period.date_to, "2019-04-30") + self.assertTrue(self.period.valid) + + def test_rel_year(self): + self.instance.write(dict(comparison_mode=True, date="2017-05-06")) + self.period.write(dict(mode=MODE_REL, type="y", offset="1")) + self.assertDateEqual(self.period.date_from, "2018-01-01") + self.assertDateEqual(self.period.date_to, "2018-12-31") + self.assertTrue(self.period.valid) + + def test_rel_date_range(self): + # create a few date ranges + date_range_type = self.env["date.range.type"].create(dict(name="Year")) + for year in (2016, 2017, 2018): + self.env["date.range"].create( + dict( + type_id=date_range_type.id, + name="%d" % year, + date_start="%d-01-01" % year, + date_end="%d-12-31" % year, + company_id=date_range_type.company_id.id, + ) + ) + self.instance.write(dict(comparison_mode=True, date="2017-06-15")) + self.period.write( + dict( + mode=MODE_REL, + type="date_range", + date_range_type_id=date_range_type.id, + offset="-1", + duration=3, + ) + ) + self.assertDateEqual(self.period.date_from, "2016-01-01") + self.assertDateEqual(self.period.date_to, "2018-12-31") + self.assertTrue(self.period.valid) + + def test_dates_in_expr(self): + self.env["mis.report.kpi"].create( + dict( + report_id=self.report.id, + name="k1", + description="kpi 1", + expression="(date_to - date_from).days + 1", + ) + ) + self.instance.date_from = "2017-01-01" + self.instance.date_to = "2017-01-31" + matrix = self.instance._compute_matrix() + assert_matrix(matrix, [[31]]) diff --git a/mis_builder/tests/test_render.py b/mis_builder/tests/test_render.py new file mode 100644 index 0000000..2d7225d --- /dev/null +++ b/mis_builder/tests/test_render.py @@ -0,0 +1,315 @@ +# Copyright 2016 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import flectra.tests.common as common + +from ..models.accounting_none import AccountingNone +from ..models.data_error import DataError +from ..models.mis_report_style import CMP_DIFF, CMP_PCT, TYPE_NUM, TYPE_PCT, TYPE_STR + + +class TestRendering(common.TransactionCase): + def setUp(self): + super().setUp() + self.style_obj = self.env["mis.report.style"] + self.kpi_obj = self.env["mis.report.kpi"] + self.style = self.style_obj.create(dict(name="teststyle")) + self.lang = ( + self.env["res.lang"] + .with_context(active_test=False) + .search([("code", "=", "en_US")])[0] + ) + + def _render(self, value, var_type=TYPE_NUM): + style_props = self.style_obj.merge([self.style]) + return self.style_obj.render(self.lang, style_props, var_type, value) + + def _compare_and_render( + self, value, base_value, var_type=TYPE_NUM, compare_method=CMP_PCT + ): + style_props = self.style_obj.merge([self.style]) + r = self.style_obj.compare_and_render( + self.lang, style_props, var_type, compare_method, value, base_value + )[:2] + if r[0]: + return (round(r[0], 8), r[1]) + else: + return r + + def test_render(self): + self.assertEqual("1", self._render(1)) + self.assertEqual("1", self._render(1.1)) + self.assertEqual("2", self._render(1.6)) + self.style.dp_inherit = False + self.style.dp = 2 + self.assertEqual("1.00", self._render(1)) + self.assertEqual("1.10", self._render(1.1)) + self.assertEqual("1.60", self._render(1.6)) + self.assertEqual("1.61", self._render(1.606)) + self.assertEqual("12,345.67", self._render(12345.67)) + + def test_render_negative(self): + # non breaking hyphen + self.assertEqual("\u20111", self._render(-1)) + + def test_render_zero(self): + self.assertEqual("0", self._render(0)) + self.assertEqual("", self._render(None)) + self.assertEqual("", self._render(AccountingNone)) + + def test_render_suffix(self): + self.style.suffix_inherit = False + self.style.suffix = "€" + self.assertEqual("1\xa0€", self._render(1)) + self.style.suffix = "k€" + self.style.divider_inherit = False + self.style.divider = "1e3" + self.assertEqual("1\xa0k€", self._render(1000)) + + def test_render_prefix(self): + self.style.prefix_inherit = False + self.style.prefix = "$" + self.assertEqual("$\xa01", self._render(1)) + self.style.prefix = "k$" + self.style.divider_inherit = False + self.style.divider = "1e3" + self.assertEqual("k$\xa01", self._render(1000)) + + def test_render_divider(self): + self.style.divider_inherit = False + self.style.divider = "1e3" + self.style.dp_inherit = False + self.style.dp = 0 + self.assertEqual("1", self._render(1000)) + self.style.divider = "1e6" + self.style.dp = 3 + self.assertEqual("0.001", self._render(1000)) + self.style.divider = "1e-3" + self.style.dp = 0 + self.assertEqual("1,000", self._render(1)) + self.style.divider = "1e-6" + self.style.dp = 0 + self.assertEqual("1,000,000", self._render(1)) + + def test_render_pct(self): + self.assertEqual("100\xa0%", self._render(1, TYPE_PCT)) + self.assertEqual("50\xa0%", self._render(0.5, TYPE_PCT)) + self.style.dp_inherit = False + self.style.dp = 2 + self.assertEqual("51.23\xa0%", self._render(0.5123, TYPE_PCT)) + + def test_render_string(self): + self.assertEqual("", self._render("", TYPE_STR)) + self.assertEqual("", self._render(None, TYPE_STR)) + self.assertEqual("abcdé", self._render("abcdé", TYPE_STR)) + + def test_compare_num_pct(self): + self.assertEqual((1.0, "+100.0\xa0%"), self._compare_and_render(100, 50)) + self.assertEqual((0.5, "+50.0\xa0%"), self._compare_and_render(75, 50)) + self.assertEqual((0.5, "+50.0\xa0%"), self._compare_and_render(-25, -50)) + self.assertEqual((1.0, "+100.0\xa0%"), self._compare_and_render(0, -50)) + self.assertEqual((2.0, "+200.0\xa0%"), self._compare_and_render(50, -50)) + self.assertEqual((-0.5, "\u201150.0\xa0%"), self._compare_and_render(25, 50)) + self.assertEqual((-1.0, "\u2011100.0\xa0%"), self._compare_and_render(0, 50)) + self.assertEqual((-2.0, "\u2011200.0\xa0%"), self._compare_and_render(-50, 50)) + self.assertEqual((-0.5, "\u201150.0\xa0%"), self._compare_and_render(-75, -50)) + self.assertEqual( + (AccountingNone, ""), self._compare_and_render(50, AccountingNone) + ) + self.assertEqual((AccountingNone, ""), self._compare_and_render(50, None)) + self.assertEqual((AccountingNone, ""), self._compare_and_render(50, 50)) + self.assertEqual((0.002, "+0.2\xa0%"), self._compare_and_render(50.1, 50)) + self.assertEqual((AccountingNone, ""), self._compare_and_render(50.01, 50)) + self.assertEqual( + (-1.0, "\u2011100.0\xa0%"), self._compare_and_render(AccountingNone, 50) + ) + self.assertEqual((-1.0, "\u2011100.0\xa0%"), self._compare_and_render(None, 50)) + self.assertEqual( + (AccountingNone, ""), self._compare_and_render(DataError("#ERR", "."), 1) + ) + self.assertEqual( + (AccountingNone, ""), self._compare_and_render(1, DataError("#ERR", ".")) + ) + + def test_compare_num_diff(self): + self.assertEqual( + (25, "+25"), self._compare_and_render(75, 50, TYPE_NUM, CMP_DIFF) + ) + self.assertEqual( + (-25, "\u201125"), self._compare_and_render(25, 50, TYPE_NUM, CMP_DIFF) + ) + self.style.suffix_inherit = False + self.style.suffix = "€" + self.assertEqual( + (-25, "\u201125\xa0€"), + self._compare_and_render(25, 50, TYPE_NUM, CMP_DIFF), + ) + self.style.suffix = "" + self.assertEqual( + (50.0, "+50"), + self._compare_and_render(50, AccountingNone, TYPE_NUM, CMP_DIFF), + ) + self.assertEqual( + (50.0, "+50"), self._compare_and_render(50, None, TYPE_NUM, CMP_DIFF) + ) + self.assertEqual( + (-50.0, "\u201150"), + self._compare_and_render(AccountingNone, 50, TYPE_NUM, CMP_DIFF), + ) + self.assertEqual( + (-50.0, "\u201150"), self._compare_and_render(None, 50, TYPE_NUM, CMP_DIFF) + ) + self.style.dp_inherit = False + self.style.dp = 2 + self.assertEqual( + (0.1, "+0.10"), self._compare_and_render(1.1, 1.0, TYPE_NUM, CMP_DIFF) + ) + self.assertEqual( + (AccountingNone, ""), + self._compare_and_render(1.001, 1.0, TYPE_NUM, CMP_DIFF), + ) + + def test_compare_pct(self): + self.assertEqual( + (0.25, "+25\xa0pp"), self._compare_and_render(0.75, 0.50, TYPE_PCT) + ) + self.assertEqual( + (AccountingNone, ""), self._compare_and_render(0.751, 0.750, TYPE_PCT) + ) + + def test_compare_pct_result_type(self): + style_props = self.style_obj.merge([self.style]) + result = self.style_obj.compare_and_render( + self.lang, style_props, TYPE_PCT, CMP_DIFF, 0.75, 0.50 + ) + self.assertEqual(result[3], TYPE_NUM) + + def test_merge(self): + self.style.color = "#FF0000" + self.style.color_inherit = False + style_props = self.style_obj.merge([self.style]) + self.assertEqual(style_props, {"color": "#FF0000"}) + style_dict = {"color": "#00FF00", "dp": 0} + style_props = self.style_obj.merge([self.style, style_dict]) + self.assertEqual(style_props, {"color": "#00FF00", "dp": 0}) + style2 = self.style_obj.create( + dict( + name="teststyle2", + dp_inherit=False, + dp=1, + # color_inherit=True: will not be applied + color="#0000FF", + ) + ) + style_props = self.style_obj.merge([self.style, style_dict, style2]) + self.assertEqual(style_props, {"color": "#00FF00", "dp": 1}) + + def test_css(self): + self.style.color_inherit = False + self.style.color = "#FF0000" + self.style.background_color_inherit = False + self.style.background_color = "#0000FF" + self.style.suffix_inherit = False + self.style.suffix = "s" + self.style.prefix_inherit = False + self.style.prefix = "p" + self.style.font_style_inherit = False + self.style.font_style = "italic" + self.style.font_weight_inherit = False + self.style.font_weight = "bold" + self.style.font_size_inherit = False + self.style.font_size = "small" + self.style.indent_level_inherit = False + self.style.indent_level = 2 + style_props = self.style_obj.merge([self.style]) + css = self.style_obj.to_css_style(style_props) + self.assertEqual( + css, + "font-style: italic; " + "font-weight: bold; " + "font-size: small; " + "color: #FF0000; " + "background-color: #0000FF; " + "text-indent: 2em", + ) + css = self.style_obj.to_css_style(style_props, no_indent=True) + self.assertEqual( + css, + "font-style: italic; " + "font-weight: bold; " + "font-size: small; " + "color: #FF0000; " + "background-color: #0000FF", + ) + + def test_xslx(self): + self.style.color_inherit = False + self.style.color = "#FF0000" + self.style.background_color_inherit = False + self.style.background_color = "#0000FF" + self.style.suffix_inherit = False + self.style.suffix = "s" + self.style.prefix_inherit = False + self.style.prefix = "p" + self.style.dp_inherit = False + self.style.dp = 2 + self.style.font_style_inherit = False + self.style.font_style = "italic" + self.style.font_weight_inherit = False + self.style.font_weight = "bold" + self.style.font_size_inherit = False + self.style.font_size = "small" + self.style.indent_level_inherit = False + self.style.indent_level = 2 + style_props = self.style_obj.merge([self.style]) + xlsx = self.style_obj.to_xlsx_style(TYPE_NUM, style_props) + self.assertEqual( + xlsx, + { + "italic": True, + "bold": True, + "size": 9, + "font_color": "#FF0000", + "bg_color": "#0000FF", + "num_format": '"p "#,##0.00" s"', + "indent": 2, + }, + ) + xlsx = self.style_obj.to_xlsx_style(TYPE_NUM, style_props, no_indent=True) + self.assertEqual( + xlsx, + { + "italic": True, + "bold": True, + "size": 9, + "font_color": "#FF0000", + "bg_color": "#0000FF", + "num_format": '"p "#,##0.00" s"', + }, + ) + # percent type ignore prefix and suffix + xlsx = self.style_obj.to_xlsx_style(TYPE_PCT, style_props, no_indent=True) + self.assertEqual( + xlsx, + { + "italic": True, + "bold": True, + "size": 9, + "font_color": "#FF0000", + "bg_color": "#0000FF", + "num_format": "0.00%", + }, + ) + + # str type have no num_format style + xlsx = self.style_obj.to_xlsx_style(TYPE_STR, style_props, no_indent=True) + self.assertEqual( + xlsx, + { + "italic": True, + "bold": True, + "size": 9, + "font_color": "#FF0000", + "bg_color": "#0000FF", + }, + ) diff --git a/mis_builder/tests/test_simple_array.py b/mis_builder/tests/test_simple_array.py new file mode 100644 index 0000000..36d8e13 --- /dev/null +++ b/mis_builder/tests/test_simple_array.py @@ -0,0 +1,7 @@ +# Copyright 2014 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from ..models import simple_array +from .common import load_doctests + +load_tests = load_doctests(simple_array) diff --git a/mis_builder/tests/test_subreport.py b/mis_builder/tests/test_subreport.py new file mode 100644 index 0000000..c24bfcf --- /dev/null +++ b/mis_builder/tests/test_subreport.py @@ -0,0 +1,96 @@ +# Copyright 2020 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from flectra.tests.common import TransactionCase + +from flectra.addons.mis_builder.models.expression_evaluator import ExpressionEvaluator +from flectra.addons.mis_builder.models.mis_report_subreport import ( + InvalidNameError, + ParentLoopError, +) + + +class TestMisSubreport(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + # create report + cls.subreport = cls.env["mis.report"].create(dict(name="test subreport")) + cls.subreport_kpi1 = cls.env["mis.report.kpi"].create( + dict( + report_id=cls.subreport.id, + name="sk1", + description="subreport kpi 1", + expression="11", + ) + ) + cls.report = cls.env["mis.report"].create( + dict( + name="test report", + subreport_ids=[ + (0, 0, dict(name="subreport", subreport_id=cls.subreport.id)) + ], + ) + ) + cls.report_kpi1 = cls.env["mis.report.kpi"].create( + dict( + report_id=cls.report.id, + name="k1", + description="report kpi 1", + expression="subreport.sk1 + 1", + ) + ) + cls.parent_report = cls.env["mis.report"].create( + dict( + name="parent report", + subreport_ids=[(0, 0, dict(name="report", subreport_id=cls.report.id))], + ) + ) + cls.parent_report_kpi1 = cls.env["mis.report.kpi"].create( + dict( + report_id=cls.parent_report.id, + name="pk1", + description="parent report kpi 1", + expression="report.k1 + 1", + ) + ) + + def test_basic(self): + ee = ExpressionEvaluator(aep=None, date_from="2017-01-01", date_to="2017-01-16") + d = self.report._evaluate(ee) + assert d["k1"] == 12 + + def test_two_levels(self): + ee = ExpressionEvaluator(aep=None, date_from="2017-01-01", date_to="2017-01-16") + d = self.parent_report._evaluate(ee) + assert d["pk1"] == 13 + + def test_detect_loop(self): + with self.assertRaises(ParentLoopError): + self.report.write( + dict( + subreport_ids=[ + ( + 0, + 0, + dict(name="preport1", subreport_id=self.parent_report.id), + ) + ] + ) + ) + with self.assertRaises(ParentLoopError): + self.report.write( + dict( + subreport_ids=[ + ( + 0, + 0, + dict(name="preport2", subreport_id=self.report.id), + ) + ] + ) + ) + + def test_invalid_name(self): + with self.assertRaises(InvalidNameError): + self.report.subreport_ids[0].name = "ab c" diff --git a/mis_builder/tests/test_target_move.py b/mis_builder/tests/test_target_move.py new file mode 100644 index 0000000..cd2e18e --- /dev/null +++ b/mis_builder/tests/test_target_move.py @@ -0,0 +1,36 @@ +# Copyright 2016 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import flectra.tests.common as common + + +class TestMisReportInstance(common.TransactionCase): + def test_supports_target_move_filter(self): + self.assertTrue( + self.env["mis.report"]._supports_target_move_filter("account.move.line") + ) + + def test_supports_target_move_filter_no_parent_state(self): + self.assertFalse( + self.env["mis.report"]._supports_target_move_filter("account.move") + ) + + def test_target_move_domain_posted(self): + self.assertEqual( + self.env["mis.report"]._get_target_move_domain( + "posted", "account.move.line" + ), + [("parent_state", "=", "posted")], + ) + + def test_target_move_domain_all(self): + self.assertEqual( + self.env["mis.report"]._get_target_move_domain("all", "account.move.line"), + [("parent_state", "in", ("posted", "draft"))], + ) + + def test_target_move_domain_no_parent_state(self): + """Test get_target_move_domain on a model that has no parent_state.""" + self.assertEqual( + self.env["mis.report"]._get_target_move_domain("all", "account.move"), [] + ) diff --git a/mis_builder/tests/test_utc_midnight.py b/mis_builder/tests/test_utc_midnight.py new file mode 100644 index 0000000..f227426 --- /dev/null +++ b/mis_builder/tests/test_utc_midnight.py @@ -0,0 +1,19 @@ +# Copyright 2014 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import flectra.tests.common as common + +from ..models.mis_report import _utc_midnight + + +class TestUtcMidnight(common.TransactionCase): + def test_utc_midnight(self): + date_to_convert = "2014-07-05" + date_time_convert = _utc_midnight(date_to_convert, "Europe/Brussels") + self.assertEqual(date_time_convert, "2014-07-04 22:00:00") + date_time_convert = _utc_midnight(date_to_convert, "Europe/Brussels", add_day=1) + self.assertEqual(date_time_convert, "2014-07-05 22:00:00") + date_time_convert = _utc_midnight(date_to_convert, "US/Pacific") + self.assertEqual(date_time_convert, "2014-07-05 07:00:00") + date_time_convert = _utc_midnight(date_to_convert, "US/Pacific", add_day=1) + self.assertEqual(date_time_convert, "2014-07-06 07:00:00") diff --git a/mis_builder/views/mis_report.xml b/mis_builder/views/mis_report.xml new file mode 100644 index 0000000..7bb7178 --- /dev/null +++ b/mis_builder/views/mis_report.xml @@ -0,0 +1,301 @@ + + + + mis.report.view.tree + mis.report + + + + + + + + + + mis.report.view.form + mis.report + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + mis.report.view.kpi.form + mis.report.kpi + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

+ Expressions can be any valid python expressions. +

+

The following special elements are recognized in the expressions + to compute accounting data: {bal|crd|deb|pbal|nbal}{pieu}[account + selector][journal items domain].

+
    +
  • + bal, crd, deb, + pbal, nbal : balance, debit, credit, + positive balance, negative balance.
  • +
  • + p, i, e : respectively variation over the period, + initial balance, ending balance
  • +
  • The account selector is a like expression on the + account code (eg 70%, etc), or a domain over accounts + (eg [('code', 'like', '60%')]).
  • +
  • The journal items domain is an Flectra domain filter on + journal items.
  • +
  • + balu[] : (u for unallocated) is a special expression + that shows the unallocated profit/loss of previous fiscal + years.
  • +
+

+ Expressions can involve other KPI, sub KPI and + query results by name (eg kpi1 + kpi2, + kpi2.subkpi1, query1.field1). +

+

+ Additionally following variables are available + in the evaluation context: +

+
    +
  • + sum, min, + max, len, + avg : behave as expected, very + similar to the python builtins.
  • +
  • + datetime, datetime, dateutil : the python modules.
  • +
  • + date_from, date_to : beginning and end date of the + period.
  • +
  • + AccountingNone : a null value that behaves as 0 in + arithmetic operations.
  • +
+
+
+

Examples:

+
    +
  • + bal[70] : variation of the balance of account 70 over + the period (it is the same as balp[70].
  • +
  • + bali[70,60] : initial balance of accounts 70 and 60.
  • +
  • + bale[1%%] : balance of accounts starting with 1 at + end of period.
  • +
  • + crdp[40%] : sum of all credits on accounts starting + with 40 during the period.
  • +
  • + + debp[55%][('journal_id.code', '=', + 'BNK1')] + + : sum of all debits on accounts 55 and journal BNK1 during + the period.
  • +
  • + + balp[('user_type_id', '=', + ref('account. + data_account_type_receivable').id)][] + + : variation of the balance of all receivable accounts over + the period.
  • +
  • + + balp[][('tax_line_id.tag_ids', '=', ref('l10n_be.tax_tag_56').id)] + + : balance of move lines related to tax grid 56.
  • +
  • + pbale[55%] : sum of all ending balances of accounts + starting with 55 whose ending balance is positive.
  • +
+
+
+
+
+
+
+
+ + MIS Report Templates + + mis.report + tree,form + + + +
diff --git a/mis_builder/views/mis_report_instance.xml b/mis_builder/views/mis_report_instance.xml new file mode 100644 index 0000000..d54bfeb --- /dev/null +++ b/mis_builder/views/mis_report_instance.xml @@ -0,0 +1,421 @@ + + + + mis.report.instance.result.view.form + mis.report.instance + + +
+ + + +
+
+
+ + mis.report.instance.view.tree + mis.report.instance + + +