Subversion Repositories SmartDukaan

Rev

Rev 27187 | Rev 27688 | 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() {
27187 amit.gupta 3
	$("form#cd input").each(function(){
22245 ashik.ali 4
		$(this).attr('autocomplete', 'off');
5
	});
27187 amit.gupta 6
    $('form#cd').validate({
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", payload, function(response){
71
				emptyBag();
72
				$('#main-content').html(response);
23353 ashik.ali 73
			});
27187 amit.gupta 74
            return false; // required to block normal submit since you used
75
							// ajax
76
         }
77
	});
78
 
79
	$("input.unitPrice").on('change', function() {
80
		var $element = $(this);
81
		var unitPrice = parseFloat($element.val());
82
		if(!isNaN(unitPrice)) {
83
			var itemType = parseFloat($(this).closest('tr').find('.serialNumber').attr("itemType"));
84
			var mopPrice = parseFloat($(this).attr('mopPrice'));
85
			var dp = parseFloat($(this).attr('dp'));
86
			var mrp = parseFloat($(this).attr('mrp'));
87
			if(mrp != 0 && unitPrice > mrp) {
88
				alert("Selling Price should not be greater than MRP");
89
				$element.addClass("border-highlight");
90
			} else if(!accessoriesDeals && unitPrice < mopPrice){
91
				alert("Selling Price must be greater than equal to MOP");
92
				$element.addClass("border-highlight");
93
			}else if(itemType=='SERIALIZED' && unitPrice < mopPrice){
94
				alert("Selling Price must be greater than equal to MOP");
95
				$element.addClass("border-highlight");
96
			}else if(itemType=='NON_SERIALIZED' && unitPrice < dp){
97
				alert("Selling Price must be greater than equal to DP");
98
				$element.addClass("border-highlight");
99
			}else{
100
				$element.removeClass("border-highlight");
101
			}
102
			// Clear insurance values if price changes
103
			$(this).closest('tr').find('.insuranceid').val("");
104
			$(this).closest('tr').find('.insuranceamount').val("0");
105
		}
106
		calculateTotalAmount();
107
	});
108
	customerInfo = $("div.customerinfo").html();
109
	billingInfo = $("div.billinginfo").html();
110
 
111
	$( "input.search-phone").change(function() {
112
		resetInputs();
22354 ashik.ali 113
		var mobileNumber = $(this).val();
27187 amit.gupta 114
		if(mobileNumber.length < 10) {
23405 amit.gupta 115
			return;
116
		}
22354 ashik.ali 117
		writeOldCustomerDetailsByMobileNumber(mobileNumber);
118
	});
27187 amit.gupta 119
 
120
	$('button.new-address-btn').live('click', function() {
121
		$('#newaddressModal').modal({show: true});
122
	});
123
 
124
	$('button.mk_add_customer').live('click', function() {
125
		customerObj = {}
126
		if($("input.firstName").val().length==0) {
127
			alert("First Name is required");
128
			return false;
129
		}
130
		customerObj['firstName'] = $("input.firstName").val();
131
		customerObj['lastName'] = $("input.lastName").val();
27682 tejbeer 132
		customerObj['emailId'] = $("#emailIds").val();
133
 
134
		console.log(first);
135
		console.log(last);
136
		console.log(customerObj['emailId']);
27187 amit.gupta 137
		customerObj['mobileNumber'] = $("input.phone").val();
138
		doPostAjaxRequestWithJsonHandler(`${context}/customer/add`, JSON.stringify(customerObj), function(response){
139
			alert("Customer added");
140
			$( "input.search-phone").val(customerObj['mobileNumber']).change();
141
		});
142
 
143
 
144
	});
145
	$('a.select-address').live('click', function() {
146
		$(this).closest('table').data("addressselected", "true").find('td').css("font-weight", "normal");
147
		$(this).closest('tr').find('td').css("font-weight", "bold");
148
		selectedAddressId = $(this).data("addressid");
149
	});
150
	$('button.btn-add-address').live('click', function(){
151
		var customerAddress = {};
152
		customerAddress['name'] = $("#firstName").val();
153
		customerAddress['lastName'] = $("#lastName").val();
154
		customerAddress['line1'] = $("#line1").val();
155
		customerAddress['line2'] = $("#line2").val();
156
		customerAddress['landmark'] = $("#landmark").val();
157
		customerAddress['city'] = $("#city").val();
158
		customerAddress['state'] = $('select[name=state] option:selected').val();
159
		customerAddress['pinCode'] = $("#pinCode").val();
160
		customerAddress['phoneNumber'] = $("#alternatePhone").val();
161
		customerAddress['country'] = "India";
162
		console.log(customerAddress);
163
		doPostAjaxRequestWithJsonHandler(`${context}/customer/address?customerId=${customerId}`, JSON.stringify(customerAddress), function(response){
164
			$("#address-body").prepend(getAddressTr(response.response));
165
			$('#newaddressModal').modal('toggle');
166
			$("#address-body").find('a.select-address').click();
167
		});
168
	});
