Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
27187 amit.gupta 1
var customerId;
24440 amit.gupta 2
function formLoaded() {
28339 tejbeer 3
	$("form#cd input").each(function() {
22245 ashik.ali 4
		$(this).attr('autocomplete', 'off');
5
	});
28339 tejbeer 6
	$('form#cd').validate({
7
		rules: {
8
			name: {
9
				required: true
27187 amit.gupta 10
			},
28339 tejbeer 11
			email: {
12
				required: true,
13
				email: true
27187 amit.gupta 14
			},
28339 tejbeer 15
			line1: {
16
				required: true
27187 amit.gupta 17
			},
28339 tejbeer 18
			state: {
19
				required: true
27187 amit.gupta 20
			},
28339 tejbeer 21
			city: {
22
				required: true
27187 amit.gupta 23
			},
28339 tejbeer 24
			pincode: {
25
				required: true,
26
				digits: true,
27187 amit.gupta 27
				minlength: 6,
28339 tejbeer 28
				maxlength: 6,
27187 amit.gupta 29
			},
28339 tejbeer 30
			phone: {
31
				required: true,
32
				minlength: 10,
33
				maxlength: 10,
34
				digits: true
27187 amit.gupta 35
			},
36
		},
28339 tejbeer 37
		messages: {
38
			name: {
39
				required: "Required"
27187 amit.gupta 40
			},
28339 tejbeer 41
			line1: {
42
				required: "Required"
27187 amit.gupta 43
			},
28339 tejbeer 44
			state: {
27187 amit.gupta 45
				required: "State required"
46
			},
28339 tejbeer 47
			city: {
27187 amit.gupta 48
				required: "City required"
49
			},
28339 tejbeer 50
			email: {
27187 amit.gupta 51
				require: "Required"
52
			},
28339 tejbeer 53
			pincode: {
27187 amit.gupta 54
				required: "Required",
28339 tejbeer 55
				digits: "Invalid pin"
27187 amit.gupta 56
			},
28339 tejbeer 57
			phone: {
27187 amit.gupta 58
				required: "Required",
28339 tejbeer 59
				digits: "Invalid number",
60
				minlength: "Number should be of 10 digits"
27187 amit.gupta 61
			}
62
		},
28339 tejbeer 63
		submitHandler: function(form, event) {
27187 amit.gupta 64
			event.preventDefault();
65
			var payload = orderDetailsPayload();
28339 tejbeer 66
			if (!validateOrderDetails()) {
27187 amit.gupta 67
				alert("Please fix highlighted errors");
68
				return false;
69
			}
28339 tejbeer 70
			doPostAjaxRequestWithJsonHandler(context + "/create-order", payload, function(response) {
27187 amit.gupta 71
				emptyBag();
72
				$('#main-content').html(response);
23353 ashik.ali 73
			});
28339 tejbeer 74
			return false; // required to block normal submit since you used
75
			// ajax
76
		}
27187 amit.gupta 77
	});
28339 tejbeer 78
 
27187 amit.gupta 79
	$("input.unitPrice").on('change', function() {
29009 amit.gupta 80
		error = true;
27187 amit.gupta 81
		var $element = $(this);
82
		var unitPrice = parseFloat($element.val());
28339 tejbeer 83
		if (!isNaN(unitPrice)) {
27187 amit.gupta 84
			var itemType = parseFloat($(this).closest('tr').find('.serialNumber').attr("itemType"));
85
			var mopPrice = parseFloat($(this).attr('mopPrice'));
28479 amit.gupta 86
			var isMop = parseBoolean($(this).attr('isMop'));
27187 amit.gupta 87
			var dp = parseFloat($(this).attr('dp'));
88
			var mrp = parseFloat($(this).attr('mrp'));
28339 tejbeer 89
			if (mrp != 0 && unitPrice > mrp) {
27187 amit.gupta 90
				alert("Selling Price should not be greater than MRP");
91
				$element.addClass("border-highlight");
28339 tejbeer 92
			} else if (!accessoriesDeals && unitPrice < mopPrice) {
27187 amit.gupta 93
				alert("Selling Price must be greater than equal to MOP");
94
				$element.addClass("border-highlight");
28339 tejbeer 95
			} else if (itemType == 'SERIALIZED' && unitPrice < mopPrice) {
28479 amit.gupta 96
				if(isMop) {
97
					alert("Selling Price must be greater than equal to MOP");
98
					$element.addClass("border-highlight");
99
				}
28339 tejbeer 100
			} else if (itemType == 'NON_SERIALIZED' && unitPrice < dp) {
27187 amit.gupta 101
				alert("Selling Price must be greater than equal to DP");
102
				$element.addClass("border-highlight");
28339 tejbeer 103
			} else {
27187 amit.gupta 104
				$element.removeClass("border-highlight");
29009 amit.gupta 105
				error = false;
27187 amit.gupta 106
			}
107
			// Clear insurance values if price changes
108
			$(this).closest('tr').find('.insuranceid').val("");
109
			$(this).closest('tr').find('.insuranceamount').val("0");
110
		}
111
		calculateTotalAmount();
112
	});
113
	customerInfo = $("div.customerinfo").html();
114
	billingInfo = $("div.billinginfo").html();
28339 tejbeer 115
 
116
	$("input.search-phone").change(function() {
27187 amit.gupta 117
		resetInputs();
22354 ashik.ali 118
		var mobileNumber = $(this).val();
28339 tejbeer 119
		console.log(mobileNumber)
28651 amit.gupta 120
		if (mobileNumber.length < 10 || mobileNumber.length > 10 ) {
121
			alert("Mobile Number is must be 10 digits");
122
			return false;
23405 amit.gupta 123
		}
28651 amit.gupta 124
		else {
125
				writeOldCustomerDetailsByMobileNumber(mobileNumber);
126
		}
22354 ashik.ali 127
	});
28339 tejbeer 128
 
27754 amit.gupta 129
	$(document).on('click', 'button.new-address-btn', function() {
28339 tejbeer 130
		$('#newaddressModal').modal({ show: true });
27187 amit.gupta 131
	});
28339 tejbeer 132
 
27754 amit.gupta 133
	$(document).on('click', 'button.mk_add_email', function() {
27693 amit.gupta 134
		let customerObj = {};
135
		customerObj['customerId'] = customerId;
136
		customerObj['emailId'] = $("#emailId").val();
28339 tejbeer 137
		if (validateEmail(customerObj['emailId'])) {
138
			doPostAjaxRequestWithJsonHandler(`${context}/customer/add-email`, JSON.stringify(customerObj), function(response) {
27693 amit.gupta 139
				alert("Email added");
28339 tejbeer 140
				$("input.search-phone").val(customerObj['mobileNumber']).change();
27693 amit.gupta 141
			});
142
		} else {
143
			alert("Invalid email id");
144
		}
28339 tejbeer 145
 
27693 amit.gupta 146
	});
27754 amit.gupta 147
	$(document).on('click', 'button.mk_add_customer', function() {
27187 amit.gupta 148
		customerObj = {}
28339 tejbeer 149
		if ($("input.firstName").val().length == 0) {
27187 amit.gupta 150
			alert("First Name is required");
151
			return false;
152
		}
153
		customerObj['firstName'] = $("input.firstName").val();
154
		customerObj['lastName'] = $("input.lastName").val();
27693 amit.gupta 155
		customerObj['emailId'] = $("#emailId").val();
27688 tejbeer 156
 
27682 tejbeer 157
		console.log(customerObj['emailId']);
27187 amit.gupta 158
		customerObj['mobileNumber'] = $("input.phone").val();
28339 tejbeer 159
		doPostAjaxRequestWithJsonHandler(`${context}/customer/add`, JSON.stringify(customerObj), function(response) {
27187 amit.gupta 160
			alert("Customer added");
28339 tejbeer 161
			$("input.search-phone").change();
27187 amit.gupta 162
		});
28339 tejbeer 163
 
164
 
27187 amit.gupta 165
	});
27754 amit.gupta 166
	$(document).on('click', 'a.select-address', function() {
27187 amit.gupta 167
		$(this).closest('table').data("addressselected", "true").find('td').css("font-weight", "normal");
168
		$(this).closest('tr').find('td').css("font-weight", "bold");
169
		selectedAddressId = $(this).data("addressid");
170
	});
28339 tejbeer 171
	$(document).on('click', 'button.btn-add-address', function() {
27187 amit.gupta 172
		var customerAddress = {};
173
		customerAddress['name'] = $("#firstName").val();
174
		customerAddress['lastName'] = $("#lastName").val();
175
		customerAddress['line1'] = $("#line1").val();
176
		customerAddress['line2'] = $("#line2").val();
177
		customerAddress['landmark'] = $("#landmark").val();
178
		customerAddress['city'] = $("#city").val();
179
		customerAddress['state'] = $('select[name=state] option:selected').val();
180
		customerAddress['pinCode'] = $("#pinCode").val();
181
		customerAddress['phoneNumber'] = $("#alternatePhone").val();
182
		customerAddress['country'] = "India";
183
		console.log(customerAddress);
28339 tejbeer 184
		doPostAjaxRequestWithJsonHandler(`${context}/customer/address?customerId=${customerId}`, JSON.stringify(customerAddress), function(response) {
27187 amit.gupta 185
			$("#address-body").prepend(getAddressTr(response.response));
186
			$('#newaddressModal').modal('toggle');
187
			$("#address-body").find('a.select-address').click();
188
		});
189
	});
28339 tejbeer 190
 
24440 amit.gupta 191
}
28339 tejbeer 192
function validateOrderDetails() {
23343 ashik.ali 193
	var sNumbers = [];
28339 tejbeer 194
	$("form#cd input.serialNumber").each(function() {
23343 ashik.ali 195
		var input = $(this).val().trim();
27187 amit.gupta 196
		var itemType = $(this).attr("itemType");
23343 ashik.ali 197
		$(this).removeClass("border-highlight");
28339 tejbeer 198
		if (sNumbers.indexOf(input) != -1 || (itemType === 'SERIALIZED' && !input)) {
23343 ashik.ali 199
			error = true;
200
			$(this).addClass("border-highlight");
201
		}
27187 amit.gupta 202
		sNumbers.push(input);
23343 ashik.ali 203
	});
28339 tejbeer 204
 
205
	$("form#cd input.unitPrice").each(function() {
27187 amit.gupta 206
		var input = $(this).val().trim();
207
		$(this).removeClass("border-highlight");
28339 tejbeer 208
		if (!input || parseInt(input) <= 0 || isNaN(input)) {
209
			error = true;
27187 amit.gupta 210
			$(this).addClass("border-highlight");
211
		}
212
	});
28339 tejbeer 213
 
23370 ashik.ali 214
	var gstNumber = $("form#cd input[name=gstNumber]").val();
215
	$("form#cd input[name=gstNumber]").removeClass("border-highlight");
28339 tejbeer 216
	if (gstNumber.length > 0 && gstNumber.length != 15) {
23370 ashik.ali 217
		alert("Please provide valid gstNumber");
218
		error = true;
219
		$("form#cd input[name=gstNumber]").addClass("border-highlight");
220
	}
28339 tejbeer 221
 
23343 ashik.ali 222
	var amount = 0;
223
	var netPayableAmount = parseFloat($("form#cd input.netPayableAmount").val());
28339 tejbeer 224
	$("form#cd input.amount").each(function() {
225
		if ($(this).val() == "") {
23343 ashik.ali 226
			$(this).val(0);
227
		}
228
		var tmpAmount = parseFloat($(this).val());
229
		amount = amount + tmpAmount;
230
	});
28339 tejbeer 231
 
23343 ashik.ali 232
	console.log(amount);
233
	console.log(netPayableAmount);
28339 tejbeer 234
 
235
	if (amount != netPayableAmount) {
236
		if (amount < netPayableAmount) {
27187 amit.gupta 237
			alert("[" + (netPayableAmount - amount) + "] is more required to complete the payment");
28339 tejbeer 238
		} else {
27187 amit.gupta 239
			alert("[" + (amount - netPayableAmount) + "] is extra amount, please reduce the amount");
23343 ashik.ali 240
		}
28339 tejbeer 241
		$("form#cd input.netPayableAmount").each(function() {
23343 ashik.ali 242
			$(this).addClass("border-highlight");
243
		});
244
		error = true;
245
	}
28339 tejbeer 246
 
247
	if (error) {
23343 ashik.ali 248
		return false;
249
	}
250
	return true;
28339 tejbeer 251
 
23347 ashik.ali 252
}
253
 
