@ -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 | 
				
			|||
============= | 
				
			|||
 | 
				
			|||
<field name="order_lines" widget="one2many_delete"> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
Features | 
				
			|||
======== | 
				
			|||
* Mass Selection. | 
				
			|||
* Mass Deletion. | 
				
			|||
 | 
				
			|||
Credits | 
				
			|||
======= | 
				
			|||
Developer: Nilmar Shereef @ cybrosys, shereef@cybrosys.in | 
				
			|||
 | 
				
			|||
 | 
				
			|||
@ -0,0 +1,22 @@ | 
				
			|||
# -*- coding: utf-8 -*- | 
				
			|||
############################################################################## | 
				
			|||
# | 
				
			|||
#    Cybrosys Technologies Pvt. Ltd. | 
				
			|||
#    Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>). | 
				
			|||
#    Author: Nilmar Shereef(<https://www.cybrosys.com>) | 
				
			|||
#    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 <http://www.gnu.org/licenses/>. | 
				
			|||
# | 
				
			|||
############################################################################## | 
				
			|||
@ -0,0 +1,46 @@ | 
				
			|||
# -*- coding: utf-8 -*- | 
				
			|||
############################################################################## | 
				
			|||
# | 
				
			|||
#    Cybrosys Technologies Pvt. Ltd. | 
				
			|||
#    Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>). | 
				
			|||
#    Author: Nilmar Shereef(<https://www.cybrosys.com>) | 
				
			|||
#    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 <http://www.gnu.org/licenses/>. | 
				
			|||
# | 
				
			|||
############################################################################## | 
				
			|||
{ | 
				
			|||
    '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, | 
				
			|||
} | 
				
			|||
| 
		 After Width: | Height: | Size: 5.4 KiB  | 
| 
		 After Width: | Height: | Size: 7.2 KiB  | 
| 
		 After Width: | Height: | Size: 94 KiB  | 
| 
		 After Width: | Height: | Size: 50 KiB  | 
| 
		 After Width: | Height: | Size: 7.1 KiB  | 
| 
		 After Width: | Height: | Size: 32 KiB  | 
@ -0,0 +1,112 @@ | 
				
			|||
<section class="oe_container"> | 
				
			|||
    <div class="oe_row oe_spaced"> | 
				
			|||
        <h2 class="oe_slogan">On2many Mass Select/ Deselect Widget</h2> | 
				
			|||
        <h3 class="oe_slogan">Managing Multiple Selection/Deselection of One2many Fields</h3> | 
				
			|||
        <h4 class="oe_slogan"><a href="https://www.cybrosys.com">Cybrosys Technologies</a> </h4> | 
				
			|||
    </div> | 
				
			|||
    <div class="oe_row oe_spaced" style="padding-left:65px;"> | 
				
			|||
        <h4>Widgets For:</h4> | 
				
			|||
        <div> | 
				
			|||
            <span style="color:green;"> ☑ </span> Mass Selection.<br/> | 
				
			|||
            <span style="color:green;"> ☑ </span> Mass Deletion.<br/> | 
				
			|||
        </div> | 
				
			|||
    </div> | 
				
			|||
</section> | 
				
			|||
 | 
				
			|||
<section class="oe_container oe_dark"> | 
				
			|||
    <div class="oe_row oe_spaced"> | 
				
			|||
        <div class="oe_picture"> | 
				
			|||
            <h3 class="oe_slogan">Overview</h3> | 
				
			|||
            <p class="oe_mt32" style="text-align: justify;"> | 
				
			|||
                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. | 
				
			|||
    <b><i>widget="one2many_delete"</i></b> | 
				
			|||
            </p> | 
				
			|||
        </div> | 
				
			|||
    </div> | 
				
			|||
</section> | 
				
			|||
 | 
				
			|||
<section class="oe_container"> | 
				
			|||
    <div class="oe_row oe_spaced"> | 
				
			|||
        <div style="text-align: center"> | 
				
			|||
            <p> | 
				
			|||
                <h4>Widget</h4> | 
				
			|||
            <p> | 
				
			|||
            <span>We can see a new widget with two buttons and selection option for One2Many fields.</span> | 
				
			|||
        </div> | 
				
			|||
        <div style="text-align: center"> | 
				
			|||
            <div class="oe_demo oe_picture oe_screenshot"> | 
				
			|||
                <img style="border:10px solid white;" src="one2many.png"> | 
				
			|||
            </div> | 
				
			|||
        </div> | 
				
			|||
    </div> | 
				
			|||
</section> | 
				
			|||
 | 
				
			|||
<section class="oe_container oe_dark"> | 
				
			|||
    <div class="oe_row oe_spaced"> | 
				
			|||
        <h3 class="oe_slogan">Mass Selection</h3> | 
				
			|||
        <div style="text-align: center"> | 
				
			|||
            <span >We can select the one or more lines and click on Select button.</span> | 
				
			|||
            <div class="oe_demo oe_picture oe_screenshot"> | 
				
			|||
                <img style="border:10px solid white;" src="select.png"> | 
				
			|||
            </div> | 
				
			|||
            <span>Before Selection</span> | 
				
			|||
        </div> | 
				
			|||
        <div style="text-align: center"> | 
				
			|||
            <div class="oe_demo oe_picture oe_screenshot"> | 
				
			|||
                <img style="border:10px solid white;" src="after_select.png"> | 
				
			|||
            </div> | 
				
			|||
            <span>After Selection</span> | 
				
			|||
        </div> | 
				
			|||
    </div> | 
				
			|||
