diff --git a/account_move_line_search_extension/__init__.py b/account_move_line_search_extension/__init__.py new file mode 100644 index 000000000..5c63f6835 --- /dev/null +++ b/account_move_line_search_extension/__init__.py @@ -0,0 +1,22 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# +# Copyright (c) 2013 Noviat nv/sa (www.noviat.com). All rights reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + diff --git a/account_move_line_search_extension/__openerp__.py b/account_move_line_search_extension/__openerp__.py new file mode 100644 index 000000000..bf17872e2 --- /dev/null +++ b/account_move_line_search_extension/__openerp__.py @@ -0,0 +1,54 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# +# Copyright (c) 2013 Noviat nv/sa (www.noviat.com). All rights reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +{ + 'name': 'Journal Items Search Extension', + 'version': '0.1', + 'license': 'AGPL-3', + 'author': 'Noviat', + 'category' : 'Generic Modules', + 'description': """ +Journal Items Search Extension +============================== + +This module adds the 'Journal Items Search All' menu entry. + +This menu entry adds a number of search fields on top of the List View rows. +These fields can be used in combination with the Search window. + + """, + 'depends': ['account'], + 'data' : [ + 'account_view.xml', + ], + 'js': [ + 'static/src/js/account_move_line_search_extension.js', + ], + 'qweb' : [ + 'static/src/xml/account_move_line_search_extension.xml', + ], + 'css':[ + 'static/src/css/account_move_line_search_extension.css', + ], + 'installable': True, + 'auto_install': False, +} diff --git a/account_move_line_search_extension/account_view.xml b/account_move_line_search_extension/account_view.xml new file mode 100644 index 000000000..4dcbe197a --- /dev/null +++ b/account_move_line_search_extension/account_view.xml @@ -0,0 +1,22 @@ + + + + + + {'account_move_line_search_extension':1} + Journal Items Search All + account.move.line + + account_move_line_search_extension,form + + + + + diff --git a/account_move_line_search_extension/static/src/css/account_move_line_search_extension.css b/account_move_line_search_extension/static/src/css/account_move_line_search_extension.css new file mode 100644 index 000000000..812421790 --- /dev/null +++ b/account_move_line_search_extension/static/src/css/account_move_line_search_extension.css @@ -0,0 +1,5 @@ +.openerp .oe_form_char_section { + position: relative; + display: inline-block; +} + diff --git a/account_move_line_search_extension/static/src/img/icon.png b/account_move_line_search_extension/static/src/img/icon.png new file mode 100644 index 000000000..214166a26 Binary files /dev/null and b/account_move_line_search_extension/static/src/img/icon.png differ diff --git a/account_move_line_search_extension/static/src/js/account_move_line_search_extension.js b/account_move_line_search_extension/static/src/js/account_move_line_search_extension.js new file mode 100644 index 000000000..85e8a6a54 --- /dev/null +++ b/account_move_line_search_extension/static/src/js/account_move_line_search_extension.js @@ -0,0 +1,93 @@ +openerp.account_move_line_search_extension = function (instance) { + var _t = instance.web._t, + _lt = instance.web._lt; + var QWeb = instance.web.qweb; + + instance.account_move_line_search_extension = {}; + + instance.web.views.add('account_move_line_search_extension', 'instance.account_move_line_search_extension.ListSearchView'); + instance.account_move_line_search_extension.ListSearchView = instance.web.ListView.extend({ + + init: function() { + this._super.apply(this, arguments); + this.journals = []; + this.current_account = null; + this.current_partner = null; + this.current_journal = null; + this.current_period = null; + }, + + start:function(){ + var tmp = this._super.apply(this, arguments); + var self = this; + this.$el.parent().prepend(QWeb.render('AccountMoveLineSearchExtension', {widget: this})); + + this.$el.parent().find('.oe_account_select_account').change(function() { + self.current_account = this.value === '' ? null : this.value; + self.do_search(self.last_domain, self.last_context, self.last_group_by); + }); + this.$el.parent().find('.oe_account_select_partner').change(function() { + self.current_partner = this.value === '' ? null : this.value; + self.do_search(self.last_domain, self.last_context, self.last_group_by); + }); + this.$el.parent().find('.oe_account_select_journal').change(function() { + self.current_journal = this.value === '' ? null : parseInt(this.value); + //console.log('start, oasj, self.current_journal=', self.current_journal, 'self.last_domain=', self.last_domain, 'self.last_context=', self.last_context, 'self.last_group_by=', self.last_group_by); + self.do_search(self.last_domain, self.last_context, self.last_group_by); + }); + this.$el.parent().find('.oe_account_select_period').change(function() { + self.current_period = this.value === '' ? null : this.value; + self.do_search(self.last_domain, self.last_context, self.last_group_by); + }); + this.on('edit:after', this, function () { + self.$el.parent().find('.oe_account_select_account').attr('disabled', 'disabled'); + self.$el.parent().find('.oe_account_select_partner').attr('disabled', 'disabled'); + self.$el.parent().find('.oe_account_select_journal').attr('disabled', 'disabled'); + self.$el.parent().find('.oe_account_select_period').attr('disabled', 'disabled'); + }); + this.on('save:after cancel:after', this, function () { + self.$el.parent().find('.oe_account_select_account').removeAttr('disabled'); + self.$el.parent().find('.oe_account_select_partner').removeAttr('disabled'); + self.$el.parent().find('.oe_account_select_journal').removeAttr('disabled'); + self.$el.parent().find('.oe_account_select_period').removeAttr('disabled'); + }); + return tmp; + }, + + do_search: function(domain, context, group_by) { + var self = this; + this.last_domain = domain; + this.last_context = context; + this.last_group_by = group_by; + this.old_search = _.bind(this._super, this); + var aj_mod = new instance.web.Model('account.journal'); + return $.when(aj_mod.query(['name']).all().then(function(result) { + self.journals = result; + })).then(function () { + var o; + self.$el.parent().find('.oe_account_select_journal').children().remove().end(); + self.$el.parent().find('.oe_account_select_journal').append(new Option('', '')); + for (var i = 0;i < self.journals.length;i++){ + o = new Option(self.journals[i].name, self.journals[i].id); + if (self.journals[i].id === self.current_journal){ + $(o).attr('selected',true); + } + self.$el.parent().find('.oe_account_select_journal').append(o); + } + return self.search_by_selection(); + }); + }, + + search_by_selection: function() { + var self = this; + var domain = []; + if (self.current_account) domain.push(['account_id.code', 'ilike', self.current_account]); + if (self.current_partner) domain.push(['partner_id.name', 'ilike', self.current_partner],'|',['partner_id.parent_id','=',false],['partner_id.is_company','=',true]); + if (self.current_journal) domain.push(['journal_id', '=', self.current_journal]); + if (self.current_period) domain.push('|',['period_id.code', 'ilike', self.current_period],['period_id.name', 'ilike', self.current_period]); + //_.each(domain, function(x) {console.log('search_by_journal_period, domain_part = ', x)}); + return self.old_search(new instance.web.CompoundDomain(self.last_domain, domain), self.last_context, self.last_group_by); + }, + + }); +}; diff --git a/account_move_line_search_extension/static/src/xml/account_move_line_search_extension.xml b/account_move_line_search_extension/static/src/xml/account_move_line_search_extension.xml new file mode 100644 index 000000000..a22e1c7a8 --- /dev/null +++ b/account_move_line_search_extension/static/src/xml/account_move_line_search_extension.xml @@ -0,0 +1,29 @@ + + + + +
+
+

Account :

+ + +
+
+

Partner :

+ + +
+
+

Journal :

+ +
+
+

Period :

+ + +
+
+
+ +