diff --git a/mis_builder/models/mis_report_instance.py b/mis_builder/models/mis_report_instance.py index 9d06b7291..096ee1126 100644 --- a/mis_builder/models/mis_report_instance.py +++ b/mis_builder/models/mis_report_instance.py @@ -307,17 +307,22 @@ def _onchange_source(self): def _get_filter_domain_from_context(self): filters = [] mis_report_filters = self.env.context.get('mis_report_filters', {}) - for filter_name, values in mis_report_filters.items(): - if values: - value = values.get('value') + for filter_name, domain in mis_report_filters.items(): + if domain: + value = domain.get('value') + operator = domain.get('operator') if not value: continue - 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']])) + # Operator = 'all' when coming from JS widget + 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']])) + else: + filters.append((filter_name, operator, value)) return filters @api.multi @@ -607,10 +612,12 @@ def _add_analytic_filters_to_context(self, context): if self.analytic_account_id: context['mis_report_filters']['analytic_account_id'] = { 'value': self.analytic_account_id.id, + 'operator': 'all', } if self.analytic_tag_ids: context['mis_report_filters']['analytic_tag_ids'] = { 'value': self.analytic_tag_ids.ids, + 'operator': 'all', } @api.multi diff --git a/mis_builder/static/src/js/mis_report_widget.js b/mis_builder/static/src/js/mis_report_widget.js index ed4d5178d..616a8db5c 100644 --- a/mis_builder/static/src/js/mis_report_widget.js +++ b/mis_builder/static/src/js/mis_report_widget.js @@ -156,6 +156,7 @@ odoo.define('mis_builder.widget', function (require) { self.init_filter(attr_name); self.filter_values[attr_name]['value'] = field_object.get_value() || undefined; + self.filter_values[attr_name]['operator'] = 'all'; }, set_filter_operator: function(operator, attr_name) { @@ -209,7 +210,7 @@ odoo.define('mis_builder.widget', function (require) { }, }); self.init_filter_value(analytic_account_id_m2o, field_name); - analytic_account_id_m2o.prependTo(self.get_mis_builder_filter_box()); + analytic_account_id_m2o.appendTo(self.$("#analytic_account")); analytic_account_id_m2o.$input.focusout(function () { self.set_filter_value(analytic_account_id_m2o, field_name); }); @@ -246,7 +247,7 @@ odoo.define('mis_builder.widget', function (require) { }, }); self.init_filter_value(analytic_tag_ids_m2m, field_name); - analytic_tag_ids_m2m.prependTo(self.get_mis_builder_filter_box()); + analytic_tag_ids_m2m.appendTo(self.$("#analytic_tags")); analytic_tag_ids_m2m.on("change:value", this, function () { self.set_filter_value(analytic_tag_ids_m2m, field_name); }); @@ -316,10 +317,6 @@ odoo.define('mis_builder.widget', function (require) { }); }, - get_mis_builder_filter_box: function () { - var self = this; - return self.$(".oe_mis_builder_analytic_filter_box"); - }, }); core.form_widget_registry.add('mis_report_widget', MisReportWidget); diff --git a/mis_builder/static/src/xml/mis_report_widget.xml b/mis_builder/static/src/xml/mis_report_widget.xml index f8ddbb335..7cde34bfc 100644 --- a/mis_builder/static/src/xml/mis_report_widget.xml +++ b/mis_builder/static/src/xml/mis_report_widget.xml @@ -5,7 +5,10 @@

-
+
+
+
+