Subversion Repositories SmartDukaan

Rev

Rev 34204 | Rev 34805 | 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
 
34179 tejus.loha 81
 
32327 amit.gupta 82
    $('form#newaddress').validate({
83
        rules: {
84
            firstName: {
85
                required: true
86
            },
87
            line1: {
88
                required: true
89
            },
90
            state: {
91
                required: true
92
            },
93
            city: {
94
                required: true
95
            },
96
            pinCode: {
97
                required: true,
98
                digits: true,
99
                minlength: 6,
100
                maxlength: 6,
101
            },
102
            alternatePhone: {
103
                required: true,
104
                minlength: 10,
105
                maxlength: 10,
106
                digits: true
107
            },
108
        },
109
        messages: {
110
            firstName: {
111
                required: "Required"
112
            },
113
            line1: {
114
                required: "Required"
115
            },
116
            state: {
117
                required: "State required"
118
            },
119
            city: {
120
                required: "City required"
121
            },
122
            pinCode: {
123
                required: "Required",
124
                digits: "Invalid pin"
125
            },
126
            alternatePhone: {
127
                required: "Required",
128
                digits: "Invalid number",
129
                minlength: "Number should be of 10 digits"
130
            }
131
        },
132
        submitHandler: function (form, event) {
133
            event.preventDefault();
134
            let customerAddress = {};
135
            customerAddress['name'] = $("#firstName").val();
136
            customerAddress['lastName'] = $("#lastName").val();
137
            customerAddress['line1'] = $("#line1").val();
138
            customerAddress['line2'] = $("#line2").val();
139
            customerAddress['landmark'] = $("#landmark").val();
140
            customerAddress['city'] = $("#city").val();
141
            customerAddress['state'] = $('select[name=state] option:selected').val();
142
            customerAddress['pinCode'] = $("#pinCode").val();
143
            customerAddress['phoneNumber'] = $("#alternatePhone").val();
144
            customerAddress['country'] = "India";
145
            doPostAjaxRequestWithJsonHandler(`${context}/customer/address?customerId=${customerId}`, JSON.stringify(customerAddress), function (response) {
146
                $("#address-body").prepend(getAddressTr(response.response));
147
                $('#newaddressModal').modal('toggle');
148
                $("#address-body").find('a.select-address').click();
149
            });
150
        }
31083 amit.gupta 151
 
32327 amit.gupta 152
    });
31083 amit.gupta 153
 
32327 amit.gupta 154
    $("input.unitPrice").on('change', function () {
155
        var $element = $(this);
156
        var unitPrice = parseFloat($element.val());
157
        if (!isNaN(unitPrice)) {
158
            var itemType = parseFloat($(this).closest('tr').find('.serialNumber').attr("itemType"));
159
            var mopPrice = parseFloat($(this).attr('mopPrice'));
160
            var isMop = JSON.parse($(this).attr('isMop'));
161
            var dp = parseFloat($(this).attr('dp'));
162
            var mrp = parseFloat($(this).attr('mrp'));
163
            if (mrp != 0 && unitPrice > mrp) {
164
                alert("Selling Price should not be greater than MRP");
165
                $element.addClass("border-highlight");
166
            } else if (!accessoriesDeals && unitPrice < mopPrice) {
167
                alert("Selling Price must be greater than equal to MOP");
168
                $element.addClass("border-highlight");
169
            } else if (itemType == 'SERIALIZED' && unitPrice < mopPrice) {
170
                if (isMop) {
171
                    alert("Selling Price must be greater than equal to MOP");
172
                    $element.addClass("border-highlight");
173
                }
174
            } else if (itemType == 'NON_SERIALIZED' && unitPrice < dp) {
175
                alert("Selling Price must be greater than equal to DP");
176
                $element.addClass("border-highlight");
177
            } else {
178
                $element.removeClass("border-highlight");
179
            }
180
            // Clear insurance values if price changes
181
            $(this).closest('tr').find('.insuranceid').val("");
182
            $(this).closest('tr').find('.insuranceamount').val("0");
183
        }
32468 amit.gupta 184
        //calculateTotalAmount();
32327 amit.gupta 185
    });
186
    customerInfo = $("div.customerinfo").html();
187
    billingInfo = $("div.billinginfo").html();
28339 tejbeer 188
 