169
 
24440 amit.gupta 170
}
27187 amit.gupta 171
function validateOrderDetails(){
23343 ashik.ali 172
	var sNumbers = [];
173
	var error = false;
27187 amit.gupta 174
	$("form#cd input.serialNumber").each(function(){
23343 ashik.ali 175
		var input = $(this).val().trim();
27187 amit.gupta 176
		var itemType = $(this).attr("itemType");
23343 ashik.ali 177
		$(this).removeClass("border-highlight");
27187 amit.gupta 178
		if (sNumbers.indexOf(input) !=-1 || (itemType ==='SERIALIZED' && !input)){
23343 ashik.ali 179
			error = true;
180
			$(this).addClass("border-highlight");
181
		}
27187 amit.gupta 182
		sNumbers.push(input);
23343 ashik.ali 183
	});
27187 amit.gupta 184
 
185
	$("form#cd input.unitPrice").each(function(){
186
		var input = $(this).val().trim();
187
		$(this).removeClass("border-highlight");
188
		if (!input || parseInt(input)<=0 || isNaN(input)){
189
			error=true;
190
			$(this).addClass("border-highlight");
191
		}
192
	});
193
 
23370 ashik.ali 194
	var gstNumber = $("form#cd input[name=gstNumber]").val();
195
	$("form#cd input[name=gstNumber]").removeClass("border-highlight");
27187 amit.gupta 196
	if(gstNumber.length > 0 && gstNumber.length != 15){
23370 ashik.ali 197
		alert("Please provide valid gstNumber");
198
		error = true;
199
		$("form#cd input[name=gstNumber]").addClass("border-highlight");
200
	}
27187 amit.gupta 201
 
23343 ashik.ali 202
	var amount = 0;
203
	var netPayableAmount = parseFloat($("form#cd input.netPayableAmount").val());
27187 amit.gupta 204
	$("form#cd input.amount").each(function(){
205
		if ($(this).val() == ""){
23343 ashik.ali 206
			$(this).val(0);
207
		}
208
		var tmpAmount = parseFloat($(this).val());
209
		amount = amount + tmpAmount;
210
	});
27187 amit.gupta 211
 
23343 ashik.ali 212
	console.log(amount);
213
	console.log(netPayableAmount);
27187 amit.gupta 214
 
215
	if (amount != netPayableAmount){
216
		if(amount < netPayableAmount){
217
			alert("[" + (netPayableAmount - amount) + "] is more required to complete the payment");
218
		}else{
219
			alert("[" + (amount - netPayableAmount) + "] is extra amount, please reduce the amount");
23343 ashik.ali 220
		}
27187 amit.gupta 221
		$("form#cd input.netPayableAmount").each(function(){
23343 ashik.ali 222
			$(this).addClass("border-highlight");
223
		});
224
		error = true;
225
	}
27187 amit.gupta 226
 
227
	if (error){
23343 ashik.ali 228
		return false;
229
	}
230
	return true;
27187 amit.gupta 231
 
23347 ashik.ali 232
}
233
 
27187 amit.gupta 234
 
235
function getSerialNumbersFromOrder($el){
23347 ashik.ali 236
	var $serialNumberElement = $el.find('.serialNumber');
27187 amit.gupta 237
	if($serialNumberElement.val() == ''){
23347 ashik.ali 238
		return null;
239
	}
24440 amit.gupta 240
	var insuranceAmount = parseFloat($el.find('.insuranceamount').val());
27187 amit.gupta 241
	if(insuranceAmount > 0){
23347 ashik.ali 242
		insurance = true;
243
		globalInsurace = true;
27187 amit.gupta 244
	}else{
23347 ashik.ali 245
		insurance = false;
246
	}
27187 amit.gupta 247
	return {'serialNumber':$serialNumberElement.val(),'insurance':insurance,'amount':insuranceAmount}
23347 ashik.ali 248
}
249
 
