Subversion Repositories SmartDukaan

Rev

Rev 32816 | Rev 33795 | 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
        }
32468 amit.gupta 183
        //calculateTotalAmount();
32327 amit.gupta 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();
32468 amit.gupta 191
        console.log(mobileNumber);
32327 amit.gupta 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 () {
32329 amit.gupta 261
            var input = $(this).val().trim();
262
            var itemType = $(this).attr("itemType");
263
            $(this).removeClass("border-highlight");
264
            if (itemType !== 'SERIALIZED') {
265
                return;
266
            }
267
            if (sNumbers.indexOf(input) !== -1 || (itemType === 'SERIALIZED' && !input)) {
268
                error = true;
269
                $(this).addClass("border-highlight");
270
            }
271
            sNumbers.push(input);
32327 amit.gupta 272
        }
32329 amit.gupta 273
    )
274
    ;
28339 tejbeer 275
 
32327 amit.gupta 276
    $("form#cd input.unitPrice").each(function () {
277
        var input = $(this).val().trim();
278
        $(this).removeClass("border-highlight");
279
        if (!input || parseInt(input) <= 0 || isNaN(input)) {
280
            error = true;
281
            $(this).addClass("border-highlight");
282
        }
283
    });
28339 tejbeer 284
 
32327 amit.gupta 285
    var gstNumber = $("form#cd input[name=gstNumber]").val();
286
    $("form#cd input[name=gstNumber]").removeClass("border-highlight");
287
    if (gstNumber.length > 0 && gstNumber.length != 15) {
288
        alert("Please provide valid gstNumber");
289
        error = true;
290
        $("form#cd input[name=gstNumber]").addClass("border-highlight");
291
    }
28339 tejbeer 292
 
32327 amit.gupta 293
    var amount = 0;
294
    var netPayableAmount = parseFloat($("form#cd input.netPayableAmount").val());
295
    $("form#cd input.amount").each(function () {
296
        if ($(this).val() == "") {
297
            $(this).val(0);
298
        }
299
        var tmpAmount = parseFloat($(this).val());
300
        amount = amount + tmpAmount;
301
    });
28339 tejbeer 302
 
32327 amit.gupta 303
    console.log(amount);
304
    console.log(netPayableAmount);
28339 tejbeer 305
 
32327 amit.gupta 306
    if (amount != netPayableAmount) {
307
        if (amount < netPayableAmount) {
308
            alert("[" + (netPayableAmount - amount) + "] is more required to complete the payment");
309
        } else {
310
            alert("[" + (amount - netPayableAmount) + "] is extra amount, please reduce the amount");
311
        }
312
        $("form#cd input.netPayableAmount").each(function () {
313
            $(this).addClass("border-highlight");
314
        });
315
        error = true;
316
    }
28339 tejbeer 317
 
32327 amit.gupta 318
    if (error) {
319
        return false;
320
    }
321
    return true;
28339 tejbeer 322
 
23347 ashik.ali 323
}
324
 
27187 amit.gupta 325
 
28339 tejbeer 326
function getSerialNumbersFromOrder($el) {
32327 amit.gupta 327
    var $serialNumberElement = $el.find('.serialNumber');
328
    if ($serialNumberElement.val() == '') {
329
        return null;
330
    }
331
    var insuranceAmount = parseFloat($el.find('.insuranceamount').val());
332
    if (insuranceAmount > 0) {
333
        insurance = true;
334
        globalInsurace = true;
335
    } else {
336
        insurance = false;
337
    }
338
    return {'serialNumber': $serialNumberElement.val(), 'insurance': insurance, 'amount': insuranceAmount}
23347 ashik.ali 339
}
340
 
