Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
24440 amit.gupta 1
function formLoaded() {
27171 tejbeer 2
	$("form#cd input").each(function() {
22245 ashik.ali 3
		$(this).attr('autocomplete', 'off');
4
	});
27171 tejbeer 5
	$('form#cd').validate(
6
			{
7
				rules : {
8
					name : {
9
						required : true
10
					},
11
					email : {
12
						required : true,
13
						email : true
14
					},
15
					line1 : {
16
						required : true
17
					},
18
					state : {
19
						required : true
20
					},
21
					city : {
22
						required : true
23
					},
24
					pincode : {
25
						required : true,
26
						digits : true,
27
						minlength : 6,
28
						maxlength : 6,
29
					},
30
					phone : {
31
						required : true,
32
						minlength : 10,
33
						maxlength : 10,
34
						digits : true
35
					},
36
				},
37
				messages : {
38
					name : {
39
						required : "Required"
40
					},
41
					line1 : {
42
						required : "Required"
43
					},
44
					state : {
45
						required : "State required"
46
					},
47
					city : {
48
						required : "City required"
49
					},
50
					email : {
51
						require : "Required"
52
					},
53
					pincode : {
54
						required : "Required",
55
						digits : "Invalid pin"
56
					},
57
					phone : {
58
						required : "Required",
59
						digits : "Invalid number",
60
						minlength : "Number should be of 10 digits"
61
					}
62
				},
63
				submitHandler : function(form, event) {
64
					event.preventDefault();
65
					var payload = orderDetailsPayload();
66
					if (!validateOrderDetails()) {
67
						alert("Please fix highlighted errors");
68
						return false;
69
					}
70
					doPostAjaxRequestWithJsonHandler(context + "/create-order",
71
							payload, function(response) {
72
								emptyBag();
73
								$('#main-content').html(response);
74
							});
75
					return false; // required to block normal submit since you
76
									// used
77
					// ajax
78
				}
23353 ashik.ali 79
			});
27171 tejbeer 80
 
81
	$("input.unitPrice")
82
			.on(
83
					'change',
84
					function() {
85
						var $element = $(this);
86
						var unitPrice = parseFloat($element.val());
87
						if (!isNaN(unitPrice)) {
88
							var itemType = parseFloat($(this).closest('tr')
89
									.find('.serialNumber').attr("itemType"));
90
							var mopPrice = parseFloat($(this).attr('mopPrice'));
91
							var dp = parseFloat($(this).attr('dp'));
92
							var mrp = parseFloat($(this).attr('mrp'));
93
							if (mrp != 0 && unitPrice > mrp) {
94
								alert("Selling Price should not be greater than MRP");
95
								$element.addClass("border-highlight");
96
							} else if (!accessoriesDeals
97
									&& unitPrice < mopPrice) {
98
								alert("Selling Price must be greater than equal to MOP");
99
								$element.addClass("border-highlight");
100
							} else if (itemType == 'SERIALIZED'
101
									&& unitPrice < mopPrice) {
102
								alert("Selling Price must be greater than equal to MOP");
103
								$element.addClass("border-highlight");
104
							} else if (itemType == 'NON_SERIALIZED'
105
									&& unitPrice < dp) {
106
								alert("Selling Price must be greater than equal to DP");
107
								$element.addClass("border-highlight");
108
							} else {
109
								$element.removeClass("border-highlight");
110
							}
111
							// Clear insurance values if price changes
112
							$(this).closest('tr').find('.insuranceid').val("");
113
							$(this).closest('tr').find('.insuranceamount').val(
114
									"0");
115
						}
116
						calculateTotalAmount();
117
					});
118
 
119
	$("input.phone").change(function() {
120
		console.log("phone blur called");
22354 ashik.ali 121
		var mobileNumber = $(this).val();
27171 tejbeer 122
		if (mobileNumber.length < 10) {
23405 amit.gupta 123
			return;
124
		}
22354 ashik.ali 125
		writeOldCustomerDetailsByMobileNumber(mobileNumber);
126
	});
27171 tejbeer 127
 
24440 amit.gupta 128
}
27171 tejbeer 129
function validateOrderDetails() {
23343 ashik.ali 130
	var sNumbers = [];
131
	var error = false;
27171 tejbeer 132
	$("form#cd input.serialNumber").each(
133
			function() {
134
				var input = $(this).val().trim();
135
				var itemType = $(this).attr("itemType");
136
				$(this).removeClass("border-highlight");
137
				if (sNumbers.indexOf(input) != -1
138
						|| (itemType === 'SERIALIZED' && !input)) {
139
					error = true;
140
					$(this).addClass("border-highlight");
141
				}
142
				sNumbers.push(input);
143
			});
144
 
145
	$("form#cd input.unitPrice").each(function() {
23343 ashik.ali 146
		var input = $(this).val().trim();
147
		$(this).removeClass("border-highlight");
27171 tejbeer 148
		if (!input || parseInt(input) <= 0 || isNaN(input)) {
23343 ashik.ali 149
			error = true;
150
			$(this).addClass("border-highlight");
151
		}
152
	});
27171 tejbeer 153
 
23370 ashik.ali 154
	var gstNumber = $("form#cd input[name=gstNumber]").val();
155
	$("form#cd input[name=gstNumber]").removeClass("border-highlight");
27171 tejbeer 156
	if (gstNumber.length > 0 && gstNumber.length != 15) {
23370 ashik.ali 157
		alert("Please provide valid gstNumber");
158
		error = true;
159
		$("form#cd input[name=gstNumber]").addClass("border-highlight");
160
	}
27171 tejbeer 161
 
23343 ashik.ali 162
	var amount = 0;
163
	var netPayableAmount = parseFloat($("form#cd input.netPayableAmount").val());
27171 tejbeer 164
	$("form#cd input.amount").each(function() {
165
		if ($(this).val() == "") {
23343 ashik.ali 166
			$(this).val(0);
167
		}
168
		var tmpAmount = parseFloat($(this).val());
169
		amount = amount + tmpAmount;
170
	});
27171 tejbeer 171
 
23343 ashik.ali 172
	console.log(amount);
173
	console.log(netPayableAmount);
27171 tejbeer 174
 
175
	if (amount != netPayableAmount) {
176
		if (amount < netPayableAmount) {
177
			alert("[" + (netPayableAmount - amount)
178
					+ "] is more required to complete the payment");
179
		} else {
180
			alert("[" + (amount - netPayableAmount)
181
					+ "] is extra amount, please reduce the amount");
23343 ashik.ali 182
		}
27171 tejbeer 183
		$("form#cd input.netPayableAmount").each(function() {
23343 ashik.ali 184
			$(this).addClass("border-highlight");
185
		});
186
		error = true;
187
	}
27171 tejbeer 188
 
189
	if (error) {
23343 ashik.ali 190
		return false;
191
	}
192
	return true;
27171 tejbeer 193
 
23347 ashik.ali 194
}
195
 
