Subversion Repositories SmartDukaan

Rev

Rev 36299 | Rev 36532 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
32352 amit.gupta 1
$(function () {
2
    $(document).on('click', ".warehouse-create-purchase-order", function () {
3
        loadCreatePurchase("main-content");
4
    });
32145 tejbeer 5
 
32352 amit.gupta 6
    $(document).on('click', ".warehouse-receive-new-invoice", function () {
7
        loadNewReceiveInvoice("main-content");
8
    });
32145 tejbeer 9
 
32192 tejbeer 10
 
32352 amit.gupta 11
    $(document).on('click', ".warehouse-grn-request", function () {
12
        loadGrnRequest("main-content");
13
    });
32192 tejbeer 14
 
32300 tejbeer 15
 
32352 amit.gupta 16
    $(document).on('click', ".warehouse-debit-note", function () {
17
        loadDebitNote("main-content");
18
    });
32192 tejbeer 19
 
20
 
32352 amit.gupta 21
    $(document).on('click', ".warehouse-invoices", function () {
22
        loadWarehouseInvoices("main-content");
23
    });
32256 tejbeer 24
 
32300 tejbeer 25
 
32352 amit.gupta 26
    $(document).on('click', '.dateWiseInvoices', function () {
32300 tejbeer 27
 
32352 amit.gupta 28
        var startDate = getDatesFromPicker('input[name="invoice-duration"]').startDate;
29
        var endDate = getDatesFromPicker('input[name="invoice-duration"]').endDate
32300 tejbeer 30
 
32352 amit.gupta 31
        var vendorId = $('#vendorId').val();
32300 tejbeer 32
 
34047 tejus.loha 33
        // doGetAjaxRequestHandler(context + "/getWarehouseInvoicesByVendor?vendorId=" + vendorId + "&startDate=" + startDate + "&endDate=" + endDate, function (response) {
34
        // $('.invoicesviewcontainer').html(response);
35
        doGetAjaxRequestHandler(context + "/getWarehouseInvoicesBydateWise?dateWiseInvoices=" + "&startDate=" + startDate + "&endDate=" + endDate, function (response) {
36
            $('.invoicesviewcontainer').html(response);
37
        });
32300 tejbeer 38
 
33737 ranu 39
    });
32300 tejbeer 40
 
33737 ranu 41
    $(document).on('click', '.generateInvoicesExcel', function () {
32300 tejbeer 42
 
33737 ranu 43
        var startDate = getDatesFromPicker('input[name="invoice-duration"]').startDate;
44
        var endDate = getDatesFromPicker('input[name="invoice-duration"]').endDate;
45
        doAjaxGetDownload(context + "/generateDatewiseInvoiceExcel?startDate=" + startDate + "&endDate=" + endDate, "PurchaseInvoicesReport.xlsx");
32352 amit.gupta 46
    });
32300 tejbeer 47
 
48
 
32352 amit.gupta 49
    $(document)
50
        .on(
51
            'input',
52
            '#invoice',
53
            function () {
54
                if (confirm('Document has been selected, Do you want to upload ?')) {
55
                    var fileSelector = $('#invoice')[0];
56
                    if (fileSelector != undefined
57
                        && fileSelector.files[0] != undefined) {
58
                        var url = context + '/document-upload';
32300 tejbeer 59
 
32352 amit.gupta 60
                        console.log(url);
61
                        var file = this.files[0];
62
                        doAjaxUploadRequestHandler(
63
                            url,
64
                            'POST',
65
                            file,
66
                            function (response) {
67
                                console.log(response);
68
                                var documentId = response.response.document_id;
69
                                console.log("documentId : "
70
                                    + documentId);
71
                                localStorage.setItem("invoiceDocument",
72
                                    documentId);
32192 tejbeer 73
 
32295 tejbeer 74
 
32352 amit.gupta 75
                            });
32300 tejbeer 76
 
32352 amit.gupta 77
                    }
78
                } else {
79
                    // Do nothing!
80
                }
81
            });
32192 tejbeer 82
 
32352 amit.gupta 83
    $(document).on('click', ".createReceiveInvoice", function () {
32192 tejbeer 84
 
32352 amit.gupta 85
        var invoiceDate = $('#actualDate').val();
32192 tejbeer 86
 
32352 amit.gupta 87
        var warehouseId = $('#warehouseMap').val();
32192 tejbeer 88
 
32352 amit.gupta 89
        var numItems = $('#numberofItems').val();
32192 tejbeer 90
 
32352 amit.gupta 91
        var supplierId = $('#vendorId').val();
32192 tejbeer 92
 
32352 amit.gupta 93
        var totalValue = $('#totalValue').val();
32192 tejbeer 94
 
32352 amit.gupta 95
        var invoiceNumber = $('#invoiceNumber').val();
32642 raveendra. 96
        //var invoiceDoc  =  $('#invoiceDoc').val();
32192 tejbeer 97
 
34047 tejus.loha 98
        var invoice = $('#invoice').val();
32642 raveendra. 99
        var invoiceDoc = localStorage
100
            .getItem("invoiceDocument");
34047 tejus.loha 101
        console.log(invoiceDoc)
32192 tejbeer 102
 
32629 amit.gupta 103
        if (invoiceDate === "" && warehouseId === "" && numItems === "" && supplierId === "" && totalValue === "" && invoiceNumber === "" && invoiceDoc === "") {
32352 amit.gupta 104
            alert("Field can't be empty");
105
            return false;
106
        }
32192 tejbeer 107
 
32629 amit.gupta 108
        if (invoiceDate === "") {
32638 raveendra. 109
            alert("Please select date");
32629 amit.gupta 110
            return false;
111
        }
34047 tejus.loha 112
        if (supplierId === "") {
113
            alert("Please choose supplier/Vendor");
114
            return false;
115
        }
32638 raveendra. 116
 
117
        if (invoiceNumber === "") {
118
            alert("Please fill Invoice Number.");
119
            return false;
120
        }
32629 amit.gupta 121
        if (warehouseId === "") {
32638 raveendra. 122
            alert("Please choose warehouse");
32629 amit.gupta 123
            return false;
124
        }
125
 
126
        if (numItems === "") {
32638 raveendra. 127
            alert("Please fill number of items.");
32629 amit.gupta 128
            return false;
129
        }
130
        if (totalValue === "") {
32638 raveendra. 131
            alert("Please fill Total Value.");
32629 amit.gupta 132
            return false;
133
        }
32638 raveendra. 134
        console.log('invoice doc', invoiceDoc);
34047 tejus.loha 135
        if (invoiceDoc === "") {
32638 raveendra. 136
            alert("Please upload invoice.");
32629 amit.gupta 137
            return false;
138
        }
32352 amit.gupta 139
        var newReceiveInvoice = {};
32192 tejbeer 140
 
32352 amit.gupta 141
        newReceiveInvoice['invoiceDate'] = invoiceDate;
32629 amit.gupta 142
        newReceiveInvoice['warehouseId'] = warehouseId;
143
        newReceiveInvoice['numItems'] = numItems;
144
        newReceiveInvoice['supplierId'] = supplierId;
145
        newReceiveInvoice['totalValue'] = totalValue;
146
        newReceiveInvoice['invoiceNumber'] = invoiceNumber;
147
        newReceiveInvoice['invoiceDoc'] = invoiceDoc;
32192 tejbeer 148
 
32629 amit.gupta 149
        if (confirm("Are you sure you want to add new Invoice")) {
32192 tejbeer 150
 
32390 amit.gupta 151
            doPostAjaxRequestWithJsonHandler(`${context}/newReceiveInvoice`, JSON
32352 amit.gupta 152
                .stringify(newReceiveInvoice), function (response) {
153
                if (response == 'true') {
32638 raveendra. 154
                    alert("Successfully added");
32352 amit.gupta 155
                    localStorage.removeItem("invoiceDocument");
156
                    loadNewReceiveInvoice("main-content");
157
                }
158
            });
159
        }
32295 tejbeer 160
 
32192 tejbeer 161
 
32352 amit.gupta 162
    });
32192 tejbeer 163
 
164
 
32352 amit.gupta 165
    var purchaseItemIds;
166
    $(document).on('click', ".purchaseorderitemview", function () {
167
        purchaseItemIds = [];
168
        var vendorId = $('#vendorId').val();
169
        var warehouseId = $('#warehouseMap').val();
32390 amit.gupta 170
        var poDate = $('#poDate').val();
32192 tejbeer 171
 
32352 amit.gupta 172
        console.log(warehouseId);
32192 tejbeer 173
 
32352 amit.gupta 174
        if (warehouseId === null && vendorId === "") {
175
            alert("Field can't be empty");
176
            return;
177
        }
32192 tejbeer 178
 
32390 amit.gupta 179
        if (poDate === '') {
180
            alert("PO Date is required");
181
            return;
182
        }
183
 
184
        if (warehouseId === null && vendorId === "") {
185
            alert("Field can't be empty");
186
            return;
187
        }
188
 
32352 amit.gupta 189
        if (warehouseId === null) {
190
            alert("please select warehouse");
191
            return;
192
        }
193
        if (vendorId === "") {
194
            alert("please select vendor");
195
            return;
196
        }
197
        doGetAjaxRequestHandler(context + "/addPurchaseItemView?warehouseId=" + warehouseId + "&vendorId=" + vendorId, function (response) {
198
            $(".createpurchaseordercontainer").html(response);
199
        });
200
    });
32192 tejbeer 201
 
32145 tejbeer 202
 
32352 amit.gupta 203
    $(document).on('click', ".addRowInPurchaseOrder", function () {
204
        var totalQty = 0;
33727 ranu 205
        var totalValue = 0;
32145 tejbeer 206
 
32358 amit.gupta 207
        $("table > tbody > tr").each(function () {
32352 amit.gupta 208
            var itemId = $(this).find(".transferPrice").data('itemid');
209
            var qty = $(this).find(".qty").val();
33727 ranu 210
            var transferPrice = $(this).find(".transferPrice").val();
32145 tejbeer 211
 
33727 ranu 212
            if (qty !== undefined && qty !== "") {
213
                qty = parseInt(qty);
214
                totalQty += qty;
215
                if (transferPrice !== undefined && transferPrice !== "") {
216
                    transferPrice = parseFloat(transferPrice);
217
                    totalValue += qty * transferPrice;
218
                }
32352 amit.gupta 219
            }
32358 amit.gupta 220
        });
32145 tejbeer 221
 
32603 raveendra. 222
        var $html = $(`<tr>
33727 ranu 223
        <td><input type="text" class="form-control typeaheaditem" autocomplete="off" placeholder="Search Model"/></td>
224
        <td><input type="number" class="form-control qty" name="qty" placeholder="Quantity"/></td>
225
        <td><input type="number" class="form-control transferPrice" readonly tabindex="-1" placeholder="Transfer Price"/></td>
226
        <td><input type="number" class="form-control totalValue" tabindex="-1" readonly placeholder="Total Value"/></td>
227
        <td><input class="form-control btn btn-primary removeInPurchaseOrder" tabindex="-1" type="button" value="Remove"></td>
228
    </tr>`);
32192 tejbeer 229
 
32352 amit.gupta 230
        var vendorId = $('#vendorId').val();
32192 tejbeer 231
 
32352 amit.gupta 232
        $('tbody').append($html);
33727 ranu 233
        getVendorItemAheadOptions($html.find('.typeaheaditem'), vendorId, function (selectedItem) {
32488 amit.gupta 234
            let poDate = $('#poDate').val();
32352 amit.gupta 235
            var itemId = selectedItem.itemId;
34047 tejus.loha 236
            var description = selectedItem.itemDescription;
237
            if (itemId) {
32488 amit.gupta 238
                doGetAjaxRequestHandler(`${context}/getPricing?vendorId=${vendorId}&itemId=${itemId}&onDate=${poDate}`, function (response) {
32360 amit.gupta 239
                    if (response !== "null") {
34047 tejus.loha 240
                        if (response !== 'false') {
241
                            var jsonObj = JSON.parse(response);
242
                            $html.find('.transferPrice').val(jsonObj.transferPrice);
243
                            $html.find('input.qty').focus();
33727 ranu 244
 
34047 tejus.loha 245
                            // Update the total value for this row
246
                            let qty = $html.find('.qty').val();
247
                            let transferPrice = jsonObj.transferPrice;
248
                            if (qty && transferPrice) {
249
                                let total = qty * transferPrice;
250
                                $html.find('.totalValue').val(total);
251
                                updateTotalValue();
252
                            }
253
                            addItem($html, itemId);
254
                        } else {
255
                            $html.find('.typeaheaditem').val('');
256
                            alert(`Category not Define(eg- HID, SLOW MOVING, FAST MOVING),First define the category of ${description} and Try again`);
33727 ranu 257
                        }
34047 tejus.loha 258
 
32360 amit.gupta 259
                    } else {
34047 tejus.loha 260
                        $html.find('.typeaheaditem').val('');
32360 amit.gupta 261
                    }
262
                });
263
            } else {
32352 amit.gupta 264
                return false;
265
            }
266
        });
33727 ranu 267
    });
32145 tejbeer 268
 
33727 ranu 269
    $(document).on('input', '.qty', function () {
270
        var $row = $(this).closest('tr');
271
        var qty = parseInt($(this).val());
272
        var transferPrice = parseFloat($row.find('.transferPrice').val());
273
        if (!isNaN(qty) && !isNaN(transferPrice)) {
274
            let total = qty * transferPrice;
275
            $row.find('.totalValue').val(total);
276
        }
277
        updateTotalValue();
32352 amit.gupta 278
    });
32145 tejbeer 279
 
33727 ranu 280
    function updateTotalValue() {
281
        var grandTotal = 0;
36520 amit 282
        var totalQty = 0;
33727 ranu 283
        $('tbody > tr').each(function () {
284
            var rowTotal = parseFloat($(this).find('.totalValue').val());
36520 amit 285
            var rowQty = parseInt($(this).find('.qty').val());
33727 ranu 286
            if (!isNaN(rowTotal)) {
287
                grandTotal += rowTotal;
288
            }
36520 amit 289
            if (!isNaN(rowQty)) {
290
                totalQty += rowQty;
291
            }
33727 ranu 292
        });
36520 amit 293
        $('#totalQuantity').text(totalQty);
33727 ranu 294
        $('#grandTotal').text(grandTotal.toFixed(2));
295
    }
296
 
32355 amit.gupta 297
    function addItem(container, itemId) {
32361 amit.gupta 298
        oldItemId = container.find('.transferPrice').data('itemid');
32360 amit.gupta 299
        if (typeof (oldItemId) === "undefined") {
300
            let itemIndex = purchaseItemIds.indexOf(itemId);
301
            if (itemIndex >= 0) {
302
                alert("Item already added");
32376 amit.gupta 303
                container.find('.typeaheaditem').val("");
32360 amit.gupta 304
                return false;
305
            } else {
306
                purchaseItemIds.push(itemId);
32361 amit.gupta 307
                container.find('.transferPrice').data('itemid', itemId);
32360 amit.gupta 308
                $('.addRowInPurchaseOrder').click();
309
            }
32352 amit.gupta 310
        } else {
32360 amit.gupta 311
            if (oldItemId !== itemId) {
312
                let oldIndex = purchaseItemIds.indexOf(oldItemId);
313
                if (oldIndex > -1) {
314
                    purchaseItemIds.splice(oldIndex, 1);
315
                }
316
                purchaseItemIds.push(itemId);
32361 amit.gupta 317
                container.find('.transferPrice').data('itemid', itemId);
32358 amit.gupta 318
            } else {
32360 amit.gupta 319
                return false;
32352 amit.gupta 320
            }
321
        }
32360 amit.gupta 322
        return true;
32352 amit.gupta 323
    }
32145 tejbeer 324
 
33727 ranu 325
 
32352 amit.gupta 326
    $(document).on('click', '.createSendPurchaseOrder', function () {
32145 tejbeer 327
 
32390 amit.gupta 328
        createPO(true);
32145 tejbeer 329
 
32352 amit.gupta 330
    });
32145 tejbeer 331
 
332
 
32352 amit.gupta 333
    $(document).on('click', '.createPurchaseOrder', function () {
32145 tejbeer 334
 
335
 
32390 amit.gupta 336
        createPO(false);
32352 amit.gupta 337
    });
32145 tejbeer 338
 
339
 
32352 amit.gupta 340
    $(document).on('change', '.qty', function () {
32145 tejbeer 341
 
342
 
32352 amit.gupta 343
        var row = $(this).closest("tr");
344
        var qty = $(row).find(".qty").val();
345
        var transferPrice = $(row).find(".transferPrice").val();
32145 tejbeer 346
 
32352 amit.gupta 347
        var totalVal = transferPrice * qty;
32145 tejbeer 348
 
32352 amit.gupta 349
        var totalValue = $(row).find(".totalValue").val(totalVal);
32145 tejbeer 350
 
32352 amit.gupta 351
        var purchaseOrderValue = 0;
32145 tejbeer 352
 
32352 amit.gupta 353
        $("table > tbody > tr").each(function () {
32145 tejbeer 354
 
32352 amit.gupta 355
            var totalValue = $(this).find(".totalValue").val();
32358 amit.gupta 356
            purchaseOrderValue += totalValue;
32145 tejbeer 357
 
32352 amit.gupta 358
        });
32145 tejbeer 359
 
32352 amit.gupta 360
    });
32145 tejbeer 361
 
362
 
32352 amit.gupta 363
    $(document).on('click', '.warehouse-open-purchase-order', function () {
364
        loadOpenPurchase("main-content");
365
    });
32145 tejbeer 366
 
367
 
32352 amit.gupta 368
    $(document).on('click', '.editViewPurchaseOrder', function () {
369
        var purchaseOrderId = $(this).data('poid');
370
        doGetAjaxRequestHandler(context + "/getEditPOByPurchaseId?purchaseId=" + purchaseOrderId, function (response) {
371
            $('#warehouseEditPurchaseContainer .modal-content').html(response);
372
        });
32145 tejbeer 373
 
32352 amit.gupta 374
    });
32145 tejbeer 375
 
32352 amit.gupta 376
    $(document).on('click', '.editPurchaseOrder', function () {
377
        var purchaseOrderId = $(this).data('poid');
32145 tejbeer 378
 
32352 amit.gupta 379
        editPurchase(false, purchaseOrderId);
32145 tejbeer 380
 
32352 amit.gupta 381
    });
32145 tejbeer 382
 
383
 
32352 amit.gupta 384
    $(document).on('click', '.editSendPurchaseOrder', function () {
385
        var purchaseOrderId = $(this).data('poid');
32145 tejbeer 386
 
387
 
32352 amit.gupta 388
        editPurchase(true, purchaseOrderId);
389
    });
32145 tejbeer 390
 
32352 amit.gupta 391
    $(document).on('click', '.closePurchaseOrder', function () {
392
        var purchaseOrderId = $(this).data('poid');
393
        if (confirm("Are you sure you want to close the PO") == true) {
394
            doPostAjaxRequestHandler(context + "/closePuchaseOrder?purchaseId=" + purchaseOrderId,
395
                function (response) {
32145 tejbeer 396
 
32352 amit.gupta 397
                    console.log(response);
398
                    if (response == 'true') {
399
                        alert("successfully closed");
400
                        loadOpenPurchase("main-content")
401
                    }
402
                });
403
        }
404
    });
32145 tejbeer 405
 
406
 
32352 amit.gupta 407
    $(document).on('click', '.warehouse-view-purchase-order', function () {
408
        doGetAjaxRequestHandler(context + "/viewPurchaseOrder", function (response) {
409
            $('#' + 'main-content').html(response);
410
        });
411
    });
32145 tejbeer 412
 
413
 
32352 amit.gupta 414
    $(document).on('click', '.dateWisePo', function () {
32145 tejbeer 415
 
32352 amit.gupta 416
        var startDate = getDatesFromPicker('input[name="duration"]').startDate;
33729 ranu 417
        var endDate = getDatesFromPicker('input[name="duration"]').endDate;
32145 tejbeer 418
 
419
 
32352 amit.gupta 420
        doGetAjaxRequestHandler(context + "/getPurchaseOrders?startDate=" + startDate + "&endDate=" + endDate, function (response) {
421
            $('.purchaseorderviewcontainer').html(response);
32145 tejbeer 422
 
32352 amit.gupta 423
        });
32145 tejbeer 424
 
425
 
32352 amit.gupta 426
    });
32145 tejbeer 427
 
428
 
32352 amit.gupta 429
    $(document).on('click', '.viewPurchaseOrderlineItem', function () {
430
        var purchaseOrderId = $(this).data('poid');
32145 tejbeer 431
 
32352 amit.gupta 432
        doGetAjaxRequestHandler(context + "/getWarehouseLineItemByPurchaseId?purchaseId=" + purchaseOrderId, function (response) {
433
            $('#warehouseLineItem .modal-content').html(response);
32145 tejbeer 434
 
32352 amit.gupta 435
        });
436
    });
32145 tejbeer 437
 
438
 
32352 amit.gupta 439
    $(document).on("click", '.removeInPurchaseOrder', function () {
440
        var row = $(this).closest("tr");
32361 amit.gupta 441
        let itemId = row.find('.transferPrice').data('itemid');
32360 amit.gupta 442
        let itemIndex = purchaseItemIds.indexOf(itemId);
32352 amit.gupta 443
        if (itemIndex > -1) { // only splice array when item is found
444
            purchaseItemIds.splice(itemIndex, 1); // 2nd parameter means remove one item only
445
        }
446
        row.remove();
447
    });
32192 tejbeer 448
 
449
 
32352 amit.gupta 450
    $(document).on('click', ".addRowForInvoiceItem", function () {
32145 tejbeer 451
 
32352 amit.gupta 452
        var numitems = $(this).data("numitems");
453
        var invoiceId = $(this).data("invoiceid");
454
        var invoiceItemIds = [];
32360 amit.gupta 455
        var totalQty = 0;
32145 tejbeer 456
 
32352 amit.gupta 457
        $("#invoice-order-table > tbody > tr").each(function () {
458
            var itemId = $(this).find(".rate").data('itemid');
459
            var qty = $(this).find(".qty").val();
32145 tejbeer 460
 
32360 amit.gupta 461
            if (qty !== undefined) {
462
                totalQty += qty;
32352 amit.gupta 463
            }
32145 tejbeer 464
 
32360 amit.gupta 465
            if (itemId !== undefined) {
466
                invoiceItemIds.push(itemId);
32352 amit.gupta 467
            }
468
        });
32145 tejbeer 469
 
32352 amit.gupta 470
        var $html = $('<tr>  <td>  <input type="text" class="form-control typeaheaditem"   autocomplete="off"  placeholder="Search Model"/> </td>' +
471
            '<td>  <input type="number" class="form-control qty"  name = "qty" placeholder="Quantity"/> </td>' +
32364 amit.gupta 472
            '<td>  <input type="number" class="form-control rate" placeholder="Rate"/> </td>' +
32352 amit.gupta 473
            '<td> <input class="form-control btn btn-primary removeInInvoiceItem" type="button" value="Remove"></td>  </tr> ');
32145 tejbeer 474
 
475
 
32352 amit.gupta 476
        getItemAheadOptions($html.find('.typeaheaditem'), true, function (
477
            selectedItem) {
478
            var itemId = selectedItem.itemId;
479
            if (invoiceItemIds.indexOf(itemId) > -1) {
480
                alert("Item already added");
481
                $html.find('.typeaheaditem').val("")
32145 tejbeer 482
 
32352 amit.gupta 483
                return false;
484
            }
485
            $html.find('.rate').data('itemid', itemId)
32145 tejbeer 486
 
32352 amit.gupta 487
            $html.find('.removeInInvoiceItem').data('invoiceid', invoiceId)
488
            $html.find('.removeInInvoiceItem').data('itemid', itemId)
32145 tejbeer 489
 
32352 amit.gupta 490
        });
32145 tejbeer 491
 
32192 tejbeer 492
 
32352 amit.gupta 493
        if (totalQty < numitems) {
32192 tejbeer 494
 
32352 amit.gupta 495
            $('#invoice-order-table tbody').append($html);
496
        }
32192 tejbeer 497
 
32352 amit.gupta 498
    });
32256 tejbeer 499
 
32192 tejbeer 500
 
32352 amit.gupta 501
    $(document).on('click', '.saveInvoiceDetail', function () {
32192 tejbeer 502
 
32352 amit.gupta 503
        var numItems = $(this).data("numitems");
504
        var invoiceId = $(this).data("invoiceid");
505
        var warehouseId = $(this).data("warehouseid");
506
        var supplierId = $(this).data("supplierid");
507
        getInvoiceItemData(numItems, invoiceId, warehouseId, supplierId, false);
32192 tejbeer 508
 
32352 amit.gupta 509
    });
32192 tejbeer 510
 
511
 
32352 amit.gupta 512
    $(document).on('click', '.validateInvoiceDetail', function () {
513
        var numItems = $(this).data("numitems");
514
        var invoiceId = $(this).data("invoiceid");
515
        var warehouseId = $(this).data("warehouseid");
516
        var supplierId = $(this).data("supplierid");
32192 tejbeer 517
 
32352 amit.gupta 518
        getInvoiceItemData(numItems, invoiceId, warehouseId, supplierId, true);
32192 tejbeer 519
 
32352 amit.gupta 520
    });
32192 tejbeer 521
 
522
 
32352 amit.gupta 523
    $(document).on("click", '.removeInInvoiceItem', function () {
32192 tejbeer 524
 
32352 amit.gupta 525
        var row = $(this).closest("tr");
526
        var invoiceId = $(this).data("invoiceid");
527
        var itemId = $(this).data("itemid");
528
        if (invoiceId != undefined && itemId != undefined) {
529
            doDeleteAjaxRequestHandler(context + "/removeInvoiceItem?invoiceId="
530
                + invoiceId + "&itemId=" + itemId, function (response) {
531
                if (response == "true") {
532
                    alert("Item removed successfully");
32192 tejbeer 533
 
32352 amit.gupta 534
                }
535
            });
536
        }
32192 tejbeer 537
 
32352 amit.gupta 538
        row.remove();
32192 tejbeer 539
 
32352 amit.gupta 540
    });
32192 tejbeer 541
 
542
 
32352 amit.gupta 543
    $(document).on('click', '.purchaseGrn', function () {
32192 tejbeer 544
 
32352 amit.gupta 545
        var grnItemArray = [];
32192 tejbeer 546
 
32352 amit.gupta 547
        var invoiceId = $(this).data("invoiceid");
32192 tejbeer 548
 
32352 amit.gupta 549
        $("#invoice-purchase-validate > tbody > tr").each(function () {
550
            var grnItemJson = {};
32192 tejbeer 551
 
32352 amit.gupta 552
            var itemId = $(this).find(".itemId").text();
553
            var qty = $(this).find(".qty").text();
554
            var poId = $(this).find(".purchaseId").text();
555
            var excessQty = $(this).find(".excessQty").text();
556
            var itemType = $(this).find(".itemType").text();
32192 tejbeer 557
 
32352 amit.gupta 558
            console.log(itemType);
32192 tejbeer 559
 
32352 amit.gupta 560
            if (itemType == "Serialized") {
561
                var serialNumbers = $(this).find(".imeis-to-grn").tagsinput('items');
32366 amit.gupta 562
                grnItemJson['serialNumbers'] = serialNumbers;
32192 tejbeer 563
 
32352 amit.gupta 564
                if (excessQty > 0) {
565
                    var returnSerialNumbers = $(this).find(".imeis-to-grn-return").tagsinput('items');
566
                    grnItemJson['returnSerialNumbers'] = returnSerialNumbers
567
                }
568
            }
32366 amit.gupta 569
            console.log(serialNumbers);
32352 amit.gupta 570
            grnItemJson['itemId'] = itemId;
571
            grnItemJson['serialNumbers'] = serialNumbers
572
            grnItemJson['qty'] = qty
573
            grnItemJson['poId'] = poId
574
            grnItemJson['invoiceId'] = invoiceId
575
            grnItemJson['itemType'] = itemType
576
            grnItemJson['excessQty'] = excessQty
32192 tejbeer 577
 
32352 amit.gupta 578
            grnItemJson['returnSerialNumbers'] = returnSerialNumbers
32192 tejbeer 579
 
32352 amit.gupta 580
            grnItemArray.push(grnItemJson)
32192 tejbeer 581
 
32352 amit.gupta 582
            console.log(grnItemArray)
32192 tejbeer 583
 
32352 amit.gupta 584
        });
32192 tejbeer 585
 
32352 amit.gupta 586
        for (var i = 0; i < grnItemArray.length; i++) {
32366 amit.gupta 587
            var itemType = grnItemArray[i].itemType;
32192 tejbeer 588
 
32352 amit.gupta 589
            if (itemType == "Serialized") {
590
                var excessQty = grnItemArray[i].excessQty
32192 tejbeer 591
 
592
 
32352 amit.gupta 593
                var serialNumbers = grnItemArray[i].serialNumbers.length
594
                var qty = grnItemArray[i].qty
32192 tejbeer 595
 
32352 amit.gupta 596
                if (serialNumbers != qty) {
597
                    alert("serial number is not matched with qty")
598
                    return false;
599
                }
32192 tejbeer 600
 
32352 amit.gupta 601
                if (excessQty > 0) {
32192 tejbeer 602
 
32352 amit.gupta 603
                    var returnSerialNumbers = grnItemArray[i].returnSerialNumbers.length
32192 tejbeer 604
 
32352 amit.gupta 605
                    if (returnSerialNumbers != excessQty) {
606
                        alert("Return serial number is not matched with excess qty")
607
                        return false;
608
                    }
32192 tejbeer 609
 
32352 amit.gupta 610
                }
611
            }
32192 tejbeer 612
 
32352 amit.gupta 613
        }
32192 tejbeer 614
 
615
 
32352 amit.gupta 616
        console.log(JSON.stringify(grnItemArray))
617
        if (confirm("Are you sure you want to grn purchase order") == true) {
32192 tejbeer 618
 
32352 amit.gupta 619
            doPostAjaxRequestWithJsonHandler(context
620
                + "/createGrn", JSON
621
                .stringify(grnItemArray), function (response) {
622
                if (response == 'true') {
623
                    alert("successfully done");
624
                    loadNewReceiveInvoice("main-content");
625
                }
626
            });
627
        }
32192 tejbeer 628
 
629
 
32352 amit.gupta 630
    });
32256 tejbeer 631
 
632
 
32352 amit.gupta 633
    $(document).on('click', '.grnRequest', function () {
32192 tejbeer 634
 
32352 amit.gupta 635
        var grnRequestJson = {};
636
        var grnRequestItemArray = [];
32192 tejbeer 637
 
32352 amit.gupta 638
        var invoiceId = $(this).data("invoiceid");
32192 tejbeer 639
 
640
 
32352 amit.gupta 641
        $("#invoice-purchase-validate > tbody > tr").each(function () {
642
            var grnItemJson = {};
32192 tejbeer 643
 
32352 amit.gupta 644
            var itemId = $.trim($(this).find(".itemId").text());
645
            var poId = $.trim($(this).find(".purchaseId").text());
32192 tejbeer 646
 
32352 amit.gupta 647
            var qty = parseInt($(this).find(".qty").text());
32256 tejbeer 648
 
32352 amit.gupta 649
            var excessQty = parseInt($(this).find(".excessQty").text());
32256 tejbeer 650
 
32352 amit.gupta 651
            var priceMismatch = $.trim($(this).find(".priceMismatch").text());
652
            console.log(priceMismatch)
32256 tejbeer 653
 
654
 
32354 amit.gupta 655
            if (priceMismatch !== "" || excessQty > 0) {
32352 amit.gupta 656
                console.log(typeof priceMismatch)
657
                console.log(excessQty)
658
                grnItemJson['itemId'] = itemId;
659
                grnItemJson['qty'] = qty;
660
                grnItemJson['excessQty'] = excessQty
32376 amit.gupta 661
                if (priceMismatch === '') {
662
                    grnItemJson['mismatch'] = 'QtyMismatch';
663
                } else {
664
                    grnItemJson['mismatch'] = priceMismatch
665
                }
32352 amit.gupta 666
                grnItemJson['poId'] = poId
32192 tejbeer 667
 
32352 amit.gupta 668
                grnRequestItemArray.push(grnItemJson)
669
            }
670
        });
32256 tejbeer 671
 
32352 amit.gupta 672
        console.log(grnRequestItemArray)
32256 tejbeer 673
 
674
 
32352 amit.gupta 675
        grnRequestJson['invoiceId'] = invoiceId;
676
        grnRequestJson['warehousePurchaseModel'] = grnRequestItemArray
32256 tejbeer 677
 
32366 amit.gupta 678
        if (confirm("Are you sure you want to raise grn request")) {
32192 tejbeer 679
 
32352 amit.gupta 680
            doPostAjaxRequestWithJsonHandler(context
681
                + "/grnRequest", JSON
682
                .stringify(grnRequestJson), function (response) {
683
                if (response == 'true') {
684
                    alert("successfully done");
685
                    loadNewReceiveInvoice("main-content");
686
                }
687
            });
688
        }
32192 tejbeer 689
 
690
 
32352 amit.gupta 691
    });
32192 tejbeer 692
 
32256 tejbeer 693
 
32352 amit.gupta 694
    $(document).on('click', '.resolvedPriceMismatchRequest', function () {
695
        var id = $(this).data("id");
32256 tejbeer 696
 
32352 amit.gupta 697
        var invoiceId = $(this).data("invoiceid");
32256 tejbeer 698
 
32352 amit.gupta 699
        var requestId = $(this).data("requestid");
32256 tejbeer 700
 
32352 amit.gupta 701
        var mismatch = $(this).data("mismatch");
32256 tejbeer 702
 
32352 amit.gupta 703
        if (mismatch == "InvoiceMismatch") {
32485 amit.gupta 704
            if (confirm("Are you sure you want to resolve invoice mismatch")) {
32352 amit.gupta 705
                doGetAjaxRequestHandler(context + "/resolvedMismatchRequest?id=" + id, function (response) {
706
                    if (response == 'true') {
707
                        getGrnRequestItems(requestId, invoiceId)
708
                    }
709
                });
32256 tejbeer 710
 
32352 amit.gupta 711
            }
712
        } else if (mismatch == "PoMismatch") {
713
            if (confirm("Are you sure you want to resolve Po Mismatch. Discard the current PoLineItem new Po will generate on the invoice date.") == true) {
32256 tejbeer 714
 
32352 amit.gupta 715
                doGetAjaxRequestHandler(context + "/resolvedMismatchRequest?id=" + id, function (response) {
716
                    if (response == 'true') {
717
                        getGrnRequestItems(requestId, invoiceId)
718
                    }
719
                });
32256 tejbeer 720
 
32352 amit.gupta 721
            }
722
        }
32256 tejbeer 723
 
32352 amit.gupta 724
    });
32256 tejbeer 725
 
726
 
32352 amit.gupta 727
    $(document).on('click', '.resolvedQtyMismatchRequest', function () {
728
        var id = $(this).data("id");
729
        var invoiceId = $(this).data("invoiceid");
730
        var requestId = $(this).data("requestid");
32256 tejbeer 731
 
732
 
32352 amit.gupta 733
        var mismatch = $(this).data("mismatch");
32256 tejbeer 734
 
32352 amit.gupta 735
        var $row = $(this).closest("tr");
736
        var requiredQty = $row.find(".requiredQty").val();
32256 tejbeer 737
 
32352 amit.gupta 738
        console.log(requiredQty);
32256 tejbeer 739
 
32352 amit.gupta 740
        if (mismatch == "QtyMismatch") {
741
            if (confirm("Are you sure you want to resolve qty mismatch") == true) {
32256 tejbeer 742
 
32352 amit.gupta 743
                doGetAjaxRequestHandler(context + "/resolvedMismatchRequest?id=" + id + "&requiredQty=" + requiredQty, function (response) {
744
                    if (response == 'true') {
745
                        getGrnRequestItems(requestId, invoiceId)
746
                    }
747
                });
32256 tejbeer 748
 
32352 amit.gupta 749
            }
750
        }
32256 tejbeer 751
 
32352 amit.gupta 752
    });
32256 tejbeer 753
 
32192 tejbeer 754
 
32145 tejbeer 755
});
756
 
