Subversion Repositories SmartDukaan

Rev

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

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