27171 tejbeer 196
function getSerialNumbersFromOrder($el) {
23347 ashik.ali 197
	var $serialNumberElement = $el.find('.serialNumber');
27171 tejbeer 198
	if ($serialNumberElement.val() == '') {
23347 ashik.ali 199
		return null;
200
	}
24440 amit.gupta 201
	var insuranceAmount = parseFloat($el.find('.insuranceamount').val());
27171 tejbeer 202
	if (insuranceAmount > 0) {
23347 ashik.ali 203
		insurance = true;
204
		globalInsurace = true;
27171 tejbeer 205
	} else {
23347 ashik.ali 206
		insurance = false;
207
	}
27171 tejbeer 208
	return {
209
		'serialNumber' : $serialNumberElement.val(),
210
		'insurance' : insurance,
211
		'amount' : insuranceAmount
212
	}
23347 ashik.ali 213
}
214
 
27171 tejbeer 215
function orderDetailsPayload() {
23419 ashik.ali 216
	var orderObj = {};
217
	var priceQtyArray = [];
218
	var customerObj = {};
219
	var paymentOptionIdAmount = [];
220
	var globalInsurance = false;
27171 tejbeer 221
 
222
	$("form#cd input.serialNumber").each(function() {
23419 ashik.ali 223
		var itemId = parseInt($(this).attr("itemId"));
27171 tejbeer 224
		if (orderObj.hasOwnProperty('fofoOrderItems')) {
23419 ashik.ali 225
			var itemDetails = orderObj['fofoOrderItems'];
27171 tejbeer 226
			if (itemDetails.hasOwnProperty(itemId)) {
23419 ashik.ali 227
				var serialNumbers = itemDetails[itemId];
228
				serialNumbers.push($(this).val());
229
				itemDetails[itemId] = serialNumbers;
27171 tejbeer 230
			} else {
23347 ashik.ali 231
				var serialNumbers = [];
232
				serialNumbers.push($(this).val());
23419 ashik.ali 233
				itemDetails[itemId] = serialNumbers;
23347 ashik.ali 234
			}
27171 tejbeer 235
		} else {
23419 ashik.ali 236
			var serialNumbers = [];
237
			serialNumbers.push($(this).val());
27171 tejbeer 238
			var tmp = {};
239
			tmp[itemId] = serialNumbers;
23419 ashik.ali 240
			orderObj['fofoOrderItems'] = tmp;
241
		}
242
	});
27171 tejbeer 243
	console.log(JSON.stringify(orderObj));
244
	$("#order-details")
245
			.find("tr:not(:first-child)")
246
			.each(
247
					function(index, el) {
248
						// console.log(el);
249
						// console.log(index);
250
						var $el = $(el);
251
						var $unitPriceElement = $el.find('.unitPrice');
23873 amit.gupta 252
 
27171 tejbeer 253
						var itemId = parseInt($unitPriceElement.attr("itemId"));
254
						var unitPrice = parseFloat($unitPriceElement.val());
255
						var qty = parseInt($unitPriceElement.attr("quantity"));
256
						var tmpObj = {
257
							'itemId' : itemId,
258
							'sellingPrice' : unitPrice,
259
							'quantity' : qty
260
						};
261
 
262
						if (orderObj['fofoOrderItems'][itemId] === undefined) {
263
							tmpObj['serialNumberDetails'] = [];
264
						} else {
265
							// tmpObj['serialNumbers'] =
266
							// orderObj['fofoLineItems'][itemId];
267
							tmpObj['serialNumberDetails'] = [];
268
						}
269
						var found = false;
270
						for (var i = 0; i < priceQtyArray.length; i++) {
271
							if (priceQtyArray[i]["itemId"] == itemId) {
272
								priceQtyArray[i]["quantity"] = priceQtyArray[i]["quantity"] + 1;
273
								found = true;
274
								break;
275
							}
276
						}
277
						if (!found) {
278
							priceQtyArray.push(tmpObj);
279
						}
280
					});
281
 
282
	$("#order-details").find("tr:not(:first-child)").each(function(index, el) {
24440 amit.gupta 283
		// console.log(el);
284
		// console.log(index);
23419 ashik.ali 285
		var $serialNumberElement = $(el).find('.serialNumber');
286
		var itemId = parseInt($serialNumberElement.attr("itemId"));
24440 amit.gupta 287
		var insuranceEle = $(el).find('.insuranceamount');
288
		var insuranceAmount = 0;
27171 tejbeer 289
		if (insuranceEle.length > 0) {
24440 amit.gupta 290
			insuranceAmount = parseFloat(insuranceEle.val());
291
		}
292
		var insuranceId = "";
27171 tejbeer 293
		if (insuranceAmount > 0) {
24440 amit.gupta 294
			insuranceId = $(el).find('.insuranceid').val();
295
		}
27171 tejbeer 296
		var ram = $(el).find('.ram').val();
297
		var memory = $(el).find('.memory').val();
298
		var mfgdate = $(el).find('.mfgdate').val();
299
		var serialNumberDetails = {
300
			'serialNumber' : $serialNumberElement.val(),
301
			'insurance' : insuranceId,
302
			'amount' : insuranceAmount,
303
			'ram' : ram,
304
			'memory' : memory,
305
			'mfgDate' : mfgdate
306
		};
24440 amit.gupta 307
		priceQtyArray[index]['serialNumberDetails'].push(serialNumberDetails);
27171 tejbeer 308
 
23419 ashik.ali 309
	});
27171 tejbeer 310
 
311
	customerObj['firstName'] = $("form#cd input[name=firstName]").val();
312
	customerObj['lastName'] = $("form#cd input[name=lastName]").val();
313
	customerObj['mobileNumber'] = $("form#cd input[name=phone]").val();
314
	customerObj['emailId'] = $("form#cd input[name=email]").val();
23419 ashik.ali 315
	customerObj['gstNumber'] = $("form#cd input[name=gstNumber]").val();
27171 tejbeer 316
	// customerObj['dateOfBirth'] = startDate;
317
	var customerAddress = {};
318
	customerAddress['name'] = $("form#cd input[name=firstName]").val() + " "
319
			+ $("form#cd input[name=lastName]").val();
320
	customerAddress['line1'] = $("form#cd input[name=line1]").val();
321
	customerAddress['line2'] = $("form#cd input[name=line2]").val();
322
	customerAddress['landmark'] = $("form#cd input[name=landmark]").val();
323
	customerAddress['city'] = $("form#cd input[name=city]").val();
324
	customerAddress['state'] = $('select[name=state] option:selected').val();
325
	customerAddress['pinCode'] = $("form#cd input[name=pinCode]").val();
326
	customerAddress['phoneNumber'] = $("form#cd input[name=alternatePhone]")
327
			.val();
328
	customerAddress['country'] = "India";
329
	customerObj['customerAddressId'] = parseInt($("form#cd input[name=phone]")
330
			.attr("addressId"));
331
	customerObj['address'] = customerAddress;
24440 amit.gupta 332
	customerObj['gender'] = $("#gender").val();
333
	customerObj['dateOfBirth'] = startDate;
27171 tejbeer 334
	localStorage.setItem("customerDetails", JSON.stringify(customerObj));
335
 
336
	var paymentOptionSize = parseInt($('#payment-option-id-amount-container')
337
			.attr("paymentOptionSize"));
24440 amit.gupta 338
	// console.log("paymentOptionSize = "+paymentOptionSize);
27171 tejbeer 339
	for (var index = 0; index < paymentOptionSize; index++) {
23419 ashik.ali 340
		var paymentOptionAmount = 0.0;
27171 tejbeer 341
		if ($('#paymentOptionIdAmount' + index).val() != "") {
342
			paymentOptionAmount = parseFloat($('#paymentOptionIdAmount' + index)
343
					.val());
23367 ashik.ali 344
		}
27171 tejbeer 345
		var paymentOptionId = $('#paymentOptionIdAmount' + index).attr(
346
				"paymentOptionId");
23419 ashik.ali 347
		var paymentOptionIdAmountObject = {};
348
		paymentOptionIdAmountObject['paymentOptionId'] = paymentOptionId;
349
		paymentOptionIdAmountObject['amount'] = paymentOptionAmount;
350
		paymentOptionIdAmount.push(paymentOptionIdAmountObject);
351
	}
27171 tejbeer 352
 
353
	console.log(JSON.stringify(paymentOptionIdAmount));
354
 
23419 ashik.ali 355
	var retObj = {};
356
	retObj['fofoOrderItems'] = (priceQtyArray);
357
	retObj['customer'] = (customerObj);
27171 tejbeer 358
	retObj['paymentOptions'] = (paymentOptionIdAmount);
359
 
360
	var pendingOrder = localStorage.getItem("pendingOrderId");
361
	penOrd = JSON.parse(pendingOrder);
23419 ashik.ali 362
 
27171 tejbeer 363
	retObj['pendingOrderId'] = penOrd['pendingOrderId']
364
 
23419 ashik.ali 365
	console.log(retObj);
27171 tejbeer 366
	return JSON.stringify(retObj);
23347 ashik.ali 367
}
368
 