757
function loadCreatePurchase(domId) {
32352 amit.gupta 758
    doGetAjaxRequestHandler(context + "/warehousePurchaseOrder", function (response) {
759
        $('#' + domId).html(response);
760
    });
32145 tejbeer 761
}
762
 
32192 tejbeer 763
 
32145 tejbeer 764
function loadOpenPurchase(domId) {
765
 
32352 amit.gupta 766
    doGetAjaxRequestHandler(context + "/getOpenPurchaseOrder", function (response) {
767
        $('#' + domId).html(response);
768
    });
32145 tejbeer 769
}
770
 
32192 tejbeer 771
function loadNewReceiveInvoice(domId) {
32352 amit.gupta 772
    doGetAjaxRequestHandler(context + "/newReceiveInvoice", function (response) {
773
        $('#' + domId).html(response);
774
    });
32192 tejbeer 775
}
776
 
32256 tejbeer 777
 
778
function loadGrnRequest(domId) {
32352 amit.gupta 779
    doGetAjaxRequestHandler(context + "/grnRequest", function (response) {
780
        $('#' + domId).html(response);
781
    });
32256 tejbeer 782
}
783
 
784
function loadDebitNote(domId) {
32352 amit.gupta 785
    doGetAjaxRequestHandler(context + "/getDebitNote", function (response) {
786
        $('#' + domId).html(response);
787
    });
32256 tejbeer 788
}
789
 