32327 amit.gupta 189
    $("input.search-phone").change(function () {
190
        resetInputs();
191
        var mobileNumber = $(this).val();
32468 amit.gupta 192
        console.log(mobileNumber);
32327 amit.gupta 193
        if (mobileNumber.length < 10 || mobileNumber.length > 10) {
194
            alert("Mobile Number is must be 10 digits");
195
            return false;
196
        } else {
197
            writeOldCustomerDetailsByMobileNumber(mobileNumber);
198
        }
199
    });
28339 tejbeer 200
 
32327 amit.gupta 201
    $(document).on('click', 'button.new-address-btn', function () {
202
        $('#newaddressModal').modal({show: true});
203
    });
28339 tejbeer 204
 
32327 amit.gupta 205
    $(document).on('click', 'button.mk_add_email', function () {
206
        let customerObj = {};
207
        customerObj['customerId'] = customerId;
208
        customerObj['emailId'] = $("#emailId").val();
209
        if (validateEmail(customerObj['emailId'])) {
210
            doPostAjaxRequestWithJsonHandler(`${context}/customer/add-email`, JSON.stringify(customerObj), function (response) {
211
                alert("Email added");
212
                $("input.search-phone").val(customerObj['mobileNumber']).change();
213
            });
214
        } else {
215
            alert("Invalid email id");
216
        }
28339 tejbeer 217
 
32327 amit.gupta 218
    });
219
    $(document).on('click', 'button.mk_add_customer', function () {
220
        customerObj = {}
221
        if ($("input.firstName").val().length == 0) {
222
            alert("First Name is required");
223
            return false;
224
        }
225
        customerObj['firstName'] = $("input.firstName").val();
226
        customerObj['lastName'] = $("input.lastName").val();
227
        customerObj['emailId'] = $("#emailId").val();
27688 tejbeer 228
 
32327 amit.gupta 229
        console.log(customerObj['emailId']);
230
        customerObj['mobileNumber'] = $("input.phone").val();
31855 tejbeer 231
 
32327 amit.gupta 232
        if (customerObj['emailId']) {
233
            if (!validateEmail(customerObj['emailId'])) {
234
                alert("Invalid email id");
235
                return false;
236
            }
237
        }
31855 tejbeer 238
 
239
 
32327 amit.gupta 240
        doPostAjaxRequestWithJsonHandler(`${context}/customer/add`, JSON.stringify(customerObj), function (response) {
241
            alert("Customer added");
242
            $("input.search-phone").change();
243
        });
31855 tejbeer 244
 
28339 tejbeer 245
 
32327 amit.gupta 246
    });
247
    $(document).on('click', 'a.select-address', function () {
248
        $(this).closest('table').data("addressselected", "true").find('td').css("font-weight", "normal");
249
        $(this).closest('tr').find('td').css("font-weight", "bold");
250
        selectedAddressId = $(this).data("addressid");
251
    });
252
    $(document).on('click', 'button.btn-add-address', function () {
253
        $("form#newaddress").submit();
254
    });
28339 tejbeer 255
 
32327 amit.gupta 256
}
28339 tejbeer 257
 
258
function validateOrderDetails() {
32327 amit.gupta 259
    var sNumbers = [];
260
    var error = false;
261
    $("form#cd input.serialNumber").each(function () {
32329 amit.gupta 262
            var input = $(this).val().trim();
263
            var itemType = $(this).attr("itemType");
264
            $(this).removeClass("border-highlight");
265
            if (itemType !== 'SERIALIZED') {
266
                return;
267
            }
268
            if (sNumbers.indexOf(input) !== -1 || (itemType === 'SERIALIZED' && !input)) {
269
                error = true;
270
                $(this).addClass("border-highlight");
271
            }
272
            sNumbers.push(input);
32327 amit.gupta 273
        }
32329 amit.gupta 274
    )
275
    ;
28339 tejbeer 276
 
32327 amit.gupta 277
    $("form#cd input.unitPrice").each(function () {
278
        var input = $(this).val().trim();
279
        $(this).removeClass("border-highlight");
280
        if (!input || parseInt(input) <= 0 || isNaN(input)) {
281
            error = true;
282
            $(this).addClass("border-highlight");
283
        }
284
    });
28339 tejbeer 285
 
32327 amit.gupta 286
    var gstNumber = $("form#cd input[name=gstNumber]").val();
287
    $("form#cd input[name=gstNumber]").removeClass("border-highlight");
288
    if (gstNumber.length > 0 && gstNumber.length != 15) {
289
        alert("Please provide valid gstNumber");
290
        error = true;
291
        $("form#cd input[name=gstNumber]").addClass("border-highlight");
292
    }
28339 tejbeer 293
 
32327 amit.gupta 294
    var amount = 0;
295
    var netPayableAmount = parseFloat($("form#cd input.netPayableAmount").val());
296
    $("form#cd input.amount").each(function () {
297
        if ($(this).val() == "") {
298
            $(this).val(0);
299
        }
300
        var tmpAmount = parseFloat($(this).val());
301
        amount = amount + tmpAmount;
302
    });
28339 tejbeer 303
 
32327 amit.gupta 304
    console.log(amount);
305
    console.log(netPayableAmount);
28339 tejbeer 306
 
32327 amit.gupta 307
    if (amount != netPayableAmount) {
308
        if (amount < netPayableAmount) {
309
            alert("[" + (netPayableAmount - amount) + "] is more required to complete the payment");
310
        } else {
311
            alert("[" + (amount - netPayableAmount) + "] is extra amount, please reduce the amount");
312
        }
313
        $("form#cd input.netPayableAmount").each(function () {
314
            $(this).addClass("border-highlight");
315
        });
316
        error = true;
317
    }
28339 tejbeer 318
 
32327 amit.gupta 319
    if (error) {
320
        return false;
321
    }
322
    return true;
28339 tejbeer 323
 
23347 ashik.ali 324
}
325
 
