mirror of
https://gitlab.com/flectra-community/mis-builder.git
synced 2024-11-16 11:12:07 +00:00
Automatic Update form OCA2FC Migrator
This commit is contained in:
parent
e598bc2f45
commit
9c61eb1d76
@ -25,8 +25,6 @@ test_all_modules:
|
||||
- apt-get install -y p7zip-full
|
||||
- apt-get install -y expect-dev
|
||||
- su - flectra -c "mkdir ~/others"
|
||||
- su - flectra -c "git clone --branch 20-fixed --depth 1 https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/flectra-community/reporting-engine.git ~/others/reporting-engine"
|
||||
- su - flectra -c "git clone --branch 20-fixed --depth 1 https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/flectra-community/server-ux.git ~/others/server-ux"
|
||||
- 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
|
||||
@ -38,7 +36,7 @@ test_all_modules:
|
||||
- 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},~/others/reporting-engine,~/others/server-ux
|
||||
--addons-path ${CI_PROJECT_DIR}
|
||||
--db_host psql
|
||||
--db_port 5432
|
||||
--db_user flectra
|
||||
@ -64,8 +62,6 @@ test_module_mis_builder_budget:
|
||||
- apt-get install -y p7zip-full
|
||||
- apt install -y expect-dev
|
||||
- su - flectra -c "mkdir ~/others"
|
||||
- su - flectra -c "git clone --branch 20-fixed --depth 1 https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/flectra-community/reporting-engine.git ~/others/reporting-engine"
|
||||
- su - flectra -c "git clone --branch 20-fixed --depth 1 https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/flectra-community/server-ux.git ~/others/server-ux"
|
||||
- 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
|
||||
@ -77,7 +73,7 @@ test_module_mis_builder_budget:
|
||||
- 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},~/others/reporting-engine,~/others/server-ux
|
||||
--addons-path ${CI_PROJECT_DIR}
|
||||
--db_host psql
|
||||
--db_port 5432
|
||||
--db_user flectra
|
||||
@ -98,8 +94,6 @@ test_module_mis_builder_demo:
|
||||
- apt-get install -y p7zip-full
|
||||
- apt install -y expect-dev
|
||||
- su - flectra -c "mkdir ~/others"
|
||||
- su - flectra -c "git clone --branch 20-fixed --depth 1 https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/flectra-community/reporting-engine.git ~/others/reporting-engine"
|
||||
- su - flectra -c "git clone --branch 20-fixed --depth 1 https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/flectra-community/server-ux.git ~/others/server-ux"
|
||||
- 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
|
||||
@ -111,7 +105,7 @@ test_module_mis_builder_demo:
|
||||
- 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},~/others/reporting-engine,~/others/server-ux
|
||||
--addons-path ${CI_PROJECT_DIR}
|
||||
--db_host psql
|
||||
--db_port 5432
|
||||
--db_user flectra
|
||||
@ -132,8 +126,6 @@ test_module_mis_builder:
|
||||
- apt-get install -y p7zip-full
|
||||
- apt install -y expect-dev
|
||||
- su - flectra -c "mkdir ~/others"
|
||||
- su - flectra -c "git clone --branch 20-fixed --depth 1 https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/flectra-community/reporting-engine.git ~/others/reporting-engine"
|
||||
- su - flectra -c "git clone --branch 20-fixed --depth 1 https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/flectra-community/server-ux.git ~/others/server-ux"
|
||||
- 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
|
||||
@ -145,7 +137,7 @@ test_module_mis_builder:
|
||||
- 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},~/others/reporting-engine,~/others/server-ux
|
||||
--addons-path ${CI_PROJECT_DIR}
|
||||
--db_host psql
|
||||
--db_port 5432
|
||||
--db_user flectra
|
||||
|
@ -9,8 +9,8 @@ Available addons
|
||||
|
||||
addon | version | summary
|
||||
--- | --- | ---
|
||||
[mis_builder_budget](mis_builder_budget/) | 2.0.3.5.0| Create budgets for MIS reports
|
||||
[mis_builder_demo](mis_builder_demo/) | 2.0.3.1.2| Demo addon for MIS Builder
|
||||
[mis_builder](mis_builder/) | 2.0.3.6.3| Build 'Management Information System' Reports and Dashboards
|
||||
[mis_builder_budget](mis_builder_budget/) | 2.0.3.5.1| Create budgets for MIS reports
|
||||
[mis_builder_demo](mis_builder_demo/) | 2.0.3.1.3| Demo addon for MIS Builder
|
||||
[mis_builder](mis_builder/) | 2.0.3.6.6| Build 'Management Information System' Reports and Dashboards
|
||||
|
||||
|
||||
|
@ -14,13 +14,13 @@ MIS Builder
|
||||
: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/13.0/mis_builder
|
||||
:target: https://github.com/OCA/mis-builder/tree/14.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-13-0/mis-builder-13-0-mis_builder
|
||||
:target: https://translation.odoo-community.org/projects/mis-builder-14-0/mis-builder-14-0-mis_builder
|
||||
:alt: Translate me on Weblate
|
||||
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
|
||||
:target: https://runbot.odoo-community.org/runbot/248/13.0
|
||||
:target: https://runbot.odoo-community.org/runbot/248/14.0
|
||||
:alt: Try me on Runbot
|
||||
|
||||
|badge1| |badge2| |badge3| |badge4| |badge5|
|
||||
@ -97,6 +97,36 @@ be found on GitHub.
|
||||
Changelog
|
||||
=========
|
||||
|
||||
14.0.3.6.6 (2021-04-23)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
**Bugfixes**
|
||||
|
||||
- Fix drilldown action name when the account model has been customized. (`#350 <https://github.com/OCA/mis-builder/issues/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 <https://github.com/OCA/mis-builder/issues/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 <https://github.com/OCA/mis-builder/issues/304>`_)
|
||||
- Add analytic group filters on report instance, periods and in the interactive
|
||||
view. (`#320 <https://github.com/OCA/mis-builder/issues/320>`_)
|
||||
|
||||
|
||||
13.0.3.6.3 (2020-08-28)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -162,7 +192,7 @@ Migration to odoo 13.0.
|
||||
``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
|
||||
as a ``code`` field. (`#149 <https://github.com/oca/mis-builder/issues/149>`_)
|
||||
has a ``code`` field. (`#149 <https://github.com/oca/mis-builder/issues/149>`_)
|
||||
- Add ``source_aml_model_name`` field so extension modules providing
|
||||
alternative data sources can more easily customize their data source. (`#214 <https://github.com/oca/mis-builder/issues/214>`_)
|
||||
- Support analytic tag filters in the backend view and preview widget.
|
||||
@ -494,7 +524,7 @@ Bug Tracker
|
||||
Bugs are tracked on `GitHub Issues <https://github.com/OCA/mis-builder/issues>`_.
|
||||
In case of trouble, please check there if your issue has already been reported.
|
||||
If you spotted it first, help us smashing it by providing a detailed and welcomed
|
||||
`feedback <https://github.com/OCA/mis-builder/issues/new?body=module:%20mis_builder%0Aversion:%2013.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
||||
`feedback <https://github.com/OCA/mis-builder/issues/new?body=module:%20mis_builder%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
||||
|
||||
Do not contact contributors directly about support or help with technical issues.
|
||||
|
||||
@ -554,6 +584,6 @@ Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|
||||
|
||||
|maintainer-sbidoul|
|
||||
|
||||
This module is part of the `OCA/mis-builder <https://github.com/OCA/mis-builder/tree/13.0/mis_builder>`_ project on GitHub.
|
||||
This module is part of the `OCA/mis-builder <https://github.com/OCA/mis-builder/tree/14.0/mis_builder>`_ project on GitHub.
|
||||
|
||||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
@ -3,7 +3,7 @@
|
||||
|
||||
{
|
||||
"name": "MIS Builder",
|
||||
"version": "2.0.3.6.3",
|
||||
"version": "2.0.3.6.6",
|
||||
"category": "Reporting",
|
||||
"summary": """
|
||||
Build 'Management Information System' Reports and Dashboards
|
||||
@ -28,7 +28,7 @@
|
||||
"report/mis_report_instance_xlsx.xml",
|
||||
],
|
||||
"qweb": ["static/src/xml/mis_report_widget.xml"],
|
||||
"installable": False,
|
||||
"installable": True,
|
||||
"application": True,
|
||||
"license": "AGPL-3",
|
||||
"development_status": "Production/Stable",
|
||||
|
@ -4,7 +4,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 13.0\n"
|
||||
"Project-Id-Version: Odoo Server 14.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@ -23,99 +23,131 @@ msgstr ""
|
||||
#. module: mis_builder
|
||||
#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form
|
||||
msgid ""
|
||||
"<b>AccountingNone</b>: a null value that behaves as 0 in arithmetic "
|
||||
"operations."
|
||||
"<b>\n"
|
||||
" balp[('user_type_id', '=',\n"
|
||||
" ref('account.\n"
|
||||
" data_account_type_receivable').id)][]\n"
|
||||
" </b>\n"
|
||||
" : variation of the balance of all receivable\n"
|
||||
" accounts over the period."
|
||||
msgstr ""
|
||||
|
||||
#. module: mis_builder
|
||||
#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form
|
||||
msgid ""
|
||||
"<b>bal, crd, deb, pbal, nbal</b>: balance, debit, credit, positive balance, "
|
||||
"negative balance."
|
||||
"<b>\n"
|
||||
" balp[][('tax_line_id.tag_ids', '=',\n"
|
||||
" ref('l10n_be.tax_tag_56').id)]\n"
|
||||
" </b>\n"
|
||||
" : balance of move lines related to tax grid\n"
|
||||
" 56."
|
||||
msgstr ""
|
||||
|
||||
#. module: mis_builder
|
||||
#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form
|
||||
msgid ""
|
||||
"<b>bal[70]</b>: variation of the balance of account 70 over 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 "<b>bale[1%]</b>: balance of accounts starting with 1 at end of period."
|
||||
msgstr ""
|
||||
|
||||
#. module: mis_builder
|
||||
#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form
|
||||
msgid "<b>bali[70,60]</b>: initial balance of accounts 70 and 60."
|
||||
"<b>\n"
|
||||
" debp[55%][('journal_id.code', '=',\n"
|
||||
" 'BNK1')]\n"
|
||||
" </b>\n"
|
||||
" : sum of all debits on accounts 55 and\n"
|
||||
" journal BNK1 during the period."
|
||||
msgstr ""
|
||||
|
||||
#. module: mis_builder
|
||||
#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form
|
||||
msgid ""
|
||||
"<b>balp[('user_type_id', '=', "
|
||||
"ref('account.data_account_type_receivable').id)][]</b>: variation of the "
|
||||
"balance of all receivable accounts over the period."
|
||||
"<b>AccountingNone</b>\n"
|
||||
" : 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 ""
|
||||
"<b>balp[][('tax_line_id.tag_ids', '=', ref('l10n_be.tax_tag_56').id)]</b>: "
|
||||
"balance of move lines related to tax grid 56."
|
||||
"<b>bal, crd, deb, pbal, nbal</b>\n"
|
||||
" : balance, debit, credit, positive balance,\n"
|
||||
" negative balance."
|
||||
msgstr ""
|
||||
|
||||
#. module: mis_builder
|
||||
#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form
|
||||
msgid ""
|
||||
"<b>balu[]</b>: (u for unallocated) is a special expression that shows the unallocated profit/loss of previous\n"
|
||||
"<b>bal[70]</b>\n"
|
||||
" : variation of the balance of account 70\n"
|
||||
" over 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 ""
|
||||
"<b>bale[1%]</b>\n"
|
||||
" : balance of accounts starting with 1 at end\n"
|
||||
" of period."
|
||||
msgstr ""
|
||||
|
||||
#. module: mis_builder
|
||||
#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form
|
||||
msgid ""
|
||||
"<b>bali[70,60]</b>\n"
|
||||
" : 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 ""
|
||||
"<b>balu[]</b>\n"
|
||||
" : (u for unallocated) is a special\n"
|
||||
" expression that shows the unallocated\n"
|
||||
" profit/loss of previous\n"
|
||||
" fiscal years."
|
||||
msgstr ""
|
||||
|
||||
#. module: mis_builder
|
||||
#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form
|
||||
msgid ""
|
||||
"<b>crdp[40%]</b>: sum of all credits on accounts starting with 40 during the"
|
||||
" period."
|
||||
msgstr ""
|
||||
|
||||
#. module: mis_builder
|
||||
#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form
|
||||
msgid "<b>date_from, date_to</b>: beginning and end date of the period."
|
||||
msgstr ""
|
||||
|
||||
#. module: mis_builder
|
||||
#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form
|
||||
msgid "<b>datetime, datetime, dateutil</b>: the python modules."
|
||||
"<b>crdp[40%]</b>\n"
|
||||
" : 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 ""
|
||||
"<b>debp[55%][('journal_id.code', '=', 'BNK1')]</b>: sum of all debits on "
|
||||
"accounts 55 and journal BNK1 during the period."
|
||||
"<b>date_from, date_to</b>\n"
|
||||
" : beginning and end date of the period."
|
||||
msgstr ""
|
||||
|
||||
#. module: mis_builder
|
||||
#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form
|
||||
msgid ""
|
||||
"<b>p, i, e</b>: respectively variation over the period, initial balance, "
|
||||
"ending balance"
|
||||
"<b>datetime, datetime, dateutil</b>\n"
|
||||
" : the python modules."
|
||||
msgstr ""
|
||||
|
||||
#. module: mis_builder
|
||||
#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form
|
||||
msgid ""
|
||||
"<b>pbale[55%]</b>: sum of all ending balances of accounts starting with 55 whose\n"
|
||||
"<b>p, i, e</b>\n"
|
||||
" : 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 ""
|
||||
"<b>pbale[55%]</b>\n"
|
||||
" : sum of all ending balances of accounts\n"
|
||||
" starting with 55 whose\n"
|
||||
" ending balance is positive."
|
||||
msgstr ""
|
||||
|
||||
#. module: mis_builder
|
||||
#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form
|
||||
msgid ""
|
||||
"<b>sum, min, max, len, avg</b>: behave as expected, very similar to the "
|
||||
"python builtins."
|
||||
"<b>sum, min, max, len, avg</b>\n"
|
||||
" : behave as expected, very similar to the\n"
|
||||
" python builtins."
|
||||
msgstr ""
|
||||
|
||||
#. module: mis_builder
|
||||
@ -191,7 +223,8 @@ msgstr ""
|
||||
#. module: mis_builder
|
||||
#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form
|
||||
msgid ""
|
||||
"Additionally following variables are available in the evaluation context:"
|
||||
"Additionally following variables are available\n"
|
||||
" in the evaluation context:"
|
||||
msgstr ""
|
||||
|
||||
#. module: mis_builder
|
||||
@ -239,6 +272,21 @@ msgstr ""
|
||||
msgid "Analytic Account Filter"
|
||||
msgstr ""
|
||||
|
||||
#. module: mis_builder
|
||||
#. openerp-web
|
||||
#: code:addons/mis_builder/static/src/js/mis_report_widget.js:0
|
||||
#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance__analytic_group_id
|
||||
#: model:ir.model.fields,field_description:mis_builder.field_mis_report_instance_period__analytic_group_id
|
||||
#, python-format
|
||||
msgid "Analytic Account Group"
|
||||
msgstr ""
|
||||
|
||||
#. module: mis_builder
|
||||
#: code:addons/mis_builder/models/mis_report_instance.py:0
|
||||
#, python-format
|
||||
msgid "Analytic Account Group: %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: mis_builder
|
||||
#: code:addons/mis_builder/models/mis_report_instance.py:0
|
||||
#, python-format
|
||||
@ -525,6 +573,7 @@ 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_ir_actions_report__display_name
|
||||
#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__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
|
||||
@ -618,8 +667,9 @@ 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 query results by name (eg "
|
||||
"kpi1 + kpi2, kpi2.subkpi1, query1.field1)."
|
||||
"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
|
||||
@ -656,6 +706,14 @@ msgid ""
|
||||
"modified in the preview."
|
||||
msgstr ""
|
||||
|
||||
#. module: mis_builder
|
||||
#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__analytic_group_id
|
||||
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 ""
|
||||
|
||||
#. module: mis_builder
|
||||
#: model:ir.model.fields,help:mis_builder.field_mis_report_instance_period__analytic_account_id
|
||||
msgid ""
|
||||
@ -765,6 +823,7 @@ 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_ir_actions_report__id
|
||||
#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data__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
|
||||
@ -878,6 +937,7 @@ 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_ir_actions_report____last_update
|
||||
#: model:ir.model.fields,field_description:mis_builder.field_mis_kpi_data____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
|
||||
@ -1518,21 +1578,30 @@ msgstr ""
|
||||
#. module: mis_builder
|
||||
#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form
|
||||
msgid ""
|
||||
"The <b>account selector</b> is a like expression on the account code (eg "
|
||||
"70%, etc)."
|
||||
"The\n"
|
||||
" <b>account selector</b>\n"
|
||||
" is a like expression on the account code (eg\n"
|
||||
" 70%, etc)."
|
||||
msgstr ""
|
||||
|
||||
#. module: mis_builder
|
||||
#: model_terms:ir.ui.view,arch_db:mis_builder.mis_report_view_kpi_form
|
||||
msgid ""
|
||||
"The <b>journal items domain</b> is an Odoo domain filter on journal items."
|
||||
"The\n"
|
||||
" <b>journal items domain</b>\n"
|
||||
" is an Odoo domain filter on 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 to compute accounting data:\n"
|
||||
" <code>{bal|crd|deb|pbal|nbal}{pieu}[account selector][journal items domain]</code>."
|
||||
"The following special elements are recognized in\n"
|
||||
" the expressions to compute accounting data:\n"
|
||||
" <code>\n"
|
||||
" {bal|crd|deb|pbal|nbal}{pieu}[account\n"
|
||||
" selector][journal items domain]\n"
|
||||
" </code>\n"
|
||||
" ."
|
||||
msgstr ""
|
||||
|
||||
#. module: mis_builder
|
||||
|
@ -1,18 +1,14 @@
|
||||
# Copyright 2014 ACSONE SA/NV (<http://acsone.eu>)
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
import datetime
|
||||
import re
|
||||
import time
|
||||
from collections import defaultdict
|
||||
|
||||
import dateutil
|
||||
|
||||
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 safe_eval
|
||||
from flectra.tools.safe_eval import datetime, dateutil, safe_eval, time
|
||||
|
||||
from .accounting_none import AccountingNone
|
||||
|
||||
|
@ -370,7 +370,7 @@ class MisReportQuery(models.Model):
|
||||
|
||||
name = fields.Char(size=32, required=True, string="Name")
|
||||
model_id = fields.Many2one(
|
||||
"ir.model", required=True, string="Model", ondelete="restrict"
|
||||
"ir.model", required=True, string="Model", ondelete="cascade"
|
||||
)
|
||||
field_ids = fields.Many2many(
|
||||
"ir.model.fields", required=True, string="Fields to fetch"
|
||||
@ -391,7 +391,7 @@ class MisReportQuery(models.Model):
|
||||
comodel_name="ir.model.fields",
|
||||
required=True,
|
||||
domain=[("ttype", "in", ("date", "datetime"))],
|
||||
ondelete="restrict",
|
||||
ondelete="cascade",
|
||||
)
|
||||
domain = fields.Char(string="Domain")
|
||||
report_id = fields.Many2one(
|
||||
@ -461,6 +461,7 @@ class MisReport(models.Model):
|
||||
],
|
||||
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.",
|
||||
|
@ -284,6 +284,15 @@ class MisReportInstancePeriod(models.Model):
|
||||
"and cannot be modified in the preview."
|
||||
),
|
||||
)
|
||||
analytic_group_id = fields.Many2one(
|
||||
comodel_name="account.analytic.group",
|
||||
string="Analytic Account Group",
|
||||
help=(
|
||||
"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."
|
||||
),
|
||||
)
|
||||
analytic_tag_ids = fields.Many2many(
|
||||
comodel_name="account.analytic.tag",
|
||||
string="Analytic Tags",
|
||||
@ -369,11 +378,8 @@ class MisReportInstancePeriod(models.Model):
|
||||
if operator == "all":
|
||||
if not isinstance(value, list):
|
||||
value = [value]
|
||||
many_ids = self.report_instance_id.resolve_2many_commands(
|
||||
filter_name, value, ["id"]
|
||||
)
|
||||
for m in many_ids:
|
||||
filters.append((filter_name, "in", [m["id"]]))
|
||||
for m in value:
|
||||
filters.append((filter_name, "in", [m]))
|
||||
else:
|
||||
filters.append((filter_name, operator, value))
|
||||
return filters
|
||||
@ -403,6 +409,10 @@ class MisReportInstancePeriod(models.Model):
|
||||
domain.extend([("move_id.state", "=", "posted")])
|
||||
if self.analytic_account_id:
|
||||
domain.append(("analytic_account_id", "=", self.analytic_account_id.id))
|
||||
if self.analytic_group_id:
|
||||
domain.append(
|
||||
("analytic_account_id.group_id", "=", self.analytic_group_id.id)
|
||||
)
|
||||
for tag in self.analytic_tag_ids:
|
||||
domain.append(("analytic_tag_ids", "=", tag.id))
|
||||
return domain
|
||||
@ -459,6 +469,17 @@ class MisReportInstancePeriod(models.Model):
|
||||
% 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
|
||||
@ -539,6 +560,10 @@ class MisReportInstance(models.Model):
|
||||
analytic_account_id = fields.Many2one(
|
||||
comodel_name="account.analytic.account", string="Analytic Account"
|
||||
)
|
||||
analytic_group_id = fields.Many2one(
|
||||
comodel_name="account.analytic.group",
|
||||
string="Analytic Account Group",
|
||||
)
|
||||
analytic_tag_ids = fields.Many2many(
|
||||
comodel_name="account.analytic.tag", string="Analytic Tags"
|
||||
)
|
||||
@ -573,8 +598,17 @@ class MisReportInstance(models.Model):
|
||||
filter_descriptions.append(
|
||||
_("Analytic Account: %s") % analytic_account.display_name
|
||||
)
|
||||
analytic_group_id = filters.get("analytic_account_id.group_id", {}).get("value")
|
||||
if analytic_group_id:
|
||||
analytic_group = self.env["account.analytic.group"].browse(
|
||||
analytic_group_id
|
||||
)
|
||||
filter_descriptions.append(
|
||||
_("Analytic Account Group: %s") % analytic_group.display_name
|
||||
)
|
||||
analytic_tag_value = filters.get("analytic_tag_ids", {}).get("value")
|
||||
if analytic_tag_value:
|
||||
# TODO 14 we need a test to cover this
|
||||
analytic_tag_names = self.resolve_2many_commands(
|
||||
"analytic_tag_ids", analytic_tag_value, ["name"]
|
||||
)
|
||||
@ -659,6 +693,11 @@ class MisReportInstance(models.Model):
|
||||
"value": self.analytic_account_id.id,
|
||||
"operator": "=",
|
||||
}
|
||||
if self.analytic_group_id:
|
||||
context["mis_report_filters"]["analytic_account_id.group_id"] = {
|
||||
"value": self.analytic_group_id.id,
|
||||
"operator": "=",
|
||||
}
|
||||
if self.analytic_tag_ids:
|
||||
context["mis_report_filters"]["analytic_tag_ids"] = {
|
||||
"value": self.analytic_tag_ids.ids,
|
||||
@ -847,7 +886,7 @@ class MisReportInstance(models.Model):
|
||||
account_id = arg.get("account_id")
|
||||
|
||||
if account_id:
|
||||
account = self.env["account.account"].browse(account_id)
|
||||
account = self.env[self.report_id.account_model].browse(account_id)
|
||||
return "{kpi} - {account} - {period}".format(
|
||||
kpi=kpi.description,
|
||||
account=account.display_name,
|
||||
|
@ -11,7 +11,7 @@ _logger = logging.getLogger(__name__)
|
||||
class Report(models.Model):
|
||||
_inherit = "ir.actions.report"
|
||||
|
||||
def render_qweb_pdf(self, res_ids=None, data=None):
|
||||
def _render_qweb_pdf(self, res_ids=None, data=None):
|
||||
if self.report_name == "mis_builder.report_mis_report_instance":
|
||||
if not res_ids:
|
||||
res_ids = self.env.context.get("active_ids")
|
||||
@ -22,7 +22,7 @@ class Report(models.Model):
|
||||
)
|
||||
# data=None, because it was there only to force Flectra
|
||||
# to propagate context
|
||||
return super(Report, self.with_context(context)).render_qweb_pdf(
|
||||
return super(Report, self.with_context(context))._render_qweb_pdf(
|
||||
res_ids, data=None
|
||||
)
|
||||
return super(Report, self).render_qweb_pdf(res_ids, data)
|
||||
return super(Report, self)._render_qweb_pdf(res_ids, data)
|
||||
|
@ -19,3 +19,4 @@ manage_mis_report_subreport,access_mis_report_subreport,model_mis_report_subrepo
|
||||
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
|
||||
|
|
@ -367,7 +367,7 @@ ul.auto-toc {
|
||||
!! This file is generated by oca-gen-addon-readme !!
|
||||
!! changes will be overwritten. !!
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/mis-builder/tree/13.0/mis_builder"><img alt="OCA/mis-builder" src="https://img.shields.io/badge/github-OCA%2Fmis--builder-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/mis-builder-13-0/mis-builder-13-0-mis_builder"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/248/13.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
|
||||
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/mis-builder/tree/14.0/mis_builder"><img alt="OCA/mis-builder" src="https://img.shields.io/badge/github-OCA%2Fmis--builder-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/mis-builder-14-0/mis-builder-14-0-mis_builder"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/248/14.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
|
||||
<p>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
|
||||
@ -376,46 +376,49 @@ can be added to Odoo dashboards.</p>
|
||||
<p><strong>Table of contents</strong></p>
|
||||
<div class="contents local topic" id="contents">
|
||||
<ul class="simple">
|
||||
<li><a class="reference internal" href="#installation" id="id68">Installation</a></li>
|
||||
<li><a class="reference internal" href="#usage" id="id69">Usage</a></li>
|
||||
<li><a class="reference internal" href="#development" id="id70">Development</a></li>
|
||||
<li><a class="reference internal" href="#known-issues-roadmap" id="id71">Known issues / Roadmap</a></li>
|
||||
<li><a class="reference internal" href="#changelog" id="id72">Changelog</a><ul>
|
||||
<li><a class="reference internal" href="#id1" id="id73">13.0.3.6.3 (2020-08-28)</a></li>
|
||||
<li><a class="reference internal" href="#id5" id="id74">13.0.3.6.2 (2020-04-22)</a></li>
|
||||
<li><a class="reference internal" href="#id7" id="id75">13.0.3.6.1 (2020-04-22)</a></li>
|
||||
<li><a class="reference internal" href="#id9" id="id76">13.0.3.6.0 (2020-03-28)</a></li>
|
||||
<li><a class="reference internal" href="#id12" id="id77">13.0.3.5.0 (2020-01-??)</a></li>
|
||||
<li><a class="reference internal" href="#id13" id="id78">12.0.3.5.0 (2019-10-26)</a></li>
|
||||
<li><a class="reference internal" href="#id21" id="id79">12.0.3.4.0 (2019-07-09)</a></li>
|
||||
<li><a class="reference internal" href="#id28" id="id80">12.0.3.3.0 (2019-01-26)</a></li>
|
||||
<li><a class="reference internal" href="#id38" id="id81">11.0.3.2.2 (2018-06-30)</a></li>
|
||||
<li><a class="reference internal" href="#id41" id="id82">11.0.3.2.1 (2018-05-29)</a></li>
|
||||
<li><a class="reference internal" href="#id43" id="id83">10.0.3.2.0 (2018-05-02)</a></li>
|
||||
<li><a class="reference internal" href="#id47" id="id84">11.0.3.1.2 (2018-02-04)</a></li>
|
||||
<li><a class="reference internal" href="#id49" id="id85">10.0.3.1.1 (2017-11-14)</a></li>
|
||||
<li><a class="reference internal" href="#id58" id="id86">10.0.3.0.4 (2017-10-14)</a></li>
|
||||
<li><a class="reference internal" href="#id60" id="id87">10.0.3.0.3 (2017-10-03)</a></li>
|
||||
<li><a class="reference internal" href="#id62" id="id88">10.0.3.0.2 (2017-10-01)</a></li>
|
||||
<li><a class="reference internal" href="#unreleased" id="id89">10.0.2.0.3 (unreleased)</a></li>
|
||||
<li><a class="reference internal" href="#id63" id="id90">9.0.2.0.2 (2016-09-27)</a></li>
|
||||
<li><a class="reference internal" href="#id64" id="id91">9.0.2.0.1 (2016-05-26)</a></li>
|
||||
<li><a class="reference internal" href="#id65" id="id92">9.0.2.0.0 (2016-05-24)</a></li>
|
||||
<li><a class="reference internal" href="#id66" id="id93">8.0.1.0.0 (2016-04-27)</a></li>
|
||||
<li><a class="reference internal" href="#id67" id="id94">8.0.0.2.0</a></li>
|
||||
<li><a class="reference internal" href="#installation" id="id75">Installation</a></li>
|
||||
<li><a class="reference internal" href="#usage" id="id76">Usage</a></li>
|
||||
<li><a class="reference internal" href="#development" id="id77">Development</a></li>
|
||||
<li><a class="reference internal" href="#known-issues-roadmap" id="id78">Known issues / Roadmap</a></li>
|
||||
<li><a class="reference internal" href="#changelog" id="id79">Changelog</a><ul>
|
||||
<li><a class="reference internal" href="#id1" id="id80">14.0.3.6.6 (2021-04-23)</a></li>
|
||||
<li><a class="reference internal" href="#id3" id="id81">14.0.3.6.5 (2021-04-23)</a></li>
|
||||
<li><a class="reference internal" href="#id5" id="id82">14.0.3.6.4 (2021-04-06)</a></li>
|
||||
<li><a class="reference internal" href="#id8" id="id83">13.0.3.6.3 (2020-08-28)</a></li>
|
||||
<li><a class="reference internal" href="#id12" id="id84">13.0.3.6.2 (2020-04-22)</a></li>
|
||||
<li><a class="reference internal" href="#id14" id="id85">13.0.3.6.1 (2020-04-22)</a></li>
|
||||
<li><a class="reference internal" href="#id16" id="id86">13.0.3.6.0 (2020-03-28)</a></li>
|
||||
<li><a class="reference internal" href="#id19" id="id87">13.0.3.5.0 (2020-01-??)</a></li>
|
||||
<li><a class="reference internal" href="#id20" id="id88">12.0.3.5.0 (2019-10-26)</a></li>
|
||||
<li><a class="reference internal" href="#id28" id="id89">12.0.3.4.0 (2019-07-09)</a></li>
|
||||
<li><a class="reference internal" href="#id35" id="id90">12.0.3.3.0 (2019-01-26)</a></li>
|
||||
<li><a class="reference internal" href="#id45" id="id91">11.0.3.2.2 (2018-06-30)</a></li>
|
||||
<li><a class="reference internal" href="#id48" id="id92">11.0.3.2.1 (2018-05-29)</a></li>
|
||||
<li><a class="reference internal" href="#id50" id="id93">10.0.3.2.0 (2018-05-02)</a></li>
|
||||
<li><a class="reference internal" href="#id54" id="id94">11.0.3.1.2 (2018-02-04)</a></li>
|
||||
<li><a class="reference internal" href="#id56" id="id95">10.0.3.1.1 (2017-11-14)</a></li>
|
||||
<li><a class="reference internal" href="#id65" id="id96">10.0.3.0.4 (2017-10-14)</a></li>
|
||||
<li><a class="reference internal" href="#id67" id="id97">10.0.3.0.3 (2017-10-03)</a></li>
|
||||
<li><a class="reference internal" href="#id69" id="id98">10.0.3.0.2 (2017-10-01)</a></li>
|
||||
<li><a class="reference internal" href="#unreleased" id="id99">10.0.2.0.3 (unreleased)</a></li>
|
||||
<li><a class="reference internal" href="#id70" id="id100">9.0.2.0.2 (2016-09-27)</a></li>
|
||||
<li><a class="reference internal" href="#id71" id="id101">9.0.2.0.1 (2016-05-26)</a></li>
|
||||
<li><a class="reference internal" href="#id72" id="id102">9.0.2.0.0 (2016-05-24)</a></li>
|
||||
<li><a class="reference internal" href="#id73" id="id103">8.0.1.0.0 (2016-04-27)</a></li>
|
||||
<li><a class="reference internal" href="#id74" id="id104">8.0.0.2.0</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#bug-tracker" id="id95">Bug Tracker</a></li>
|
||||
<li><a class="reference internal" href="#credits" id="id96">Credits</a><ul>
|
||||
<li><a class="reference internal" href="#authors" id="id97">Authors</a></li>
|
||||
<li><a class="reference internal" href="#contributors" id="id98">Contributors</a></li>
|
||||
<li><a class="reference internal" href="#maintainers" id="id99">Maintainers</a></li>
|
||||
<li><a class="reference internal" href="#bug-tracker" id="id105">Bug Tracker</a></li>
|
||||
<li><a class="reference internal" href="#credits" id="id106">Credits</a><ul>
|
||||
<li><a class="reference internal" href="#authors" id="id107">Authors</a></li>
|
||||
<li><a class="reference internal" href="#contributors" id="id108">Contributors</a></li>
|
||||
<li><a class="reference internal" href="#maintainers" id="id109">Maintainers</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="installation">
|
||||
<h1><a class="toc-backref" href="#id68">Installation</a></h1>
|
||||
<h1><a class="toc-backref" href="#id75">Installation</a></h1>
|
||||
<p>Your preferred way to install addons will work with MIS Builder.</p>
|
||||
<p>An easy way to install it with all its dependencies is using pip:</p>
|
||||
<ul class="simple">
|
||||
@ -425,7 +428,7 @@ the MIS Builder application.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="usage">
|
||||
<h1><a class="toc-backref" href="#id69">Usage</a></h1>
|
||||
<h1><a class="toc-backref" href="#id76">Usage</a></h1>
|
||||
<p>To configure this module, you need to:</p>
|
||||
<ul class="simple">
|
||||
<li>Go to Accounting > Configuration > MIS Reporting > MIS Report Templates where
|
||||
@ -451,7 +454,7 @@ and export it to PDF or Excel.</li>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="development">
|
||||
<h1><a class="toc-backref" href="#id70">Development</a></h1>
|
||||
<h1><a class="toc-backref" href="#id77">Development</a></h1>
|
||||
<p>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
|
||||
@ -460,15 +463,42 @@ or even on mis.report.instance.period if you want different columns to show diff
|
||||
analytic accounts.</p>
|
||||
</div>
|
||||
<div class="section" id="known-issues-roadmap">
|
||||
<h1><a class="toc-backref" href="#id71">Known issues / Roadmap</a></h1>
|
||||
<h1><a class="toc-backref" href="#id78">Known issues / Roadmap</a></h1>
|
||||
<p>The mis_builder <a class="reference external" href="https://github.com/OCA/mis-builder/issues?q=is%3Aopen+is%3Aissue+label%3Aenhancement">roadmap</a>
|
||||
and <a class="reference external" href="https://github.com/OCA/mis-builder/issues?q=is%3Aopen+is%3Aissue+label%3Abug">known issues</a> can
|
||||
be found on GitHub.</p>
|
||||
</div>
|
||||
<div class="section" id="changelog">
|
||||
<h1><a class="toc-backref" href="#id72">Changelog</a></h1>
|
||||
<h1><a class="toc-backref" href="#id79">Changelog</a></h1>
|
||||
<div class="section" id="id1">
|
||||
<h2><a class="toc-backref" href="#id73">13.0.3.6.3 (2020-08-28)</a></h2>
|
||||
<h2><a class="toc-backref" href="#id80">14.0.3.6.6 (2021-04-23)</a></h2>
|
||||
<p><strong>Bugfixes</strong></p>
|
||||
<ul class="simple">
|
||||
<li>Fix drilldown action name when the account model has been customized. (<a class="reference external" href="https://github.com/OCA/mis-builder/issues/350">#350</a>)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id3">
|
||||
<h2><a class="toc-backref" href="#id81">14.0.3.6.5 (2021-04-23)</a></h2>
|
||||
<p><strong>Bugfixes</strong></p>
|
||||
<ul class="simple">
|
||||
<li>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. (<a class="reference external" href="https://github.com/OCA/mis-builder/issues/343">#343</a>)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id5">
|
||||
<h2><a class="toc-backref" href="#id82">14.0.3.6.4 (2021-04-06)</a></h2>
|
||||
<p><strong>Features</strong></p>
|
||||
<ul class="simple">
|
||||
<li>The drilldown action name displayed on the breadcrumb has been revised.
|
||||
The kpi description and the account <tt class="docutils literal">display_name</tt> are shown instead
|
||||
of the kpi’s technical definition. (<a class="reference external" href="https://github.com/OCA/mis-builder/issues/304">#304</a>)</li>
|
||||
<li>Add analytic group filters on report instance, periods and in the interactive
|
||||
view. (<a class="reference external" href="https://github.com/OCA/mis-builder/issues/320">#320</a>)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id8">
|
||||
<h2><a class="toc-backref" href="#id83">13.0.3.6.3 (2020-08-28)</a></h2>
|
||||
<p><strong>Bugfixes</strong></p>
|
||||
<ul class="simple">
|
||||
<li>Having a “Compare columns” added on a KPI with an associated style using a
|
||||
@ -480,23 +510,23 @@ when exporting to XLSX. (<a class="reference external" href="https://github.com/
|
||||
<li><a class="reference external" href="https://github.com/OCA/mis-builder/issues/280">#280</a>, <a class="reference external" href="https://github.com/OCA/mis-builder/issues/296">#296</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id5">
|
||||
<h2><a class="toc-backref" href="#id74">13.0.3.6.2 (2020-04-22)</a></h2>
|
||||
<div class="section" id="id12">
|
||||
<h2><a class="toc-backref" href="#id84">13.0.3.6.2 (2020-04-22)</a></h2>
|
||||
<p><strong>Bugfixes</strong></p>
|
||||
<ul class="simple">
|
||||
<li>The “Settings” button is now displayed for users with the “Show full accounting features” right when previewing a report. (<a class="reference external" href="https://github.com/OCA/mis-builder/issues/281">#281</a>)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id7">
|
||||
<h2><a class="toc-backref" href="#id75">13.0.3.6.1 (2020-04-22)</a></h2>
|
||||
<div class="section" id="id14">
|
||||
<h2><a class="toc-backref" href="#id85">13.0.3.6.1 (2020-04-22)</a></h2>
|
||||
<p><strong>Bugfixes</strong></p>
|
||||
<ul class="simple">
|
||||
<li>Fix <tt class="docutils literal">TypeError: 'module' object is not iterable</tt> when using
|
||||
budgets by account. (<a class="reference external" href="https://github.com/OCA/mis-builder/issues/276">#276</a>)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id9">
|
||||
<h2><a class="toc-backref" href="#id76">13.0.3.6.0 (2020-03-28)</a></h2>
|
||||
<div class="section" id="id16">
|
||||
<h2><a class="toc-backref" href="#id86">13.0.3.6.0 (2020-03-28)</a></h2>
|
||||
<p><strong>Features</strong></p>
|
||||
<ul class="simple">
|
||||
<li>Add column-level filters on analytic account and analytic tags.
|
||||
@ -511,12 +541,12 @@ Sheet” to create new KPI’s for the ratios (e.g. balance_sheet.current_assets
|
||||
balance_sheet.total_assets). (<a class="reference external" href="https://github.com/OCA/mis-builder/issues/155">#155</a>)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id12">
|
||||
<h2><a class="toc-backref" href="#id77">13.0.3.5.0 (2020-01-??)</a></h2>
|
||||
<div class="section" id="id19">
|
||||
<h2><a class="toc-backref" href="#id87">13.0.3.5.0 (2020-01-??)</a></h2>
|
||||
<p>Migration to odoo 13.0.</p>
|
||||
</div>
|
||||
<div class="section" id="id13">
|
||||
<h2><a class="toc-backref" href="#id78">12.0.3.5.0 (2019-10-26)</a></h2>
|
||||
<div class="section" id="id20">
|
||||
<h2><a class="toc-backref" href="#id88">12.0.3.5.0 (2019-10-26)</a></h2>
|
||||
<p><strong>Features</strong></p>
|
||||
<ul class="simple">
|
||||
<li>The <tt class="docutils literal">account_id</tt> field of the model selected in ‘Move lines source’
|
||||
@ -525,7 +555,7 @@ relationship with any model that has a <tt class="docutils literal">code</tt> fi
|
||||
<tt class="docutils literal">account.account</tt> 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 <tt class="docutils literal">account_id</tt> field
|
||||
as a <tt class="docutils literal">code</tt> field. (<a class="reference external" href="https://github.com/oca/mis-builder/issues/149">#149</a>)</li>
|
||||
has a <tt class="docutils literal">code</tt> field. (<a class="reference external" href="https://github.com/oca/mis-builder/issues/149">#149</a>)</li>
|
||||
<li>Add <tt class="docutils literal">source_aml_model_name</tt> field so extension modules providing
|
||||
alternative data sources can more easily customize their data source. (<a class="reference external" href="https://github.com/oca/mis-builder/issues/214">#214</a>)</li>
|
||||
<li>Support analytic tag filters in the backend view and preview widget.
|
||||
@ -546,8 +576,8 @@ style. (<a class="reference external" href="https://github.com/oca/mis-builder/i
|
||||
<li>In Excel export, keep the percentage point suffix (pp) instead of replacing it with %. (<a class="reference external" href="https://github.com/oca/mis-builder/issues/220">#220</a>)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id21">
|
||||
<h2><a class="toc-backref" href="#id79">12.0.3.4.0 (2019-07-09)</a></h2>
|
||||
<div class="section" id="id28">
|
||||
<h2><a class="toc-backref" href="#id89">12.0.3.4.0 (2019-07-09)</a></h2>
|
||||
<p><strong>Features</strong></p>
|
||||
<ul class="simple">
|
||||
<li>New year-to-date mode for defining periods. (<a class="reference external" href="https://github.com/oca/mis-builder/issues/165">#165</a>)</li>
|
||||
@ -565,8 +595,8 @@ non-multi expressions yield tuples of incorrect lenght. (<a class="reference ext
|
||||
<li>Fix rendering of percentage types in Excel export. (<a class="reference external" href="https://github.com/oca/mis-builder/issues/192">#192</a>)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id28">
|
||||
<h2><a class="toc-backref" href="#id80">12.0.3.3.0 (2019-01-26)</a></h2>
|
||||
<div class="section" id="id35">
|
||||
<h2><a class="toc-backref" href="#id90">12.0.3.3.0 (2019-01-26)</a></h2>
|
||||
<p><strong>Features</strong></p>
|
||||
<p><em>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
|
||||
@ -606,8 +636,8 @@ is checked, as for all other syle elements. (<cite>#121 <https://github.com/O
|
||||
<p>If you use <tt class="docutils literal">Actuals (alternative)</tt> data source in combination with analytic
|
||||
filters, the underlying model must now have an <tt class="docutils literal">analytic_account_id</tt> field.</p>
|
||||
</div>
|
||||
<div class="section" id="id38">
|
||||
<h2><a class="toc-backref" href="#id81">11.0.3.2.2 (2018-06-30)</a></h2>
|
||||
<div class="section" id="id45">
|
||||
<h2><a class="toc-backref" href="#id91">11.0.3.2.2 (2018-06-30)</a></h2>
|
||||
<ul class="simple">
|
||||
<li>[FIX] Fix bug in company_default_get call returning
|
||||
id instead of recordset
|
||||
@ -618,16 +648,16 @@ need to be displayed).
|
||||
(<a class="reference external" href="https://github.com/OCA/mis-builder/issues/46">#46</a>)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id41">
|
||||
<h2><a class="toc-backref" href="#id82">11.0.3.2.1 (2018-05-29)</a></h2>
|
||||
<div class="section" id="id48">
|
||||
<h2><a class="toc-backref" href="#id92">11.0.3.2.1 (2018-05-29)</a></h2>
|
||||
<ul class="simple">
|
||||
<li>[FIX] Missing comparison operator for AccountingNone
|
||||
leading to errors in pbal computations
|
||||
(<a class="reference external" href="https://github.com/OCA/mis-builder/issue/93">#93</a>)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id43">
|
||||
<h2><a class="toc-backref" href="#id83">10.0.3.2.0 (2018-05-02)</a></h2>
|
||||
<div class="section" id="id50">
|
||||
<h2><a class="toc-backref" href="#id93">10.0.3.2.0 (2018-05-02)</a></h2>
|
||||
<ul class="simple">
|
||||
<li>[FIX] make subkpi ordering deterministic
|
||||
(<a class="reference external" href="https://github.com/OCA/mis-builder/issues/71">#71</a>)</li>
|
||||
@ -641,13 +671,13 @@ resp positive balances)
|
||||
(<a class="reference external" href="https://github.com/OCA/mis-builder/issues/86">#86</a>)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id47">
|
||||
<h2><a class="toc-backref" href="#id84">11.0.3.1.2 (2018-02-04)</a></h2>
|
||||
<div class="section" id="id54">
|
||||
<h2><a class="toc-backref" href="#id94">11.0.3.1.2 (2018-02-04)</a></h2>
|
||||
<p>Migration to Odoo 11. No new feature.
|
||||
(<a class="reference external" href="https://github.com/OCA/mis-builder/pull/67">#67</a>)</p>
|
||||
</div>
|
||||
<div class="section" id="id49">
|
||||
<h2><a class="toc-backref" href="#id85">10.0.3.1.1 (2017-11-14)</a></h2>
|
||||
<div class="section" id="id56">
|
||||
<h2><a class="toc-backref" href="#id95">10.0.3.1.1 (2017-11-14)</a></h2>
|
||||
<p>New features:</p>
|
||||
<ul class="simple">
|
||||
<li>[ADD] month and year relative periods, easier to use than
|
||||
@ -684,24 +714,24 @@ created (not yet saved) report instances.
|
||||
<li>Alternative move line data sources must have a company_id field.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id58">
|
||||
<h2><a class="toc-backref" href="#id86">10.0.3.0.4 (2017-10-14)</a></h2>
|
||||
<div class="section" id="id65">
|
||||
<h2><a class="toc-backref" href="#id96">10.0.3.0.4 (2017-10-14)</a></h2>
|
||||
<p>Bug fix:</p>
|
||||
<ul class="simple">
|
||||
<li>[FIX] issue with initial balance rounding.
|
||||
<a class="reference external" href="https://github.com/OCA/mis-builder/issues/30">#30</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id60">
|
||||
<h2><a class="toc-backref" href="#id87">10.0.3.0.3 (2017-10-03)</a></h2>
|
||||
<div class="section" id="id67">
|
||||
<h2><a class="toc-backref" href="#id97">10.0.3.0.3 (2017-10-03)</a></h2>
|
||||
<p>Bug fix:</p>
|
||||
<ul class="simple">
|
||||
<li>[FIX] fix error saving KPI on newly created reports.
|
||||
<a class="reference external" href="https://github.com/OCA/mis-builder/issues/18">#18</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id62">
|
||||
<h2><a class="toc-backref" href="#id88">10.0.3.0.2 (2017-10-01)</a></h2>
|
||||
<div class="section" id="id69">
|
||||
<h2><a class="toc-backref" href="#id98">10.0.3.0.2 (2017-10-01)</a></h2>
|
||||
<p>New features:</p>
|
||||
<ul class="simple">
|
||||
<li>[ADD] Alternative move line source per report column.
|
||||
@ -745,7 +775,7 @@ expressions were used in a KPI</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="unreleased">
|
||||
<h2><a class="toc-backref" href="#id89">10.0.2.0.3 (unreleased)</a></h2>
|
||||
<h2><a class="toc-backref" href="#id99">10.0.2.0.3 (unreleased)</a></h2>
|
||||
<ul class="simple">
|
||||
<li>[IMP] more robust behaviour in presence of missing expressions</li>
|
||||
<li>[FIX] indent style</li>
|
||||
@ -757,23 +787,23 @@ reports with no objects</li>
|
||||
<li>[IMP] provide full access to mis builder style for group Adviser.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id63">
|
||||
<h2><a class="toc-backref" href="#id90">9.0.2.0.2 (2016-09-27)</a></h2>
|
||||
<div class="section" id="id70">
|
||||
<h2><a class="toc-backref" href="#id100">9.0.2.0.2 (2016-09-27)</a></h2>
|
||||
<ul class="simple">
|
||||
<li>[IMP] Add refresh button in mis report preview.</li>
|
||||
<li>[IMP] Widget code changes to allow to add fields in the widget more easily.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id64">
|
||||
<h2><a class="toc-backref" href="#id91">9.0.2.0.1 (2016-05-26)</a></h2>
|
||||
<div class="section" id="id71">
|
||||
<h2><a class="toc-backref" href="#id101">9.0.2.0.1 (2016-05-26)</a></h2>
|
||||
<ul class="simple">
|
||||
<li>[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.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id65">
|
||||
<h2><a class="toc-backref" href="#id92">9.0.2.0.0 (2016-05-24)</a></h2>
|
||||
<div class="section" id="id72">
|
||||
<h2><a class="toc-backref" href="#id102">9.0.2.0.0 (2016-05-24)</a></h2>
|
||||
<p>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.</p>
|
||||
@ -820,8 +850,8 @@ flexible alternative to fiscal periods</li>
|
||||
consolidation accounts have been removed</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id66">
|
||||
<h2><a class="toc-backref" href="#id93">8.0.1.0.0 (2016-04-27)</a></h2>
|
||||
<div class="section" id="id73">
|
||||
<h2><a class="toc-backref" href="#id103">8.0.1.0.0 (2016-04-27)</a></h2>
|
||||
<ul class="simple">
|
||||
<li>The copy of a MIS Report Instance now copies period.
|
||||
<a class="reference external" href="https://github.com/OCA/account-financial-reporting/pull/181">https://github.com/OCA/account-financial-reporting/pull/181</a></li>
|
||||
@ -845,29 +875,29 @@ the widget to open the door to analytic filtering in the previews.
|
||||
<a class="reference external" href="https://github.com/OCA/account-financial-reporting/pull/131">https://github.com/OCA/account-financial-reporting/pull/131</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id67">
|
||||
<h2><a class="toc-backref" href="#id94">8.0.0.2.0</a></h2>
|
||||
<div class="section" id="id74">
|
||||
<h2><a class="toc-backref" href="#id104">8.0.0.2.0</a></h2>
|
||||
<p>Pre-history. Or rather, you need to look at the git log.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="bug-tracker">
|
||||
<h1><a class="toc-backref" href="#id95">Bug Tracker</a></h1>
|
||||
<h1><a class="toc-backref" href="#id105">Bug Tracker</a></h1>
|
||||
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/mis-builder/issues">GitHub Issues</a>.
|
||||
In case of trouble, please check there if your issue has already been reported.
|
||||
If you spotted it first, help us smashing it by providing a detailed and welcomed
|
||||
<a class="reference external" href="https://github.com/OCA/mis-builder/issues/new?body=module:%20mis_builder%0Aversion:%2013.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
|
||||
<a class="reference external" href="https://github.com/OCA/mis-builder/issues/new?body=module:%20mis_builder%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
|
||||
<p>Do not contact contributors directly about support or help with technical issues.</p>
|
||||
</div>
|
||||
<div class="section" id="credits">
|
||||
<h1><a class="toc-backref" href="#id96">Credits</a></h1>
|
||||
<h1><a class="toc-backref" href="#id106">Credits</a></h1>
|
||||
<div class="section" id="authors">
|
||||
<h2><a class="toc-backref" href="#id97">Authors</a></h2>
|
||||
<h2><a class="toc-backref" href="#id107">Authors</a></h2>
|
||||
<ul class="simple">
|
||||
<li>ACSONE SA/NV</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="contributors">
|
||||
<h2><a class="toc-backref" href="#id98">Contributors</a></h2>
|
||||
<h2><a class="toc-backref" href="#id108">Contributors</a></h2>
|
||||
<ul class="simple">
|
||||
<li>Stéphane Bidoul <<a class="reference external" href="mailto:stephane.bidoul@acsone.eu">stephane.bidoul@acsone.eu</a>></li>
|
||||
<li>Laetitia Gangloff <<a class="reference external" href="mailto:laetitia.gangloff@acsone.eu">laetitia.gangloff@acsone.eu</a>></li>
|
||||
@ -895,7 +925,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="maintainers">
|
||||
<h2><a class="toc-backref" href="#id99">Maintainers</a></h2>
|
||||
<h2><a class="toc-backref" href="#id109">Maintainers</a></h2>
|
||||
<p>This module is maintained by the OCA.</p>
|
||||
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
|
||||
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
|
||||
@ -903,7 +933,7 @@ mission is to support the collaborative development of Odoo features and
|
||||
promote its widespread use.</p>
|
||||
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
|
||||
<p><a class="reference external" href="https://github.com/sbidoul"><img alt="sbidoul" src="https://github.com/sbidoul.png?size=40px" /></a></p>
|
||||
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/mis-builder/tree/13.0/mis_builder">OCA/mis-builder</a> project on GitHub.</p>
|
||||
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/mis-builder/tree/14.0/mis_builder">OCA/mis-builder</a> project on GitHub.</p>
|
||||
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -34,6 +34,10 @@ flectra.define("mis_builder.widget", function (require) {
|
||||
self.analytic_account_id_domain = []; // TODO unused for now
|
||||
self.analytic_account_id_label = _t("Analytic Account Filter");
|
||||
self.analytic_account_id_m2o = undefined; // Field widget
|
||||
self.analytic_group_id_domain = []; // TODO unused for now
|
||||
self.analytic_group_filter_name = "analytic_account_id.group_id";
|
||||
self.analytic_group_id_label = _t("Analytic Account Group");
|
||||
self.analytic_group_id_m2o = undefined; // Field widget
|
||||
self.analytic_tag_ids_domain = []; // TODO unused for now
|
||||
self.analytic_tag_ids_label = _t("Analytic Tags Filter");
|
||||
self.analytic_tag_ids_m2m = undefined; // Field widget
|
||||
@ -174,6 +178,12 @@ flectra.define("mis_builder.widget", function (require) {
|
||||
name: "filter_analytic_account_id",
|
||||
value: self._getFilterValue("analytic_account_id"),
|
||||
});
|
||||
fields.push({
|
||||
relation: "account.analytic.group",
|
||||
type: "many2one",
|
||||
name: "filter_analytic_account_id.group_id",
|
||||
value: self._getFilterValue("analytic_account_id.group_id"),
|
||||
});
|
||||
}
|
||||
if (self.has_group_analytic_tags) {
|
||||
fields.push({
|
||||
@ -226,6 +236,28 @@ flectra.define("mis_builder.widget", function (require) {
|
||||
self.analytic_account_id_m2o
|
||||
);
|
||||
self.analytic_account_id_m2o.appendTo(self.getMisBuilderFilterBox());
|
||||
|
||||
self.analytic_group_id_m2o = new relational_fields.FieldMany2One(
|
||||
self,
|
||||
"filter_analytic_account_id.group_id",
|
||||
record,
|
||||
{
|
||||
mode: "edit",
|
||||
attrs: {
|
||||
placeholder: self.analytic_group_id_label,
|
||||
options: {
|
||||
no_create: "True",
|
||||
no_open: "True",
|
||||
},
|
||||
},
|
||||
}
|
||||
);
|
||||
self._registerWidget(
|
||||
record.id,
|
||||
self.analytic_group_id_m2o.name,
|
||||
self.analytic_group_id_m2o
|
||||
);
|
||||
self.analytic_group_id_m2o.appendTo(self.getMisBuilderFilterBox());
|
||||
}
|
||||
|
||||
if (self.has_group_analytic_tags) {
|
||||
@ -319,6 +351,18 @@ flectra.define("mis_builder.widget", function (require) {
|
||||
}
|
||||
}
|
||||
|
||||
if (self.analytic_group_id_m2o !== undefined) {
|
||||
if (self.analytic_group_id_m2o.value) {
|
||||
self._setFilterValue(
|
||||
self.analytic_group_filter_name,
|
||||
self.analytic_group_id_m2o.value.res_id,
|
||||
"="
|
||||
);
|
||||
} else {
|
||||
self._setFilterValue(self.analytic_group_filter_name, undefined);
|
||||
}
|
||||
}
|
||||
|
||||
if (self.analytic_tag_ids_m2m !== undefined) {
|
||||
if (
|
||||
self.analytic_tag_ids_m2m.value &&
|
||||
|
@ -125,7 +125,7 @@ class TestAEP(common.TransactionCase):
|
||||
}
|
||||
)
|
||||
if post:
|
||||
move.post()
|
||||
move._post()
|
||||
return move
|
||||
|
||||
def _do_queries(self, date_from, date_to):
|
||||
@ -147,8 +147,8 @@ class TestAEP(common.TransactionCase):
|
||||
return res
|
||||
|
||||
def test_sanity_check(self):
|
||||
self.assertEquals(self.company.fiscalyear_last_day, 31)
|
||||
self.assertEquals(self.company.fiscalyear_last_month, "12")
|
||||
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()
|
||||
@ -160,9 +160,9 @@ class TestAEP(common.TransactionCase):
|
||||
self.assertIs(self._eval("bali[400AR]"), AccountingNone)
|
||||
self.assertIs(self._eval("bali[700IN]"), AccountingNone)
|
||||
# check variation
|
||||
self.assertEquals(self._eval("balp[400AR]"), 100)
|
||||
self.assertEquals(self._eval("balp[][('account_id.code', '=', '400AR')]"), 100)
|
||||
self.assertEquals(
|
||||
self.assertEqual(self._eval("balp[400AR]"), 100)
|
||||
self.assertEqual(self._eval("balp[][('account_id.code', '=', '400AR')]"), 100)
|
||||
self.assertEqual(
|
||||
self._eval(
|
||||
"balp[]"
|
||||
"[('account_id.user_type_id', '=', "
|
||||
@ -170,14 +170,14 @@ class TestAEP(common.TransactionCase):
|
||||
),
|
||||
100,
|
||||
)
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
self._eval(
|
||||
"balp[('user_type_id', '=', "
|
||||
" ref('account.data_account_type_receivable').id)]"
|
||||
),
|
||||
100,
|
||||
)
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
self._eval(
|
||||
"balp['&', "
|
||||
" ('user_type_id', '=', "
|
||||
@ -186,58 +186,58 @@ class TestAEP(common.TransactionCase):
|
||||
),
|
||||
100,
|
||||
)
|
||||
self.assertEquals(self._eval("balp[700IN]"), -100)
|
||||
self.assertEqual(self._eval("balp[700IN]"), -100)
|
||||
# check ending balance
|
||||
self.assertEquals(self._eval("bale[400AR]"), 100)
|
||||
self.assertEquals(self._eval("bale[700IN]"), -100)
|
||||
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.assertEquals(self._eval("bali[400AR]"), 100)
|
||||
self.assertEqual(self._eval("bali[400AR]"), 100)
|
||||
self.assertIs(self._eval("bali[700IN]"), AccountingNone)
|
||||
# check variation
|
||||
self.assertEquals(self._eval("balp[400AR]"), 300)
|
||||
self.assertEquals(self._eval("balp[700IN]"), -300)
|
||||
self.assertEqual(self._eval("balp[400AR]"), 300)
|
||||
self.assertEqual(self._eval("balp[700IN]"), -300)
|
||||
# check ending balance
|
||||
self.assertEquals(self._eval("bale[400AR]"), 400)
|
||||
self.assertEquals(self._eval("bale[700IN]"), -300)
|
||||
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.assertEquals(self._eval("bali[400AR]"), 400)
|
||||
self.assertEquals(self._eval("bali[700IN]"), -300)
|
||||
self.assertEquals(self._eval("pbali[400AR]"), 400)
|
||||
self.assertEquals(self._eval("nbali[400AR]"), 0)
|
||||
self.assertEquals(self._eval("nbali[700IN]"), -300)
|
||||
self.assertEquals(self._eval("pbali[700IN]"), 0)
|
||||
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.assertEquals(self._eval("balp[400AR]"), 500)
|
||||
self.assertEquals(self._eval("balp[700IN]"), -500)
|
||||
self.assertEquals(self._eval("nbalp[400AR]"), 0)
|
||||
self.assertEquals(self._eval("pbalp[400AR]"), 500)
|
||||
self.assertEquals(self._eval("nbalp[700IN]"), -500)
|
||||
self.assertEquals(self._eval("pbalp[700IN]"), 0)
|
||||
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.assertEquals(self._eval("bale[400AR]"), 900)
|
||||
self.assertEquals(self._eval("nbale[400AR]"), 0)
|
||||
self.assertEquals(self._eval("pbale[400AR]"), 900)
|
||||
self.assertEquals(self._eval("bale[700IN]"), -800)
|
||||
self.assertEquals(self._eval("nbale[700IN]"), -800)
|
||||
self.assertEquals(self._eval("pbale[700IN]"), 0)
|
||||
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.assertEquals(self._eval("crdp[700I%]"), 500)
|
||||
self.assertEquals(self._eval("debp[400A%]"), 500)
|
||||
self.assertEquals(self._eval("bal_700IN"), -500)
|
||||
self.assertEquals(self._eval("bals[700IN]"), -800)
|
||||
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.assertEquals(self._eval("balu[]"), -100)
|
||||
self.assertEqual(self._eval("balu[]"), -100)
|
||||
|
||||
# TODO allocate profits, and then...
|
||||
|
||||
@ -247,31 +247,27 @@ class TestAEP(common.TransactionCase):
|
||||
datetime.date(self.curr_year, 3, 1), datetime.date(self.curr_year, 3, 31)
|
||||
)
|
||||
variation = self._eval_by_account_id("balp[]")
|
||||
self.assertEquals(
|
||||
variation, {self.account_ar.id: 500, self.account_in.id: -500}
|
||||
)
|
||||
self.assertEqual(variation, {self.account_ar.id: 500, self.account_in.id: -500})
|
||||
variation = self._eval_by_account_id("pbalp[]")
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
variation, {self.account_ar.id: 500, self.account_in.id: AccountingNone}
|
||||
)
|
||||
variation = self._eval_by_account_id("nbalp[]")
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
variation, {self.account_ar.id: AccountingNone, self.account_in.id: -500}
|
||||
)
|
||||
variation = self._eval_by_account_id("balp[700IN]")
|
||||
self.assertEquals(variation, {self.account_in.id: -500})
|
||||
self.assertEqual(variation, {self.account_in.id: -500})
|
||||
variation = self._eval_by_account_id("crdp[700IN] - debp[400AR]")
|
||||
self.assertEquals(
|
||||
variation, {self.account_ar.id: -500, self.account_in.id: 500}
|
||||
)
|
||||
self.assertEqual(variation, {self.account_ar.id: -500, self.account_in.id: 500})
|
||||
end = self._eval_by_account_id("bale[]")
|
||||
self.assertEquals(end, {self.account_ar.id: 900, self.account_in.id: -800})
|
||||
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", "posted"
|
||||
)
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
initial, {self.account_ar.id: (400, 0), self.account_in.id: (0, 300)}
|
||||
)
|
||||
variation = AEP.get_balances_variation(
|
||||
@ -280,19 +276,19 @@ class TestAEP(common.TransactionCase):
|
||||
time.strftime("%Y") + "-03-31",
|
||||
"posted",
|
||||
)
|
||||
self.assertEquals(
|
||||
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", "posted"
|
||||
)
|
||||
self.assertEquals(
|
||||
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", "posted"
|
||||
)
|
||||
self.assertEquals(unallocated, (0, 100))
|
||||
self.assertEqual(unallocated, (0, 100))
|
||||
|
||||
def test_float_is_zero(self):
|
||||
dp = self.company.currency_id.decimal_places
|
||||
@ -307,7 +303,7 @@ class TestAEP(common.TransactionCase):
|
||||
initial = AEP.get_balances_initial(
|
||||
self.company, time.strftime("%Y") + "-01-01", "posted"
|
||||
)
|
||||
self.assertEquals(initial, {self.account_ar.id: (100.00, 100.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),
|
||||
@ -319,19 +315,19 @@ class TestAEP(common.TransactionCase):
|
||||
self.company, time.strftime("%Y") + "-01-01", "posted"
|
||||
)
|
||||
# epsilon initial balances is reported as empty
|
||||
self.assertEquals(initial, {})
|
||||
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.assertEquals(account_ids, {self.account_in.id})
|
||||
self.assertEqual(account_ids, {self.account_in.id})
|
||||
expr = "balp[700%]"
|
||||
account_ids = self.aep.get_account_ids_for_expr(expr)
|
||||
self.assertEquals(account_ids, {self.account_in.id})
|
||||
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.assertEquals(account_ids, {self.account_in.id, self.account_ar.id})
|
||||
self.assertEqual(account_ids, {self.account_in.id, self.account_ar.id})
|
||||
|
||||
def test_get_aml_domain_for_expr(self):
|
||||
self.aep.done_parsing()
|
||||
@ -394,7 +390,7 @@ class TestAEP(common.TransactionCase):
|
||||
self.aep.done_parsing()
|
||||
|
||||
tax = self.env["account.tax"].create(
|
||||
dict(name="test tax", active=True, amount=0)
|
||||
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),
|
||||
@ -407,7 +403,7 @@ class TestAEP(common.TransactionCase):
|
||||
if ml.credit:
|
||||
ml.write(dict(tax_ids=[(6, 0, [tax.id])]))
|
||||
tax.active = False
|
||||
move.post()
|
||||
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)
|
||||
|
@ -5,14 +5,21 @@ from flectra.tests.common import TransactionCase
|
||||
|
||||
|
||||
class TestAnalyticFilters(TransactionCase):
|
||||
def setUp(self):
|
||||
super(TestAnalyticFilters, self).setUp()
|
||||
self.aag = self.env["account.analytic.group"].search([], limit=1)
|
||||
|
||||
def test_context_with_filters(self):
|
||||
aaa = self.env["account.analytic.account"].search([], limit=1)
|
||||
mri = self.env["mis.report.instance"].new()
|
||||
mri.analytic_account_id = False
|
||||
mri.analytic_group_id = False
|
||||
assert mri._context_with_filters().get("mis_report_filters") == {}
|
||||
mri.analytic_account_id = aaa
|
||||
mri.analytic_group_id = self.aag
|
||||
assert mri._context_with_filters().get("mis_report_filters") == {
|
||||
"analytic_account_id": {"value": aaa.id, "operator": "="}
|
||||
"analytic_account_id": {"value": aaa.id, "operator": "="},
|
||||
"analytic_account_id.group_id": {"value": self.aag.id, "operator": "="},
|
||||
}
|
||||
# test _context_with_filters does nothing is a filter is already
|
||||
# in the context
|
||||
@ -30,6 +37,16 @@ class TestAnalyticFilters(TransactionCase):
|
||||
)
|
||||
assert domain == expected_domain
|
||||
|
||||
def _check_get_filter_descriptions_from_context(
|
||||
self, mis_report_filters, expected_domain
|
||||
):
|
||||
filter_descriptions = (
|
||||
self.env["mis.report.instance"]
|
||||
.with_context(mis_report_filters=mis_report_filters)
|
||||
.get_filter_descriptions_from_context()
|
||||
)
|
||||
assert filter_descriptions == expected_domain
|
||||
|
||||
def test_get_filter_domain_from_context_1(self):
|
||||
# no filter, no domain
|
||||
self._check_get_filter_domain_from_context({}, [])
|
||||
@ -37,11 +54,18 @@ class TestAnalyticFilters(TransactionCase):
|
||||
self._check_get_filter_domain_from_context(
|
||||
{"analytic_account_id": {"value": 1}}, [("analytic_account_id", "=", 1)]
|
||||
)
|
||||
self._check_get_filter_domain_from_context(
|
||||
{"analytic_group_id": {"value": 1}}, [("analytic_group_id", "=", 1)]
|
||||
)
|
||||
# custom operator
|
||||
self._check_get_filter_domain_from_context(
|
||||
{"analytic_account_id": {"value": 1, "operator": "!="}},
|
||||
[("analytic_account_id", "!=", 1)],
|
||||
)
|
||||
self._check_get_filter_domain_from_context(
|
||||
{"analytic_group_id": {"value": 1, "operator": "!="}},
|
||||
[("analytic_group_id", "!=", 1)],
|
||||
)
|
||||
# any field name works
|
||||
self._check_get_filter_domain_from_context(
|
||||
{"some_field": {"value": "x"}}, [("some_field", "=", "x")]
|
||||
@ -53,13 +77,39 @@ class TestAnalyticFilters(TransactionCase):
|
||||
{"analytic_account_id": {"value": False}},
|
||||
[("analytic_account_id", "=", False)],
|
||||
)
|
||||
self._check_get_filter_domain_from_context(
|
||||
{"analytic_group_id": {"value": False}},
|
||||
[("analytic_group_id", "=", False)],
|
||||
)
|
||||
# Filter from analytic account filter widget
|
||||
self._check_get_filter_domain_from_context(
|
||||
{"analytic_account_id": {"value": 1, "operator": "all"}},
|
||||
[("analytic_account_id", "in", [1])],
|
||||
)
|
||||
|
||||
# Filter from analytic group filter widget
|
||||
self._check_get_filter_domain_from_context(
|
||||
{"analytic_group_id": {"value": 1, "operator": "all"}},
|
||||
[("analytic_group_id", "in", [1])],
|
||||
)
|
||||
|
||||
# Filter from analytic tags filter widget
|
||||
self._check_get_filter_domain_from_context(
|
||||
{"analytic_tag_ids": {"value": [1, 2], "operator": "all"}},
|
||||
[("analytic_tag_ids", "in", [1]), ("analytic_tag_ids", "in", [2])],
|
||||
)
|
||||
|
||||
def test_get_filter_descriptions_from_context_1(self):
|
||||
self._check_get_filter_descriptions_from_context(
|
||||
{"analytic_account_id.group_id": {"value": self.aag.id}},
|
||||
["Analytic Account Group: %s" % self.aag.display_name],
|
||||
)
|
||||
|
||||
def test_get_additional_move_line_filter_with_analytic_group(self):
|
||||
instance_period = self.env["mis.report.instance.period"].new(
|
||||
{
|
||||
"analytic_group_id": self.aag.id,
|
||||
}
|
||||
)
|
||||
domain = instance_period._get_additional_move_line_filter()
|
||||
assert domain == [("analytic_account_id.group_id", "=", self.aag.id)]
|
||||
|
@ -32,7 +32,7 @@ class TestMisReportInstanceDataSources(common.TransactionCase):
|
||||
],
|
||||
}
|
||||
)
|
||||
move.post()
|
||||
move._post()
|
||||
return move
|
||||
|
||||
def setUp(self):
|
||||
|
@ -13,6 +13,7 @@ class TestKpiData(SavepointCase):
|
||||
|
||||
_name = "mis.kpi.data.test.item"
|
||||
_inherit = "mis.kpi.data"
|
||||
_description = "MIS Kpi Data test item"
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
|
@ -314,9 +314,6 @@ class TestMisReportInstance(common.HttpCase):
|
||||
],
|
||||
)
|
||||
)
|
||||
self.report_instance.period_ids[1].comparison_column_ids = [
|
||||
(4, self.report_instance.period_ids[0].id, None)
|
||||
]
|
||||
# same for report 2
|
||||
self.report_instance_2 = self.env["mis.report.instance"].create(
|
||||
dict(
|
||||
@ -364,13 +361,13 @@ class TestMisReportInstance(common.HttpCase):
|
||||
vals = [c.val for c in row.iter_cells()]
|
||||
if row.kpi.name == "k3":
|
||||
# k3 is constant
|
||||
self.assertEquals(vals, [AccountingNone, AccountingNone, 1.0])
|
||||
self.assertEqual(vals, [AccountingNone, AccountingNone, 1.0])
|
||||
elif row.kpi.name == "k6":
|
||||
# k6 is a string kpi
|
||||
self.assertEquals(vals, ["bla", "bla", "blabla"])
|
||||
self.assertEqual(vals, ["bla", "bla", "blabla"])
|
||||
elif row.kpi.name == "k7":
|
||||
# k7 references k3 via subkpi names
|
||||
self.assertEquals(vals, [AccountingNone, AccountingNone, 1.0])
|
||||
self.assertEqual(vals, [AccountingNone, AccountingNone, 1.0])
|
||||
|
||||
def test_multi_company_compute(self):
|
||||
self.report_instance.write(
|
||||
@ -474,7 +471,7 @@ class TestMisReportInstance(common.HttpCase):
|
||||
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.assertEquals(res[account_id], kpi200)
|
||||
self.assertEqual(res[account_id], kpi200)
|
||||
|
||||
def test_kpi_name_get_name_search(self):
|
||||
r = self.env["mis.report.kpi"].name_search("k1")
|
||||
@ -539,13 +536,11 @@ class TestMisReportInstance(common.HttpCase):
|
||||
for row in matrix.iter_rows():
|
||||
vals = [c.val for c in row.iter_cells()]
|
||||
if row.kpi.name == "k1":
|
||||
self.assertEquals(
|
||||
vals, [AccountingNone, AccountingNone, AccountingNone]
|
||||
)
|
||||
self.assertEqual(vals, [AccountingNone, AccountingNone, AccountingNone])
|
||||
elif row.kpi.name == "k2":
|
||||
self.assertEquals(vals, [AccountingNone, AccountingNone, None])
|
||||
self.assertEqual(vals, [AccountingNone, AccountingNone, None])
|
||||
elif row.kpi.name == "k4":
|
||||
self.assertEquals(vals, [AccountingNone, AccountingNone, 1.0])
|
||||
self.assertEqual(vals, [AccountingNone, AccountingNone, 1.0])
|
||||
|
||||
def test_raise_when_unknown_kpi_value_type(self):
|
||||
with self.assertRaises(SubKPIUnknownTypeError):
|
||||
|
@ -115,7 +115,7 @@ class TestMultiCompanyAEP(common.TransactionCase):
|
||||
],
|
||||
}
|
||||
)
|
||||
move.post()
|
||||
move._post()
|
||||
return move
|
||||
|
||||
def _do_queries(self, companies, currency, date_from, date_to):
|
||||
|
@ -37,149 +37,145 @@ class TestRendering(common.TransactionCase):
|
||||
return r
|
||||
|
||||
def test_render(self):
|
||||
self.assertEquals(u"1", self._render(1))
|
||||
self.assertEquals(u"1", self._render(1.1))
|
||||
self.assertEquals(u"2", self._render(1.6))
|
||||
self.assertEqual(u"1", self._render(1))
|
||||
self.assertEqual(u"1", self._render(1.1))
|
||||
self.assertEqual(u"2", self._render(1.6))
|
||||
self.style.dp_inherit = False
|
||||
self.style.dp = 2
|
||||
self.assertEquals(u"1.00", self._render(1))
|
||||
self.assertEquals(u"1.10", self._render(1.1))
|
||||
self.assertEquals(u"1.60", self._render(1.6))
|
||||
self.assertEquals(u"1.61", self._render(1.606))
|
||||
self.assertEquals(u"12,345.67", self._render(12345.67))
|
||||
self.assertEqual(u"1.00", self._render(1))
|
||||
self.assertEqual(u"1.10", self._render(1.1))
|
||||
self.assertEqual(u"1.60", self._render(1.6))
|
||||
self.assertEqual(u"1.61", self._render(1.606))
|
||||
self.assertEqual(u"12,345.67", self._render(12345.67))
|
||||
|
||||
def test_render_negative(self):
|
||||
# non breaking hyphen
|
||||
self.assertEquals(u"\u20111", self._render(-1))
|
||||
self.assertEqual(u"\u20111", self._render(-1))
|
||||
|
||||
def test_render_zero(self):
|
||||
self.assertEquals(u"0", self._render(0))
|
||||
self.assertEquals(u"", self._render(None))
|
||||
self.assertEquals(u"", self._render(AccountingNone))
|
||||
self.assertEqual(u"0", self._render(0))
|
||||
self.assertEqual(u"", self._render(None))
|
||||
self.assertEqual(u"", self._render(AccountingNone))
|
||||
|
||||
def test_render_suffix(self):
|
||||
self.style.suffix_inherit = False
|
||||
self.style.suffix = u"€"
|
||||
self.assertEquals(u"1\xa0€", self._render(1))
|
||||
self.assertEqual(u"1\xa0€", self._render(1))
|
||||
self.style.suffix = u"k€"
|
||||
self.style.divider_inherit = False
|
||||
self.style.divider = "1e3"
|
||||
self.assertEquals(u"1\xa0k€", self._render(1000))
|
||||
self.assertEqual(u"1\xa0k€", self._render(1000))
|
||||
|
||||
def test_render_prefix(self):
|
||||
self.style.prefix_inherit = False
|
||||
self.style.prefix = u"$"
|
||||
self.assertEquals(u"$\xa01", self._render(1))
|
||||
self.assertEqual(u"$\xa01", self._render(1))
|
||||
self.style.prefix = u"k$"
|
||||
self.style.divider_inherit = False
|
||||
self.style.divider = "1e3"
|
||||
self.assertEquals(u"k$\xa01", self._render(1000))
|
||||
self.assertEqual(u"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.assertEquals(u"1", self._render(1000))
|
||||
self.assertEqual(u"1", self._render(1000))
|
||||
self.style.divider = "1e6"
|
||||
self.style.dp = 3
|
||||
self.assertEquals(u"0.001", self._render(1000))
|
||||
self.assertEqual(u"0.001", self._render(1000))
|
||||
self.style.divider = "1e-3"
|
||||
self.style.dp = 0
|
||||
self.assertEquals(u"1,000", self._render(1))
|
||||
self.assertEqual(u"1,000", self._render(1))
|
||||
self.style.divider = "1e-6"
|
||||
self.style.dp = 0
|
||||
self.assertEquals(u"1,000,000", self._render(1))
|
||||
self.assertEqual(u"1,000,000", self._render(1))
|
||||
|
||||
def test_render_pct(self):
|
||||
self.assertEquals(u"100\xa0%", self._render(1, TYPE_PCT))
|
||||
self.assertEquals(u"50\xa0%", self._render(0.5, TYPE_PCT))
|
||||
self.assertEqual(u"100\xa0%", self._render(1, TYPE_PCT))
|
||||
self.assertEqual(u"50\xa0%", self._render(0.5, TYPE_PCT))
|
||||
self.style.dp_inherit = False
|
||||
self.style.dp = 2
|
||||
self.assertEquals(u"51.23\xa0%", self._render(0.5123, TYPE_PCT))
|
||||
self.assertEqual(u"51.23\xa0%", self._render(0.5123, TYPE_PCT))
|
||||
|
||||
def test_render_string(self):
|
||||
self.assertEquals(u"", self._render("", TYPE_STR))
|
||||
self.assertEquals(u"", self._render(None, TYPE_STR))
|
||||
self.assertEquals(u"abcdé", self._render(u"abcdé", TYPE_STR))
|
||||
self.assertEqual(u"", self._render("", TYPE_STR))
|
||||
self.assertEqual(u"", self._render(None, TYPE_STR))
|
||||
self.assertEqual(u"abcdé", self._render(u"abcdé", TYPE_STR))
|
||||
|
||||
def test_compare_num_pct(self):
|
||||
self.assertEquals((1.0, u"+100.0\xa0%"), self._compare_and_render(100, 50))
|
||||
self.assertEquals((0.5, u"+50.0\xa0%"), self._compare_and_render(75, 50))
|
||||
self.assertEquals((0.5, u"+50.0\xa0%"), self._compare_and_render(-25, -50))
|
||||
self.assertEquals((1.0, u"+100.0\xa0%"), self._compare_and_render(0, -50))
|
||||
self.assertEquals((2.0, u"+200.0\xa0%"), self._compare_and_render(50, -50))
|
||||
self.assertEquals((-0.5, u"\u201150.0\xa0%"), self._compare_and_render(25, 50))
|
||||
self.assertEquals((-1.0, u"\u2011100.0\xa0%"), self._compare_and_render(0, 50))
|
||||
self.assertEquals(
|
||||
(-2.0, u"\u2011200.0\xa0%"), self._compare_and_render(-50, 50)
|
||||
)
|
||||
self.assertEquals(
|
||||
(-0.5, u"\u201150.0\xa0%"), self._compare_and_render(-75, -50)
|
||||
)
|
||||
self.assertEquals(
|
||||
self.assertEqual((1.0, u"+100.0\xa0%"), self._compare_and_render(100, 50))
|
||||
self.assertEqual((0.5, u"+50.0\xa0%"), self._compare_and_render(75, 50))
|
||||
self.assertEqual((0.5, u"+50.0\xa0%"), self._compare_and_render(-25, -50))
|
||||
self.assertEqual((1.0, u"+100.0\xa0%"), self._compare_and_render(0, -50))
|
||||
self.assertEqual((2.0, u"+200.0\xa0%"), self._compare_and_render(50, -50))
|
||||
self.assertEqual((-0.5, u"\u201150.0\xa0%"), self._compare_and_render(25, 50))
|
||||
self.assertEqual((-1.0, u"\u2011100.0\xa0%"), self._compare_and_render(0, 50))
|
||||
self.assertEqual((-2.0, u"\u2011200.0\xa0%"), self._compare_and_render(-50, 50))
|
||||
self.assertEqual((-0.5, u"\u201150.0\xa0%"), self._compare_and_render(-75, -50))
|
||||
self.assertEqual(
|
||||
(AccountingNone, u""), self._compare_and_render(50, AccountingNone)
|
||||
)
|
||||
self.assertEquals((AccountingNone, u""), self._compare_and_render(50, None))
|
||||
self.assertEquals((AccountingNone, u""), self._compare_and_render(50, 50))
|
||||
self.assertEquals((0.002, u"+0.2\xa0%"), self._compare_and_render(50.1, 50))
|
||||
self.assertEquals((AccountingNone, u""), self._compare_and_render(50.01, 50))
|
||||
self.assertEquals(
|
||||
self.assertEqual((AccountingNone, u""), self._compare_and_render(50, None))
|
||||
self.assertEqual((AccountingNone, u""), self._compare_and_render(50, 50))
|
||||
self.assertEqual((0.002, u"+0.2\xa0%"), self._compare_and_render(50.1, 50))
|
||||
self.assertEqual((AccountingNone, u""), self._compare_and_render(50.01, 50))
|
||||
self.assertEqual(
|
||||
(-1.0, u"\u2011100.0\xa0%"), self._compare_and_render(AccountingNone, 50)
|
||||
)
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
(-1.0, u"\u2011100.0\xa0%"), self._compare_and_render(None, 50)
|
||||
)
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
(AccountingNone, u""), self._compare_and_render(DataError("#ERR", "."), 1)
|
||||
)
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
(AccountingNone, u""), self._compare_and_render(1, DataError("#ERR", "."))
|
||||
)
|
||||
|
||||
def test_compare_num_diff(self):
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
(25, u"+25"), self._compare_and_render(75, 50, TYPE_NUM, CMP_DIFF)
|
||||
)
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
(-25, u"\u201125"), self._compare_and_render(25, 50, TYPE_NUM, CMP_DIFF)
|
||||
)
|
||||
self.style.suffix_inherit = False
|
||||
self.style.suffix = u"€"
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
(-25, u"\u201125\xa0€"),
|
||||
self._compare_and_render(25, 50, TYPE_NUM, CMP_DIFF),
|
||||
)
|
||||
self.style.suffix = u""
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
(50.0, u"+50"),
|
||||
self._compare_and_render(50, AccountingNone, TYPE_NUM, CMP_DIFF),
|
||||
)
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
(50.0, u"+50"), self._compare_and_render(50, None, TYPE_NUM, CMP_DIFF)
|
||||
)
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
(-50.0, u"\u201150"),
|
||||
self._compare_and_render(AccountingNone, 50, TYPE_NUM, CMP_DIFF),
|
||||
)
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
(-50.0, u"\u201150"), self._compare_and_render(None, 50, TYPE_NUM, CMP_DIFF)
|
||||
)
|
||||
self.style.dp_inherit = False
|
||||
self.style.dp = 2
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
(0.1, u"+0.10"), self._compare_and_render(1.1, 1.0, TYPE_NUM, CMP_DIFF)
|
||||
)
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
(AccountingNone, u""),
|
||||
self._compare_and_render(1.001, 1.0, TYPE_NUM, CMP_DIFF),
|
||||
)
|
||||
|
||||
def test_compare_pct(self):
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
(0.25, u"+25\xa0pp"), self._compare_and_render(0.75, 0.50, TYPE_PCT)
|
||||
)
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
(AccountingNone, u""), self._compare_and_render(0.751, 0.750, TYPE_PCT)
|
||||
)
|
||||
|
||||
@ -188,16 +184,16 @@ class TestRendering(common.TransactionCase):
|
||||
result = self.style_obj.compare_and_render(
|
||||
self.lang, style_props, TYPE_PCT, CMP_DIFF, 0.75, 0.50
|
||||
)
|
||||
self.assertEquals(result[3], TYPE_NUM)
|
||||
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.assertEquals(style_props, {"color": "#FF0000"})
|
||||
self.assertEqual(style_props, {"color": "#FF0000"})
|
||||
style_dict = {"color": "#00FF00", "dp": 0}
|
||||
style_props = self.style_obj.merge([self.style, style_dict])
|
||||
self.assertEquals(style_props, {"color": "#00FF00", "dp": 0})
|
||||
self.assertEqual(style_props, {"color": "#00FF00", "dp": 0})
|
||||
style2 = self.style_obj.create(
|
||||
dict(
|
||||
name="teststyle2",
|
||||
@ -208,7 +204,7 @@ class TestRendering(common.TransactionCase):
|
||||
)
|
||||
)
|
||||
style_props = self.style_obj.merge([self.style, style_dict, style2])
|
||||
self.assertEquals(style_props, {"color": "#00FF00", "dp": 1})
|
||||
self.assertEqual(style_props, {"color": "#00FF00", "dp": 1})
|
||||
|
||||
def test_css(self):
|
||||
self.style.color_inherit = False
|
||||
@ -229,7 +225,7 @@ class TestRendering(common.TransactionCase):
|
||||
self.style.indent_level = 2
|
||||
style_props = self.style_obj.merge([self.style])
|
||||
css = self.style_obj.to_css_style(style_props)
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
css,
|
||||
"font-style: italic; "
|
||||
"font-weight: bold; "
|
||||
@ -239,7 +235,7 @@ class TestRendering(common.TransactionCase):
|
||||
"text-indent: 2em",
|
||||
)
|
||||
css = self.style_obj.to_css_style(style_props, no_indent=True)
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
css,
|
||||
"font-style: italic; "
|
||||
"font-weight: bold; "
|
||||
@ -269,7 +265,7 @@ class TestRendering(common.TransactionCase):
|
||||
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.assertEquals(
|
||||
self.assertEqual(
|
||||
xlsx,
|
||||
{
|
||||
"italic": True,
|
||||
@ -282,7 +278,7 @@ class TestRendering(common.TransactionCase):
|
||||
},
|
||||
)
|
||||
xlsx = self.style_obj.to_xlsx_style(TYPE_NUM, style_props, no_indent=True)
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
xlsx,
|
||||
{
|
||||
"italic": True,
|
||||
@ -295,7 +291,7 @@ class TestRendering(common.TransactionCase):
|
||||
)
|
||||
# percent type ignore prefix and suffix
|
||||
xlsx = self.style_obj.to_xlsx_style(TYPE_PCT, style_props, no_indent=True)
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
xlsx,
|
||||
{
|
||||
"italic": True,
|
||||
@ -309,7 +305,7 @@ class TestRendering(common.TransactionCase):
|
||||
|
||||
# str type have no num_format style
|
||||
xlsx = self.style_obj.to_xlsx_style(TYPE_STR, style_props, no_indent=True)
|
||||
self.assertEquals(
|
||||
self.assertEqual(
|
||||
xlsx,
|
||||
{
|
||||
"italic": True,
|
||||
|
@ -179,6 +179,10 @@
|
||||
name="analytic_account_id"
|
||||
groups="analytic.group_analytic_accounting"
|
||||
/>
|
||||
<field
|
||||
name="analytic_group_id"
|
||||
groups="analytic.group_analytic_accounting"
|
||||
/>
|
||||
<field
|
||||
name="analytic_tag_ids"
|
||||
groups="analytic.group_analytic_tags"
|
||||
@ -394,6 +398,7 @@
|
||||
</group>
|
||||
<group string="Filters">
|
||||
<field name="analytic_account_id" />
|
||||
<field name="analytic_group_id" />
|
||||
<field name="analytic_tag_ids" widget="many2many_tags" />
|
||||
</group>
|
||||
</form>
|
||||
|
@ -14,13 +14,13 @@ MIS Builder Budget
|
||||
: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/13.0/mis_builder_budget
|
||||
:target: https://github.com/OCA/mis-builder/tree/14.0/mis_builder_budget
|
||||
: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-13-0/mis-builder-13-0-mis_builder_budget
|
||||
:target: https://translation.odoo-community.org/projects/mis-builder-14-0/mis-builder-14-0-mis_builder_budget
|
||||
:alt: Translate me on Weblate
|
||||
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
|
||||
:target: https://runbot.odoo-community.org/runbot/248/13.0
|
||||
:target: https://runbot.odoo-community.org/runbot/248/14.0
|
||||
:alt: Try me on Runbot
|
||||
|
||||
|badge1| |badge2| |badge3| |badge4| |badge5|
|
||||
@ -85,6 +85,14 @@ be found on GitHub.
|
||||
Changelog
|
||||
=========
|
||||
|
||||
14.0.3.5.1 (2021-04-06)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
**Bugfixes**
|
||||
|
||||
- Fix incorrect budget by account multi company security rules. (`#347 <https://github.com/OCA/mis-builder/issues/347>`_)
|
||||
|
||||
|
||||
13.0.3.5.0 (2020-03-28)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -157,7 +165,7 @@ Bug Tracker
|
||||
Bugs are tracked on `GitHub Issues <https://github.com/OCA/mis-builder/issues>`_.
|
||||
In case of trouble, please check there if your issue has already been reported.
|
||||
If you spotted it first, help us smashing it by providing a detailed and welcomed
|
||||
`feedback <https://github.com/OCA/mis-builder/issues/new?body=module:%20mis_builder_budget%0Aversion:%2013.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
||||
`feedback <https://github.com/OCA/mis-builder/issues/new?body=module:%20mis_builder_budget%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
||||
|
||||
Do not contact contributors directly about support or help with technical issues.
|
||||
|
||||
@ -198,6 +206,6 @@ Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|
||||
|
||||
|maintainer-sbidoul|
|
||||
|
||||
This module is part of the `OCA/mis-builder <https://github.com/OCA/mis-builder/tree/13.0/mis_builder_budget>`_ project on GitHub.
|
||||
This module is part of the `OCA/mis-builder <https://github.com/OCA/mis-builder/tree/14.0/mis_builder_budget>`_ project on GitHub.
|
||||
|
||||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
@ -5,7 +5,7 @@
|
||||
"name": "MIS Builder Budget",
|
||||
"summary": """
|
||||
Create budgets for MIS reports""",
|
||||
"version": "2.0.3.5.0",
|
||||
"version": "2.0.3.5.1",
|
||||
"license": "AGPL-3",
|
||||
"author": "ACSONE SA/NV, " "Odoo Community Association (OCA)",
|
||||
"website": "https://gitlab.com/flectra-community/mis-builder",
|
||||
@ -22,7 +22,7 @@
|
||||
"security/mis_budget_by_account.xml",
|
||||
"views/mis_budget_by_account.xml",
|
||||
],
|
||||
"installable": False,
|
||||
"installable": True,
|
||||
"development_status": "Production/Stable",
|
||||
"maintainers": ["sbidoul"],
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 13.0\n"
|
||||
"Project-Id-Version: Odoo Server 14.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@ -225,6 +225,10 @@ msgstr ""
|
||||
#: model:ir.model.fields,field_description:mis_builder_budget.field_mis_budget_by_account_item__display_name
|
||||
#: model:ir.model.fields,field_description:mis_builder_budget.field_mis_budget_item__display_name
|
||||
#: model:ir.model.fields,field_description:mis_builder_budget.field_mis_budget_item_abstract__display_name
|
||||
#: model:ir.model.fields,field_description:mis_builder_budget.field_mis_report_instance__display_name
|
||||
#: model:ir.model.fields,field_description:mis_builder_budget.field_mis_report_instance_period__display_name
|
||||
#: model:ir.model.fields,field_description:mis_builder_budget.field_mis_report_kpi__display_name
|
||||
#: model:ir.model.fields,field_description:mis_builder_budget.field_mis_report_kpi_expression__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
@ -279,6 +283,10 @@ msgstr ""
|
||||
#: model:ir.model.fields,field_description:mis_builder_budget.field_mis_budget_by_account_item__id
|
||||
#: model:ir.model.fields,field_description:mis_builder_budget.field_mis_budget_item__id
|
||||
#: model:ir.model.fields,field_description:mis_builder_budget.field_mis_budget_item_abstract__id
|
||||
#: model:ir.model.fields,field_description:mis_builder_budget.field_mis_report_instance__id
|
||||
#: model:ir.model.fields,field_description:mis_builder_budget.field_mis_report_instance_period__id
|
||||
#: model:ir.model.fields,field_description:mis_builder_budget.field_mis_report_kpi__id
|
||||
#: model:ir.model.fields,field_description:mis_builder_budget.field_mis_report_kpi_expression__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
@ -332,6 +340,10 @@ msgstr ""
|
||||
#: model:ir.model.fields,field_description:mis_builder_budget.field_mis_budget_by_account_item____last_update
|
||||
#: model:ir.model.fields,field_description:mis_builder_budget.field_mis_budget_item____last_update
|
||||
#: model:ir.model.fields,field_description:mis_builder_budget.field_mis_budget_item_abstract____last_update
|
||||
#: model:ir.model.fields,field_description:mis_builder_budget.field_mis_report_instance____last_update
|
||||
#: model:ir.model.fields,field_description:mis_builder_budget.field_mis_report_instance_period____last_update
|
||||
#: model:ir.model.fields,field_description:mis_builder_budget.field_mis_report_kpi____last_update
|
||||
#: model:ir.model.fields,field_description:mis_builder_budget.field_mis_report_kpi_expression____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10,16 +10,16 @@ class MisBudgetAbstract(models.AbstractModel):
|
||||
_description = "MIS Budget (Abstract Base Class)"
|
||||
_inherit = ["mail.thread"]
|
||||
|
||||
name = fields.Char(required=True, track_visibility="onchange")
|
||||
description = fields.Char(track_visibility="onchange")
|
||||
name = fields.Char(required=True, tracking=True)
|
||||
description = fields.Char(tracking=True)
|
||||
date_range_id = fields.Many2one(comodel_name="date.range", string="Date range")
|
||||
date_from = fields.Date(required=True, string="From", track_visibility="onchange")
|
||||
date_to = fields.Date(required=True, string="To", track_visibility="onchange")
|
||||
date_from = fields.Date(required=True, string="From", tracking=True)
|
||||
date_to = fields.Date(required=True, string="To", tracking=True)
|
||||
state = fields.Selection(
|
||||
[("draft", "Draft"), ("confirmed", "Confirmed"), ("cancelled", "Cancelled")],
|
||||
required=True,
|
||||
default="draft",
|
||||
track_visibility="onchange",
|
||||
tracking=True,
|
||||
)
|
||||
company_id = fields.Many2one(
|
||||
comodel_name="res.company",
|
||||
|
@ -15,7 +15,11 @@ class MisReportInstancePeriod(models.Model):
|
||||
selection_add=[
|
||||
(SRC_MIS_BUDGET, "MIS Budget by KPI"),
|
||||
(SRC_MIS_BUDGET_BY_ACCOUNT, "MIS Budget by Account"),
|
||||
]
|
||||
],
|
||||
ondelete={
|
||||
SRC_MIS_BUDGET: "cascade",
|
||||
SRC_MIS_BUDGET_BY_ACCOUNT: "cascade",
|
||||
},
|
||||
)
|
||||
source_mis_budget_id = fields.Many2one(
|
||||
comodel_name="mis.budget", string="Budget by KPI"
|
||||
|
@ -24,7 +24,7 @@
|
||||
<field name="name">mis.budget.by.account multi company</field>
|
||||
<field name="model_id" ref="model_mis_budget_by_account" />
|
||||
<field name="domain_force">
|
||||
['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
|
||||
['|',('company_id','=',False),('company_id', 'in', company_ids)]
|
||||
</field>
|
||||
</record>
|
||||
</flectra>
|
||||
|
@ -24,7 +24,7 @@
|
||||
<field name="name">mis.budget.by.account.item multi company</field>
|
||||
<field name="model_id" ref="model_mis_budget_by_account_item" />
|
||||
<field name="domain_force">
|
||||
['|',('budget_id.company_id','=',False),('budget_id.company_id','child_of',[user.company_id.id])]
|
||||
['|',('budget_id.company_id','=',False),('budget_id.company_id','in',company_ids)]
|
||||
</field>
|
||||
</record>
|
||||
</flectra>
|
||||
|
@ -367,7 +367,7 @@ ul.auto-toc {
|
||||
!! This file is generated by oca-gen-addon-readme !!
|
||||
!! changes will be overwritten. !!
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/mis-builder/tree/13.0/mis_builder_budget"><img alt="OCA/mis-builder" src="https://img.shields.io/badge/github-OCA%2Fmis--builder-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/mis-builder-13-0/mis-builder-13-0-mis_builder_budget"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/248/13.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
|
||||
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/mis-builder/tree/14.0/mis_builder_budget"><img alt="OCA/mis-builder" src="https://img.shields.io/badge/github-OCA%2Fmis--builder-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/mis-builder-14-0/mis-builder-14-0-mis_builder_budget"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/248/14.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
|
||||
<p>Create budgets for MIS reports.</p>
|
||||
<p>This module lets you create budgets for any MIS report. Several budgets can be
|
||||
created for a given report template (ie one budget per year). Budget figures
|
||||
@ -377,31 +377,32 @@ show the budgeted values for each KPI, adjusted for the period of the column.</p
|
||||
<p><strong>Table of contents</strong></p>
|
||||
<div class="contents local topic" id="contents">
|
||||
<ul class="simple">
|
||||
<li><a class="reference internal" href="#usage" id="id17">Usage</a></li>
|
||||
<li><a class="reference internal" href="#known-issues-roadmap" id="id18">Known issues / Roadmap</a></li>
|
||||
<li><a class="reference internal" href="#changelog" id="id19">Changelog</a><ul>
|
||||
<li><a class="reference internal" href="#id1" id="id20">13.0.3.5.0 (2020-03-28)</a></li>
|
||||
<li><a class="reference internal" href="#id3" id="id21">13.0.3.4.0 (2020-01-??)</a></li>
|
||||
<li><a class="reference internal" href="#id4" id="id22">12.0.3.4.0 (2019-10-26)</a></li>
|
||||
<li><a class="reference internal" href="#id6" id="id23">11.0.3.3.0 (2019-01-13)</a></li>
|
||||
<li><a class="reference internal" href="#id8" id="id24">11.0.3.2.1 (2018-06-30)</a></li>
|
||||
<li><a class="reference internal" href="#id10" id="id25">11.0.3.2.0 (2018-05-02)</a></li>
|
||||
<li><a class="reference internal" href="#id12" id="id26">11.0.3.1.1 (2018-02-04)</a></li>
|
||||
<li><a class="reference internal" href="#id14" id="id27">10.0.3.1.0 (2017-11-14)</a></li>
|
||||
<li><a class="reference internal" href="#id16" id="id28">10.0.1.1.1 (2017-10-01)</a></li>
|
||||
<li><a class="reference internal" href="#usage" id="id19">Usage</a></li>
|
||||
<li><a class="reference internal" href="#known-issues-roadmap" id="id20">Known issues / Roadmap</a></li>
|
||||
<li><a class="reference internal" href="#changelog" id="id21">Changelog</a><ul>
|
||||
<li><a class="reference internal" href="#id1" id="id22">14.0.3.5.1 (2021-04-06)</a></li>
|
||||
<li><a class="reference internal" href="#id3" id="id23">13.0.3.5.0 (2020-03-28)</a></li>
|
||||
<li><a class="reference internal" href="#id5" id="id24">13.0.3.4.0 (2020-01-??)</a></li>
|
||||
<li><a class="reference internal" href="#id6" id="id25">12.0.3.4.0 (2019-10-26)</a></li>
|
||||
<li><a class="reference internal" href="#id8" id="id26">11.0.3.3.0 (2019-01-13)</a></li>
|
||||
<li><a class="reference internal" href="#id10" id="id27">11.0.3.2.1 (2018-06-30)</a></li>
|
||||
<li><a class="reference internal" href="#id12" id="id28">11.0.3.2.0 (2018-05-02)</a></li>
|
||||
<li><a class="reference internal" href="#id14" id="id29">11.0.3.1.1 (2018-02-04)</a></li>
|
||||
<li><a class="reference internal" href="#id16" id="id30">10.0.3.1.0 (2017-11-14)</a></li>
|
||||
<li><a class="reference internal" href="#id18" id="id31">10.0.1.1.1 (2017-10-01)</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#bug-tracker" id="id29">Bug Tracker</a></li>
|
||||
<li><a class="reference internal" href="#credits" id="id30">Credits</a><ul>
|
||||
<li><a class="reference internal" href="#authors" id="id31">Authors</a></li>
|
||||
<li><a class="reference internal" href="#contributors" id="id32">Contributors</a></li>
|
||||
<li><a class="reference internal" href="#maintainers" id="id33">Maintainers</a></li>
|
||||
<li><a class="reference internal" href="#bug-tracker" id="id32">Bug Tracker</a></li>
|
||||
<li><a class="reference internal" href="#credits" id="id33">Credits</a><ul>
|
||||
<li><a class="reference internal" href="#authors" id="id34">Authors</a></li>
|
||||
<li><a class="reference internal" href="#contributors" id="id35">Contributors</a></li>
|
||||
<li><a class="reference internal" href="#maintainers" id="id36">Maintainers</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="usage">
|
||||
<h1><a class="toc-backref" href="#id17">Usage</a></h1>
|
||||
<h1><a class="toc-backref" href="#id19">Usage</a></h1>
|
||||
<p>There are two ways to use this module: create budgets by KPI or budgets by
|
||||
GL accounts. Currently, the two methods cannot be combined in the same budget.</p>
|
||||
<p><strong>Budget by KPIs</strong></p>
|
||||
@ -430,15 +431,22 @@ to the reporting period when displayed. Columns can be compared by adding a
|
||||
column of type “comparison” or “sum”.</p>
|
||||
</div>
|
||||
<div class="section" id="known-issues-roadmap">
|
||||
<h1><a class="toc-backref" href="#id18">Known issues / Roadmap</a></h1>
|
||||
<h1><a class="toc-backref" href="#id20">Known issues / Roadmap</a></h1>
|
||||
<p>The mis_builder <a class="reference external" href="https://github.com/OCA/mis-builder/issues?q=is%3Aopen+is%3Aissue+label%3Aenhancement">roadmap</a>
|
||||
and <a class="reference external" href="https://github.com/OCA/mis-builder/issues?q=is%3Aopen+is%3Aissue+label%3Abug">known issues</a> can
|
||||
be found on GitHub.</p>
|
||||
</div>
|
||||
<div class="section" id="changelog">
|
||||
<h1><a class="toc-backref" href="#id19">Changelog</a></h1>
|
||||
<h1><a class="toc-backref" href="#id21">Changelog</a></h1>
|
||||
<div class="section" id="id1">
|
||||
<h2><a class="toc-backref" href="#id20">13.0.3.5.0 (2020-03-28)</a></h2>
|
||||
<h2><a class="toc-backref" href="#id22">14.0.3.5.1 (2021-04-06)</a></h2>
|
||||
<p><strong>Bugfixes</strong></p>
|
||||
<ul class="simple">
|
||||
<li>Fix incorrect budget by account multi company security rules. (<a class="reference external" href="https://github.com/OCA/mis-builder/issues/347">#347</a>)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id3">
|
||||
<h2><a class="toc-backref" href="#id23">13.0.3.5.0 (2020-03-28)</a></h2>
|
||||
<p><strong>Features</strong></p>
|
||||
<ul class="simple">
|
||||
<li>Budget by GL account: allow budgeting by GL account in addition to the
|
||||
@ -447,12 +455,12 @@ date, and when reporting a pro-rata temporis adjustment is made to match
|
||||
the reporting period. (<a class="reference external" href="https://github.com/OCA/mis-builder/issues/259">#259</a>)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id3">
|
||||
<h2><a class="toc-backref" href="#id21">13.0.3.4.0 (2020-01-??)</a></h2>
|
||||
<div class="section" id="id5">
|
||||
<h2><a class="toc-backref" href="#id24">13.0.3.4.0 (2020-01-??)</a></h2>
|
||||
<p>Migration to odoo 13.0.</p>
|
||||
</div>
|
||||
<div class="section" id="id4">
|
||||
<h2><a class="toc-backref" href="#id22">12.0.3.4.0 (2019-10-26)</a></h2>
|
||||
<div class="section" id="id6">
|
||||
<h2><a class="toc-backref" href="#id25">12.0.3.4.0 (2019-10-26)</a></h2>
|
||||
<p><strong>Bugfixes</strong></p>
|
||||
<ul class="simple">
|
||||
<li>Consider analytic tags too when detecting overlapping budget items.
|
||||
@ -460,64 +468,64 @@ Previously only analytic account was considered, and this overlap detection
|
||||
mechanism was overlooked when analytic tags were added to budget items. (<a class="reference external" href="https://github.com/oca/mis-builder/issues/241">#241</a>)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id6">
|
||||
<h2><a class="toc-backref" href="#id23">11.0.3.3.0 (2019-01-13)</a></h2>
|
||||
<div class="section" id="id8">
|
||||
<h2><a class="toc-backref" href="#id26">11.0.3.3.0 (2019-01-13)</a></h2>
|
||||
<p><strong>Features</strong></p>
|
||||
<ul class="simple">
|
||||
<li>Support analytic filters. (<a class="reference external" href="https://github.com/oca/mis-builder/issues/15">#15</a>)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id8">
|
||||
<h2><a class="toc-backref" href="#id24">11.0.3.2.1 (2018-06-30)</a></h2>
|
||||
<div class="section" id="id10">
|
||||
<h2><a class="toc-backref" href="#id27">11.0.3.2.1 (2018-06-30)</a></h2>
|
||||
<ul class="simple">
|
||||
<li>[IMP] Support analytic tags in budget items
|
||||
(<a class="reference external" href="https://github.com/OCA/mis-builder/pull/100">#100</a>)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id10">
|
||||
<h2><a class="toc-backref" href="#id25">11.0.3.2.0 (2018-05-02)</a></h2>
|
||||
<div class="section" id="id12">
|
||||
<h2><a class="toc-backref" href="#id28">11.0.3.2.0 (2018-05-02)</a></h2>
|
||||
<ul class="simple">
|
||||
<li>[FIX] #NAME error in out-of-order computation of non
|
||||
budgetable items in budget columns
|
||||
(<a class="reference external" href="https://github.com/OCA/mis-builder/pull/69">#68</a>)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id12">
|
||||
<h2><a class="toc-backref" href="#id26">11.0.3.1.1 (2018-02-04)</a></h2>
|
||||
<div class="section" id="id14">
|
||||
<h2><a class="toc-backref" href="#id29">11.0.3.1.1 (2018-02-04)</a></h2>
|
||||
<p>Migration to Odoo 11. No new feature.
|
||||
(<a class="reference external" href="https://github.com/OCA/mis-builder/pull/67">#67</a>)</p>
|
||||
</div>
|
||||
<div class="section" id="id14">
|
||||
<h2><a class="toc-backref" href="#id27">10.0.3.1.0 (2017-11-14)</a></h2>
|
||||
<div class="section" id="id16">
|
||||
<h2><a class="toc-backref" href="#id30">10.0.3.1.0 (2017-11-14)</a></h2>
|
||||
<p>New features:</p>
|
||||
<ul class="simple">
|
||||
<li>[ADD] multi-company record rule for MIS Budgets
|
||||
(<a class="reference external" href="https://github.com/OCA/mis-builder/issues/27">#27</a>)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id16">
|
||||
<h2><a class="toc-backref" href="#id28">10.0.1.1.1 (2017-10-01)</a></h2>
|
||||
<div class="section" id="id18">
|
||||
<h2><a class="toc-backref" href="#id31">10.0.1.1.1 (2017-10-01)</a></h2>
|
||||
<p>First version.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="bug-tracker">
|
||||
<h1><a class="toc-backref" href="#id29">Bug Tracker</a></h1>
|
||||
<h1><a class="toc-backref" href="#id32">Bug Tracker</a></h1>
|
||||
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/mis-builder/issues">GitHub Issues</a>.
|
||||
In case of trouble, please check there if your issue has already been reported.
|
||||
If you spotted it first, help us smashing it by providing a detailed and welcomed
|
||||
<a class="reference external" href="https://github.com/OCA/mis-builder/issues/new?body=module:%20mis_builder_budget%0Aversion:%2013.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
|
||||
<a class="reference external" href="https://github.com/OCA/mis-builder/issues/new?body=module:%20mis_builder_budget%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
|
||||
<p>Do not contact contributors directly about support or help with technical issues.</p>
|
||||
</div>
|
||||
<div class="section" id="credits">
|
||||
<h1><a class="toc-backref" href="#id30">Credits</a></h1>
|
||||
<h1><a class="toc-backref" href="#id33">Credits</a></h1>
|
||||
<div class="section" id="authors">
|
||||
<h2><a class="toc-backref" href="#id31">Authors</a></h2>
|
||||
<h2><a class="toc-backref" href="#id34">Authors</a></h2>
|
||||
<ul class="simple">
|
||||
<li>ACSONE SA/NV</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="contributors">
|
||||
<h2><a class="toc-backref" href="#id32">Contributors</a></h2>
|
||||
<h2><a class="toc-backref" href="#id35">Contributors</a></h2>
|
||||
<ul class="simple">
|
||||
<li>Stéphane Bidoul <<a class="reference external" href="mailto:stephane.bidoul@acsone.eu">stephane.bidoul@acsone.eu</a>></li>
|
||||
<li>Adrien Peiffer <<a class="reference external" href="mailto:adrien.peiffer@acsone.eu">adrien.peiffer@acsone.eu</a>></li>
|
||||
@ -526,7 +534,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="maintainers">
|
||||
<h2><a class="toc-backref" href="#id33">Maintainers</a></h2>
|
||||
<h2><a class="toc-backref" href="#id36">Maintainers</a></h2>
|
||||
<p>This module is maintained by the OCA.</p>
|
||||
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
|
||||
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
|
||||
@ -534,7 +542,7 @@ mission is to support the collaborative development of Odoo features and
|
||||
promote its widespread use.</p>
|
||||
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
|
||||
<p><a class="reference external" href="https://github.com/sbidoul"><img alt="sbidoul" src="https://github.com/sbidoul.png?size=40px" /></a></p>
|
||||
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/mis-builder/tree/13.0/mis_builder_budget">OCA/mis-builder</a> project on GitHub.</p>
|
||||
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/mis-builder/tree/14.0/mis_builder_budget">OCA/mis-builder</a> project on GitHub.</p>
|
||||
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -14,13 +14,13 @@ MIS Builder Demo
|
||||
: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/13.0/mis_builder_demo
|
||||
:target: https://github.com/OCA/mis-builder/tree/14.0/mis_builder_demo
|
||||
: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-13-0/mis-builder-13-0-mis_builder_demo
|
||||
:target: https://translation.odoo-community.org/projects/mis-builder-14-0/mis-builder-14-0-mis_builder_demo
|
||||
:alt: Translate me on Weblate
|
||||
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
|
||||
:target: https://runbot.odoo-community.org/runbot/248/13.0
|
||||
:target: https://runbot.odoo-community.org/runbot/248/14.0
|
||||
:alt: Try me on Runbot
|
||||
|
||||
|badge1| |badge2| |badge3| |badge4| |badge5|
|
||||
@ -109,7 +109,7 @@ Bug Tracker
|
||||
Bugs are tracked on `GitHub Issues <https://github.com/OCA/mis-builder/issues>`_.
|
||||
In case of trouble, please check there if your issue has already been reported.
|
||||
If you spotted it first, help us smashing it by providing a detailed and welcomed
|
||||
`feedback <https://github.com/OCA/mis-builder/issues/new?body=module:%20mis_builder_demo%0Aversion:%2013.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
||||
`feedback <https://github.com/OCA/mis-builder/issues/new?body=module:%20mis_builder_demo%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
||||
|
||||
Do not contact contributors directly about support or help with technical issues.
|
||||
|
||||
@ -148,6 +148,6 @@ Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|
||||
|
||||
|maintainer-sbidoul|
|
||||
|
||||
This module is part of the `OCA/mis-builder <https://github.com/OCA/mis-builder/tree/13.0/mis_builder_demo>`_ project on GitHub.
|
||||
This module is part of the `OCA/mis-builder <https://github.com/OCA/mis-builder/tree/14.0/mis_builder_demo>`_ project on GitHub.
|
||||
|
||||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
@ -5,7 +5,7 @@
|
||||
"name": "MIS Builder Demo",
|
||||
"summary": """
|
||||
Demo addon for MIS Builder""",
|
||||
"version": "2.0.3.1.2",
|
||||
"version": "2.0.3.1.3",
|
||||
"license": "AGPL-3",
|
||||
"author": "ACSONE SA/NV, " "Odoo Community Association (OCA)",
|
||||
"website": "https://gitlab.com/flectra-community/mis-builder",
|
||||
@ -18,7 +18,7 @@
|
||||
"data/mis_budget.xml",
|
||||
"data/mis_report_instance.xml",
|
||||
],
|
||||
"installable": False,
|
||||
"installable": True,
|
||||
"maintainers": ["sbidoul"],
|
||||
"development_status": "Alpha",
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 13.0\n"
|
||||
"Project-Id-Version: Odoo Server 14.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
|
@ -81,7 +81,7 @@ CREATE OR REPLACE VIEW mis_committed_purchase AS (
|
||||
cur.date_start <= coalesce(ai.invoice_date, now()) and
|
||||
(cur.date_end is null or cur.date_end > coalesce(ai.invoice_date, now())))
|
||||
WHERE ai.state = 'draft'
|
||||
AND ai.type IN ('in_invoice', 'out_refund')
|
||||
AND ai.move_type IN ('in_invoice', 'out_refund')
|
||||
AND NOT ail.exclude_from_invoice_tab
|
||||
|
||||
UNION ALL
|
||||
@ -111,7 +111,7 @@ CREATE OR REPLACE VIEW mis_committed_purchase AS (
|
||||
cur.date_start <= coalesce(ai.invoice_date, now()) and
|
||||
(cur.date_end is null or cur.date_end > coalesce(ai.invoice_date, now())))
|
||||
WHERE ai.state = 'draft'
|
||||
AND ai.type IN ('out_invoice', 'in_refund')
|
||||
AND ai.move_type IN ('out_invoice', 'in_refund')
|
||||
AND NOT ail.exclude_from_invoice_tab
|
||||
|
||||
) AS mis_committed_purchase
|
||||
|
@ -367,7 +367,7 @@ ul.auto-toc {
|
||||
!! This file is generated by oca-gen-addon-readme !!
|
||||
!! changes will be overwritten. !!
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Alpha" src="https://img.shields.io/badge/maturity-Alpha-red.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/mis-builder/tree/13.0/mis_builder_demo"><img alt="OCA/mis-builder" src="https://img.shields.io/badge/github-OCA%2Fmis--builder-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/mis-builder-13-0/mis-builder-13-0-mis_builder_demo"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/248/13.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
|
||||
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Alpha" src="https://img.shields.io/badge/maturity-Alpha-red.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/mis-builder/tree/14.0/mis_builder_demo"><img alt="OCA/mis-builder" src="https://img.shields.io/badge/github-OCA%2Fmis--builder-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/mis-builder-14-0/mis-builder-14-0-mis_builder_demo"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/248/14.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
|
||||
<p>Demo addon for MIS Builder.</p>
|
||||
<div class="admonition important">
|
||||
<p class="first admonition-title">Important</p>
|
||||
@ -459,7 +459,7 @@ any compatibility guarantees. (<a class="reference external" href="https://githu
|
||||
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/mis-builder/issues">GitHub Issues</a>.
|
||||
In case of trouble, please check there if your issue has already been reported.
|
||||
If you spotted it first, help us smashing it by providing a detailed and welcomed
|
||||
<a class="reference external" href="https://github.com/OCA/mis-builder/issues/new?body=module:%20mis_builder_demo%0Aversion:%2013.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
|
||||
<a class="reference external" href="https://github.com/OCA/mis-builder/issues/new?body=module:%20mis_builder_demo%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
|
||||
<p>Do not contact contributors directly about support or help with technical issues.</p>
|
||||
</div>
|
||||
<div class="section" id="credits">
|
||||
@ -486,7 +486,7 @@ mission is to support the collaborative development of Odoo features and
|
||||
promote its widespread use.</p>
|
||||
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
|
||||
<p><a class="reference external" href="https://github.com/sbidoul"><img alt="sbidoul" src="https://github.com/sbidoul.png?size=40px" /></a></p>
|
||||
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/mis-builder/tree/13.0/mis_builder_demo">OCA/mis-builder</a> project on GitHub.</p>
|
||||
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/mis-builder/tree/14.0/mis_builder_demo">OCA/mis-builder</a> project on GitHub.</p>
|
||||
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
Loading…
Reference in New Issue
Block a user