33729 ranu 790
$(document).on('click', '.dateWiseDebitNote', function () {
791
 
792
    var startDate = getDatesFromPicker('input[name="date-duration"]').startDate;
793
    var endDate = getDatesFromPicker('input[name="date-duration"]').endDate;
794
 
795
 
796
    doGetAjaxRequestHandler(context + "/getDateWiseDebitNote?startDate=" + startDate + "&endDate=" + endDate, function (response) {
797
        $('#warehouse-datewise-debitnote-container').html(response);
798
 
799
    });
800
});
801
 
802
$(document).on('click', '.generateVendorDebitNoteExcel', function () {
803
    var startDate = getDatesFromPicker('input[name="date-duration"]').startDate;
804
    var endDate = getDatesFromPicker('input[name="date-duration"]').endDate;
33809 ranu 805
    doAjaxGetDownload(context + "/generateVendorDebitNoteExcel?startDate=" + startDate + "&endDate=" + endDate, "VendorDebitNoteReport.csv");
33729 ranu 806
});
807
 
32300 tejbeer 808
function loadWarehouseInvoices(domId) {
32352 amit.gupta 809
    doGetAjaxRequestHandler(context + "/getWarehouseInvoices", function (response) {
810
        $('#' + domId).html(response);
811
    });
32300 tejbeer 812
}
813
 
