Subversion Repositories SmartDukaan

Rev

Rev 32329 | Rev 32627 | 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;
355
        let tmpObj;
356
        let filteredList = priceQtyArray.filter(x => x.itemId === itemId);
357
        if (filteredList.length === 0) {
358
            var $discountElement = $el.find('.discount');
359
            var unitPrice = parseFloat($unitPriceElement.val());
360
            var discount = parseFloat($discountElement.val());
361
            if (isNaN(discount)) {
362
                discount = 0;
363
            }
364
            tmpObj = {
365
                itemId: itemId,
366
                sellingPrice: unitPrice - discount,
32328 amit.gupta 367
                quantity: 0,
32327 amit.gupta 368
                discountAmount: discount,
369
                serialNumberDetails: []
370
            };
371
            priceQtyArray.push(tmpObj);
372
        } else {
373
            tmpObj = filteredList[0];
374
        }
28339 tejbeer 375
 
32328 amit.gupta 376
        tmpObj.quantity += qty;
377
 
32327 amit.gupta 378
        var $serialNumberElement = $(el).find('.serialNumber');
379
        var insuranceEle = $(el).find('.insuranceamount');
380
        var insuranceAmount = 0;
381
        if (insuranceEle.length > 0) {
382
            insuranceAmount = parseFloat(insuranceEle.val());
383
        }
384
        var insuranceId = "";
385
        if (insuranceAmount > 0) {
386
            insuranceId = $(el).find('.insuranceid').val();
387
        }
388
        var ram = $(el).find('.ram').val();
389
        var memory = $(el).find('.memory').val();
390
        var mfgdate = $(el).find('.mfgdate').val();
391
        var serialNumberDetail = {
392
            'serialNumber': $serialNumberElement.val(), 'insurance': insuranceId, 'amount': insuranceAmount,
393
            'ram': ram, 'memory': memory, 'mfgDate': mfgdate
394
        };
395
        tmpObj.serialNumberDetails.push(serialNumberDetail);
23873 amit.gupta 396
 
32327 amit.gupta 397
    });
28339 tejbeer 398
 
399
 
32327 amit.gupta 400
    customerObj['gstNumber'] = $("form#cd input[name=gstNumber]").val();
401
    if (customerId == undefined) {
402
        alert("Please choose customer");
403
        return false;
404
    }
405
    if ($("#customer-address").data("addressselected") == "true") {
406
        alert("Please select address");
407
        return false;
408
    }
409
    customerObj['customerId'] = customerId;
410
    customerObj['customerAddressId'] = selectedAddressId;
411
    customerObj['gender'] = $("#gender").val();
412
    customerObj['dateOfBirth'] = getDatesFromPicker("#dateOfBirth").startDate;
28339 tejbeer 413
 
414
 
32327 amit.gupta 415
    var paymentOptionSize = parseInt($('#payment-option-id-amount-container').attr("paymentOptionSize"));
416
    // console.log("paymentOptionSize = "+paymentOptionSize);
417
    for (var index = 0; index < paymentOptionSize; index++) {
418
        var paymentOptionAmount = 0.0;
419
        if ($('#paymentOptionIdAmount' + index).val() != "") {
420
            paymentOptionAmount = parseFloat($('#paymentOptionIdAmount' + index).val());
421
        }
422
        var paymentOptionId = $('#paymentOptionIdAmount' + index).attr("paymentOptionId");
423
        var paymentOptionIdAmountObject = {};
424
        paymentOptionIdAmountObject['paymentOptionId'] = paymentOptionId;
425
        paymentOptionIdAmountObject['amount'] = paymentOptionAmount;
426
        paymentOptionIdAmount.push(paymentOptionIdAmountObject);
427
    }
428
    var retObj = {};
429
    retObj['fofoOrderItems'] = (priceQtyArray);
430
    retObj['customer'] = (customerObj);
431
    retObj['paymentOptions'] = (paymentOptionIdAmount);
432
    retObj['poId'] = $('#poid').val();
28339 tejbeer 433
 
32327 amit.gupta 434
    retObj['poItemId'] = $('#poItemId').val();
28339 tejbeer 435
 
32327 amit.gupta 436
    console.log(retObj);
437
    return JSON.stringify(retObj);
23347 ashik.ali 438
}
439
 
27187 amit.gupta 440
function resetInputs() {
32327 amit.gupta 441
    $("div.customerinfo").html(customerInfo);
442
    $("div.billinginfo").html(billingInfo).hide();
27187 amit.gupta 443
}
31083 amit.gupta 444
 
28339 tejbeer 445
function writeOldCustomerDetailsByMobileNumber(mobileNumber) {
32327 amit.gupta 446
    doAjaxRequestHandler(context + "/customer/mobileNumber?mobileNumber=" + mobileNumber, "GET", function (response) {
447
        if (response.response == '') {
448
            return;
449
        }
450
        var customer = response.response;
451
        if (customer == null) {
452
            $('input.phone').attr('value', mobileNumber).attr('readonly', true);
453
            $('button.mk_add_customer').show();
28339 tejbeer 454
 
32327 amit.gupta 455
            return;
456
        }
457
        $('input.firstName').attr('value', customer.firstName).attr('readonly', true);
458
        $('input.lastName').attr('value', customer.lastName).attr('readonly', true);
459
        $('input.phone').attr('value', customer.mobileNumber).attr('readonly', true);
460
        if (customer.emailId != null && customer.emailId != '') {
461
            $('#emailId').attr('value', customer.emailId).attr('readonly', true);
462
            console.log('helo');
463
        } else {
464
            $('button.mk_add_email').show();
465
        }
466
        $('#firstName').val(customer.firstName);
467
        $('#lastName').val(customer.lastName);
468
        $('#alternatePhone').val(customer.mobileNumber);
469
        customerId = customer.customerId;
470
        $("div.billinginfo").show();
471
        trs = [];
472
        if (customer.addresses != null) {
473
            for (address of customer.addresses) {
474
                if (pendingPO != null) {
28339 tejbeer 475
 
32327 amit.gupta 476
                    if (pendingPO.customerAddressId == address.id) {
477
                        trs.push(getAddressTr(address));
478
                    }
479
                } else {
480
                    trs.push(getAddressTr(address));
481
                }
482
            }
483
        }
484
        $("#address-body").html(trs.join(""));
28339 tejbeer 485
 
32327 amit.gupta 486
    });
27187 amit.gupta 487
}
31083 amit.gupta 488
 
27187 amit.gupta 489
function getAddressTr(address) {
32327 amit.gupta 490
    var tr = [];
491
    tr.push(`<tr><td>${address.name} ${address.lastName}</td>`);
492
    tr.push(`<td>${address.line1}, ${address.line2}</td>`);
493
    tr.push(`<td>${address.city}</td>`);
494
    tr.push(`<td>${address.state}</td>`);
495
    tr.push(`<td>${address.pinCode}</td>`);
496
    tr.push(`<td>${address.phoneNumber}</td>`);
497
    tr.push(`<td><a class="select-address" href="javascript:void(0);" data-addressid="${address.id}">Select address</a></td></tr>`);
498
    return tr.join("");
27693 amit.gupta 499
}
31083 amit.gupta 500
 
27693 amit.gupta 501
function validateEmail(email) {
32327 amit.gupta 502
    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,}))$/;
503
    return re.test(String(email).toLowerCase());
31083 amit.gupta 504
}