Subversion Repositories SmartDukaan

Rev

Rev 20998 | Rev 21002 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
17804 manish.sha 1
function loadCartPageDetails(){
17947 manish.sha 2
	var input = $('input#refresh').val();
3
	if(input == 'yes'){
18633 manish.sha 4
		$('#cartLoadingModal').modal('show');
17881 manish.sha 5
		var cart_details = localStorage.getItem('cart_details');
17911 manish.sha 6
		if(cart_details!=undefined){
17947 manish.sha 7
			var cartDetailsObj = JSON.parse(cart_details);
8
			$.each(cartDetailsObj.cartItems, function(key,val) {
9
				$("div.number-spinner button[data-id='"+key+"']").closest('.number-spinner').find('input').val(val.quantity);
10
				$("span.lineitemqty[data-id='"+key+"']").text(val.quantity);
18007 manish.sha 11
				$("span.packQuantity[data-id='"+key+"']").text(val.quantity*$("span.packQuantity[data-id='"+key+"']").data('pack'));
17947 manish.sha 12
				$("span.lineitemtotal[data-id='"+key+"']").text(' ₹ '+ (parseInt(val.quantity)*parseInt(val.unitprice)).toString());
13
			});
20988 amit.gupta 14
			renderCartDerivedValues();
18633 manish.sha 15
			$('#cartLoadingModal').modal('hide');
17956 manish.sha 16
		}else{
17
			window.location.href = apihost + 'cartdetails/?user_id='+me;
17911 manish.sha 18
		}
17881 manish.sha 19
	}else{
17947 manish.sha 20
		$('input#refresh').val('yes');
21
		var estimateString = $('div.popover-markup').data('str');
20988 amit.gupta 22
		var cart_details = localStorage.getItem('cart_details');
23
		if(cart_details!=undefined){
24
			loadCartDetails();
25
		}
26
		if(estimateString=="Can't ship here"){
17947 manish.sha 27
			$('div.cartdetailscard').find('div, input, textarea, button, select').each(function () {
20988 amit.gupta 28
					$(this).prop('disabled', true);
17947 manish.sha 29
			});
17919 manish.sha 30
		}
17881 manish.sha 31
	}
17953 manish.sha 32
	if(!$('div.cartitemstotal').hasClass('hidden')){
18299 manish.sha 33
		$('div.scroll').attr('style', 'margin-bottom: 176px');
17953 manish.sha 34
	}else{
35
		$('div.scroll').attr('style', 'margin-bottom: 100px');
36
	}
17804 manish.sha 37
}
38
 
39
$(function(){
40
	loadCartPageDetails();
41
});
42
 