32390 amit.gupta 814
function createPO(sendPo) {
32352 amit.gupta 815
    var purchaseOrder = {};
32145 tejbeer 816
 
32352 amit.gupta 817
    var vendorId = $('#vendorId').val();
32145 tejbeer 818
 
32352 amit.gupta 819
    var warehouseId = $('#warehouseMap').val();
32145 tejbeer 820
 
32390 amit.gupta 821
    var poDate = $('#poDate').val();
32145 tejbeer 822
 
32390 amit.gupta 823
 
32352 amit.gupta 824
    var items = []
825
    $("table > tbody > tr").each(function () {
826
        var purchaseOrderJson = {};
32145 tejbeer 827
 
32352 amit.gupta 828
        var itemId = $(this).find(".transferPrice").data('itemid');
829
        var qty = $(this).find(".qty").val();
830
        var transferPrice = $(this).find(".transferPrice").val();
831
        var totalValue = $(this).find(".totalValue").val();
32145 tejbeer 832
 
833
 
32352 amit.gupta 834
        purchaseOrderJson['itemId'] = itemId;
835
        purchaseOrderJson['amendedQty'] = qty
836
        purchaseOrderJson['totalValue'] = totalValue
837
        purchaseOrderJson['transferPrice'] = transferPrice
32145 tejbeer 838
 
32352 amit.gupta 839
        items.push(purchaseOrderJson)
840
    });
32145 tejbeer 841
 
842
 
32352 amit.gupta 843
    for (var i = 0; i < items.length; i++) {
844
        console.log(items[i])
32145 tejbeer 845
 
32352 amit.gupta 846
        var itemId = items[i].itemId
847
        var qty = items[i].amendedQty
848
        var transferPrice = items[i].transferPrice
849
        var totalValue = items[i].totalValue
32145 tejbeer 850
 
32352 amit.gupta 851
        if (itemId === "" && qty === "" && transferPrice === "" && totalValue === "") {
852
            alert("Field can't be empty");
853
            return false;
854
        }
32145 tejbeer 855
 
856
 
32352 amit.gupta 857
        if (itemId === "") {
858
            alert("please select item");
859
            return false;
860
        }
861
        if (qty === "") {
862
            alert("please choose qty");
863
            return false;
864
        }
32145 tejbeer 865
 
32352 amit.gupta 866
        if (transferPrice === "") {
867
            alert("Transfer Price can't be empty");
868
            return false;
869
        }
870
        if (totalValue === "") {
871
            alert("Total value can't be empty");
872
            return false;
873
        }
32145 tejbeer 874
 
32352 amit.gupta 875
        if (qty <= 0) {
876
            alert("Please fill Qty");
877
            return false;
878
        }
32145 tejbeer 879
 
880
 
32352 amit.gupta 881
    }
32261 tejbeer 882
 
32352 amit.gupta 883
    purchaseOrder['vendorId'] = vendorId;
884
    purchaseOrder['warehouseId'] = warehouseId
885
    purchaseOrder['sendPo'] = sendPo
32390 amit.gupta 886
    purchaseOrder['poDate'] = poDate;
32352 amit.gupta 887
    purchaseOrder['items'] = items
32145 tejbeer 888
 
32352 amit.gupta 889
    console.log(purchaseOrder)
32145 tejbeer 890
 
891
 
32352 amit.gupta 892
    if (confirm("Are you sure you want to create purchase order") == true) {
32145 tejbeer 893
 
32352 amit.gupta 894
        doPostAjaxRequestWithJsonHandler(context
895
            + "/createPurchaseOrder", JSON
896
            .stringify(purchaseOrder), function (response) {
897
            if (response == 'true') {
898
                alert("successfully created");
899
                loadCreatePurchase("main-content");
900
            }
901
        });
902
    }
32145 tejbeer 903
 
904
}
905
 