27187 amit.gupta 250
function orderDetailsPayload(){
23419 ashik.ali 251
	var orderObj = {};
252
	var priceQtyArray = [];
253
	var customerObj = {};
254
	var paymentOptionIdAmount = [];
255
	var globalInsurance = false;
27187 amit.gupta 256
 
257
	$("form#cd input.serialNumber").each(function(){
23419 ashik.ali 258
		var itemId = parseInt($(this).attr("itemId"));
27187 amit.gupta 259
		if (orderObj.hasOwnProperty('fofoOrderItems')){
23419 ashik.ali 260
			var itemDetails = orderObj['fofoOrderItems'];
27187 amit.gupta 261
			if (itemDetails.hasOwnProperty(itemId)){
23419 ashik.ali 262
				var serialNumbers = itemDetails[itemId];
263
				serialNumbers.push($(this).val());
264
				itemDetails[itemId] = serialNumbers;
27187 amit.gupta 265
			}else{
23347 ashik.ali 266
				var serialNumbers = [];
267
				serialNumbers.push($(this).val());
23419 ashik.ali 268
				itemDetails[itemId] = serialNumbers;
23347 ashik.ali 269
			}
27187 amit.gupta 270
		}else{
23419 ashik.ali 271
			var serialNumbers = [];
272
			serialNumbers.push($(this).val());
27187 amit.gupta 273
			var tmp ={};
274
			tmp[itemId]  = serialNumbers;
23419 ashik.ali 275
			orderObj['fofoOrderItems'] = tmp;
276
		}
277
	});
27187 amit.gupta 278
	console.log( JSON.stringify(orderObj));
279
	$("#order-items").find("tr:not(:first-child)").each(function(index, el){
280
		// console.log(el);
281
		// console.log(index);
282
		var $el = $(el);
283
		var $unitPriceElement = $el.find('.unitPrice');
284
 
285
		var itemId = parseInt($unitPriceElement.attr("itemId"));
286
		var unitPrice = parseFloat($unitPriceElement.val());
287
		var qty = parseInt($unitPriceElement.attr("quantity"));
288
		var tmpObj = {'itemId':itemId,'sellingPrice':unitPrice,'quantity':qty};
23873 amit.gupta 289
 
27187 amit.gupta 290
		if (orderObj['fofoOrderItems'][itemId] === undefined){
291
			tmpObj['serialNumberDetails'] =[];
292
		}else{
293
			// tmpObj['serialNumbers'] = orderObj['fofoLineItems'][itemId];
294
			tmpObj['serialNumberDetails'] = [];
295
		}
296
		var found = false;
297
		for(var i = 0; i < priceQtyArray.length; i++){			
298
			if (priceQtyArray[i]["itemId"] == itemId){
299
				priceQtyArray[i]["quantity"] = priceQtyArray[i]["quantity"] + 1;
300
				found = true;
301
				break;
302
			}
303
		}
304
		if(!found){
305
			priceQtyArray.push(tmpObj);
306
		}
307
	});	
308
 
309
	$("#order-items").find("tr:not(:first-child)").each(function(index,el){
24440 amit.gupta 310
		// console.log(el);
311
		// console.log(index);
23419 ashik.ali 312
		var $serialNumberElement = $(el).find('.serialNumber');
313
		var itemId = parseInt($serialNumberElement.attr("itemId"));
24440 amit.gupta 314
		var insuranceEle = $(el).find('.insuranceamount');
315
		var insuranceAmount = 0;
27187 amit.gupta 316
		if(insuranceEle.length > 0) {
24440 amit.gupta 317
			insuranceAmount = parseFloat(insuranceEle.val());
318
		}
319
		var insuranceId = "";
27187 amit.gupta 320
		if(insuranceAmount > 0) {
24440 amit.gupta 321
			insuranceId = $(el).find('.insuranceid').val();
322
		}
27187 amit.gupta 323
		var ram = $(el).find('.ram').val(); 
324
		var memory = $(el).find('.memory').val(); 
325
		var mfgdate = $(el).find('.mfgdate').val(); 
326
		var serialNumberDetails = {'serialNumber':$serialNumberElement.val(),'insurance':insuranceId,'amount':insuranceAmount, 
327
				'ram' :ram, 'memory' : memory, 'mfgDate':mfgdate};
24440 amit.gupta 328
		priceQtyArray[index]['serialNumberDetails'].push(serialNumberDetails);
27187 amit.gupta 329
 
23419 ashik.ali 330
	});
27187 amit.gupta 331
 
23419 ashik.ali 332
	customerObj['gstNumber'] = $("form#cd input[name=gstNumber]").val();
27187 amit.gupta 333
	if(customerId==undefined) {
334
		alert("Please choose customer");
335
		return false;
336
	}
337
	if($("#customer-address").data("addressselected")=="true") {
338
		alert("Please select address");
339
		return false;
340
	}
341
	customerObj['customerId'] = customerId; 
342
	customerObj['customerAddressId'] = selectedAddressId;
24440 amit.gupta 343
	customerObj['gender'] = $("#gender").val();
344
	customerObj['dateOfBirth'] = startDate;
27187 amit.gupta 345
 
346
 
347
	var paymentOptionSize = parseInt($('#payment-option-id-amount-container').attr("paymentOptionSize"));
24440 amit.gupta 348
	// console.log("paymentOptionSize = "+paymentOptionSize);
27187 amit.gupta 349
	for(var index = 0; index < paymentOptionSize; index++){
23419 ashik.ali 350
		var paymentOptionAmount = 0.0;
27187 amit.gupta 351
		if($('#paymentOptionIdAmount'+index).val() != ""){
352
			paymentOptionAmount = parseFloat($('#paymentOptionIdAmount'+index).val());
23367 ashik.ali 353
		}
27187 amit.gupta 354
		var paymentOptionId = $('#paymentOptionIdAmount'+index).attr("paymentOptionId");
23419 ashik.ali 355
		var paymentOptionIdAmountObject = {};
356
		paymentOptionIdAmountObject['paymentOptionId'] = paymentOptionId;
357
		paymentOptionIdAmountObject['amount'] = paymentOptionAmount;
358
		paymentOptionIdAmount.push(paymentOptionIdAmountObject);
359
	}
360
	var retObj = {};
361
	retObj['fofoOrderItems'] = (priceQtyArray);
362
	retObj['customer'] = (customerObj);
27187 amit.gupta 363
	retObj['paymentOptions'] =  (paymentOptionIdAmount);
23419 ashik.ali 364
 
365
	console.log(retObj);
27187 amit.gupta 366
	return  JSON.stringify(retObj);
23347 ashik.ali 367
}
368
 