43
$(document).on('click','.number-spinner button',function(){
44
	btn = $(this);
45
    input = btn.closest('.number-spinner').find('input');
46
    oldValue = btn.closest('.number-spinner').find('input').val().trim(),
47
	newVal = 0;
48
    btn.closest('.number-spinner').find('button').prop("disabled", false);
49
    var inc = 0;
50
    var dec = 0;
51
    var sku = btn.data('id');
52
    var unitPrice = btn.data('price');
18007 manish.sha 53
    var prodname = btn.data('name');
54
    var brandname = btn.data('brand');
55
    var catalogItemId = btn.data('identifier');
18433 naman 56
    var minBuyQuantity = btn.data('minquantity');
57
    if(minBuyQuantity == "" || minBuyQuantity == undefined){
58
    	minBuyQuantity =1;
59
    }
60
    var quantityStep = btn.data('quantitystep');
61
    if(quantityStep == "" || quantityStep == undefined){
62
    	quantityStep =1;
63
    }
64
    var bulkpricing = btn.data('bulkpricing');
18684 naman 65
    var maxquantflag = false;
17804 manish.sha 66
    if (btn.attr('data-dir') == 'up') {
67
		if ( input.attr('max') == undefined || parseInt(input.val()) < parseInt(input.attr('max')) ) {
18433 naman 68
			if((parseInt(input.val())== 0 || parseInt(input.val())< minBuyQuantity) && (parseInt(input.attr('max')) >= minBuyQuantity)){	
69
				inc = minBuyQuantity - parseInt(input.val());
17804 manish.sha 70
				newVal = parseInt(oldValue) + inc;
18433 naman 71
			}
72
			else{
18684 naman 73
				inc = quantityStep;
74
				if(parseInt(oldValue)< minBuyQuantity+(quantityStep*4)){
17804 manish.sha 75
					newVal = parseInt(oldValue) + inc;
76
				}
18684 naman 77
				else if(parseInt(oldValue)< minBuyQuantity+(quantityStep*28)){
78
					var minqty = minBuyQuantity;
79
					if((parseInt(oldValue)+quantityStep) % quantityStep == 0 ){minqty = 0;}
80
					if(parseInt(oldValue) % (quantityStep*5) == 0){
18701 naman 81
						inc = (5*quantityStep)+minqty;
18684 naman 82
						newVal = parseInt(oldValue)+ (5*quantityStep)+minqty;
83
					}
84
					else{
18701 naman 85
						inc = minqty+ (5*quantityStep) - (parseInt(oldValue) % (5*quantityStep));
18684 naman 86
						newVal =minqty+ 5*quantityStep+ parseInt(oldValue) - (parseInt(oldValue) % (5*quantityStep));
87
					}
88
				}
89
				else{
90
					var minqty = minBuyQuantity;
91
					if((parseInt(oldValue)+quantityStep) % quantityStep == 0){minqty = 0;}
92
					if(parseInt(oldValue) % (quantityStep*10) == 0){
18701 naman 93
						inc = (10*quantityStep)+minqty;
18684 naman 94
						newVal = parseInt(oldValue)+ (10*quantityStep)+minqty;
95
					}
96
					else{
18701 naman 97
						inc = (10*quantityStep)  - (parseInt(oldValue) % (10*quantityStep)) +minqty;
18684 naman 98
						newVal =10*quantityStep + parseInt(oldValue) - (parseInt(oldValue) % (10*quantityStep)) +minqty;
99
					}
100
				}
101
 
102
 
103
				if(newVal>parseInt(input.attr('max'))){
104
					var minqty = minBuyQuantity;
105
					if((parseInt(oldValue)+quantityStep) % quantityStep == 0){minqty = 0;}
106
					newVal = parseInt(input.attr('max')) - (newVal - parseInt(input.attr('max'))) % (minqty +quantityStep);
18701 naman 107
					inc = newVal - parseInt(oldValue);
18684 naman 108
					maxquantflag = true
109
				}
17804 manish.sha 110
			}
111
		}else{
112
			newVal = parseInt(oldValue);
113
			btn.prop("disabled", true);
114
		}
18684 naman 115
		if(newVal==parseInt(input.attr('max')) || maxquantflag == true){
17905 manish.sha 116
			input.attr('style', 'border: 2px solid #ff0000');
117
		}else{
118
			input.attr('style', 'border: 1px solid #CCCCCC');
119
		}
17804 manish.sha 120
	} else {
121
		if ( input.attr('min') == undefined || parseInt(input.val()) > parseInt(input.attr('min')) ) {
18433 naman 122
			dec = quantityStep;
17804 manish.sha 123
			newVal = parseInt(oldValue) - dec;
18433 naman 124
			var minBuyQtyDiff = parseInt(oldValue) - minBuyQuantity;
125
			if(minBuyQtyDiff ==0){
126
				dec = minBuyQuantity;
127
				newVal = parseInt(oldValue) - dec;
128
			}else if(dec>minBuyQtyDiff){
129
				dec = minBuyQtyDiff;
130
				newVal = parseInt(oldValue) - dec;
131
			}
17804 manish.sha 132
		}else{
133
			btn.prop("disabled", true);
134
		}
17905 manish.sha 135
		if(newVal==parseInt(input.attr('min'))){
136
			input.attr('style', 'border: 2px solid #5bc0de');
137
		}else{
138
			input.attr('style', 'border: 1px solid #CCCCCC');
139
		}
17804 manish.sha 140
	}
17905 manish.sha 141
    $("span.lineitemqty[data-id='"+sku+"']").text(newVal);
17804 manish.sha 142
	btn.closest('.number-spinner').find('input').val(newVal);
18433 naman 143
 
144
 
20988 amit.gupta 145
	if (bulkpricing != undefined && bulkpricing.length != 0){		
18433 naman 146
    	for(var i=0;i<bulkpricing.length;i++)
147
    		{
148
    			if(newVal<bulkpricing[i]['quantity']){
149
    				break;
150
    			}
151
    			else{
152
 
153
    				unitPrice = bulkpricing[i]['price'];
154
    			}
155
    		}
156
    }
157
	$("span.lineitemprice[data-id='"+sku+"']").text(unitPrice);
158
 
159
 
18007 manish.sha 160
	$("span.packQuantity[data-id='"+sku+"']").text(newVal*$("span.packQuantity[data-id='"+sku+"']").data('pack'));
17947 manish.sha 161
	$("span.lineitemtotal[data-id='"+sku+"']").text(' ₹ '+ (parseInt(newVal)*parseInt(unitPrice)).toString());
20988 amit.gupta 162
	loadCartDetails();
163
	renderCartDerivedValues();
17804 manish.sha 164
});
165
 