906
 
907
function editPurchase(sendPo, poid) {
32352 amit.gupta 908
    var editpurchaseOrder = {}
909
    var items = []
910
    $("#purchase-edit-lineitem > tbody > tr").each(function () {
911
        var purchaseOrderJson = {};
912
        var itemId = $(this).find("td:eq(0)").text();
32145 tejbeer 913
 
32352 amit.gupta 914
        var qty = $(this).find("td:eq(2)").text();
32145 tejbeer 915
 
32352 amit.gupta 916
        var amendedQty = $(this).find(".editqty").val();
32256 tejbeer 917
 
32352 amit.gupta 918
        var transferPrice = $.trim($(this).find(".transferPrice").html());
32256 tejbeer 919
 
920
 
32352 amit.gupta 921
        purchaseOrderJson['itemId'] = itemId;
922
        purchaseOrderJson['amendedQty'] = parseInt(amendedQty)
923
        purchaseOrderJson['qty'] = parseInt(qty)
924
        purchaseOrderJson['transferPrice'] = transferPrice
32145 tejbeer 925
 
32352 amit.gupta 926
        items.push(purchaseOrderJson)
927
    });
32145 tejbeer 928
 
929
 
32352 amit.gupta 930
    for (var i = 0; i < items.length; i++) {
931
        console.log(items[i])
32145 tejbeer 932
 
32352 amit.gupta 933
        var amendedQty = items[i].amendedQty
934
        var qty = items[i].qty
32145 tejbeer 935
 
32256 tejbeer 936
 
32352 amit.gupta 937
        if (amendedQty === "") {
938
            alert("please choose qty");
939
            return false;
940
        }
32145 tejbeer 941
 
32352 amit.gupta 942
        if (amendedQty < qty) {
943
            alert("Quantity should be greater than existing qty");
944
            return false;
945
        }
32145 tejbeer 946
 
947
 
32352 amit.gupta 948
    }
32145 tejbeer 949
 
32352 amit.gupta 950
    editpurchaseOrder['purchaseOrderId'] = poid;
951
    editpurchaseOrder['sendPo'] = sendPo
952
    editpurchaseOrder['items'] = items
32145 tejbeer 953
 
954
 
32352 amit.gupta 955
    if (confirm("Are you sure you want to edit purchase order") == true) {
32145 tejbeer 956
 
32352 amit.gupta 957
        doPostAjaxRequestWithJsonHandler(context
958
            + "/editPurchaseOrder", JSON
959
            .stringify(editpurchaseOrder), function (response) {
960
            if (response == 'true') {
961
                alert("successfully created");
962
                $('#warehouseEditPurchaseContainer').modal('hide');
963
                $('.modal-backdrop').remove();
32295 tejbeer 964
 
32352 amit.gupta 965
                loadOpenPurchase("main-content")
966
            }
967
        });
968
    }
32145 tejbeer 969
 
970
}
971
 