27187 amit.gupta 254
 
28339 tejbeer 255
function getSerialNumbersFromOrder($el) {
23347 ashik.ali 256
	var $serialNumberElement = $el.find('.serialNumber');
28339 tejbeer 257
	if ($serialNumberElement.val() == '') {
23347 ashik.ali 258
		return null;
259
	}
24440 amit.gupta 260
	var insuranceAmount = parseFloat($el.find('.insuranceamount').val());
28339 tejbeer 261
	if (insuranceAmount > 0) {
23347 ashik.ali 262
		insurance = true;
263
		globalInsurace = true;
28339 tejbeer 264
	} else {
23347 ashik.ali 265
		insurance = false;
266
	}
28339 tejbeer 267
	return { 'serialNumber': $serialNumberElement.val(), 'insurance': insurance, 'amount': insuranceAmount }
23347 ashik.ali 268
}
269
 
28339 tejbeer 270
function orderDetailsPayload() {
23419 ashik.ali 271
	var orderObj = {};
272
	var priceQtyArray = [];
273
	var customerObj = {};
274
	var paymentOptionIdAmount = [];
275
	var globalInsurance = false;
28339 tejbeer 276
 
277
	$("form#cd input.serialNumber").each(function() {
23419 ashik.ali 278
		var itemId = parseInt($(this).attr("itemId"));
28339 tejbeer 279
		if (orderObj.hasOwnProperty('fofoOrderItems')) {
23419 ashik.ali 280
			var itemDetails = orderObj['fofoOrderItems'];
28339 tejbeer 281
			if (itemDetails.hasOwnProperty(itemId)) {
23419 ashik.ali 282
				var serialNumbers = itemDetails[itemId];
283
				serialNumbers.push($(this).val());
284
				itemDetails[itemId] = serialNumbers;
28339 tejbeer 285
			} else {
23347 ashik.ali 286
				var serialNumbers = [];
287
				serialNumbers.push($(this).val());
23419 ashik.ali 288
				itemDetails[itemId] = serialNumbers;
23347 ashik.ali 289
			}
28339 tejbeer 290
		} else {
23419 ashik.ali 291
			var serialNumbers = [];
292
			serialNumbers.push($(this).val());
28339 tejbeer 293
			var tmp = {};
294
			tmp[itemId] = serialNumbers;
23419 ashik.ali 295
			orderObj['fofoOrderItems'] = tmp;
296
		}
297
	});
28339 tejbeer 298
	console.log(JSON.stringify(orderObj));
299
	$("#order-items").find("tr:not(:first-child)").each(function(index, el) {
27187 amit.gupta 300
		// console.log(el);
301
		// console.log(index);
302
		var $el = $(el);
303
		var $unitPriceElement = $el.find('.unitPrice');
28395 amit.gupta 304
		var $discountElement = $el.find('.discount');
28339 tejbeer 305
 
27187 amit.gupta 306
		var itemId = parseInt($unitPriceElement.attr("itemId"));
307
		var unitPrice = parseFloat($unitPriceElement.val());
28395 amit.gupta 308
		var discount = parseFloat($discountElement.val());
309
		if(isNaN(discount)) {
310
			discount = 0;
311
		}
27187 amit.gupta 312
		var qty = parseInt($unitPriceElement.attr("quantity"));
28395 amit.gupta 313
		var tmpObj = { 'itemId': itemId, 'sellingPrice': unitPrice-discount, 'quantity': qty, 'discountAmount' : discount };
23873 amit.gupta 314
 
28339 tejbeer 315
		if (orderObj['fofoOrderItems'][itemId] === undefined) {
316
			tmpObj['serialNumberDetails'] = [];
317
		} else {
27187 amit.gupta 318
			// tmpObj['serialNumbers'] = orderObj['fofoLineItems'][itemId];
319
			tmpObj['serialNumberDetails'] = [];
320
		}
321
		var found = false;
28339 tejbeer 322
		for (var i = 0; i < priceQtyArray.length; i++) {
323
			if (priceQtyArray[i]["itemId"] == itemId) {
27187 amit.gupta 324
				priceQtyArray[i]["quantity"] = priceQtyArray[i]["quantity"] + 1;
325
				found = true;
326
				break;
327
			}
328
		}
28339 tejbeer 329
		if (!found) {
27187 amit.gupta 330
			priceQtyArray.push(tmpObj);
331
		}
28339 tejbeer 332
	});
333
 
334
	$("#order-items").find("tr:not(:first-child)").each(function(index, el) {
24440 amit.gupta 335
		// console.log(el);
336
		// console.log(index);
23419 ashik.ali 337
		var $serialNumberElement = $(el).find('.serialNumber');
338
		var itemId = parseInt($serialNumberElement.attr("itemId"));
24440 amit.gupta 339
		var insuranceEle = $(el).find('.insuranceamount');
340
		var insuranceAmount = 0;
28339 tejbeer 341
		if (insuranceEle.length > 0) {
24440 amit.gupta 342
			insuranceAmount = parseFloat(insuranceEle.val());
343
		}
344
		var insuranceId = "";
28339 tejbeer 345
		if (insuranceAmount > 0) {
24440 amit.gupta 346
			insuranceId = $(el).find('.insuranceid').val();
347
		}
28339 tejbeer 348
		var ram = $(el).find('.ram').val();
349
		var memory = $(el).find('.memory').val();
350
		var mfgdate = $(el).find('.mfgdate').val();
351
		var serialNumberDetails = {
352
			'serialNumber': $serialNumberElement.val(), 'insurance': insuranceId, 'amount': insuranceAmount,
353
			'ram': ram, 'memory': memory, 'mfgDate': mfgdate
354
		};
24440 amit.gupta 355
		priceQtyArray[index]['serialNumberDetails'].push(serialNumberDetails);
28339 tejbeer 356
 
23419 ashik.ali 357
	});
28339 tejbeer 358
 
23419 ashik.ali 359
	customerObj['gstNumber'] = $("form#cd input[name=gstNumber]").val();
28339 tejbeer 360
	if (customerId == undefined) {
27187 amit.gupta 361
		alert("Please choose customer");
362
		return false;
363
	}
28339 tejbeer 364
	if ($("#customer-address").data("addressselected") == "true") {
27187 amit.gupta 365
		alert("Please select address");
366
		return false;
367
	}
28339 tejbeer 368
	customerObj['customerId'] = customerId;
27187 amit.gupta 369
	customerObj['customerAddressId'] = selectedAddressId;
24440 amit.gupta 370
	customerObj['gender'] = $("#gender").val();
371
	customerObj['dateOfBirth'] = startDate;
28339 tejbeer 372
 
373
 
27187 amit.gupta 374
	var paymentOptionSize = parseInt($('#payment-option-id-amount-container').attr("paymentOptionSize"));
24440 amit.gupta 375
	// console.log("paymentOptionSize = "+paymentOptionSize);
28339 tejbeer 376
	for (var index = 0; index < paymentOptionSize; index++) {
23419 ashik.ali 377
		var paymentOptionAmount = 0.0;
28339 tejbeer 378
		if ($('#paymentOptionIdAmount' + index).val() != "") {
379
			paymentOptionAmount = parseFloat($('#paymentOptionIdAmount' + index).val());
23367 ashik.ali 380
		}
28339 tejbeer 381
		var paymentOptionId = $('#paymentOptionIdAmount' + index).attr("paymentOptionId");
23419 ashik.ali 382
		var paymentOptionIdAmountObject = {};
383
		paymentOptionIdAmountObject['paymentOptionId'] = paymentOptionId;
384
		paymentOptionIdAmountObject['amount'] = paymentOptionAmount;
385
		paymentOptionIdAmount.push(paymentOptionIdAmountObject);
386
	}
387
	var retObj = {};
388
	retObj['fofoOrderItems'] = (priceQtyArray);
389
	retObj['customer'] = (customerObj);
28339 tejbeer 390
	retObj['paymentOptions'] = (paymentOptionIdAmount);
391
	retObj['poId'] = $('#poid').val();
392
 
393
	retObj['poItemId'] = $('#poItemId').val();
394
 
23419 ashik.ali 395
	console.log(retObj);
28339 tejbeer 396
	return JSON.stringify(retObj);
23347 ashik.ali 397
}
398
 
