|  | @@ -0,0 +1,263 @@
 | 
	
		
			
				|  |  | +$(document).ready(function () {
 | 
	
		
			
				|  |  | +function malformedJSON2Array (tar) {   
 | 
	
		
			
				|  |  | +    var dict = {}
 | 
	
		
			
				|  |  | +    tar = tar.replace(/^\{|\}$/g,'').split(',');
 | 
	
		
			
				|  |  | +    for(var i=0,cur,pair;cur=tar[i];i++){
 | 
	
		
			
				|  |  | +        var pair = cur.split(':');
 | 
	
		
			
				|  |  | +        dict[pair[0].trim()] = pair[1].trim();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    return dict;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$('.oe_website_sale').each(function () {
 | 
	
		
			
				|  |  | +    var oe_website_sale = this;
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +    $(oe_website_sale).find('#cart_products').find('tbody tr').each(function () {
 | 
	
		
			
				|  |  | +        var prod = $(this).find('strong').text();
 | 
	
		
			
				|  |  | +        stock = $(this).find('#stock_available_line').text();
 | 
	
		
			
				|  |  | +        value = parseInt($(this).find('input.js_quantity').val(), 10);
 | 
	
		
			
				|  |  | +        if(value>parseInt(stock))
 | 
	
		
			
				|  |  | +    {        
 | 
	
		
			
				|  |  | +        showDialog('Error','You can\'t enter more than Available Quanity ('+parseInt(stock)+' for product : '+prod+') .','error',5);
 | 
	
		
			
				|  |  | +        $( "div.oe_cart a.btn-primary" ).addClass("disabled");        
 | 
	
		
			
				|  |  | +        return false;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    else
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        $( "div.oe_cart a.btn-primary" ).removeClass("disabled");
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +    $( "input[name='add_qty']" ).addClass('tooltipt');
 | 
	
		
			
				|  |  | +    var stock = $( "span[name='stock_available']" ).text();
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +    if(stock!='' && stock !=NaN && stock!=undefined)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        if(stock<=0)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +             $( ".fa-plus" ).addClass('hidden');
 | 
	
		
			
				|  |  | +             $( ".fa-minus" ).addClass("hidden");
 | 
	
		
			
				|  |  | +             $( "input[name='add_qty']" ).prop("readonly",true);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        else{
 | 
	
		
			
				|  |  | +            $( "i.fa-plus" ).removeClass("hidden");
 | 
	
		
			
				|  |  | +            $( "i.fa-minus" ).removeClass("hidden");
 | 
	
		
			
				|  |  | +            $( "input[name='add_qty']" ).prop("readonly",false);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | + $(oe_website_sale).on("change", "div.css_quantity input.js_quantity", function () {
 | 
	
		
			
				|  |  | +        var $input = $(this);
 | 
	
		
			
				|  |  | +        var value = parseInt($input.val(), 10);
 | 
	
		
			
				|  |  | +        var stock = $( "span[name='stock_available']" ).text();
 | 
	
		
			
				|  |  | +        var variant_qty = $( "#qty_avail_variant" ).attr('value');
 | 
	
		
			
				|  |  | +	  if(variant_qty==undefined){    
 | 
	
		
			
				|  |  | +	    if(value>stock)
 | 
	
		
			
				|  |  | +	    {        
 | 
	
		
			
				|  |  | +		showDialog('Error','You can\'t enter more than Available Quanity ('+parseInt(stock)+').','error',4);
 | 
	
		
			
				|  |  | +		$( "#add_to_cart" ).addClass("disabled");
 | 
	
		
			
				|  |  | +	    }
 | 
	
		
			
				|  |  | +	    else
 | 
	
		
			
				|  |  | +	    {
 | 
	
		
			
				|  |  | +		$( "#add_to_cart" ).removeClass("disabled");
 | 
	
		
			
				|  |  | +	    }
 | 
	
		
			
				|  |  | +	  }
 | 
	
		
			
				|  |  | +	    
 | 
	
		
			
				|  |  | +	    if(variant_qty!=undefined){
 | 
	
		
			
				|  |  | +		if(variant_qty>0){
 | 
	
		
			
				|  |  | +		    if(value>variant_qty)
 | 
	
		
			
				|  |  | +		    {     
 | 
	
		
			
				|  |  | +			showDialog('Error','You can\'t enter more than Available Quanity ('+parseInt(variant_qty)+').','error',4);
 | 
	
		
			
				|  |  | +			$( "#add_to_cart" ).addClass("disabled");
 | 
	
		
			
				|  |  | +		    }
 | 
	
		
			
				|  |  | +		    else
 | 
	
		
			
				|  |  | +		    {
 | 
	
		
			
				|  |  | +			$( "#add_to_cart" ).removeClass("disabled");
 | 
	
		
			
				|  |  | +		    }
 | 
	
		
			
				|  |  | +		  }
 | 
	
		
			
				|  |  | +		  else if(variant_qty<=0){
 | 
	
		
			
				|  |  | +		    $( "#add_to_cart" ).addClass("disabled");    
 | 
	
		
			
				|  |  | +		  }
 | 
	
		
			
				|  |  | +	    }
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +  });  
 | 
	
		
			
				|  |  | +  
 | 
	
		
			
				|  |  | +$(oe_website_sale).on("change", "table#cart_products input.js_quantity", function () {
 | 
	
		
			
				|  |  | +        var $input = $(this);
 | 
	
		
			
				|  |  | +        var value = parseInt($input.val(), 10);
 | 
	
		
			
				|  |  | +        var line_id = parseInt($input.data('line-id'),10);
 | 
	
		
			
				|  |  | +        var product_id = parseInt($input.data('product-id'),10);
 | 
	
		
			
				|  |  | +        var stock = $( "span[name='stock_available_line'][data-line-id="+line_id+"]" ).text();
 | 
	
		
			
				|  |  | +        if(value>stock)
 | 
	
		
			
				|  |  | +    {        
 | 
	
		
			
				|  |  | +        showDialog('Error','You can\'t enter more than Available Quanity ('+parseInt(stock)+').','error',4);
 | 
	
		
			
				|  |  | +        $( "div.oe_cart a.btn-primary" ).addClass("disabled");
 | 
	
		
			
				|  |  | +        return false;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    else
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        $( "div.oe_cart a.btn-primary" ).removeClass("disabled");
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    $input.closest('#cart_products').find('tbody tr').each(function () {
 | 
	
		
			
				|  |  | +        var prod = $(this).find('strong').text();
 | 
	
		
			
				|  |  | +        stock = $(this).find('#stock_available_line').text();
 | 
	
		
			
				|  |  | +        value = parseInt($(this).find('input.js_quantity').val(), 10);
 | 
	
		
			
				|  |  | +        if(value>parseInt(stock))
 | 
	
		
			
				|  |  | +    {        
 | 
	
		
			
				|  |  | +        showDialog('Error','You can\'t enter more than Available Quanity ('+parseInt(stock)+' for product : '+prod+') .','error',5);
 | 
	
		
			
				|  |  | +        $( "div.oe_cart a.btn-primary" ).addClass("disabled");
 | 
	
		
			
				|  |  | +        return false;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    else
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        $( "div.oe_cart a.btn-primary" ).removeClass("disabled");
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +  $('div.oe_cart a.btn-primary', oe_website_sale).off('click').on('click', function () {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  $(oe_website_sale).find('#cart_products').find('tbody tr').each(function () {
 | 
	
		
			
				|  |  | +        var prod = $(this).find('strong').text();
 | 
	
		
			
				|  |  | +        stock = $(this).find('#stock_available_line').text();
 | 
	
		
			
				|  |  | +        value = parseInt($(this).find('input.js_quantity').val(), 10);
 | 
	
		
			
				|  |  | +        if(value>parseInt(stock))
 | 
	
		
			
				|  |  | +    {        
 | 
	
		
			
				|  |  | +        showDialog('Error','You can\'t enter more than Available Quanity ('+parseInt(stock)+' for product : '+prod+') .','error',5);
 | 
	
		
			
				|  |  | +        $( "div.oe_cart a.btn-primary" ).addClass("disabled");        
 | 
	
		
			
				|  |  | +        return false;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    else
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        $( "div.oe_cart a.btn-primary" ).removeClass("disabled");
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +      
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +  
 | 
	
		
			
				|  |  | +    $(oe_website_sale).on('change', 'input.js_variant_change, select.js_variant_change', function (ev) {
 | 
	
		
			
				|  |  | +        var $ul = $(this).parents('ul.js_add_cart_variants:first');
 | 
	
		
			
				|  |  | +        var $parent = $ul.closest('.js_product');
 | 
	
		
			
				|  |  | +        var $product_id = $parent.find('input.product_id').first();
 | 
	
		
			
				|  |  | +        var $price = $parent.find(".oe_price:first .oe_currency_value");
 | 
	
		
			
				|  |  | +        var $default_price = $parent.find(".oe_default_price:first .oe_currency_value");
 | 
	
		
			
				|  |  | +        var variant_ids = $ul.data("attribute_value_ids");
 | 
	
		
			
				|  |  | +        var values = [];
 | 
	
		
			
				|  |  | +        $parent.find('input.js_variant_change:checked, select.js_variant_change').each(function () {
 | 
	
		
			
				|  |  | +            values.push(+$(this).val());
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        $parent.find("label").removeClass("text-muted css_not_available");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        var product_id = false;
 | 
	
		
			
				|  |  | +        var product_qty = false;
 | 
	
		
			
				|  |  | +        for (var k in variant_ids) {
 | 
	
		
			
				|  |  | +            if (_.isEmpty(_.difference(variant_ids[k][1], values))) {                
 | 
	
		
			
				|  |  | +                product_id = variant_ids[k][0];
 | 
	
		
			
				|  |  | +                product_qty = variant_ids[k][4];                
 | 
	
		
			
				|  |  | +                //$( "#prod_variant_id" ).attr('value', product_id);  
 | 
	
		
			
				|  |  | +                //$( "#prod_variant_id" ).text(product_id);   
 | 
	
		
			
				|  |  | +                break;
 | 
	
		
			
				|  |  | +            }            
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +        var $input_qty = $( "input[name='add_qty']" );
 | 
	
		
			
				|  |  | +        $input_qty.val(1);
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +        $( "div.stock_label_div" ).addClass("hidden");
 | 
	
		
			
				|  |  | +        $( "div.stock_label_variant_in" ).addClass("hidden"); 
 | 
	
		
			
				|  |  | +        $( "div.stock_label_variant_out" ).addClass("hidden"); 
 | 
	
		
			
				|  |  | +        if (product_id) {
 | 
	
		
			
				|  |  | +        if(product_qty<=0){
 | 
	
		
			
				|  |  | +            $( "div.stock_label_variant_out" ).removeClass("hidden");
 | 
	
		
			
				|  |  | +            $( "div.stock_label_variant_in" ).addClass("hidden"); 
 | 
	
		
			
				|  |  | +            $( "#qty_avail_variant" ).attr('value', product_qty);
 | 
	
		
			
				|  |  | +            $( "#qty_avail_variant" ).text(product_qty);   
 | 
	
		
			
				|  |  | +            $( "#add_to_cart" ).addClass("disabled"); 
 | 
	
		
			
				|  |  | +            $( ".fa-plus" ).addClass('hidden');
 | 
	
		
			
				|  |  | +            $( ".fa-minus" ).addClass("hidden");
 | 
	
		
			
				|  |  | +            $( "input[name='add_qty']" ).prop("readonly",true);
 | 
	
		
			
				|  |  | +            
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        if(product_qty>0){
 | 
	
		
			
				|  |  | +            $( "div.stock_label_variant_in" ).removeClass("hidden"); 
 | 
	
		
			
				|  |  | +            $( "div.stock_label_variant_out" ).addClass("hidden"); 
 | 
	
		
			
				|  |  | +            $( "#qty_avail_variant" ).attr('value', product_qty);  
 | 
	
		
			
				|  |  | +            $( "#qty_avail_variant" ).text(product_qty);
 | 
	
		
			
				|  |  | +            $( "#add_to_cart" ).removeClass("disabled");
 | 
	
		
			
				|  |  | +            $( "i.fa-plus" ).removeClass("hidden");
 | 
	
		
			
				|  |  | +            $( "i.fa-minus" ).removeClass("hidden");
 | 
	
		
			
				|  |  | +            $( "input[name='add_qty']" ).prop("readonly",false);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }    
 | 
	
		
			
				|  |  | +     if (product_id) {
 | 
	
		
			
				|  |  | +            var $img = $(this).closest('tr.js_product, .oe_website_sale').find('span[data-oe-model^="product."][data-oe-type="image"] img:first, img.product_detail_img');
 | 
	
		
			
				|  |  | +            $img.attr("src", "/website/image/product.product/" + product_id + "/image");
 | 
	
		
			
				|  |  | +            $img.parent().attr('data-oe-model', 'product.product').attr('data-oe-id', product_id)
 | 
	
		
			
				|  |  | +                .data('oe-model', 'product.product').data('oe-id', product_id);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        $parent.find("input.js_variant_change:radio, select.js_variant_change").each(function () {
 | 
	
		
			
				|  |  | +            var $input = $(this);
 | 
	
		
			
				|  |  | +            var id = +$input.val();
 | 
	
		
			
				|  |  | +            var values = [id];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            $parent.find("ul:not(:has(input.js_variant_change[value='" + id + "'])) input.js_variant_change:checked, select").each(function () {
 | 
	
		
			
				|  |  | +                values.push(+$(this).val());
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            for (var k in variant_ids) {
 | 
	
		
			
				|  |  | +                if (!_.difference(values, variant_ids[k][1]).length) {
 | 
	
		
			
				|  |  | +                    return;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            $input.closest("label").addClass("css_not_available");
 | 
	
		
			
				|  |  | +            $input.find("option[value='" + id + "']").addClass("css_not_available");
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (product_id) {
 | 
	
		
			
				|  |  | +            $parent.removeClass("css_not_available");
 | 
	
		
			
				|  |  | +            $product_id.val(product_id);
 | 
	
		
			
				|  |  | +            $parent.find(".js_check_product").removeAttr("disabled");
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            $parent.addClass("css_not_available");
 | 
	
		
			
				|  |  | +            $product_id.val(0);
 | 
	
		
			
				|  |  | +            $parent.find(".js_check_product").attr("disabled", "disabled");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +$('ul.js_add_cart_variants', oe_website_sale).each(function () {
 | 
	
		
			
				|  |  | +        $('input.js_variant_change, select.js_variant_change', this).first().trigger('change');
 | 
	
		
			
				|  |  | +    }); 
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +$('.a-submit', oe_website_sale).off('click').on('click', function () {
 | 
	
		
			
				|  |  | +        var product_added_Dict = $( "#product_added_qty" ).text();   
 | 
	
		
			
				|  |  | +        var $parent = $(this).closest('.js_product');
 | 
	
		
			
				|  |  | +        var $product_id = $parent.find('input.product_id').first();
 | 
	
		
			
				|  |  | +        var product_id = $product_id.val();
 | 
	
		
			
				|  |  | +        var product_added_list = malformedJSON2Array(product_added_Dict);
 | 
	
		
			
				|  |  | +        var product_added_qty = product_added_list[product_id];
 | 
	
		
			
				|  |  | +        var stock = $( "span[name='stock_available']" ).text();
 | 
	
		
			
				|  |  | +        var $input_qty = $( "input[name='add_qty']" );
 | 
	
		
			
				|  |  | +        var value = parseInt($input_qty.val(), 10);
 | 
	
		
			
				|  |  | +        var variant_qty = $( "#qty_avail_variant" ).attr('value');
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +	  if(variant_qty!=undefined)
 | 
	
		
			
				|  |  | +	      stock = parseInt(variant_qty);
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +       
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +        //alert(product_added_qty);alert(value);alert(stock);alert(parseInt(product_added_qty) + parseInt(value));
 | 
	
		
			
				|  |  | +        if((parseInt(product_added_qty) + parseInt(value))>parseInt(stock))
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +           showDialog('Error','As you already added some of the Products, You can\'t add more than '+parseInt(stock-product_added_qty)+'.','error',6);
 | 
	
		
			
				|  |  | +           return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        $(this).closest('form').submit();
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +$('form.js_attributes input, form.js_attributes select', oe_website_sale).on('change', function () {
 | 
	
		
			
				|  |  | +        $(this).closest("form").submit();
 | 
	
		
			
				|  |  | +    }); 
 | 
	
		
			
				|  |  | +   
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  | +
 |