28339 tejbeer 341
function orderDetailsPayload() {
32327 amit.gupta 342
    var priceQtyArray = [];
343
    var customerObj = {};
344
    var paymentOptionIdAmount = [];
345
    var globalInsurance = false;
28339 tejbeer 346
 
32327 amit.gupta 347
    $("#order-items").find("tr:not(:first-child)").each(function (index, el) {
348
        // console.log(el);
349
        // console.log(index);
350
        var $el = $(el);
351
        var $unitPriceElement = $el.find('.unitPrice');
352
        var itemId = parseInt($unitPriceElement.attr("itemId"));
32328 amit.gupta 353
        var qty = parseInt($unitPriceElement.attr("quantity"));
32327 amit.gupta 354
        var found = false;
32816 ranu 355
            var customSerialNumberEl = $(el).find('.customSerialNumber');
32327 amit.gupta 356
        let tmpObj;
357
        let filteredList = priceQtyArray.filter(x => x.itemId === itemId);
358
        if (filteredList.length === 0) {
359
            var $discountElement = $el.find('.discount');
33400 ranu 360
            var $poiId = $el.find('.poiId');
32327 amit.gupta 361
            var unitPrice = parseFloat($unitPriceElement.val());
362
            var discount = parseFloat($discountElement.val());
33400 ranu 363
            var poiId = $poiId.val();
32327 amit.gupta 364
            if (isNaN(discount)) {
365
                discount = 0;
366
            }
32816 ranu 367
            let customSerialNumbers = [];
368
 
369
            if (customSerialNumberEl.val() !== '') {
370
                customSerialNumbers = customSerialNumberEl.val().split(",").map(function (serial) {
371
                    return serial.trim(); // Trim spaces from each serial number
372
                });
373
 
374
                if (customSerialNumbers.length !== qty) {
375
                    alert("Please add all serial numbers");
376
                    return false;
377
                }
378
            }
379
 
32327 amit.gupta 380
            tmpObj = {
381
                itemId: itemId,
33400 ranu 382
                poiId: poiId,
32327 amit.gupta 383
                sellingPrice: unitPrice - discount,
32328 amit.gupta 384
                quantity: 0,
32327 amit.gupta 385
                discountAmount: discount,
32816 ranu 386
                customSerialNumbers: customSerialNumberEl.val().split(","),
32327 amit.gupta 387
                serialNumberDetails: []
388
            };
32816 ranu 389
 
32327 amit.gupta 390
            priceQtyArray.push(tmpObj);
391
        } else {
392
            tmpObj = filteredList[0];
393
        }
28339 tejbeer 394
 
32816 ranu 395
            tmpObj.quantity += qty;
32328 amit.gupta 396
 
32816 ranu 397
            var $serialNumberElement = $(el).find('.serialNumber');
398
            var insuranceEle = $(el).find('.insuranceamount');
399
            var insuranceAmount = 0;
400
            if (insuranceEle.length > 0) {
401
                insuranceAmount = parseFloat(insuranceEle.val());
402
            }
403
            var insuranceId = "";
404
            if (insuranceAmount > 0) {
405
                insuranceId = $(el).find('.insuranceid').val();
406
            }
407
            var ram = $(el).find('.ram').val();
408
            var memory = $(el).find('.memory').val();
409
            var mfgdate = $(el).find('.mfgdate').val();
410
            var serialNumberDetail = {
411
                'serialNumber': $serialNumberElement.val(), 'insurance': insuranceId, 'amount': insuranceAmount,
412
                'ram': ram, 'memory': memory, 'mfgDate': mfgdate
413
            };
414
            tmpObj.serialNumberDetails.push(serialNumberDetail);
415
 
32327 amit.gupta 416
        }
32816 ranu 417
    )
418
    ;
23873 amit.gupta 419
 
28339 tejbeer 420
 
32327 amit.gupta 421
    customerObj['gstNumber'] = $("form#cd input[name=gstNumber]").val();
422
    if (customerId == undefined) {
423
        alert("Please choose customer");
424
        return false;
425
    }
426
    if ($("#customer-address").data("addressselected") == "true") {
427
        alert("Please select address");
428
        return false;
429
    }
430
    customerObj['customerId'] = customerId;
32816 ranu 431
// Check if selectedAddressId is defined and not empty
32627 ranu 432
    if (typeof selectedAddressId !== "undefined" && selectedAddressId !== null && selectedAddressId !== "") {
433
        customerObj['customerAddressId'] = selectedAddressId;
434
    } else {
435
        customerObj['customerAddressId'] = null;
436
    }
437
 
32327 amit.gupta 438
    customerObj['gender'] = $("#gender").val();
439
    customerObj['dateOfBirth'] = getDatesFromPicker("#dateOfBirth").startDate;
28339 tejbeer 440
 
441
 
32327 amit.gupta 442
    var paymentOptionSize = parseInt($('#payment-option-id-amount-container').attr("paymentOptionSize"));
32816 ranu 443
// console.log("paymentOptionSize = "+paymentOptionSize);
32327 amit.gupta 444
    for (var index = 0; index < paymentOptionSize; index++) {
445
        var paymentOptionAmount = 0.0;
446
        if ($('#paymentOptionIdAmount' + index).val() != "") {
447
            paymentOptionAmount = parseFloat($('#paymentOptionIdAmount' + index).val());
448
        }
449
        var paymentOptionId = $('#paymentOptionIdAmount' + index).attr("paymentOptionId");
450
        var paymentOptionIdAmountObject = {};
451
        paymentOptionIdAmountObject['paymentOptionId'] = paymentOptionId;
452
        paymentOptionIdAmountObject['amount'] = paymentOptionAmount;
453
        paymentOptionIdAmount.push(paymentOptionIdAmountObject);
454
    }
455
    var retObj = {};
456
    retObj['fofoOrderItems'] = (priceQtyArray);
457
    retObj['customer'] = (customerObj);
458
    retObj['paymentOptions'] = (paymentOptionIdAmount);
459
    retObj['poId'] = $('#poid').val();
28339 tejbeer 460
 
32327 amit.gupta 461
    retObj['poItemId'] = $('#poItemId').val();
28339 tejbeer 462
 
32327 amit.gupta 463
    console.log(retObj);
464
    return JSON.stringify(retObj);
23347 ashik.ali 465
}
466
 