27187 amit.gupta 369
function resetInputs() {
370
	$("div.customerinfo").html(customerInfo);
371
	$("div.billinginfo").html(billingInfo).hide();
372
}
373
function writeOldCustomerDetailsByMobileNumber(mobileNumber){
374
	doAjaxRequestHandler(context+"/customer/mobileNumber?mobileNumber="+mobileNumber, "GET", function(response){
375
		if(response.response=='') {
24087 amit.gupta 376
			return;
377
		}
23353 ashik.ali 378
		var customer = response.response;
27187 amit.gupta 379
		if(customer==null) {
380
			$('input.phone').attr('value', mobileNumber).attr('readonly', true);
381
			$('button.mk_add_customer').show();
382
 
383
			return;
384
		}
385
		$('input.firstName').attr('value', customer.firstName).attr('readonly', true);
386
		$('input.lastName').attr('value', customer.lastName).attr('readonly', true);
387
		$('input.phone').attr('value', customer.mobileNumber).attr('readonly', true);
388
		if(customer.emailId!=null) {
27682 tejbeer 389
			$('#emailIds').attr('value', customer.emailId).attr('readonly', true);
390
			console.log('helo');
27187 amit.gupta 391
		}
26804 amit.gupta 392
		$('#firstName').attr('value', customer.firstName);
393
		$('#lastName').attr('value', customer.lastName);
27187 amit.gupta 394
		$('#alternatePhone').attr('value', customer.mobileNumber);
395
	    customerId = customer.customerId;
396
	    $("div.billinginfo").show();
397
	    trs = [];
398
	    if(customer.addresses != null) {
399
	    	for(address of customer.addresses) {
400
	    		if(typeof pendingPO !="undefined") {
401
	    			if(pendingPO.customerAddressId==address.id) {
402
	    				trs.push(getAddressTr(address));
403
	    			}
404
	    		} else {
405
	    			trs.push(getAddressTr(address));
406
	    		}
407
	    	}
408
	    }
409
	    $("#address-body").html(trs.join(""));
410
 
23353 ashik.ali 411
	});
27187 amit.gupta 412
}
413
function getAddressTr(address) {
414
	var tr = [];
415
	tr.push(`<tr><td>${address.name} ${address.lastName}</td>`);
416
	tr.push(`<td>${address.line1}, ${address.line2}</td>`);
417
	tr.push(`<td>${address.city}</td>`);
418
	tr.push(`<td>${address.state}</td>`);
419
	tr.push(`<td>${address.pinCode}</td>`);
420
	tr.push(`<td>${address.phoneNumber}</td>`);
421
	tr.push(`<td><a class="select-address" href="javascript:void(0);" data-addressid="${address.id}">Select address</a></td></tr>`);
422
	return tr.join("");
23343 ashik.ali 423
}