972
 
32192 tejbeer 973
function getInvoiceItemData(numItems, invoiceId, warehouseId, supplierId, validate) {
974
 
32352 amit.gupta 975
    var invoiceJson = {};
976
    console.log(numItems)
977
    var totalQty = 0;
978
    var invoiceItems = []
979
    $("#invoice-order-table > tbody > tr").each(function () {
980
        var invoiceItemJson = {};
981
        var itemId = $(this).find(".rate").data('itemid');
982
        var qty = $(this).find(".qty").val();
32192 tejbeer 983
 
32352 amit.gupta 984
        if (qty != undefined) {
985
            totalQty += parseInt(qty)
986
        }
987
        var rate = $(this).find(".rate").val();
988
        invoiceItemJson['itemId'] = itemId;
989
        invoiceItemJson['qty'] = qty
990
        invoiceItemJson['rate'] = rate
991
        invoiceItems.push(invoiceItemJson)
992
    });
32192 tejbeer 993
 
994
 
32352 amit.gupta 995
    for (var i = 0; i < invoiceItems.length; i++) {
32192 tejbeer 996
 
32352 amit.gupta 997
        var itemId = invoiceItems[i].itemId
998
        var qty = invoiceItems[i].qty
999
        var rate = invoiceItems[i].rate
1000
        if (itemId === "" && qty === "" && rate === "") {
1001
            alert("Field can't be empty");
1002
            return false;
1003
        }
32192 tejbeer 1004
 
32352 amit.gupta 1005
        if (itemId === "") {
1006
            alert("please select item");
1007
            return false;
1008
        }
1009
        if (qty === "") {
1010
            alert("please choose qty");
1011
            return false;
1012
        }
32192 tejbeer 1013
 
32352 amit.gupta 1014
        if (rate === "") {
1015
            alert("Rate can't be empty");
1016
            return false;
1017
        }
32192 tejbeer 1018
 
32352 amit.gupta 1019
    }
32192 tejbeer 1020
 
32352 amit.gupta 1021
    console.log(totalQty)
32192 tejbeer 1022
 
32352 amit.gupta 1023
    if (totalQty > numItems) {
1024
        alert("Qty Should not be more than  Invoice items");
1025
        return false;
1026
    }
32192 tejbeer 1027
 
32352 amit.gupta 1028
    if (validate) {
32192 tejbeer 1029
 
32352 amit.gupta 1030
        if (totalQty != numItems) {
1031
            alert("Qty Should not match with Invoice items");
1032
            return false;
1033
        }
1034
    }
32192 tejbeer 1035
 
1036
 
32352 amit.gupta 1037
    invoiceJson['invoiceId'] = invoiceId;
1038
    invoiceJson['warehouseId'] = warehouseId;
1039
    invoiceJson['supplierId'] = supplierId;
1040
    invoiceJson['invoiceItems'] = invoiceItems
1041
    if (validate) {
1042
        validateInvoiceItems(invoiceJson);
1043
    } else {
1044
        saveInvoiceItems(invoiceJson)
1045
    }
32192 tejbeer 1046
}
1047
 