27187 amit.gupta 467
function resetInputs() {
32327 amit.gupta 468
    $("div.customerinfo").html(customerInfo);
469
    $("div.billinginfo").html(billingInfo).hide();
27187 amit.gupta 470
}
31083 amit.gupta 471
 
28339 tejbeer 472
function writeOldCustomerDetailsByMobileNumber(mobileNumber) {
32327 amit.gupta 473
    doAjaxRequestHandler(context + "/customer/mobileNumber?mobileNumber=" + mobileNumber, "GET", function (response) {
474
        if (response.response == '') {
475
            return;
476
        }
477
        var customer = response.response;
478
        if (customer == null) {
479
            $('input.phone').attr('value', mobileNumber).attr('readonly', true);
480
            $('button.mk_add_customer').show();
28339 tejbeer 481
 
32327 amit.gupta 482
            return;
483
        }
484
        $('input.firstName').attr('value', customer.firstName).attr('readonly', true);
485
        $('input.lastName').attr('value', customer.lastName).attr('readonly', true);
486
        $('input.phone').attr('value', customer.mobileNumber).attr('readonly', true);
487
        if (customer.emailId != null && customer.emailId != '') {
488
            $('#emailId').attr('value', customer.emailId).attr('readonly', true);
489
            console.log('helo');
490
        } else {
491
            $('button.mk_add_email').show();
492
        }
493
        $('#firstName').val(customer.firstName);
494
        $('#lastName').val(customer.lastName);
495
        $('#alternatePhone').val(customer.mobileNumber);
496
        customerId = customer.customerId;
497
        $("div.billinginfo").show();
498
        trs = [];
499
        if (customer.addresses != null) {
500
            for (address of customer.addresses) {
501
                if (pendingPO != null) {
28339 tejbeer 502
 
32327 amit.gupta 503
                    if (pendingPO.customerAddressId == address.id) {
504
                        trs.push(getAddressTr(address));
505
                    }
506
                } else {
507
                    trs.push(getAddressTr(address));
508
                }
509
            }
510
        }
511
        $("#address-body").html(trs.join(""));
28339 tejbeer 512
 
32327 amit.gupta 513
    });
27187 amit.gupta 514
}
31083 amit.gupta 515
 
27187 amit.gupta 516
function getAddressTr(address) {
32327 amit.gupta 517
    var tr = [];
518
    tr.push(`<tr><td>${address.name} ${address.lastName}</td>`);
519
    tr.push(`<td>${address.line1}, ${address.line2}</td>`);
520
    tr.push(`<td>${address.city}</td>`);
521
    tr.push(`<td>${address.state}</td>`);
522
    tr.push(`<td>${address.pinCode}</td>`);
523
    tr.push(`<td>${address.phoneNumber}</td>`);
524
    tr.push(`<td><a class="select-address" href="javascript:void(0);" data-addressid="${address.id}">Select address</a></td></tr>`);
525
    return tr.join("");
27693 amit.gupta 526
}
31083 amit.gupta 527
 
27693 amit.gupta 528
function validateEmail(email) {
32327 amit.gupta 529
    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,}))$/;
530
    return re.test(String(email).toLowerCase());
31083 amit.gupta 531
}