27187 amit.gupta 326
 
28339 tejbeer 327
function getSerialNumbersFromOrder($el) {
32327 amit.gupta 328
    var $serialNumberElement = $el.find('.serialNumber');
329
    if ($serialNumberElement.val() == '') {
330
        return null;
331
    }
332
    var insuranceAmount = parseFloat($el.find('.insuranceamount').val());
333
    if (insuranceAmount > 0) {
334
        insurance = true;
335
        globalInsurace = true;
336
    } else {
337
        insurance = false;
338
    }
339
    return {'serialNumber': $serialNumberElement.val(), 'insurance': insurance, 'amount': insuranceAmount}
23347 ashik.ali 340
}
341
 
28339 tejbeer 342
function orderDetailsPayload() {
32327 amit.gupta 343
    var priceQtyArray = [];
344
    var customerObj = {};
345
    var paymentOptionIdAmount = [];
346
    var globalInsurance = false;
28339 tejbeer 347
 
32327 amit.gupta 348
    $("#order-items").find("tr:not(:first-child)").each(function (index, el) {
34798 ranu 349
        console.log("el------------", el);
34179 tejus.loha 350
            // console.log(index);
351
            var $el = $(el);
352
            var $customerOfferItemId = $el.find('.offerSelect');
353
            var $unitPriceElement = $el.find('.unitPrice');
354
            var itemId = parseInt($unitPriceElement.attr("itemId"));
355
            var qty = parseInt($unitPriceElement.attr("quantity"));
356
            var found = false;
32816 ranu 357
            var customSerialNumberEl = $(el).find('.customSerialNumber');
34179 tejus.loha 358
            let tmpObj;
359
            let filteredList = priceQtyArray.filter(x => x.itemId === itemId);
360
            if (filteredList.length === 0) {
361
                var $discountElement = $el.find('.discount');
362
                var $poiId = $el.find('.poiId');
363
                var unitPrice = parseFloat($unitPriceElement.val());
364
                var discount = parseFloat($discountElement.val());
365
                var poiId = $poiId.val();
366
                var customerOfferItemId;
367
                if ($customerOfferItemId) {
368
                    customerOfferItemId = $customerOfferItemId.val();
369
                } else {
370
                    customerOfferItemId = 0;
371
                }
33795 ranu 372
 
34179 tejus.loha 373
                if (isNaN(discount)) {
374
                    discount = 0;
375
                }
376
                let customSerialNumbers = [];
32816 ranu 377
 
34179 tejus.loha 378
                if (customSerialNumberEl.val() !== '') {
379
                    customSerialNumbers = customSerialNumberEl.val().split(",").map(function (serial) {
380
                        return serial.trim(); // Trim spaces from each serial number
381
                    });
32816 ranu 382
 
34179 tejus.loha 383
                    if (customSerialNumbers.length !== qty) {
384
                        alert("Please add all serial numbers");
385
                        return false;
386
                    }
32816 ranu 387
                }
388
 
34179 tejus.loha 389
                tmpObj = {
390
                    itemId: itemId,
391
                    poiId: poiId,
392
                    sellingPrice: unitPrice - discount,
393
                    quantity: 0,
394
                    customerOfferItemId: customerOfferItemId,
395
                    discountAmount: discount,
396
                    customSerialNumbers: customSerialNumberEl.val().split(","),
397
                    serialNumberDetails: []
398
                };
32816 ranu 399
 
34179 tejus.loha 400
                priceQtyArray.push(tmpObj);
401
            } else {
402
                tmpObj = filteredList[0];
403
            }
28339 tejbeer 404
 
32816 ranu 405
            tmpObj.quantity += qty;
32328 amit.gupta 406
 
32816 ranu 407
            var $serialNumberElement = $(el).find('.serialNumber');
408
            var insuranceEle = $(el).find('.insuranceamount');
409
            var insuranceAmount = 0;
410
            if (insuranceEle.length > 0) {
411
                insuranceAmount = parseFloat(insuranceEle.val());
412
            }
413
            var insuranceId = "";
34798 ranu 414
        var correlationId = "";
415
        var rawDate = "";
416
        var dateObj = new Date();
417
        var mfgdate = "";
418
 
419
        if (insuranceAmount > 0) {
32816 ranu 420
                insuranceId = $(el).find('.insuranceid').val();
34798 ranu 421
            correlationId = $(el).find('.correlationid').val();
422
            rawDate = $(el).find('.mfgdate').val();
423
            dateObj = new Date(rawDate);
424
            mfgdate = dateObj.toISOString().split('.')[0];
32816 ranu 425
            }
426
            var ram = $(el).find('.ram').val();
427
            var memory = $(el).find('.memory').val();
34798 ranu 428
 
429
        console.log("correlationId--------", correlationId);
32816 ranu 430
            var serialNumberDetail = {
34798 ranu 431
                'serialNumber': $serialNumberElement.val(),
432
                'insurance': insuranceId,
433
                'correlationId': correlationId,
434
                'amount': insuranceAmount,
32816 ranu 435
                'ram': ram, 'memory': memory, 'mfgDate': mfgdate
436
            };
437
            tmpObj.serialNumberDetails.push(serialNumberDetail);
438
 
32327 amit.gupta 439
        }
32816 ranu 440
    )
441
    ;
23873 amit.gupta 442
 
28339 tejbeer 443
 
32327 amit.gupta 444
    customerObj['gstNumber'] = $("form#cd input[name=gstNumber]").val();
445
    if (customerId == undefined) {
446
        alert("Please choose customer");
447
        return false;
448
    }
449
    if ($("#customer-address").data("addressselected") == "true") {
450
        alert("Please select address");
451
        return false;
452
    }
453
    customerObj['customerId'] = customerId;
32816 ranu 454
// Check if selectedAddressId is defined and not empty
32627 ranu 455
    if (typeof selectedAddressId !== "undefined" && selectedAddressId !== null && selectedAddressId !== "") {
456
        customerObj['customerAddressId'] = selectedAddressId;
457
    } else {
458
        customerObj['customerAddressId'] = null;
459
    }
460
 
32327 amit.gupta 461
    customerObj['gender'] = $("#gender").val();
462
    customerObj['dateOfBirth'] = getDatesFromPicker("#dateOfBirth").startDate;
28339 tejbeer 463
 
464
 
32327 amit.gupta 465
    var paymentOptionSize = parseInt($('#payment-option-id-amount-container').attr("paymentOptionSize"));
32816 ranu 466
// console.log("paymentOptionSize = "+paymentOptionSize);
32327 amit.gupta 467
    for (var index = 0; index < paymentOptionSize; index++) {
468
        var paymentOptionAmount = 0.0;
469
        if ($('#paymentOptionIdAmount' + index).val() != "") {
470
            paymentOptionAmount = parseFloat($('#paymentOptionIdAmount' + index).val());
471
        }
472
        var paymentOptionId = $('#paymentOptionIdAmount' + index).attr("paymentOptionId");
473
        var paymentOptionIdAmountObject = {};
474
        paymentOptionIdAmountObject['paymentOptionId'] = paymentOptionId;
475
        paymentOptionIdAmountObject['amount'] = paymentOptionAmount;
476
        paymentOptionIdAmount.push(paymentOptionIdAmountObject);
477
    }
478
    var retObj = {};
479
    retObj['fofoOrderItems'] = (priceQtyArray);
480
    retObj['customer'] = (customerObj);
481
    retObj['paymentOptions'] = (paymentOptionIdAmount);
482
    retObj['poId'] = $('#poid').val();
28339 tejbeer 483
 
32327 amit.gupta 484
    retObj['poItemId'] = $('#poItemId').val();
28339 tejbeer 485
 
32327 amit.gupta 486
    console.log(retObj);
487
    return JSON.stringify(retObj);
23347 ashik.ali 488
}
489
 
