Subversion Repositories SmartDukaan

Rev

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