Subversion Repositories SmartDukaan

Rev

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