diff --git a/one2many_mass_select_delete/README.rst b/one2many_mass_select_delete/README.rst new file mode 100644 index 000000000..37622e540 --- /dev/null +++ b/one2many_mass_select_delete/README.rst @@ -0,0 +1,26 @@ +===================================== +On2many Mass Select Delete Widget v10 +===================================== + +On2many Mass Select/Deselect Widget. + +Installation +============ +Just select it from available modules to install it, there is no need to extra installations. + +Configuration +============= + + + + +Features +======== +* Mass Selection. +* Mass Deletion. + +Credits +======= +Developer: Nilmar Shereef @ cybrosys, shereef@cybrosys.in + + diff --git a/one2many_mass_select_delete/__init__.py b/one2many_mass_select_delete/__init__.py new file mode 100644 index 000000000..3e9dd53e1 --- /dev/null +++ b/one2many_mass_select_delete/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2017-TODAY Cybrosys Technologies(). +# Author: Nilmar Shereef() +# you can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# It is forbidden to publish, distribute, sublicense, or sell copies +# of the Software or modified copies of the Software. +# +# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. +# If not, see . +# +############################################################################## diff --git a/one2many_mass_select_delete/__manifest__.py b/one2many_mass_select_delete/__manifest__.py new file mode 100644 index 000000000..233c0e57d --- /dev/null +++ b/one2many_mass_select_delete/__manifest__.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2017-TODAY Cybrosys Technologies(). +# Author: Nilmar Shereef() +# you can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# It is forbidden to publish, distribute, sublicense, or sell copies +# of the Software or modified copies of the Software. +# +# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. +# If not, see . +# +############################################################################## +{ + 'name': 'On2many Mass Select Delete Widget', + 'version': '10.0.1.0', + 'summary': """On2many Mass Select/Deselect Widget""", + 'description': """On2many Mass Select/ Deselect Widget""", + 'category': 'Tools', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['web'], + 'data': [ + 'views/web_assets.xml', + ], + 'qweb': [ + 'static/src/xml/widget_view.xml', + ], + 'images': ['static/description/banner.jpg'], + 'license': 'AGPL-3', + 'installable': True, + 'images': ['static/description/banner.jpg'], + 'auto_install': False, + 'application': False, +} diff --git a/one2many_mass_select_delete/static/description/after_delete.png b/one2many_mass_select_delete/static/description/after_delete.png new file mode 100644 index 000000000..2ab26dd2c Binary files /dev/null and b/one2many_mass_select_delete/static/description/after_delete.png differ diff --git a/one2many_mass_select_delete/static/description/after_select.png b/one2many_mass_select_delete/static/description/after_select.png new file mode 100644 index 000000000..bab90b192 Binary files /dev/null and b/one2many_mass_select_delete/static/description/after_select.png differ diff --git a/one2many_mass_select_delete/static/description/banner.jpg b/one2many_mass_select_delete/static/description/banner.jpg new file mode 100644 index 000000000..fe56a6290 Binary files /dev/null and b/one2many_mass_select_delete/static/description/banner.jpg differ diff --git a/one2many_mass_select_delete/static/description/cybro_logo.png b/one2many_mass_select_delete/static/description/cybro_logo.png new file mode 100644 index 000000000..bb309114c Binary files /dev/null and b/one2many_mass_select_delete/static/description/cybro_logo.png differ diff --git a/one2many_mass_select_delete/static/description/delete.png b/one2many_mass_select_delete/static/description/delete.png new file mode 100644 index 000000000..2fe812b4f Binary files /dev/null and b/one2many_mass_select_delete/static/description/delete.png differ diff --git a/one2many_mass_select_delete/static/description/icon.png b/one2many_mass_select_delete/static/description/icon.png new file mode 100644 index 000000000..8dc5929b0 Binary files /dev/null and b/one2many_mass_select_delete/static/description/icon.png differ diff --git a/one2many_mass_select_delete/static/description/index.html b/one2many_mass_select_delete/static/description/index.html new file mode 100644 index 000000000..418a69fc1 --- /dev/null +++ b/one2many_mass_select_delete/static/description/index.html @@ -0,0 +1,112 @@ +
+
+

On2many Mass Select/ Deselect Widget

+

Managing Multiple Selection/Deselection of One2many Fields

+

Cybrosys Technologies

+
+
+

Widgets For:

+
+ Mass Selection.
+ Mass Deletion.
+
+
+
+ +
+
+
+

Overview

+

+ If we want to Select/Deselect a few order lines from a lengthy Sale Order/Purchase Order (Case: 10+ Order lines), +We have two ways, individually delete orderline one by one from Purchase/Sale order or create a new order. +This module eliminates this issue by introducing a new widget "Mass Select/ Deselect Widget"; which can be used in +any One2Many fields to perform mass select/deselect. + widget="one2many_delete" +

+
+
+
+ +
+
+
+

+

Widget

+

+ We can see a new widget with two buttons and selection option for One2Many fields. +