27187 amit.gupta 490
function resetInputs() {
32327 amit.gupta 491
    $("div.customerinfo").html(customerInfo);
492
    $("div.billinginfo").html(billingInfo).hide();
27187 amit.gupta 493
}
31083 amit.gupta 494
 
28339 tejbeer 495
function writeOldCustomerDetailsByMobileNumber(mobileNumber) {
32327 amit.gupta 496
    doAjaxRequestHandler(context + "/customer/mobileNumber?mobileNumber=" + mobileNumber, "GET", function (response) {
497
        if (response.response == '') {
498
            return;
499
        }
500
        var customer = response.response;
501
        if (customer == null) {
502
            $('input.phone').attr('value', mobileNumber).attr('readonly', true);
503
            $('button.mk_add_customer').show();
28339 tejbeer 504
 
32327 amit.gupta 505
            return;
506
        }
507
        $('input.firstName').attr('value', customer.firstName).attr('readonly', true);
508
        $('input.lastName').attr('value', customer.lastName).attr('readonly', true);
509
        $('input.phone').attr('value', customer.mobileNumber).attr('readonly', true);
510
        if (customer.emailId != null && customer.emailId != '') {
511
            $('#emailId').attr('value', customer.emailId).attr('readonly', true);
512
            console.log('helo');
513
        } else {
514
            $('button.mk_add_email').show();
515
        }
516
        $('#firstName').val(customer.firstName);
517
        $('#lastName').val(customer.lastName);
518
        $('#alternatePhone').val(customer.mobileNumber);
519
        customerId = customer.customerId;
520
        $("div.billinginfo").show();
521
        trs = [];
522
        if (customer.addresses != null) {
523
            for (address of customer.addresses) {
524
                if (pendingPO != null) {
28339 tejbeer 525
 
32327 amit.gupta 526
                    if (pendingPO.customerAddressId == address.id) {
527
                        trs.push(getAddressTr(address));
528
                    }
529
                } else {
530
                    trs.push(getAddressTr(address));
531
                }
532
            }
533
        }
534
        $("#address-body").html(trs.join(""));
28339 tejbeer 535
 
32327 amit.gupta 536
    });
27187 amit.gupta 537
}
31083 amit.gupta 538
 