166
function numberWithCommas(x) {
167
    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
168
}
169
 
18298 manish.sha 170
function handleCheckout(){
171
	var cart_details = localStorage.getItem('cart_details');
172
	var shippingCharges = 0;
173
	if(cart_details!=undefined){
174
    	var cartDetailsObj = JSON.parse(cart_details);
20998 amit.gupta 175
    	nonAccessoryShippingCharge = cartDetailsObj.shippingCharges - cartDetailsObj.accessoryShippingCharges;
18298 manish.sha 176
    }
177
 
20998 amit.gupta 178
	if(nonAccessoryShippingCharge>0){
18302 manish.sha 179
		window.history.pushState('forward', null, './?user_id='+me);
21001 amit.gupta 180
		if(nonAccessoryShippingCharge/cartDetailsObj.mobileCount>50){
20655 amit.gupta 181
			$('p#shippingText').html("<span>You are paying ₹60 per item for shipping.<br>To pay ₹30 per item for shipping.<br> Add upto five items.</span><hr style='margin-top: 5px;margin-bottom: 5px;'>"
182
					+"<span>आप शिपिंग के लिए  ₹60 प्रति आइटम का भुगतान कर रहे हैं। <br> प्रति आइटम शिपिंग ₹30 के लिए। <br> पाँच आइटम तक जोड़ें।</span>");
183
		} else {
21001 amit.gupta 184
			$('p#shippingText').html("<span>You are paying ₹ "+ nonAccessoryShippingCharge.toFixed() 
20655 amit.gupta 185
					+" for shipping.<br>"
21001 amit.gupta 186
					+"<span>आप शिपिंग के लिए  ₹ "+ nonAccessoryShippingCharge.toFixed() 
20655 amit.gupta 187
					+" का भुगतान कर रहे हैं।")
188
			$("#addItems").find("strong").html("Cancel<br>(रद्द करें)");
189
		}
18298 manish.sha 190
		$('#myModal').modal('show');
191
	}else{
192
		$('#cartLoadingModal').modal('show');
193
		var url = apihost + 'shippings/';
194
	    var newForm = $('<form>', {
195
	        'action': url,
196
	        'method':'post'
197
	    }).append($('<input>', {
198
	        'name': 'cart_details',
199
	        'value': localStorage.getItem('cart_details'),
200
	        'type': 'hidden'
201
	    }));
20972 amit.gupta 202
	    newForm.appendTo($('body'));
18298 manish.sha 203
	    newForm.submit();
204
	}
205
}
206
 
207
$(document).on('click','button#addItems',function(){
208
	$('#myModal').modal('hide');
209
	$("#cartloader").removeClass('hidden');
18312 manish.sha 210
	history.addItem="yes";
20969 amit.gupta 211
	history.back();
18298 manish.sha 212
});
213
 
214
$(document).on('click','button#continueCheckout',function(){
215
	$('#myModal').modal('hide');
216
	$("#cartloader").removeClass('hidden');
217
	var url = apihost + 'shippings/';
218
    var newForm = $('<form>', {
219
        'action': url,
220
        'method':'post'
221
    }).append($('<input>', {
222
        'name': 'cart_details',
223
        'value': localStorage.getItem('cart_details'),
224
        'type': 'hidden'
225
    }));
20971 amit.gupta 226
    newForm.appendTo($('body'));
18302 manish.sha 227
    history.form=newForm;
20969 amit.gupta 228
    history.back();
18298 manish.sha 229
});
230
 
17804 manish.sha 231
$(document).on('click','.changepincode',function(){
17919 manish.sha 232
	$('#cartLoadingModal').modal('show');
17881 manish.sha 233
	var pincode = "pin_"+$('.pincodeval').val();
17804 manish.sha 234
	var url = apihost + 'cartdetails/?user_id='+me;
235
    var newForm = $('<form>', {
236
        'action': url,
237
        'method':'post'
238
    }).append($('<input>', {
239
        'name': 'cart_details',
240
        'value': localStorage.getItem('cart_details'),
241
        'type': 'hidden'
242
    })).append($('<input>', {
243
        'name': 'pincode',
244
        'value': pincode,
245
        'type': 'hidden'
246
    }));
20971 amit.gupta 247
    newForm.appendTo($('body'));
17804 manish.sha 248
    newForm.submit();
249
});
250
 
