Subversion Repositories SmartDukaan

Rev

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