diff --git a/l10n_be_intrastat_product/__manifest__.py b/l10n_be_intrastat_product/__manifest__.py
index d0111b40..28597049 100644
--- a/l10n_be_intrastat_product/__manifest__.py
+++ b/l10n_be_intrastat_product/__manifest__.py
@@ -3,7 +3,7 @@
{
'name': 'Intrastat Product Declaration for Belgium',
- 'version': '11.0.1.1.0',
+ 'version': '11.0.1.1.1',
'category': 'Intrastat',
'license': 'AGPL-3',
'summary': 'Intrastat Product Declaration for Belgium',
diff --git a/l10n_be_intrastat_product/models/l10n_be_intrastat_product_declaration.py b/l10n_be_intrastat_product/models/l10n_be_intrastat_product_declaration.py
index 0769214c..b51afd9e 100644
--- a/l10n_be_intrastat_product/models/l10n_be_intrastat_product_declaration.py
+++ b/l10n_be_intrastat_product/models/l10n_be_intrastat_product_declaration.py
@@ -3,9 +3,12 @@
from odoo import api, fields, models, _
from odoo.exceptions import UserError, RedirectWarning
+from odoo.addons.report_xlsx_helper.report.report_xlsx_abstract \
+ import ReportXlsxAbstract
from lxml import etree
import logging
+_render = ReportXlsxAbstract._render
_logger = logging.getLogger(__name__)
_INTRASTAT_XMLNS = 'http://www.onegate.eu/2010-01-01'
@@ -335,6 +338,38 @@ def _generate_xml(self):
)
return xml_string
+ def _xls_computation_line_fields(self):
+ res = super()._xls_computation_line_fields()
+ i = res.index('product_origin_country')
+ if self.type == 'dispatches':
+ res.insert(i + 1, 'vat_number')
+ else:
+ res.pop(i)
+ return res
+
+ def _xls_declaration_line_fields(self):
+ res = super()._xls_declaration_line_fields()
+ if self.type == 'dispatches':
+ i = res.index('hs_code')
+ res.insert(i + 1, 'vat_number')
+ res.insert(i + 1, 'product_origin_country')
+ return res
+
+ def _xls_template(self):
+ res = super()._xls_template()
+ res['vat_number'] = {
+ 'header': {
+ 'type': 'string',
+ 'value': _('VAT Number'),
+ },
+ 'line': {
+ 'value': _render(
+ "line.vat_number or ''"),
+ },
+ 'width': 18,
+ }
+ return res
+
class L10nBeIntrastatProductComputationLine(models.Model):
_name = 'l10n.be.intrastat.product.computation.line'
diff --git a/l10n_be_intrastat_product/views/l10n_be_intrastat_product.xml b/l10n_be_intrastat_product/views/l10n_be_intrastat_product.xml
index 79a1f4ec..f13f9c71 100644
--- a/l10n_be_intrastat_product/views/l10n_be_intrastat_product.xml
+++ b/l10n_be_intrastat_product/views/l10n_be_intrastat_product.xml
@@ -11,7 +11,11 @@
- 1/>
+ 1
+
+
+
+ {'invisible': [('type', '=', 'arrivals')]}
@@ -32,8 +36,31 @@
+
+
+
+ {'column_invisible': [('parent.type', '=', 'arrivals')]}
+
+
+
+
- 1/>
+ 1
@@ -44,6 +71,10 @@
primary
+
+
+ {'invisible': [('type', '=', 'arrivals')]}
+
@@ -63,8 +94,28 @@
primary
+
+
+
+ {'column_invisible': [('parent.type', '=', 'arrivals')]}
+
+
+
diff --git a/web_column_invisible_fix/README.rst b/web_column_invisible_fix/README.rst
new file mode 100644
index 00000000..69a7fd7a
--- /dev/null
+++ b/web_column_invisible_fix/README.rst
@@ -0,0 +1,13 @@
+.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png
+ :target: https://www.gnu.org/licenses/agpl
+ :alt: License: AGPL-3
+
+==========================
+Web 'column_invisible' fix
+==========================
+
+The 'column_invisible' modifier doesn't work for O2M fields
+where the tree view is not embedded in the form view.
+
+We have created a PR (cf. https://github.com/odoo/odoo/pull/30982) which fixes this limitation.
+Until this PR is merged by Odoo we recommend to install the web_column_invisible_fix module.
diff --git a/web_column_invisible_fix/__init__.py b/web_column_invisible_fix/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/web_column_invisible_fix/__manifest__.py b/web_column_invisible_fix/__manifest__.py
new file mode 100644
index 00000000..8151cd40
--- /dev/null
+++ b/web_column_invisible_fix/__manifest__.py
@@ -0,0 +1,16 @@
+# Copyright 2019 Noviat.
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+{
+ 'name': "Web 'column_invisible' fix",
+ 'version': '11.0.1.0.0',
+ 'license': 'AGPL-3',
+ 'author': 'Noviat',
+ 'website': 'http://www.noviat.com',
+ 'category': 'Web',
+ 'depends': ['web'],
+ 'data': [
+ 'views/assets_backend.xml',
+ ],
+ 'installable': True,
+}
diff --git a/web_column_invisible_fix/static/description/icon.png b/web_column_invisible_fix/static/description/icon.png
new file mode 100644
index 00000000..32740c0c
Binary files /dev/null and b/web_column_invisible_fix/static/description/icon.png differ
diff --git a/web_column_invisible_fix/static/src/js/relational_fields.js b/web_column_invisible_fix/static/src/js/relational_fields.js
new file mode 100644
index 00000000..34b619d0
--- /dev/null
+++ b/web_column_invisible_fix/static/src/js/relational_fields.js
@@ -0,0 +1,36 @@
+/* Copyright 2019 Noviat (www.noviat.com) */
+
+odoo.define("web_column_invisible_fix.relational_fields", function (require) {
+ "use strict";
+
+ var relational_fields = require('web.relational_fields');
+
+ relational_fields.FieldOne2Many.include({
+
+ init: function () {
+ var self = this;
+ this._super.apply(this, arguments);
+ var todo = false;
+ var arch = this.view && this.view.arch;
+ if (arch) {
+ /*
+ Set columnInvisibleFields which have not been set before.
+ This is the case for O2M fields where the tree view is not embedded in the form view.
+ */
+ if (typeof this.attrs.columnInvisibleFields === "undefined") {
+ this.attrs.columnInvisibleFields = {};
+ _.each(arch.children, function (child) {
+ if (child.attrs && child.attrs.modifiers && child.attrs.modifiers.column_invisible) {
+ self.attrs.columnInvisibleFields[child.attrs.name] = child.attrs.modifiers.column_invisible;
+ todo = true;
+ };
+ });
+ };
+ };
+ if (todo) {
+ this._processColumnInvisibleFields();
+ };
+ },
+ });
+
+});
diff --git a/web_column_invisible_fix/views/assets_backend.xml b/web_column_invisible_fix/views/assets_backend.xml
new file mode 100644
index 00000000..c8e47fb9
--- /dev/null
+++ b/web_column_invisible_fix/views/assets_backend.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file