1048
 
1049
function saveInvoiceItems(invoiceJson) {
1050
 
1051
 
32352 amit.gupta 1052
    if (confirm("Are you sure you want to save invoice item") == true) {
32192 tejbeer 1053
 
32352 amit.gupta 1054
        doPostAjaxRequestWithJsonHandler(context
1055
            + "/invoiceItemDetail", JSON
1056
            .stringify(invoiceJson), function (response) {
1057
            if (response == 'true') {
1058
                getInvoiceItems(invoiceJson.invoiceId);
1059
            }
1060
        });
1061
    }
32192 tejbeer 1062
 
1063
}
1064
 
1065
 
1066
function validateInvoiceItems(invoiceJson) {
1067
 
1068
 
32352 amit.gupta 1069
    if (confirm("Are you sure you want to validate invoice item") == true) {
32192 tejbeer 1070
 
32352 amit.gupta 1071
        doPostAjaxRequestWithJsonHandler(context
1072
            + "/validateInvoiceItemDetail", JSON
1073
            .stringify(invoiceJson), function (response) {
1074
            $('.invoiceadditemcontainer').html(response);
32192 tejbeer 1075
 
32352 amit.gupta 1076
        });
1077
    }
32192 tejbeer 1078
 
1079
}
1080
 
1081
function getOpenPOFromWarehouse() {
1082
 
32352 amit.gupta 1083
    var warehouseId = $('#warehouseMap').val();
1084
    doGetAjaxRequestHandler(context + "/getOpenPurchaseOrderByWarehouseId?warehouseId=" + warehouseId, function (response) {
1085
        $('#warehouseManagePuchaseContainer').html(response);
1086
    });
32192 tejbeer 1087
 
1088
 
1089
}
1090
 
1091
function getPurchaseLineitem(poId) {
1092
 
1093
 
32352 amit.gupta 1094
    doGetAjaxRequestHandler(context + "/getPurchaseOrderItemByPoId?poId=" + poId, function (response) {
1095
        $('#warehouseManagePuchaseItemContainer').html(response);
1096
        $('#warehousepurchaseitemgrn').hide()
1097
    });
32192 tejbeer 1098
 
1099
 
1100
}
1101
 
1102
 
1103
function getInvoiceItems(invoiceId) {
1104
 
32352 amit.gupta 1105
    doGetAjaxRequestHandler(context + "/getInvoiceItems?invoiceId=" + invoiceId, function (response) {
1106
        $('.invoiceadditemcontainer').html(response);
32192 tejbeer 1107
 
32352 amit.gupta 1108
    });
32192 tejbeer 1109
}
1110
 
1111
 
32256 tejbeer 1112
function getGrnRequestItems(requestId, invoiceId) {
32352 amit.gupta 1113
    doGetAjaxRequestHandler(context + "/grnRequestItem?requestId=" + requestId + "&invoiceId=" + invoiceId, function (response) {
1114
        $('.grnRequestItemContainer').html(response);
32256 tejbeer 1115
 
32352 amit.gupta 1116
    });
32256 tejbeer 1117
}
1118
 
32912 amit.gupta 1119
function removeInvoice(invoiceId) {
34047 tejus.loha 1120
    if (confirm(`Are your sure want to delete invoiceId ${invoiceId}`)) {
32912 amit.gupta 1121
        doGetAjaxRequestHandler(`${context}/removeInvoice?invoiceId=${invoiceId}`, function (response) {
34047 tejus.loha 1122
            $('#open-invoices').DataTable().row("#" + invoiceId).remove().draw();
32912 amit.gupta 1123
            alert("Invoice Removed");
1124
        });
1125
    }
1126
}
32256 tejbeer 1127
 
32912 amit.gupta 1128
function removeGrnRequest(invoiceId) {
34047 tejus.loha 1129
    if (confirm(`Are your sure want to remove grn request for invoiceId ${invoiceId}`)) {
32912 amit.gupta 1130
        doGetAjaxRequestHandler(`${context}/removeGrnRequest?invoiceId=${invoiceId}`, function (response) {
1131
            $('#' + domId).html(response);
1132
            alert("Grn Request Removed");
1133
        });
1134
    }
1135
}
1136
 
1137
 
35806 amit 1138
// ============ GRN Correction ============
1139
 