27187 amit.gupta 539
function getAddressTr(address) {
32327 amit.gupta 540
    var tr = [];
541
    tr.push(`<tr><td>${address.name} ${address.lastName}</td>`);
542
    tr.push(`<td>${address.line1}, ${address.line2}</td>`);
543
    tr.push(`<td>${address.city}</td>`);
544
    tr.push(`<td>${address.state}</td>`);
545
    tr.push(`<td>${address.pinCode}</td>`);
546
    tr.push(`<td>${address.phoneNumber}</td>`);
547
    tr.push(`<td><a class="select-address" href="javascript:void(0);" data-addressid="${address.id}">Select address</a></td></tr>`);
548
    return tr.join("");
27693 amit.gupta 549
}
31083 amit.gupta 550
 
27693 amit.gupta 551
function validateEmail(email) {
32327 amit.gupta 552
    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,}))$/;
553
    return re.test(String(email).toLowerCase());
31083 amit.gupta 554
}
34179 tejus.loha 555
function sendInvoiceOnWApp(orderId){
556
    let whatsAppMobile = $('#whatsApp-invoice-number').val();
34204 tejus.loha 557
    if(!whatsAppMobile){
558
        alert('Please enter valid whatsApp number');
559
        return;
560
    }
561
    if(whatsAppMobile.length<10){
562
        alert('Mobile number must be at least 10 digits');
563
        return;
564
    }
565
    if(confirm('Are you sure you want to send invoice on whatsApp?')){
566
        doPutAjaxRequestHandler(`${context}/sendInvoiceOnWhatsApp?orderId=${orderId}&whatsAppMobile=${whatsAppMobile}`, function (response) {
567
            console.log("sendInvoiceOnWhatsApp res - ",response);
568
            if(response){
569
                alert('Invoice send successfully on whatsApp');
570
            }
571
        });
572
    }else {
573
        return;
574
    }
34179 tejus.loha 575
 
34204 tejus.loha 576
 
34179 tejus.loha 577
}