Subversion Repositories SmartDukaan

Rev

Rev 24087 | Rev 25170 | 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
		}
270
		var serialNumberDetails = {'serialNumber':$serialNumberElement.val(),'insurance':insuranceId,'amount':insuranceAmount}
271
		priceQtyArray[index]['serialNumberDetails'].push(serialNumberDetails);
272
 
23419 ashik.ali 273
	});
274
 
275
	customerObj['firstName'] = $("form#cd input[name=firstName]").val();
276
	customerObj['lastName'] = $("form#cd input[name=lastName]").val();
277
	customerObj['mobileNumber'] = $("form#cd input[name=phone]").val(); 
278
	customerObj['emailId'] = $("form#cd input[name=email]").val();
279
	customerObj['gstNumber'] = $("form#cd input[name=gstNumber]").val();
24440 amit.gupta 280
	// customerObj['dateOfBirth'] = startDate;
23419 ashik.ali 281
	var customerAddress = {};
282
	customerAddress['name'] = $("form#cd input[name=firstName]").val() + " " + $("form#cd input[name=lastName]").val();
283
	customerAddress['line1'] = $("form#cd input[name=line1]").val();
284
	customerAddress['line2'] = $("form#cd input[name=line2]").val();
285
	customerAddress['landmark'] = $("form#cd input[name=landmark]").val();
286
	customerAddress['city'] = $("form#cd input[name=city]").val();
287
	customerAddress['state'] = $('select[name=state] option:selected').val();
288
	customerAddress['pinCode'] = $("form#cd input[name=pinCode]").val();
289
	customerAddress['phoneNumber'] = $("form#cd input[name=alternatePhone]").val();
290
	customerAddress['country'] = "India";
291
	customerObj['customerAddressId'] = parseInt($("form#cd input[name=phone]").attr("addressId"));
292
	customerObj['address'] = customerAddress; 
24440 amit.gupta 293
	customerObj['gender'] = $("#gender").val();
294
	customerObj['dateOfBirth'] = startDate;
295
	localStorage.setItem("customerDetails", JSON.stringify(customerObj));
23419 ashik.ali 296
 
297
 
298
	var paymentOptionSize = parseInt($('#payment-option-id-amount-container').attr("paymentOptionSize"));
24440 amit.gupta 299
	// console.log("paymentOptionSize = "+paymentOptionSize);
23419 ashik.ali 300
	for(var index = 0; index < paymentOptionSize; index++){
301
		var paymentOptionAmount = 0.0;
302
		if($('#paymentOptionIdAmount'+index).val() != ""){
303
			paymentOptionAmount = parseFloat($('#paymentOptionIdAmount'+index).val());
23367 ashik.ali 304
		}
23419 ashik.ali 305
		var paymentOptionId = $('#paymentOptionIdAmount'+index).attr("paymentOptionId");
306
		var paymentOptionIdAmountObject = {};
307
		paymentOptionIdAmountObject['paymentOptionId'] = paymentOptionId;
308
		paymentOptionIdAmountObject['amount'] = paymentOptionAmount;
309
		paymentOptionIdAmount.push(paymentOptionIdAmountObject);
310
	}
311
 
312
	console.log( JSON.stringify(paymentOptionIdAmount));
313
 
314
	var retObj = {};
315
	retObj['fofoOrderItems'] = (priceQtyArray);
316
	retObj['customer'] = (customerObj);
317
	retObj['paymentOptions'] =  (paymentOptionIdAmount);
318
 
319
	console.log(retObj);
320
	return  JSON.stringify(retObj);
23347 ashik.ali 321
}
322
 
323
 
324
function writeOldCustomerDetailsByMobileNumber(mobileNumber){
23353 ashik.ali 325
	doAjaxRequestHandler(context+"/customer/mobileNumber?mobileNumber="+mobileNumber, "GET", function(response){
24087 amit.gupta 326
		if(response.response=='') {
327
			return;
328
		}
23353 ashik.ali 329
		var customer = response.response;
330
	    $('#firstName').attr('value', customer.firstName);
331
	    $('#lastName').attr('value', customer.lastName);
332
	    $('#email').attr('value', customer.emailId);
24440 amit.gupta 333
	    // $('#phone').attr('value', customer.mobileNumber);
23443 amit.gupta 334
	    if(customer.address !== null) {
335
	    	$('#alternatePhone').attr('value', customer.address.phoneNumber);
336
	    	$('#line1').attr('value', customer.address.line1);
337
	    	$('#line2').attr('value', customer.address.line2);
338
	    	$('#landmark').attr('value', customer.address.landmark);
339
	    	$('#pinCode').attr('value', customer.address.pinCode);
340
	    	$('#city').attr('value', customer.address.city);
341
	    	$('#state').attr('value', customer.address.state).prop('selected',true);
342
	    	$('#phone').attr('addressId', customer.address.id);
343
	    }
24440 amit.gupta 344
	    // $('#state').val(customer.address.state).prop('selected', true);
23353 ashik.ali 345
	});
23343 ashik.ali 346
}