18019 manish.sha 251
$(document).on('click','a.addMoreItems',function(){
252
	$('#cartLoadingModal').modal('show');
253
});
254
 
18298 manish.sha 255
$(document).on('click','.checkoutbtn',function(){		
256
	handleCheckout();
17822 manish.sha 257
});
258
$(document).on('click','.backtodeals',function(){
17919 manish.sha 259
	$('#cartLoadingModal').modal('show');
20655 amit.gupta 260
	window.location.href = apihost + 'categories/linkdeal/3?filtertype=exclusive';
19286 manish.sha 261
});
262
 
263
$(document).on('click','span.clearCart',function(){
264
	$("#cartloader").removeClass('hidden');
265
	$('#clearCartModel').modal('show');
266
	$("#cartloader").addClass('hidden');
267
});
268
 
269
$(document).on('click','button#abortClearCartBtn',function(){
270
	$('#clearCartModel').modal('hide');
271
});
272
 
273
function clearCart(){
274
	$('#clearCartModel').modal('hide');
275
	$("#cartloader").removeClass('hidden');
276
	var cart_details = localStorage.getItem('cart_details');
277
	if(cart_details!=undefined){
278
		var cartDetailsObj = JSON.parse(cart_details);
279
		$.each(cartDetailsObj.cartItems, function(key,val) {
280
			cartDetailsObj.cartItems[key].quantity = 0;
281
		});
282
		cartDetailsObj.totalCartQuantity = 0;
283
		cartDetailsObj.totalCartValue = 0;
284
		cartDetailsObj.shippingCharges = 0;
285
		cartDetailsObj.totalSkus = 0;
286
		localStorage.setItem('cart_details',JSON.stringify(cartDetailsObj));
287
	}
288
	$('div.card').addClass('hidden');
289
	$('span.cartheader').text('');
290
	$('span.cartheader').attr('style', 'font-size: 12pt;padding-left: 30px;');
291
	$('span.cartheader').text('Cart Details');
292
	$('div.cartgrandtotal span.pull-right').text('₹ '+numberWithCommas(0));
293
	$('div.cartitemstotal').addClass('hidden');
294
	$('button.checkoutbtn').prop( "disabled", true );
295
	$('div.emptyCart').removeClass('hidden');
296
	$('div.popover-markup').addClass('hidden');
297
	$("#cartloader").addClass('hidden');
298
}
299
 
300
$(document).on('click','button#clearCartBtn',function(){
19299 manish.sha 301
	clearCart();
19300 manish.sha 302
	$("span.clearCart").removeClass('clearCart');
19286 manish.sha 303
});
304
 
305
$(document).on('click','span.clearItem',function(){
306
	var itemId = $(this).attr('sku');
307
	var cart_details = localStorage.getItem('cart_details');
308
	if(cart_details!=undefined){
309
		var cartDetailsObj = JSON.parse(cart_details);
20988 amit.gupta 310
		var item = cartDetailsObj.cartItems[itemId];
311
		$("div.card[sku='"+itemId+"']").addClass("hidden");
312
		$(this).next().find('input').val(0);
313
		$(this).next().find("button[data-dir='up']").data('estimate', '');
314
		$("span.packQuantity[data-id='"+itemId+"']").text(0);
315
		$("span.lineitemtotal[data-id='"+itemId+"']").text(' ₹ '+ 0);
316
		if($('div.card:visible').length==0){
317
			clearCart();
318
			$("span.clearCart").removeClass('clearCart');
19286 manish.sha 319
		}else{
20988 amit.gupta 320
			loadCartDetails();
321
			renderCartDerivedValues();
19286 manish.sha 322
		}
323
	}
20988 amit.gupta 324
});
325
 