+
+
+ +
+
+
+
+ +
+
+

Mass Selection

+
+ We can select the one or more lines and click on Select button. +
+ +
+ Before Selection +
+
+
+ +
+ After Selection +
+
+
+ +
+
+

Mass Deletion

+
+ We can select the one or more lines and click on Deselect button. +
+ +
+ Before Deletion +
+
+
+ +
+ After Deletion +
+
+
+ +
+

Need Any Help?

+ +
+ + + diff --git a/one2many_mass_select_delete/static/description/one2many.png b/one2many_mass_select_delete/static/description/one2many.png new file mode 100644 index 000000000..0193a4e3a Binary files /dev/null and b/one2many_mass_select_delete/static/description/one2many.png differ diff --git a/one2many_mass_select_delete/static/description/select.png b/one2many_mass_select_delete/static/description/select.png new file mode 100644 index 000000000..c59fd0774 Binary files /dev/null and b/one2many_mass_select_delete/static/description/select.png differ diff --git a/one2many_mass_select_delete/static/src/js/widget.js b/one2many_mass_select_delete/static/src/js/widget.js new file mode 100644 index 000000000..1738e1ec3 --- /dev/null +++ b/one2many_mass_select_delete/static/src/js/widget.js @@ -0,0 +1,120 @@ +odoo.define('web.one2many_mass_select_delete', function(require) { + "use strict"; + var Model = require('web.Model'); + var core = require('web.core'); + var delete_on2many = core.form_widget_registry.get('one2many'); + var _t = core._t; + + var One2manyDelete = delete_on2many.extend({ + template: 'One2manyDelete', + multi_selection: true, + + init: function() { + this._super.apply(this, arguments); + }, + + render_value: function () + { + this._super.apply(this, arguments); + var self=this; + if (this.get('readonly')) { + self.$('.mass_delete_buttons').hide(); + } + else{ + self.$('.mass_delete_buttons').show(); + } + self.$el.find(".button_mass_delete").click(function(){ + self.delete_selected_lines(); + }); + self.$el.find(".button_mass_select").click(function(){ + self.selected_lines(); + }); + }, + + delete_selected_lines: function() + { + var self = this; + var current_model = new Model(this.dataset.model); + var selected_lines = self.find_deleted_lines(); + if (selected_lines.length === 0) { + this.do_warn(_t("Please Select at least One Record.!")); + return false; + } + var w_response = confirm("Dou you want to delete.?"); + if (w_response) { + current_model.call('unlink', [selected_lines], {context: self.dataset.context}) + .then(function () { + window.location.reload() + }); + } + + }, + + selected_lines: function() + { + var self = this; + var current_model = new Model(this.dataset.model); + var select_lines = self.find_selected_lines(); + if (select_lines.length === 0) + { + this.do_warn(_t("Please Select at least One Record")); + return false; + } + var w_response = confirm("Dou You Want to Select"); + if (w_response) { + current_model.call('unlink', [select_lines], {context: self.dataset.context}) + .then(function (result) { + window.location.reload() + }); + } + }, + + find_deleted_lines: function () + { + var selected_list =[]; + this.$el.find('td.o_list_record_selector input:checked') + .closest('tr').each(function () { + selected_list.push(parseInt($(this).context.dataset.id)); + }); + return selected_list; + }, + + find_selected_lines: function () + { + var selected_list =[]; + var selected_list1 =[]; + var selected_list2 =[]; + this.$el.find('td.o_list_record_selector input:checked') + .closest('tr').each(function () { + selected_list.push(parseInt($(this).context.dataset.id)); + }); + if (selected_list.length != 0) { + this.$el.find('td.o_list_record_selector') + .closest('tr').each(function () { + selected_list1.push(parseInt($(this).context.dataset.id)); + }); + selected_list2 = selected_list1.filter(function (x) { + return selected_list.indexOf(x) < 0 + }); + } + return selected_list2; + }, + + process_modifiers: function () { + var self = this; + this._super(); + if (this.get('readonly')) { + self.$('.mass_delete_buttons').hide(); + } + else{ + self.$('.mass_delete_buttons').show(); + } + } + + }); + + core.form_widget_registry.add('one2many_delete', One2manyDelete); + return { + One2manyDelete: One2manyDelete + }; +}); diff --git a/one2many_mass_select_delete/static/src/xml/widget_view.xml b/one2many_mass_select_delete/static/src/xml/widget_view.xml new file mode 100644 index 000000000..e7db899f6 --- /dev/null +++ b/one2many_mass_select_delete/static/src/xml/widget_view.xml @@ -0,0 +1,12 @@ + + + +
+
+
+
+
+
+ diff --git a/one2many_mass_select_delete/views/web_assets.xml b/one2many_mass_select_delete/views/web_assets.xml new file mode 100644 index 000000000..77fed61f8 --- /dev/null +++ b/one2many_mass_select_delete/views/web_assets.xml @@ -0,0 +1,9 @@ + + + + +