1140
$(document).on('click', '.warehouse-grn-correction', function () {
1141
    loadGrnCorrection("main-content");
1142
});
1143
 
1144
$(document).on('click', '.warehouse-grn-correction-approval', function () {
1145
    loadGrnCorrectionApproval("main-content");
1146
});
1147
 
1148
$(document).on('click', '.searchCorrectionInvoices', function () {
1149
    var startDate = getDatesFromPicker('input[name="correction-duration"]').startDate;
1150
    var endDate = getDatesFromPicker('input[name="correction-duration"]').endDate;
1151
    doGetAjaxRequestHandler(context + "/grnCorrection?startDate=" + startDate + "&endDate=" + endDate, function (response) {
1152
        $('#main-content').html(response);
1153
    });
1154
});
1155
 
1156
$(document).on('click', '.submitGrnCorrection', function () {
1157
    var invoiceId = $(this).data('invoiceid');
1158
    var remarks = $('#correctionRemarks').val();
1159
 
1160
    if (!remarks || remarks.trim() === '') {
1161
        alert("Please enter remarks explaining the reason for correction");
1162
        return false;
1163
    }
1164
 
1165
    // Collect serial number corrections (old → new)
1166
    var corrections = [];
1167
    $('#serial-corrections-table > tbody > tr').each(function () {
1168
        var oldSerial = $(this).find('.old-serial').val();
1169
        var newSerial = $(this).find('.new-serial').val();
1170
 
1171
        if (oldSerial && newSerial && oldSerial.trim() !== '' && newSerial.trim() !== '') {
1172
            corrections.push({
1173
                oldSerialNumber: oldSerial.trim(),
1174
                newSerialNumber: newSerial.trim()
1175
            });
1176
        }
1177
    });
1178
 
35884 amit 1179
    // Collect item corrections (serialized or non-serialized)
35806 amit 1180
    var qtyCorrections = [];
36206 amit 1181
    var imeiCountError = false;
35806 amit 1182
    $('#qty-corrections-table > tbody > tr').each(function () {
1183
        var oldItemId = $(this).find('.qty-old-itemid').val();
1184
        var newItemId = $(this).find('.qty-new-itemid').val();
35884 amit 1185
        var serial = $(this).find('.qty-serial').val();
35806 amit 1186
        var qty = parseInt($(this).find('.qty-correction-val').val());
1187
 
35884 amit 1188
        if (oldItemId && newItemId && serial && serial.trim() !== '') {
36206 amit 1189
            // Split IMEIs by space, comma, or newline
1190
            var imeis = serial.trim().split(/[\s,]+/).filter(function(s) { return s.length > 0; });
1191
            var imeiCount = imeis.length;
1192
 
1193
            // Auto-set qty from IMEI count, validate if qty was manually entered
1194
            if (qty > 0 && qty !== imeiCount) {
1195
                alert("Row error: Qty (" + qty + ") does not match IMEI count (" + imeiCount + ").\nIMEIs: " + imeis.join(", "));
1196
                imeiCountError = true;
1197
                return false;
1198
            }
1199
 
1200
            // Create one entry per IMEI (each with qty=1)
1201
            for (var i = 0; i < imeis.length; i++) {
1202
                qtyCorrections.push({
1203
                    oldItemId: parseInt(oldItemId),
1204
                    newItemId: parseInt(newItemId),
1205
                    qty: 1,
1206
                    serialNumber: imeis[i].trim()
1207
                });
1208
            }
35884 amit 1209
        } else if (oldItemId && newItemId && qty > 0) {
1210
            qtyCorrections.push({
1211
                oldItemId: parseInt(oldItemId),
1212
                newItemId: parseInt(newItemId),
35806 amit 1213
                qty: qty
1214
            });
1215
        }
1216
    });
1217
 
36206 amit 1218
    if (imeiCountError) return false;
1219
 
35806 amit 1220
    if (corrections.length === 0 && qtyCorrections.length === 0) {
1221
        alert("No corrections specified. Please enter serial number or quantity corrections.");
1222
        return false;
1223
    }
1224
 
1225
    var requestModel = {
1226
        invoiceId: invoiceId,
1227
        remarks: remarks,
1228
        corrections: corrections,
1229
        qtyCorrections: qtyCorrections
1230
    };
1231
 
1232
    if (confirm("Are you sure you want to raise this GRN correction request?")) {
1233
        doPostAjaxRequestWithJsonHandler(context + "/raiseGrnCorrection",
1234
            JSON.stringify(requestModel), function (response) {
36299 amit 1235
                var parsed;
1236
                try { parsed = typeof response === 'string' ? JSON.parse(response) : response; }
1237
                catch (e) { parsed = null; }
1238
                if (parsed && parsed.status === true) {
1239
                    if (parsed.autoApproved) {
1240
                        alert("Correction applied successfully (auto-approved: no model/qty change)");
1241
                    } else {
1242
                        alert("Correction request raised for approval");
1243
                    }
35806 amit 1244
                    loadGrnCorrection("main-content");
1245
                }
1246
            });
1247
    }
1248
});
1249
 
1250
$(document).on('click', '.approveGrnCorrectionBtn', function () {
1251
    var requestId = $(this).data('requestid');
1252
    var remarks = $('#approvalRemarks').val();
1253
 
1254
    if (confirm("Are you sure you want to APPROVE this correction request? This will apply the IMEI/qty changes.")) {
1255
        doPostAjaxRequestHandler(context + "/approveGrnCorrection?requestId=" + requestId + "&remarks=" + encodeURIComponent(remarks),
1256
            function (response) {
1257
                if (response == 'true') {
1258
                    alert("Correction approved and applied successfully");
1259
                    loadGrnCorrectionApproval("main-content");
1260
                }
1261
            });
1262
    }
1263
});
1264
 
1265
$(document).on('click', '.rejectGrnCorrectionBtn', function () {
1266
    var requestId = $(this).data('requestid');
1267
    var remarks = $('#approvalRemarks').val();
1268
 
1269
    if (!remarks || remarks.trim() === '') {
1270
        alert("Please enter remarks explaining the reason for rejection");
1271
        return false;
1272
    }
1273
 
1274
    if (confirm("Are you sure you want to REJECT this correction request?")) {
1275
        doPostAjaxRequestHandler(context + "/rejectGrnCorrection?requestId=" + requestId + "&remarks=" + encodeURIComponent(remarks),
1276
            function (response) {
1277
                if (response == 'true') {
1278
                    alert("Correction request rejected");
1279
                    loadGrnCorrectionApproval("main-content");
1280
                }
1281
            });
1282
    }
1283
});
1284
 
1285
function loadGrnCorrection(domId) {
1286
    doGetAjaxRequestHandler(context + "/grnCorrection", function (response) {
1287
        $('#' + domId).html(response);
1288
    });
1289
}
1290
 
1291
function loadGrnCorrectionApproval(domId) {
1292
    doGetAjaxRequestHandler(context + "/grnCorrectionApproval", function (response) {
1293
        $('#' + domId).html(response);
1294
    });
1295
}
1296
 
1297
function loadGrnCorrectionDetail(invoiceId) {
1298
    doGetAjaxRequestHandler(context + "/grnCorrectionDetail?invoiceId=" + invoiceId, function (response) {
1299
        $('.grnCorrectionDetailContainer').html(response);
1300
    });
1301
}
1302
 
1303
function loadGrnCorrectionRequestDetail(requestId) {
1304
    doGetAjaxRequestHandler(context + "/grnCorrectionRequestDetail?requestId=" + requestId, function (response) {
1305
        $('.grnCorrectionRequestDetailContainer').html(response);
1306
    });
1307
}
1308
 
1309