326
function loadCartDetails(){
327
	cartItems = {};
328
	oldCartItems = JSON.parse(localStorage.getItem('cart_details')).cartItems;
329
	$('.number-spinner').each(function (index, val) {
330
		var element = $(val);
331
		var quantity = element.find("input").val();
332
 
333
		var dataElement = element.find("button[data-dir='up']")
334
		var estimate = dataElement.data('estimate');
335
		var catalogItemId = dataElement.data('identifier');
336
		var sku = dataElement.data('id');
337
		var price = dataElement.data('price');
338
		var bulkpricing = dataElement.data('bulkpricing');
339
		var prodname = dataElement.data('name');
340
		var brandname = dataElement.data('brand');
341
 
342
		if (bulkpricing != undefined && bulkpricing.length != 0){
343
	    	for(var i=0;i<bulkpricing.length;i++)
344
	    		{
345
	    			if(val.quantity<bulkpricing[i]['quantity']){
346
	    				break;
347
	    			}
348
	    			else{
349
	    				price = bulkpricing[i]['price'];
350
	    			}
351
	    		}
352
	    }
353
		itemDetail = {};
354
		if (estimate=="-1") {			
355
			itemDetail['quantity']=oldCartItems[sku.toString()].quantity
356
		} else {
357
			itemDetail['quantity']=parseInt(quantity);
358
		}
359
		itemDetail['unitprice']=parseInt(price);
360
		itemDetail['productname']=prodname;
361
		itemDetail['brand']=brandname;
362
		itemDetail['catalogItemId'] = catalogItemId.toString();
363
		itemDetail['category'] = dataElement.data('category');
364
		cartItems[sku.toString()] = itemDetail;
365
	});
366
	setCartDetails(cartItems);
367
}
368
 
369
function setCartDetails(cartItems) {
370
	var cartDetailsObj = {};
371
	cartDetailsObj.totalCartQuantity = 0; 
372
	cartDetailsObj.totalCartValue = 0;
373
	cartDetailsObj.mobileCount = 0;
374
	cartDetailsObj.totalSkus = 0;
375
	cartDetailsObj.shippingCharges = 0;
376
	cartDetailsObj.accessoryShippingCharges = 0;
377
	cartDetailsObj.cartItems = cartItems;
378
	cartDetailsObj.mobileCount = 0;
379
	for(itemId in cartItems) {
380
		item = cartItems[itemId];
381
		if(item.quantity > 0){
382
			cartDetailsObj.totalCartQuantity += item.quantity;
383
			cartDetailsObj.totalSkus += 1;
384
		}
385
		cartDetailsObj.totalCartValue += item.quantity*item.unitprice;
386
		if(item.category=='Mobile Phone' || item.category=='Tablet') {
387
			cartDetailsObj.mobileCount += item.quantity;
388
		} else {
20998 amit.gupta 389
			cartDetailsObj.accessoryShippingCharges = 0;
20988 amit.gupta 390
		}
391
	}
392
	if(cartDetailsObj.mobileCount<5){
393
		cartDetailsObj.shippingCharges = cartDetailsObj.accessoryShippingCharges + 60*cartDetailsObj.mobileCount;
394
	} else {
395
		cartDetailsObj.shippingCharges = cartDetailsObj.accessoryShippingCharges + 30*cartDetailsObj.mobileCount;
396
	}
397
	localStorage.setItem('cart_details',JSON.stringify(cartDetailsObj));
398
}
399
 
400
function renderCartDerivedValues(){
401
	var cart_details = localStorage.getItem('cart_details');
402
	var cartDetailsObj = JSON.parse(cart_details);
403
	var totalCartValue = cartDetailsObj.totalCartValue;
404
	var totalCartQuantity = cartDetailsObj.totalCartQuantity;
405
	var cartItems = cartDetailsObj.cartItems;
406
	var shippingCharges =cartDetailsObj.shippingCharges;
407
	var totalSkus = cartDetailsObj.totalSkus;
408
 
409
	$('div.cartitemstotal span.itemstotal').text('₹ '+numberWithCommas(totalCartValue));
410
	$('div.cartitemstotal span.shippingval').text('₹ '+numberWithCommas(shippingCharges));
411
	var payable = 0;
412
	if(shippingCharges>0){
413
		if(totalCartValue>0){
414
			$('.cartitemstotal').removeClass('hidden');
415
			payable = parseInt(shippingCharges)+parseInt(totalCartValue);
416
		}else{
417
			payable = 0;
418
		}
419
	}else{
420
			payable = parseInt(totalCartValue);
421
			$('.cartitemstotal').addClass('hidden');
422
	}
423
	$('div.cartgrandtotal span.pull-right').text('₹ '+numberWithCommas(payable));
424
 
425
	if(payable>0){
426
		$('button.checkoutbtn').prop( "disabled", false );
427
	}else{
428
		$('button.checkoutbtn').prop( "disabled", true );
429
	}
430
	var estimateString = $('div.popover-markup').data('str');
431
	if(estimateString!="Can't ship here"){
432
		$('div.cartdetailscard').find('div, input, textarea, button, select').each(function () {
433
			$(this).prop('disabled', false);
434
		});
435
	}else{
436
		$('div.cartdetailscard').find('div, input, textarea, button, select').each(function () {
437
			$(this).prop('disabled', true);
438
		});
439
	}
440
}