</section> | 
				
			|||
 | 
				
			|||
<section class="oe_container"> | 
				
			|||
    <div class="oe_row oe_spaced"> | 
				
			|||
        <h3 class="oe_slogan">Mass Deletion</h3> | 
				
			|||
        <div style="text-align: center"> | 
				
			|||
            <span >We can select the one or more lines and click on Deselect button.</span> | 
				
			|||
            <div class="oe_demo oe_picture oe_screenshot"> | 
				
			|||
                <img style="border:10px solid white;" src="delete.png"> | 
				
			|||
            </div> | 
				
			|||
            <span>Before Deletion</span> | 
				
			|||
        </div> | 
				
			|||
        <div style="text-align: center"> | 
				
			|||
            <div class="oe_demo oe_picture oe_screenshot"> | 
				
			|||
                <img style="border:10px solid white;" src="after_delete.png"> | 
				
			|||
            </div> | 
				
			|||
            <span>After Deletion</span> | 
				
			|||
        </div> | 
				
			|||
    </div> | 
				
			|||
</section> | 
				
			|||
 | 
				
			|||
<section class="oe_container oe_dark"> | 
				
			|||
    <h2 class="oe_slogan" style="margin-top:20px;" >Need Any Help?</h2> | 
				
			|||
    <div class="oe_slogan" style="margin-top:10px !important;"> | 
				
			|||
        <div> | 
				
			|||
            <a  class="btn btn-primary btn-lg mt8" | 
				
			|||
            style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com"><i | 
				
			|||
            class="fa fa-envelope"></i> Email </a> <a | 
				
			|||
            class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" | 
				
			|||
            href="https://www.cybrosys.com/contact/"><i | 
				
			|||
            class="fa fa-phone"></i> Contact Us </a> <a | 
				
			|||
            class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" | 
				
			|||
            href="https://www.cybrosys.com/odoo-customization-and-installation/"><i | 
				
			|||
            class="fa fa-check-square"></i> Request Customization </a> | 
				
			|||
        </div> | 
				
			|||
        <br> | 
				
			|||
        <img src="cybro_logo.png" style="width: 190px; margin-bottom: 20px;" class="center-block"> | 
				
			|||
        <div> | 
				
			|||
          <a href="https://twitter.com/cybrosys" target="_blank"><i class="fa fa-2x fa-twitter" style="color:white;background: #00a0d1;width:35px;"></i></a></td> | 
				
			|||
          <a href="https://www.linkedin.com/company/cybrosys-technologies-pvt-ltd" target="_blank"><i class="fa fa-2x fa-linkedin" style="color:white;background: #31a3d6;width:35px;padding-left: 3px;"></i></a></td> | 
				
			|||
          <a href="https://www.facebook.com/cybrosystechnologies" target="_blank"><i class="fa fa-2x fa-facebook" style="color:white;background: #3b5998;width:35px;padding-left: 8px;"></i></a></td> | 
				
			|||
          <a href="https://plus.google.com/106641282743045431892/about" target="_blank"><i class="fa fa-2x fa-google-plus" style="color:white;background: #c53c2c;width:35px;padding-left: 3px;"></i></a></td> | 
				
			|||
          <a href="https://in.pinterest.com/cybrosys" target="_blank"><i class="fa fa-2x fa-pinterest" style="color:white;background: #ac0f18;width:35px;padding-left: 3px;"></i></a></td> | 
				
			|||
        </div> | 
				
			|||
    </div> | 
				
			|||
</section> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
 | 
				
			|||
| 
		 After Width: | Height: | Size: 11 KiB  | 
| 
		 After Width: | Height: | Size: 11 KiB  | 
@ -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 | 
				
			|||
    }; | 
				
			|||
}); | 
				
			|||
@ -0,0 +1,12 @@ | 
				
			|||
<?xml version="1.0" encoding="UTF-8"?> | 
				
			|||
<templates id="template" xml:space="preserve"> | 
				
			|||
    <t t-name="One2manyDelete"> | 
				
			|||
		<div> | 
				
			|||
			<div class="mass_delete_buttons" style="padding-left:746px;" > | 
				
			|||
				<button class="btn button_mass_delete fa fa-trash oe_highlight"/> | 
				
			|||
				<button class="btn button_mass_select fa fa-check oe_highlight"/> | 
				
			|||
			</div> | 
				
			|||
		</div> | 
				
			|||
    </t> | 
				
			|||
</templates> | 
				
			|||
 | 
				
			|||
@ -0,0 +1,9 @@ | 
				
			|||
<?xml version="1.0" encoding="UTF-8"?> | 
				
			|||
<odoo> | 
				
			|||
    <template id="assets_backend" name="one2many_mass_select_delete one2many_delete" inherit_id="web.assets_backend"> | 
				
			|||
        <xpath expr="." position="inside"> | 
				
			|||
            <script type="text/javascript" src="/one2many_mass_select_delete/static/src/js/widget.js"></script> | 
				
			|||
        </xpath> | 
				
			|||
    </template> | 
				
			|||
</odoo> | 
				
			|||
 | 
				
			|||