Rev 22213 | Blame | Compare with Previous | Last modification | View Log | RSS feed
//MOHIT-This code is called when user lands on cartdetails page either through using back button or clicking on cart from deals pagefunction loadCartPageDetails(){var input = $('input#refresh').val();//MOHIT-If user comes through front/back navigationif(input == 'yes'){$('#cartLoadingModal').modal('show');var cart_details = localStorage.getItem('cart_details');if(cart_details!=undefined){var cartDetailsObj = JSON.parse(cart_details);$.each(cartDetailsObj.cartItems, function(key,val) {$("div.number-spinner button[data-id='"+key+"']").closest('.number-spinner').find('input').val(val.quantity);$("span.lineitemqty[data-id='"+key+"']").text(val.quantity);$("span.packQuantity[data-id='"+key+"']").text(val.quantity*$("span.packQuantity[data-id='"+key+"']").data('pack'));$("span.lineitemtotal[data-id='"+key+"']").text(' ₹ '+ (parseInt(val.quantity)*parseInt(val.unitprice)).toString());});renderCartDerivedValues();$('#cartLoadingModal').modal('hide');}else{window.location.href = apihost + 'cartdetails/?user_id='+me;}}//MOHIT-if user comes through link navigation.else{$('input#refresh').val('yes');var estimateString = $('div.popover-markup').data('str');loadCartDetails();if(estimateString=="Can't ship here"){$('button.checkoutbtn').prop( "disabled", true);$('div.cartdetailscard').find('div, input, textarea, button, select').each(function () {$(this).prop('disabled', true);});}}if(!$('div.cartitemstotal').hasClass('hidden')){$('div.scroll').attr('style', 'margin-bottom: 176px');}else{$('div.scroll').attr('style', 'margin-bottom: 100px');}}$(function(){loadCartPageDetails();});$(document).on('click','.number-spinner button',function(){btn = $(this);input = btn.closest('.number-spinner').find('input');oldValue = btn.closest('.number-spinner').find('input').val().trim(),newVal = 0;btn.closest('.number-spinner').find('button').prop("disabled", false);var inc = 0;var dec = 0;var sku = btn.data('id');var unitPrice = btn.data('price');var prodname = btn.data('name');var brandname = btn.data('brand');var catalogItemId = btn.data('identifier');var minBuyQuantity = btn.data('minquantity');if(minBuyQuantity == "" || minBuyQuantity == undefined){minBuyQuantity =1;}var quantityStep = btn.data('quantitystep');if(quantityStep == "" || quantityStep == undefined){quantityStep =1;}var bulkpricing = btn.data('bulkpricing');var maxquantflag = false;if (btn.attr('data-dir') == 'up') {if ( input.attr('max') == undefined || parseInt(input.val()) < parseInt(input.attr('max')) ) {if((parseInt(input.val())== 0 || parseInt(input.val())< minBuyQuantity) && (parseInt(input.attr('max')) >= minBuyQuantity)){inc = minBuyQuantity - parseInt(input.val());newVal = parseInt(oldValue) + inc;}else{inc = quantityStep;if(parseInt(oldValue)< minBuyQuantity+(quantityStep*4)){newVal = parseInt(oldValue) + inc;}else if(parseInt(oldValue)< minBuyQuantity+(quantityStep*28)){var minqty = minBuyQuantity;if((parseInt(oldValue)+quantityStep) % quantityStep == 0 ){minqty = 0;}if(parseInt(oldValue) % (quantityStep*5) == 0){inc = (5*quantityStep)+minqty;newVal = parseInt(oldValue)+ (5*quantityStep)+minqty;}else{inc = minqty+ (5*quantityStep) - (parseInt(oldValue) % (5*quantityStep));newVal =minqty+ 5*quantityStep+ parseInt(oldValue) - (parseInt(oldValue) % (5*quantityStep));}}else{var minqty = minBuyQuantity;if((parseInt(oldValue)+quantityStep) % quantityStep == 0){minqty = 0;}if(parseInt(oldValue) % (quantityStep*10) == 0){inc = (10*quantityStep)+minqty;newVal = parseInt(oldValue)+ (10*quantityStep)+minqty;}else{inc = (10*quantityStep) - (parseInt(oldValue) % (10*quantityStep)) +minqty;newVal =10*quantityStep + parseInt(oldValue) - (parseInt(oldValue) % (10*quantityStep)) +minqty;}}if(newVal>parseInt(input.attr('max'))){var minqty = minBuyQuantity;if((parseInt(oldValue)+quantityStep) % quantityStep == 0){minqty = 0;}newVal = parseInt(input.attr('max')) - (newVal - parseInt(input.attr('max'))) % (minqty +quantityStep);inc = newVal - parseInt(oldValue);maxquantflag = true}}}else{newVal = parseInt(oldValue);btn.prop("disabled", true);}if(newVal==parseInt(input.attr('max')) || maxquantflag == true){input.attr('style', 'border: 2px solid #ff0000');}else{input.attr('style', 'border: 1px solid #CCCCCC');}} else {if ( input.attr('min') == undefined || parseInt(input.val()) > parseInt(input.attr('min')) ) {dec = quantityStep;newVal = parseInt(oldValue) - dec;var minBuyQtyDiff = parseInt(oldValue) - minBuyQuantity;if(minBuyQtyDiff ==0){dec = minBuyQuantity;newVal = parseInt(oldValue) - dec;}else if(dec>minBuyQtyDiff){dec = minBuyQtyDiff;newVal = parseInt(oldValue) - dec;}}else{btn.prop("disabled", true);}if(newVal==parseInt(input.attr('min'))){input.attr('style', 'border: 2px solid #5bc0de');}else{input.attr('style', 'border: 1px solid #CCCCCC');}}$("span.lineitemqty[data-id='"+sku+"']").text(newVal);btn.closest('.number-spinner').find('input').val(newVal);if (bulkpricing != undefined && bulkpricing.length != 0){for(var i=0;i<bulkpricing.length;i++){if(newVal<bulkpricing[i]['quantity']){break;}else{unitPrice = bulkpricing[i]['price'];}}}$("span.lineitemprice[data-id='"+sku+"']").text(unitPrice);$("span.packQuantity[data-id='"+sku+"']").text(newVal*$("span.packQuantity[data-id='"+sku+"']").data('pack'));$("span.lineitemtotal[data-id='"+sku+"']").text(' ₹ '+ (parseInt(newVal)*parseInt(unitPrice)).toString());loadCartDetails();renderCartDerivedValues();});function numberWithCommas(x) {return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");}function handleCheckout(){var cart_details = localStorage.getItem('cart_details');if(cart_details!=undefined){var cartDetailsObj = JSON.parse(cart_details);//nonAccessoryShippingCharge = cartDetailsObj.shippingCharges - cartDetailsObj.accessoryShippingCharges;if(cartDetailsObj.shippingCharges > 0){window.history.pushState('forward', null, './?user_id='+me);$('p#shippingText').html("<span>You are paying ₹50 for shipping.<br>To avail free shipping, cart value should be more than ₹999</span><hr style='margin-top: 5px;margin-bottom: 5px;'>"+"<span>आप शिपिंग के लिए ₹50 का भुगतान कर रहे हैं।<br> फ्री शिपिंग के लिए कार्ट राशि ₹999 से अधिक की होनी चाहिए।</span>");$('#myModal').modal('show');} else{$('#cartLoadingModal').modal('show');var url = apihost + 'shippings/';var newForm = $('<form>', {'action': url,'method':'post'}).append($('<input>', {'name': 'cart_details','value': localStorage.getItem('cart_details'),'type': 'hidden'}));newForm.appendTo($('body'));newForm.submit();}}}$(document).on('click','button#addItems',function(){$('#myModal').modal('hide');$("#cartloader").removeClass('hidden');history.addItem="yes";history.back();});$(document).on('click','button#continueCheckout',function(){$('#myModal').modal('hide');$("#cartloader").removeClass('hidden');var url = apihost + 'shippings/';var newForm = $('<form>', {'action': url,'method':'post'}).append($('<input>', {'name': 'cart_details','value': localStorage.getItem('cart_details'),'type': 'hidden'}));newForm.appendTo($('body'));history.form=newForm;history.back();});$(document).on('click','.changepincode',function(){$('#cartLoadingModal').modal('show');var pincode = "pin_"+$('.pincodeval').val();var url = apihost + 'cartdetails/?user_id='+me;var newForm = $('<form>', {'action': url,'method':'post'}).append($('<input>', {'name': 'cart_details','value': localStorage.getItem('cart_details'),'type': 'hidden'})).append($('<input>', {'name': 'pincode','value': pincode,'type': 'hidden'}));newForm.appendTo($('body'));newForm.submit();});$(document).on('click','a.addMoreItems',function(){$('#cartLoadingModal').modal('show');});$(document).on('click','.checkoutbtn',function(){handleCheckout();});$(document).on('click','.backtodeals',function(){$('#cartLoadingModal').modal('show');window.location.href = apihost + 'categories/linkdeal/3?filtertype=exclusive';});$(document).on('click','span.clearCart',function(){$("#cartloader").removeClass('hidden');$('#clearCartModel').modal('show');$("#cartloader").addClass('hidden');});$(document).on('click','button#abortClearCartBtn',function(){$('#clearCartModel').modal('hide');});//TODO:Mohit Clear cart removes everything in the cartfunction clearCart(){$('#clearCartModel').modal('hide');$("#cartloader").removeClass('hidden');var cart_details = localStorage.getItem('cart_details');if(cart_details!=undefined){var cartDetailsObj = JSON.parse(cart_details);$.each(cartDetailsObj.cartItems, function(key,val) {cartDetailsObj.cartItems[key].quantity = 0;});cartDetailsObj.totalCartQuantity = 0;cartDetailsObj.totalCartValue = 0;cartDetailsObj.shippingCharges = 0;cartDetailsObj.totalSkus = 0;localStorage.setItem('cart_details',JSON.stringify(cartDetailsObj));}$('div.card').addClass('hidden');$('span.cartheader').text('');$('span.cartheader').attr('style', 'font-size: 12pt;padding-left: 30px;');$('span.cartheader').text('Cart Details');$('div.cartgrandtotal span.pull-right').text('₹ '+numberWithCommas(0));$('div.cartitemstotal').addClass('hidden');$('button.checkoutbtn').prop( "disabled", true );$('div.emptyCart').removeClass('hidden');$('div.popover-markup').addClass('hidden');$("#cartloader").addClass('hidden');}$(document).on('click','button#clearCartBtn',function(){clearCart();$("span.clearCart").removeClass('clearCart');});$(document).on('click','span.clearItem',function(){var itemId = $(this).attr('sku');var cart_details = localStorage.getItem('cart_details');if(cart_details!=undefined){var cartDetailsObj = JSON.parse(cart_details);var item = cartDetailsObj.cartItems[itemId];$("div.card[sku='"+itemId+"']").addClass("hidden");$(this).next().find('input').val(0);$(this).next().find("button[data-dir='up']").data('estimate', '');$("span.packQuantity[data-id='"+itemId+"']").text(0);$("span.lineitemtotal[data-id='"+itemId+"']").text(' ₹ '+ 0);if($('div.card:visible').length==0){clearCart();$("span.clearCart").removeClass('clearCart');}else{loadCartDetails();renderCartDerivedValues();}}});//TODO:MOHIT Cart info comes from html docuemnt with each cart item element//New synced cart cache is being populated from that cart.//This code is called when user comes to cart details page.function loadCartDetails(){cartItems = {};oldCartItems = JSON.parse(localStorage.getItem('cart_details')).cartItems;$('.number-spinner').each(function (index, val) {var element = $(val);var quantity = element.find("input").val();var dataElement = element.find("button[data-dir='up']")var estimate = dataElement.data('estimate');var catalogItemId = dataElement.data('identifier');var sku = dataElement.data('id');var price = dataElement.data('price');var bulkpricing = dataElement.data('bulkpricing');var prodname = dataElement.data('name');var brandname = dataElement.data('brand');if (bulkpricing != undefined && bulkpricing.length != 0){for(var i=0;i<bulkpricing.length;i++){if(quantity<bulkpricing[i]['quantity']){break;}else{price = bulkpricing[i]['price'];}}}itemDetail = {};if (estimate=="-1") {itemDetail['quantity']=oldCartItems[sku.toString()].quantity} else {itemDetail['quantity']=parseInt(quantity);}itemDetail['unitprice']=parseInt(price);itemDetail['productname']=prodname;itemDetail['brand']=brandname;itemDetail['catalogItemId'] = catalogItemId.toString();itemDetail['category'] = dataElement.data('category');cartItems[sku.toString()] = itemDetail;});setCartDetails(cartItems);}//TODO: MOHIT. This peice of code is used to sync server side cart validation response during successful handling//in scenarios wherefunction setCartDetails(cartItems) {var cartDetailsObj = {};cartDetailsObj.totalCartQuantity = 0;cartDetailsObj.totalCartValue = 0;cartDetailsObj.mobileCount = 0;cartDetailsObj.totalSkus = 0;cartDetailsObj.shippingCharges = 0;//cartDetailsObj.accessoryShippingCharges = 0;cartDetailsObj.cartItems = cartItems;for(itemId in cartItems) {item = cartItems[itemId];if(item.quantity > 0){cartDetailsObj.totalCartQuantity += item.quantity;cartDetailsObj.totalSkus += 1;}cartDetailsObj.totalCartValue += item.quantity*item.unitprice;/*if(item.category=='Mobile Phone' || item.category=='Tablet') {cartDetailsObj.mobileCount += item.quantity;} else {cartDetailsObj.accessoryShippingCharges = 0;}*/}/*if(cartDetailsObj.totalCartQuantity<5){cartDetailsObj.shippingCharges = cartDetailsObj.accessoryShippingCharges + 60*cartDetailsObj.totalCartQuantity;} else {cartDetailsObj.shippingCharges = cartDetailsObj.accessoryShippingCharges + 30*cartDetailsObj.totalCartQuantity;}*/if(cartDetailsObj.totalCartValue < 1000){cartDetailsObj.shippingCharges = 50;}cartDetailsObj.shippingCharges =localStorage.setItem('cart_details',JSON.stringify(cartDetailsObj));}//TODO MOHIT this logic will tell you about what all values that need to be derived from local cart storage for display//purpose in cart pagefunction renderCartDerivedValues(){var cart_details = localStorage.getItem('cart_details');var cartDetailsObj = JSON.parse(cart_details);var totalCartValue = cartDetailsObj.totalCartValue;var totalCartQuantity = cartDetailsObj.totalCartQuantity;var cartItems = cartDetailsObj.cartItems;var shippingCharges =cartDetailsObj.shippingCharges;var totalSkus = cartDetailsObj.totalSkus;$('div.cartitemstotal span.itemstotal').text('₹ '+numberWithCommas(totalCartValue));$('div.cartitemstotal span.shippingval').text('₹ '+numberWithCommas(shippingCharges));var payable = 0;if(shippingCharges>0){if(totalCartValue>0){$('.cartitemstotal').removeClass('hidden');payable = parseInt(shippingCharges)+parseInt(totalCartValue);}else{payable = 0;}}else{payable = parseInt(totalCartValue);$('.cartitemstotal').addClass('hidden');}$('div.cartgrandtotal span.pull-right').text('₹ '+numberWithCommas(payable));if(payable>0){$('button.checkoutbtn').prop( "disabled", false );}else{$('button.checkoutbtn').prop( "disabled", true );}var estimateString = $('div.popover-markup').data('str');if(estimateString!="Can't ship here"){$('div.cartdetailscard').find('div, input, textarea, button, select').each(function () {$(this).prop('disabled', false);});}else{$('div.cartdetailscard').find('div, input, textarea, button, select').each(function () {$(this).prop('disabled', true);});}}