27187 amit.gupta 399
function resetInputs() {
400
	$("div.customerinfo").html(customerInfo);
401
	$("div.billinginfo").html(billingInfo).hide();
402
}
28339 tejbeer 403
function writeOldCustomerDetailsByMobileNumber(mobileNumber) {
404
	doAjaxRequestHandler(context + "/customer/mobileNumber?mobileNumber=" + mobileNumber, "GET", function(response) {
405
		if (response.response == '') {
24087 amit.gupta 406
			return;
407
		}
23353 ashik.ali 408
		var customer = response.response;
28339 tejbeer 409
		if (customer == null) {
27187 amit.gupta 410
			$('input.phone').attr('value', mobileNumber).attr('readonly', true);
411
			$('button.mk_add_customer').show();
28339 tejbeer 412
 
27187 amit.gupta 413
			return;
414
		}
415
		$('input.firstName').attr('value', customer.firstName).attr('readonly', true);
416
		$('input.lastName').attr('value', customer.lastName).attr('readonly', true);
417
		$('input.phone').attr('value', customer.mobileNumber).attr('readonly', true);
28339 tejbeer 418
		if (customer.emailId != null && customer.emailId != '') {
27693 amit.gupta 419
			$('#emailId').attr('value', customer.emailId).attr('readonly', true);
27682 tejbeer 420
			console.log('helo');
27693 amit.gupta 421
		} else {
422
			$('button.mk_add_email').show();
27187 amit.gupta 423
		}
26804 amit.gupta 424
		$('#firstName').attr('value', customer.firstName);
425
		$('#lastName').attr('value', customer.lastName);
27187 amit.gupta 426
		$('#alternatePhone').attr('value', customer.mobileNumber);
28339 tejbeer 427
		customerId = customer.customerId;
428
		$("div.billinginfo").show();
429
		trs = [];
430
		if (customer.addresses != null) {
431
			for (address of customer.addresses) {
432
				if (pendingPO != null) {
433
 
434
					if (pendingPO.customerAddressId == address.id) {
435
						trs.push(getAddressTr(address));
436
					}
437
				} else {
438
					trs.push(getAddressTr(address));
439
				}
440
			}
441
		}
442
		$("#address-body").html(trs.join(""));
443
 
23353 ashik.ali 444
	});
27187 amit.gupta 445
}
446
function getAddressTr(address) {
447
	var tr = [];
448
	tr.push(`<tr><td>${address.name} ${address.lastName}</td>`);
449
	tr.push(`<td>${address.line1}, ${address.line2}</td>`);
450
	tr.push(`<td>${address.city}</td>`);
451
	tr.push(`<td>${address.state}</td>`);
452
	tr.push(`<td>${address.pinCode}</td>`);
453
	tr.push(`<td>${address.phoneNumber}</td>`);
454
	tr.push(`<td><a class="select-address" href="javascript:void(0);" data-addressid="${address.id}">Select address</a></td></tr>`);
455
	return tr.join("");
27693 amit.gupta 456
}
457
function validateEmail(email) {
28339 tejbeer 458
	const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
459
	return re.test(String(email).toLowerCase());
23343 ashik.ali 460
}