Subversion Repositories SmartDukaan

Rev

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

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