27171 tejbeer 369
function writeOldCustomerDetailsByMobileNumber(mobileNumber) {
370
	doAjaxRequestHandler(context + "/customer/mobileNumber?mobileNumber="
371
			+ mobileNumber, "GET", function(response) {
372
		if (response.response == '') {
24087 amit.gupta 373
			return;
374
		}
23353 ashik.ali 375
		var customer = response.response;
26804 amit.gupta 376
		$('#firstName').attr('value', customer.firstName);
377
		$('#lastName').attr('value', customer.lastName);
27171 tejbeer 378
		$('#email').attr('value', customer.emailId);
379
		// $('#phone').attr('value', customer.mobileNumber);
380
		if (customer.address !== null) {
381
			$('#alternatePhone').val(customer.address.phoneNumber);
382
			$('#line1').val(customer.address.line1);
383
			$('#line2').val(customer.address.line2);
384
			$('#landmark').val(customer.address.landmark);
385
			$('#pinCode').val(customer.address.pinCode);
386
			$('#city').val(customer.address.city);
387
			$('#state').val(customer.address.state);
388
			$('#phone').attr('addressId', customer.address.id);
389
		}
390
		// $('#state').val(customer.address.state).prop('selected', true);
23353 ashik.ali 391
	});
23343 ashik.ali 392
}