Subversion Repositories SmartDukaan

Rev

Rev 23331 | Rev 23343 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

var googleProfile;


$(document).ajaxComplete(
        function(){
                }
);
var startApp = function() {
  gapi.load('auth2', function(){
    // Retrieve the singleton for the GoogleAuth library and set up the client.
    auth2 = gapi.auth2.init({
      client_id: googleApiKey,
      cookiepolicy: 'single_host_origin',
      // Request scopes in addition to 'profile' and 'email'
      //scope: 'additional_scope'
    });
    attachSignin(document.getElementById('customBtn'));
  });
};

function badRequestAlert(response){
        console.log(response.responseText);
        var errorObject = JSON.parse(response.responseText);
        errorObject = errorObject.response;
        alert('Bad Request\n'+
                        'rejectedType : '+errorObject.rejectedType+'\n'+
                        'rejectedValue : '+errorObject.rejectedValue+'\n'+
                        'message : '+errorObject.message);
}

function internalServerErrorAlert(response){
        console.log(response.responseText);
        var errorObject = JSON.parse(response.responseText);
        errorObject = errorObject.response;
        alert('Internal Server Error\n'+
                'rejectedType : '+errorObject.rejectedType+'\n'+
                'rejectedValue : '+errorObject.rejectedValue+'\n'+
                'message : '+errorObject.message);
}

$( document ).ajaxError(function(event, jqxhr, settings, thrownError) {
        //$( ".log" ).text( "Triggered ajaxError handler." );
        if(jqxhr.status == 400){
                //$('#error-prompt-model').modal();
                badRequestAlert(jqxhr); 
        }else{
                internalServerErrorAlert(jqxhr);
        }
});

function doGetAjaxRequest(urlString){
        var response;
        doAjaxRequestHandler(urlString, "GET", function(ajaxResponse){
                response = ajaxResponse;
        });
        return response;
}

function doPutAjaxRequest(urlString){
        var response;
        doAjaxRequestHandler(urlString, "PUT", function(ajaxResponse){
                response = ajaxResponse;
        });
        return response;
}

function doPutAjaxRequestWithJson(urlString, json){
        var response;
        doAjaxRequestWithJsonHandler(urlString, "PUT", json, function(ajaxResponse){
                response = ajaxResponse;
        });
        return response;
}

function doPostAjaxRequestWithJson(urlString, json){
        var response;
        doAjaxRequestWithJsonHandler(urlString, "POST", json, function(ajaxResponse){
                response = ajaxResponse;
        });
        return response;
}

function doPostAjaxRequestWithParams(urlString, params){
        var response;
        doAjaxRequestWithParamsHandler(urlString, "POST", params, function(ajaxResponse){
                response = ajaxResponse;
        });
        return response;
}

function doAjaxRequestWithParamsHandler(urlString, httpType, params, callback_function){
        $.ajax({
           url: urlString,
           async: false,
           cache: false,
           data: params,
       //dataType:'json',
           type: httpType,
           success: function(response) {
              //console.log("response"+JSON.stringify(data));
              callback_function(response);
           }
        });
}

function doAjaxRequestWithJsonHandler(urlString, httpType, json, callback_function){
        $.ajax({
           url: urlString,
           async: false,
           cache: false,
           processData: false,
           data: json,
       contentType:'application/json',
           type: httpType,
           success: function(response) {
              //console.log("response"+JSON.stringify(data));
              callback_function(response);
           }
        });
}


function doAjaxRequestHandler(urlString, httpType, callback_function){
        $.ajax({
           url: urlString,
           async: false,
           cache: false,
           type: httpType,
           success: function(response) {
              //console.log("response"+JSON.stringify(data));
              callback_function(response);
           }
        });
}

function doAjaxUploadRequest(urlString, httpType, file){
        var response;
        doAjaxUploadRequestHandler(urlString, httpType, file, function(ajaxResponse){
                response = ajaxResponse;
        });
        return response;
}

function doAjaxUploadRequestHandler(urlString, httpType, file, callback_function){
        var formData = new FormData();
        formData.append("file", file);
        $.ajax({
           url: urlString,
           type: httpType,
           data: formData,
       dataType: 'json',
       async: false,
       cache: false,
       contentType: false,
       enctype: 'multipart/form-data',
       processData: false,
           success: function(response) {
              //console.log("response"+JSON.stringify(data));
              callback_function(response);
           }
        });
}

function uploadDocument(file){
        var url = '/profitmandi-web/document-upload';
        var response = doAjaxUploadRequest(url, 'POST', file);
        var documentId = response.response.document_id; 
        console.log("documentId : "+documentId);
        return documentId;
}


function attachSignin(element) {
    console.log(element.id);
    auth2.attachClickHandler(element, {},
        function(googleUser) {
                googleProfile = googleUser.getBasicProfile();
                console.log(googleProfile.getImageUrl());
                submitUser(googleUser);
        }, function(error) {
          console.log(JSON.stringify(error, undefined, 2));
        });
  }

function submitUser(googleUser){
        var params = {
                                "token" : googleUser.getAuthResponse().id_token
                        };
        var response = doPostAjaxRequestWithParams(context+"/login", params);
        response = JSON.parse(response);
        if(response.status){
                addProfileInLocalDb();
                window.location.href= response.redirectUrl;
        }else{
                alert("Retailer not found, Please login");
        }
}

function addProfileInLocalDb(){
        var profile = {'image_url':googleProfile.getImageUrl(),'name':googleProfile.getName()};
        localStorage.setItem("profile",JSON.stringify(profile));
}


function loadNewGrn(domId){
        var response = doGetAjaxRequest(context+"/purchase");
        $('#' + domId).html(response);  
}

function getPurchaseByInvoiceNumber(){
        var airwayBillOrInvoiceNumber = $('#airwayBillOrInvoiceNumberText').val();
        var response = doGetAjaxRequest(context+"/purchaseByInvoiceNumber?airwayBillOrInvoiceNumber="+airwayBillOrInvoiceNumber);
        $('#main-content').html(response);
}

function loadPendingGrn(domId){
        var response = doGetAjaxRequest(context+"/pendingGrn");
        $('#' + domId).html(response);  
}

function loadGoodInventory(domId, search_text){
        var response = doGetAjaxRequest(context+"/getCurrentInventorySnapshot/?searchTerm="+search_text);
        $('#' + domId).html(response);
}

function loadCatalog(domId, search_text){
        var response = doGetAjaxRequest(context+"/getCatalog/?searchTerm="+search_text);
        $('#' + domId).html(response);
}

function getInventoryItemAgingByInterval(domId, searchContent){
        var response = doPostAjaxRequestWithJson(context+"/getInventoryItemAgingByInterval?searchContent="+searchContent, JSON.stringify([5,15,30,45]));
        $('#' + domId).html(response);
}

function getRetailerDetailsByEmailIdOrMobileNumber(domId, emailIdOrMobileNumber){
        var response = doGetAjaxRequest(context+"/retailerDetail/?emailIdOrMobileNumber="+emailIdOrMobileNumber);
        $('#' + domId).html(response); 
}

function downloadAgingReport(){
        data = JSON.stringify([5,15,30,45]),
        xhttp = new XMLHttpRequest();
        xhttp.onreadystatechange = function() {
            var a;
            if (xhttp.readyState === 4 && xhttp.status === 200) {
                // Trick for making downloadable link
                a = document.createElement('a');
                a.href = window.URL.createObjectURL(xhttp.response);
                // Give filename you wish to download
                a.download = "InventoryItemAging.xlsx";
                a.style.display = 'none';
                document.body.appendChild(a);
                a.click();
            }
            if(xhttp.readyState == 4 && xhttp.status === 400){
                badRequestAlert(xhttp.responseText);
            }
            if(xhttp.readyState == 4 && xhttp.status === 500){
                internalServerErrorAlert(xhttp.responseText);
            }
        };
        // Post data to URL which handles post request
        xhttp.open("POST", context+"/downloadInventoryItemAgingByInterval");
        xhttp.setRequestHeader("Content-Type", "application/json");
        // You should set responseType as blob for binary responses
        xhttp.responseType = 'blob';
        xhttp.send(data);
}

function downloadItemLedgerReport(){
        console.log("downloadItemLedgerReport Button clicked")
        var startDateTime = $('input[name="startDateTime"]').val();
        console.log("startDateTime : "+startDateTime);
        var endDateTime = $('input[name="endDateTime"]').val();
        console.log("endDateTime : "+endDateTime);
        //data = JSON.stringify([5,10,15,20,25,30,35,40]),
        xhttp = new XMLHttpRequest();
        xhttp.onreadystatechange = function() {
            var a;
            if (xhttp.readyState === 4 && xhttp.status === 200) {
                // Trick for making downloadable link
                a = document.createElement('a');
                a.href = window.URL.createObjectURL(xhttp.response);
                // Give filename you wish to download
                a.download = "ItemCompleteLedegerReport.xlsx";
                a.style.display = 'none';
                document.body.appendChild(a);
                a.click();
            }
            if(xhttp.readyState == 4 && xhttp.status === 400){
                badRequestAlert(xhttp.responseText);
            }
            if(xhttp.readyState == 4 && xhttp.status === 500){
                internalServerErrorAlert(xhttp.responseText);
            }
        };
        // Post data to URL which handles post request
        xhttp.open("GET", context+"/itemLedger/complete/download?startDateTime="+startDateTime+"&endDateTime="+endDateTime);
        //xhttp.setRequestHeader("Content-Type", "application/json");
        // You should set responseType as blob for binary responses
        xhttp.responseType = 'blob';
        xhttp.send(null);
}


function schemesDownload(){
        console.log("downloadItemLedgerReport Button clicked")
        var startEndDateTime = $('input[name="startEndDateTime"]').val().split("-");
        var startDateTime = $.trim(startEndDateTime[0]);
        console.log("startDateTime : "+startDateTime);
        var endDateTime = $.trim(startEndDateTime[1]);
        console.log("endDateTime : "+endDateTime);
        //data = JSON.stringify([5,10,15,20,25,30,35,40]),
        xhttp = new XMLHttpRequest();
        xhttp.onreadystatechange = function() {
            var a;
            if (xhttp.readyState === 4 && xhttp.status === 200) {
                // Trick for making downloadable link
                a = document.createElement('a');
                a.href = window.URL.createObjectURL(xhttp.response);
                // Give filename you wish to download
                a.download = "SchemesReport.xlsx";
                a.style.display = 'none';
                document.body.appendChild(a);
                a.click();
            }
            if(xhttp.readyState == 4 && xhttp.status === 400){
                badRequestAlert(xhttp.responseText);
            }
            if(xhttp.readyState == 4 && xhttp.status === 500){
                internalServerErrorAlert(xhttp.responseText);
            }
        };
        // Post data to URL which handles post request
        xhttp.open("GET", context+"/schemes/download?startDateTime="+startDateTime+"&endDateTime="+endDateTime);
        //xhttp.setRequestHeader("Content-Type", "application/json");
        // You should set responseType as blob for binary responses
        xhttp.responseType = 'blob';
        xhttp.send(null);
}

function getItemAgingNextPreviousItems(offset, searchContent){
        console.log("getItemAgingNextPreviousItems() called");
        var response = doPostAjaxRequestWithJson(context+"/getInventoryItemAgingByInterval?offset="+offset+"&searchContent="+searchContent, JSON.stringify([5,15,30,45]));
        $('#main-content').html(response);
}

function getGrnHistoryPreviousItems(start,end,pre,purchase_reference, searchType,startTime,endTime){
        var response = doGetAjaxRequest(context+"/getPaginatedGrnHistory/?purchaseReference="+purchase_reference+"&searchType="+searchType
                +"&startTime="+startTime
                +"&endTime="+endTime+"&offset="+pre);
        
        $( "#grn-history-paginated .end" ).text(+end - +10);
        $( "#grn-history-paginated .start" ).text(+start - +10);
        $('#grn-history-table').html(response);
        $("#grn-history-paginated .next").prop('disabled', false);
        if (parseInt(pre)==0)
        {
                $("#grn-history-paginated .previous").prop('disabled', true);
        }
}

function loadBadInventory(domId, search_text){
        var response = doGetAjaxRequest(context+"/getBadInventorySnapshot/?searchTerm="+search_text);
        $('#' + domId).html(response);  
}

function loadGrnHistory(domId,purchase_reference,searchType, startTime, endTime){
        var response = doGetAjaxRequest(context+"/grnHistory/?purchaseReference="+purchase_reference+"&searchType="+searchType
                +"&startTime="+startTime
                +"&endTime="+endTime);
        $('#' + domId).html(response);   
}


function getNextItems(start, end, searchText){
        console.log(start);
        console.log(end);
        console.log(+end + +10);
        console.log(+start + +10);
        var response = doGetAjaxRequest(context+"/getPaginatedCurrentInventorySnapshot/?offset="+end+"&searchTerm="+searchText);
        
        $( "#good-inventory-paginated .end" ).text(+end + +10);
        $( "#good-inventory-paginated .start" ).text(+start + +10);
        var last = $( "#good-inventory-paginated .end" ).text();
        var temp = $( "#good-inventory-paginated .size" ).text();
        if (parseInt(last) >= parseInt(temp)){
                $("#good-inventory-paginated .next").prop('disabled', true);
                //$( "#good-inventory-paginated .end" ).text(temp);
        }
    $('#good-inventory-table').html(response);
    $("#good-inventory-paginated .previous").prop('disabled', false);
    
}

function getPreviousItems(start,end,pre,searchText){
        var response = doGetAjaxRequest(context+"/getPaginatedCurrentInventorySnapshot/?offset="+pre+"&searchTerm="+searchText);
        
        $( "#good-inventory-paginated .end" ).text(+end - +10);
        $( "#good-inventory-paginated .start" ).text(+start - +10);
        $('#good-inventory-table').html(response);
        $("#good-inventory-paginated .next").prop('disabled', false);
        if (parseInt(pre)==0)
        {
                $("#good-inventory-paginated .previous").prop('disabled', true);
        }
        
}

function getGrnHistoryNextItems(start, end, purchase_reference, searchType,startTime,endTime){
        console.log(start);
        console.log(end);
        console.log(+end + +10);
        console.log(+start + +10);
        var response = doGetAjaxRequest(context+"/getPaginatedGrnHistory/?purchaseReference="+purchase_reference+"&searchType="+searchType
                +"&startTime="+startTime
                +"&endTime="+endTime+"&offset="+end);

        $( "#grn-history-paginated .end" ).text(+end + +10);
        $( "#grn-history-paginated .start" ).text(+start + +10);
        var last = $( "#grn-history-paginated .end" ).text();
        var temp = $( "#grn-history-paginated .size" ).text();
        if (parseInt(last) >= parseInt(temp)){
                $("#grn-history-paginated .next").prop('disabled', true);
                //$( "#good-inventory-paginated .end" ).text(temp);
        }
    $('#grn-history-table').html(response);
    $("#grn-history-paginated .previous").prop('disabled', false);
    
}

function getGrnHistoryPreviousItems(start,end,pre,purchase_reference, searchType,startTime,endTime){
        var response = doGetAjaxRequest(context+"/getPaginatedGrnHistory/?purchaseReference="+purchase_reference+"&searchType="+searchType
                +"&startTime="+startTime
                +"&endTime="+endTime+"&offset="+pre);
        
        $( "#grn-history-paginated .end" ).text(+end - +10);
        $( "#grn-history-paginated .start" ).text(+start - +10);
        $('#grn-history-table').html(response);
        $("#grn-history-paginated .next").prop('disabled', false);
        if (parseInt(pre)==0)
        {
                $("#grn-history-paginated .previous").prop('disabled', true);
        }
}

function getSaleHistoryNextItems(start, end, searchType, searchValue, startTime, endTime){
        console.log(start);
        console.log(end);
        console.log(+end + +10);
        console.log(+start + +10);
        var response = doGetAjaxRequest(context+"/getPaginatedSaleHistory/?searchType="+searchType+"&searchValue="+searchValue
                +"&startTime="+startTime+"&endTime="+endTime+"&offset="+end);
        
        $( "#sale-history-paginated .end" ).text(+end + +10);
        $( "#sale-history-paginated .start" ).text(+start + +10);
        var last = $( "#sale-history-paginated .end" ).text();
        var temp = $( "#sale-history-paginated .size" ).text();
        if (parseInt(last) >= parseInt(temp)){
                $("#sale-history-paginated .next").prop('disabled', true);
                //$( "#good-inventory-paginated .end" ).text(temp);
        }
    $('#sale-history-table').html(response);
    $("#sale-history-paginated .previous").prop('disabled', false);
    
}

function getSaleHistoryPreviousItems(start, end, pre, searchType, searchValue, startTime, endTime){
        
        var response = doGetAjaxRequest(context+"/getPaginatedSaleHistory/?searchType="+searchType+"&searchValue="+searchValue
                +"&startTime="+startTime
                +"&endTime="+endTime+"&offset="+pre);
        
        $( "#sale-history-paginated .end" ).text(+end - +10);
        $( "#sale-history-paginated .start" ).text(+start - +10);
        $('#sale-history-table').html(response);
        $("#sale-history-paginated .next").prop('disabled', false);
        if (parseInt(pre)==0)
        {
                $("#sale-history-paginated .previous").prop('disabled', true);
        }
        
}


function getSchemesNextItems(start, end){
        console.log(start);
        console.log(end);
        console.log(+end + +10);
        console.log(+start + +10);
        var response = doGetAjaxRequest(context+"/getPaginatedSchemes?offset="+end);
        
        $( "#schemes-paginated .end" ).text(+end + +10);
        $( "#schemes-paginated .start" ).text(+start + +10);
        var last = $( "#schemes-paginated .end" ).text();
        var temp = $( "#schemes-paginated .size" ).text();
        if (parseInt(last) >= parseInt(temp)){
                $("#schemes-paginated .next").prop('disabled', true);
                //$( "#good-inventory-paginated .end" ).text(temp);
        }
    $('#schemes-table').html(response);
    $('#scheme-details-container').html('');
    $("#schemes-paginated .previous").prop('disabled', false);
    
}


function getSchemesPreviousItems(start, end, pre){
        
        var response = doGetAjaxRequest(context+"/getPaginatedSchemes/?offset="+pre);
        $( "#schemes-paginated .end" ).text(+end - +10);
        $( "#schemes-paginated .start" ).text(+start - +10);
        $('#schemes-table').html(response);
        $('#scheme-details-container').html('');
        $("#schemes-paginated .next").prop('disabled', false);
        if (parseInt(pre)==0)
        {
                $("#schemes-paginated .previous").prop('disabled', true);
        }
        
}



function getWalletHistoryNextItems(start, end, startTime, endTime){
        console.log(start);
        console.log(end);
        console.log(+end + +10);
        console.log(+start + +10);
        var response = doGetAjaxRequest(context+"/getPaginatedWalletHistory?startTime="+startTime
                +"&endTime="+endTime+"&offset="+end);

        $( "#wallet-history-paginated .end" ).text(+end + +10);
        $( "#wallet-history-paginated .start" ).text(+start + +10);
        var last = $( "#wallet-history-paginated .end" ).text();
        var temp = $( "#wallet-history-paginated .size" ).text();
        if (parseInt(last) >= parseInt(temp)){
                $("#wallet-history-paginated .next").prop('disabled', true);
                //$( "#good-inventory-paginated .end" ).text(temp);
        }
    $('#wallet-history-table').html(response);
    $("#wallet-history-paginated .previous").prop('disabled', false);
    
        
}

function getWalletHistoryPreviousItems(start, end, pre, startTime, endTime){
        var response = doGetAjaxRequest(context+"/getPaginatedWalletHistory?startTime="+startTime
                +"&endTime="+endTime+"&offset="+pre);
        
        $( "#wallet-history-paginated .end" ).text(+end - +10);
        $( "#wallet-history-paginated .start" ).text(+start - +10);
        $('#wallet-history-table').html(response);
        $("#wallet-history-paginated .next").prop('disabled', false);
        if (parseInt(pre)==0)
        {
                $("#wallet-history-paginated .previous").prop('disabled', true);
        }
        
}

function loadGoodInventorySearchInfo(search_text){
        loadGoodInventory("main-content",search_text);
}

function loadGrnHistorySearchInfo(search_text,searchType,startTime,endTime){
        loadGrnHistory("main-content",search_text,searchType,startTime,endTime);
}

function findDuplicateSerialNumbers(value){
    var result = $("#grnImeiInformation :input[value='" + value + "']").length - 1;
    return result;
}

function loadGrnDetails(purchaseId, domId){
        var response = doGetAjaxRequest(context+"/grnHistoryDetailByPurchaseId/?purchaseId="+purchaseId);
        $('#' + domId).html(response);
        window.dispatchEvent(new Event('resize'));
}

function loadPendingGrnDetails(orderId, domId){
        var response = doGetAjaxRequest(context+"/pendingGrnDetails/?orderId="+orderId);
        $('#' + domId).html(response);
        
        window.dispatchEvent(new Event('resize'));
}

function loadSaleDetails(orderId, domId){
        
        var response = doGetAjaxRequest(context+"/saleDetails?orderId="+orderId);
        $('#' + domId).html(response); 
}

function loadSchemeDetails(schemeId, domId){
        var response = doGetAjaxRequest(context+"/getSchemeById?schemeId="+schemeId);
        $('#' + domId).html(response);
        window.dispatchEvent(new Event('resize'));
}

function activeScheme(schemeId, offset, domId){
        var response = doPutAjaxRequest(context+"/activeSchemeById?schemeId="+schemeId
                +"&offset="+offset);
        $('#' + domId).html(response);
        $('#scheme-details-container').html('');
}

function expireScheme(schemeId, offset, domId){
        var response = doPutAjaxRequest(context+"/expireSchemeById?schemeId="+schemeId
                +"&offset="+offset);
        $('#' + domId).html(response);
        $('#scheme-details-container').html('');
}

function getNextCatalogItems(start, end, searchText){
        console.log(start);
        console.log(end);
        console.log(+end + +10);
        console.log(+start + +10);
        var response = doGetAjaxRequest(context+"/getPaginatedCatalog/?offset="+end+"&searchTerm="+searchText);
        
        $( "#catalog-paginated .end" ).text(+end + +10);
        $( "#catalog-paginated .start" ).text(+start + +10);
        var last = $( "#catalog-paginated .end" ).text();
        var temp = $( "#catalog-paginated .size" ).text();
        if (parseInt(last) >= parseInt(temp)){
                $("#catalog-paginated .next").prop('disabled', true);
        }
    $('#catalog-table').html(response);
    $("#catalog-paginated .previous").prop('disabled', false);
    
}

function getPreviousCatalogItems(start,end,pre,searchText){
        var response = doGetAjaxRequest(context+"/getPaginatedCatalog/?offset="+pre+"&searchTerm="+searchText);
        
        $( "#catalog-paginated .end" ).text(+end - +10);
        $( "#catalog-paginated .start" ).text(+start - +10);
        $('#catalog-table').html(response);
        $("#catalog-paginated .next").prop('disabled', false);
        if (parseInt(pre)==0)
        {
                $("#catalog-paginated .previous").prop('disabled', true);
        }
}

function loadCatalogSearchInfo(search_text){
        loadCatalog("main-content",search_text);
}

function addItemInLocalStorage(bagObj){
        if (localStorage.getItem("bag")!=null){
                var bag = JSON.parse(localStorage.getItem("bag"));
                bag[bagObj.itemId] = bagObj
                localStorage.setItem("bag",JSON.stringify(bag));
                bag = localStorage.getItem("bag")
                $("#cart_bar").find('span').text(Object.keys(JSON.parse(bag)).length);
        }
        else{
                var tempObj = {};
                tempObj[bagObj.itemId] = bagObj
                localStorage.setItem("bag",JSON.stringify(tempObj));
                var bag = localStorage.getItem("bag")
                $("#cart_bar").find('span').text(Object.keys(JSON.parse(bag)).length);
        }
}


function changeQuantityInLocalStorage(itemId, newQuantity){
        var bag = JSON.parse(localStorage.getItem("bag"));
        bag[itemId].quantity = newQuantity;
        localStorage.setItem("bag",JSON.stringify(bag));
}

function removeItemFromLocalStorage(itemId){
        if (localStorage.getItem("bag")!=null){
                var bag = JSON.parse(localStorage.getItem("bag"));
                delete bag[itemId];
                localStorage.setItem("bag",JSON.stringify(bag));
                $("#cart_bar").find('span').text(Object.keys(bag).length);
        }
}

function emptyBag(){
        localStorage.setItem("bag",JSON.stringify({}));
        $("#cart_bar").find('span').text(0);
}

function loadCart(domId){
        var params = {
                        "cartData":localStorage.getItem("bag")
                }
        var response = doPostAjaxRequestWithParams(context+"/cart", params);
        $('#' + domId).html(response);
}

function loadWallet(domId, startTime, endTime){
        var response = doGetAjaxRequest(context+"/walletDetails?startTime="+startTime
                +"&endTime="+endTime);
        $('#' + domId).html(response);   
}

function checkout(domId){
        var params = {
                        "cartData":localStorage.getItem("bag")
                }
        var response = doPostAjaxRequestWithParams(context+"/validate-cart", params);
        $('#' + domId).html(response);
        var obj = JSON.parse(response);
        redirectCart(obj.redirectUrl, obj.params, obj.method, "main-content");
        $('#main-content').html(response);
}

function loadScheme(domId){
        var response = doGetAjaxRequest(context+"/createScheme");
        $('#' + domId).html(response); 
}

function loadDistrictNames(stateName){
        if(undefined != $("#districtName")){
                var response = doGetAjaxRequest(context+"/district/all/stateName?stateName="+stateName);
                console.log(response);
                var districtMasters = response.response;
                //districtMasters = districtMasters.response;
                var districtNameElements = '<option value="" disabled selected>District Name</option>';
                for(index = 0; index < districtMasters.length; index++){
                        districtNameElements = districtNameElements + '<option value="'+districtMasters[index].name+'">'+districtMasters[index].name+'</option>';
                }
                $('#districtName').html(districtNameElements);
        }
}

function loadItemLedgerReportDownloadPage(domId){
        var response = doGetAjaxRequest(context+"/itemLedger/downloadPage");
        $('#' + domId).html(response); 
}

function loadItemsDescriptionByBrand(domId, brand){
        var response = doGetAjaxRequest(context+"/getItemsByBrand?brand="+brand);
        $('#' + domId).html(response);
        configureItemsDescriptionDropDown();
}

function configureItemsDescriptionDropDown(){
        $(document).ready(function() {
        $('#itemsDescription').multiselect({
                includeSelectAllOption: true,
                maxHeight: 200,
                buttonWidth: '180px',
                numberDisplayed: 1,
                nonSelectedText: 'Items',
                nSelectedText: ' - Items Selected',
                allSelectedText: 'All Items Selected',
                enableFiltering: true
        });
    });
}

function retailerInfo(domId){
        var response = doGetAjaxRequest(context+"/retailerInfo");
        $('#' + domId).html(response); 
}

function redirectCart(url, cartData, method, domId){
        jQuery.ajax({
        type : method,
        data: {"cartData":cartData},
        url : context+url,
        success : function(response) {
            $('#' + domId).html(response);
            window.dispatchEvent(new Event('resize'));
        }
    });  
}

function saleHistory(domId, searchType, searchValue, startTime, endTime){
        var response = doGetAjaxRequest(context+"/saleHistory?searchType="+searchType+"&searchValue="+searchValue
                +"&startTime="+startTime
                +"&endTime="+endTime);
        $('#' + domId).html(response);   
}

function schemes(domId){
        var response = doGetAjaxRequest(context+"/getSchemes");
        $('#' + domId).html(response);   
}

function loadSchemesDownloadPage(domId){
        var response = doGetAjaxRequest(context+"/schemes/downloadPage");
        $('#' + domId).html(response); 
}


function contactUs(domId){
        var response = doGetAjaxRequest(context+"/contactUs");
        $('#' + domId).html(response); 
}

function writeOldCustomerDetailsByMobileNumber(mobileNumber){
        var response = doGetAjaxRequest(context+"/customer/mobileNumber?mobileNumber="+mobileNumber);
        
        var customer = response.response;
    $('#firstName').attr('value', customer.firstName);
    $('#lastName').attr('value', customer.lastName);
    $('#email').attr('value', customer.emailId);
    //$('#phone').attr('value', customer.mobileNumber);
    $('#alternatePhone').attr('value', customer.address.phoneNumber);
    $('#line1').attr('value', customer.address.line1);
    $('#line2').attr('value', customer.address.line2);
    $('#landmark').attr('value', customer.address.landmark);
    $('#pinCode').attr('value', customer.address.pinCode);
    $('#city').attr('value', customer.address.city);
    $('#state').attr('value', customer.address.state).prop('selected',true);
    //$('#state').val(customer.address.state).prop('selected', true);
    $('#phone').attr('addressId', customer.address.id);
}

function saleHistorySearchInfo(searchType, searchText, startTime, endTime){
        saleHistory("main-content", searchType, searchText, startTime, endTime);
}



function validateOrderDetails(){
        var sNumbers = [];
        var error = false;
        $("form#cd input.serialNumber").each(function(){
                var input = $(this).val().trim();
                var itemType = $(this).attr("itemType");
                $(this).removeClass("border-highlight");
                if (sNumbers.indexOf(input) !=-1 || (itemType ==='SERIALIZED' && !input)){
                        error = true;
                        $(this).addClass("border-highlight");
                }
                sNumbers.push(input);
        });
        
        $("form#cd input.unitPrice").each(function(){
                var input = $(this).val().trim();
                $(this).removeClass("border-highlight");
                if (!input || parseInt(input)<=0 || isNaN(input)){
                        error=true;
                        $(this).addClass("border-highlight");
                }
                var unitPrice = parseFloat(input);
                var mopPrice = parseFloat($(this).attr('mopPrice'));
                if(unitPrice < mopPrice){
                        error = true;
                        alert("sellingPrice must be greater than equal to mop")
                        $(this).addClass("border-highlight");
                }
        });
        
        // checking input discountAmount is not greater than maxDiscountAmount
        $("form#cd input.discountAmount").each(function(){
                var input = $(this).val().trim();
                var mop = $(this).attr("mop");
                
                if(mop){
                        var maxDiscountPriceRangeString = $(this).attr("placeholder");
                        var maxDiscountPrice = 0;
                        if(maxDiscountPriceRangeString != undefined && maxDiscountPriceRangeString != ''){
                                maxDiscountPrice = maxDiscountPriceRangeString.substring(6);
                        }
                        $(this).removeClass("border-highlight");
                        if (!input || parseFloat(input)<0 || isNaN(input)){
                                alert("DiscountAmount value can not be lesser than 0 or invalid value");
                                error=true;
                                $(this).addClass("border-highlight");
                        }
                        if(parseFloat(input) > maxDiscountPrice){
                                alert("DiscountAmount [" + parseFloat(input) + "] value can not be greater than the suggested maxDiscountPrice [" + maxDiscountPrice + "]");
                                error=true;
                                $(this).addClass("border-highlight");
                        }
                }
        });
        
        var amount = 0;
        var netPayableAmount = parseFloat($("form#cd input.netPayableAmount").val());
        
        
        $("form#cd input.amount").each(function(){
                if ($(this).val() == ""){
                        $(this).val(0);
                }
                var tmpAmount = parseFloat($(this).val());
                amount = amount + tmpAmount;
        });
        
        console.log(amount);
        console.log(netPayableAmount);
        
        if (amount != netPayableAmount){
                if(amount < netPayableAmount){
                        alert("[" + (netPayableAmount - amount) + "] is more required to complete the payment");
                }else{
                        alert("[" + (amount - netPayableAmount) + "] is extra amount, please reduce the amount");
                }
                $("form#cd input.netPayableAmount").each(function(){
                        $(this).addClass("border-highlight");
                });
                error = true;
        }
        
        if (error){
                return false;
        }
        return true;
        
}

function validateSchemeDetails(){
        console.log("validating Scheme Details...");
        var error = false;
        var name = $("form#create-scheme-form input[name=schemeName]").val();
        console.log("schemeName = " + name);
        $("#schemeName").removeClass("border-highlight");
        if(name ==""){
                alert("Name is required");
                $("#schemeName").addClass("border-highlight");
                error = true;
                return error;
        }
        var schemeType = $("#schemeType option:selected").val();
        console.log("schemeType = " + schemeType);
        $("#schemeType").removeClass("border-highlight");
        if(schemeType == ""){
                alert("Please choose Scheme Type");
                $("#schemeType").addClass("border-highlight");
                error = true;
                return error;
        }
        var amountType = $("#amountType option:selected").val();
        console.log("amountType = " + amountType);
        $("#amountType").removeClass("border-highlight");
        if(amountType == ""){
                alert("Please choose Amount Type");
                $("#amountType").addClass("border-highlight");
                error = true;
                return error;
        }
        var amount = $("form#create-scheme-form input[name=schemeAmount]").val();
        console.log("amount = " + amount);
        $("#schemeAmount").removeClass("border-highlight");
        if (amount == ""){
                $("form#create-scheme-form input[name=schemeAmount]").val(0);
        }else if(amount <= 0){
                alert("Amount should be greater than 0");
                $("#schemeAmount").addClass("border-highlight");
                error = true;
                return error;
        }
        
        
        var startDateTimeString = $("form#create-scheme-form input[name=startDateTime]").val();
        var endDateTimeString = $("form#create-scheme-form input[name=endDateTime]").val();
        $("#startDateTime").removeClass("border-highlight");
        $("#endDateTime").removeClass("border-highlight");
        
        
        if(Date.parse(endDateTimeString) < Date.parse(startDateTimeString)){
                alert("End date Time [" + endDateTimeString + "] can not be greater than equal to Start date Time [" + startDateTimeString + "]");
                $("#startDateTime").addClass("border-highlight");
                $("#endDateTime").addClass("border-highlight");
                error = true;
                return error;
        }
        
        //$('#brand-value').text($(this).text());
        $("#brand-value").removeClass("border-highlight");
        if($("#brand-value").text() == "Brands"){
                alert("Please choose Brand");
                $("#brand-value").addClass("border-highlight");
                error = true;
                return error;
        }
        
        $("#itemsDescription").removeClass("border-hightlight");
        var itemIdsString = $("#itemsDescription").val();
        if(itemIdsString == null){
                alert("Please choose items");
                $("#itemsDescription").addClass("border-highlight");
                error = true;
                return error;
        }
        
        var retailerIdsString = $("#retailerIds").val();
        if(retailerIdsString != undefined){
                var retailerIdsPattern = "^[0-9]{1,10}(?:,[0-9]{1,10})*$";
                if(retailerIdsString.match(retailerIdsPattern) == null){
                        alert("Invalid retailerIds["+retailerIdsString+"] pattern");
                        $("#retailerIds").addClass("border-highlight");
                        error = true;
                        return error;
                }
        }
        
        console.log("validation scheme error = " + error);
        return error;
}

function validateRetailerDetails(){
        console.log("validating Retailer Details...");
        var error = false;
        
        var firstName = $("form#update-retailer-details-form input[name=firstName]").val();
        console.log("firstName = " + firstName);
        $("#firstName").removeClass("border-highlight");
        if(firstName == ""){
                alert("First Name is required");
                $("#firstName").addClass("border-highlight");
                error = true;
                return error;
        }
        
        var lastName = $("form#update-retailer-details-form input[name=lastName]").val();
        console.log("lastName = " + lastName);
        $("#lastName").removeClass("border-highlight");
        if(firstName == ""){
                alert("Last Name is required");
                $("#lastName").addClass("border-highlight");
                error = true;
                return error;
        }
        
        var emailId = $("form#update-retailer-details-form input[name=emailId]").val();
        console.log("emailId = " + emailId);
        $("#emailId").removeClass("border-highlight");
        if(emailId == ""){
                alert("Email Id is required");
                $("#emailId").addClass("border-highlight");
                error = true;
                return error;
        }
        
        var mobileNumber = $("form#update-retailer-details-form input[name=mobileNumber]").val();
        console.log("mobileNumber = " + mobileNumber);
        $("#mobileNumber").removeClass("border-highlight");
        if(mobileNumber == ""){
                alert("Mobile Number is required");
                $("#mobileNumber").addClass("border-highlight");
                error = true;
                return error;
        }
        
        var retailerName = $("form#update-retailer-details-form input[name=retailerName]").val();
        console.log("retailerName = " + retailerName);
        $("#retailerName").removeClass("border-highlight");
        if(retailerName == ""){
                alert("Retailer Name is required");
                $("#retailerName").addClass("border-highlight");
                error = true;
                return error;
        }
        
        /*var retailerNumber = $("form#update-retailer-details-form input[name=retailerNumber]").val();
        console.log("retailerNumber = " + retailerNumber);
        $("#retailerNumber").removeClass("border-highlight");
        if(retailerNumber == ""){
                alert("Retailer Number is required");
                $("#retailerNumber").addClass("border-highlight");
                error = true;
                return error;
        }*/
        
        
        var gstNumber = $("form#update-retailer-details-form input[name=gstNumber]").val();
        console.log("gstNumber = " + gstNumber);
        var fofo = $("form#update-retailer-details-form input[name=fofoPartner]").val();
        $("#gstNumber").removeClass("border-highlight");
        
        var districtName = $("#districtName option:selected").val();
        if(fofo == "true" && (districtName == undefined || districtName == "")){
                alert("Please choose district name");
                $("#districtName").addClass("border-highlight");
                error = true;
                return error;
        }
        
        if(fofo == "true" && gstNumber == ""){
                alert("For Fofo Partner GST number is required");
                $("#gstNumber").addClass("border-highlight");
                error = true;
                return error;
        }
        
        
        
        var fileSelector = $('#retailerDocument')[0];
        if(fileSelector != undefined && fileSelector.files[0] == undefined){
                alert("Retailer Document is required");
                error = true;
                return error;
        }
        
        var retailerAddressName = $("form#update-retailer-details-form input[name=retailerAddressName]").val();
        console.log("retailerAddressName = " + retailerAddressName);
        $("#retailerAddressName").removeClass("border-highlight");
        if(retailerAddressName == ""){
                alert("Retailer Address Name is required");
                $("#retailerAddressName").addClass("border-highlight");
                error = true;
                return error;
        }
        
        var retailerAddressLine1 = $("form#update-retailer-details-form input[name=retailerAddressLine1]").val();
        console.log("retailerAddressLine1 = " + retailerAddressLine1);
        $("#retailerAddressLine1").removeClass("border-highlight");
        if(retailerAddressLine1 == ""){
                alert("Retailer Address Line1 is required");
                $("#retailerAddressLine1").addClass("border-highlight");
                error = true;
                return error;
        }
        
        var retailerAddressLine2 = $("form#update-retailer-details-form input[name=retailerAddressLine2]").val();
        console.log("retailerAddressLine2 = " + retailerAddressLine2);
        $("#retailerAddressLine2").removeClass("border-highlight");
        if(retailerAddressLine2 == ""){
                alert("Retailer Address Line2 is required");
                $("#retailerAddressLine2").addClass("border-highlight");
                error = true;
                return error;
        }
        
        var retailerAddressCity = $("form#update-retailer-details-form input[name=retailerAddressCity]").val();
        console.log("retailerAddressCity = " + retailerAddressCity);
        $("#retailerAddressCity").removeClass("border-highlight");
        if(retailerAddressCity == ""){
                alert("Retailer Address City is required");
                $("#retailerAddressCity").addClass("border-highlight");
                error = true;
                return error;
        }
        
        var retailerAddressPinCode = $("form#update-retailer-details-form input[name=retailerAddressPinCode]").val();
        console.log("retailerAddressPinCode = " + retailerAddressPinCode);
        $("#retailerAddressPinCode").removeClass("border-highlight");
        if(retailerAddressPinCode == ""){
                alert("Retailer Address Pin Code is required");
                $("#retailerAddressPinCode").addClass("border-highlight");
                error = true;
                return error;
        }
        
        var retailerAddressState = $("#retailerAddressState option:selected").val();
        console.log("retailerAddressState = " + retailerAddressState);
        $("#retailerAddressState").removeClass("border-highlight");
        if(retailerAddressState == ""){
                alert("Retailer Address State is required");
                $("#retailerAddressState").addClass("border-highlight");
                error = true;
                return error;
        }
        
        
        //start from here
        var shopDetailsSize = $("#shopDetailsSize").attr("size");
        for(var i = 0; i < shopDetailsSize; i++){
                var shopName = $("form#update-retailer-details-form input[name=shopName"+i+"]").val();
                $("form#update-retailer-details-form input[name=shopName"+i+"]").removeClass("border-highlight");
                if(shopName == ""){
                        alert("Shop Name is required");
                        $("form#update-retailer-details-form input[name=shopName"+i+"]").addClass("border-highlight");
                        error = true;
                        return error;
                }
                var fileSelector = $('#retailerShopDocument'+i)[0];
                if(fileSelector != undefined && fileSelector.files[0] == undefined){
                        alert("Retailer Shop Document is required");
                        error = true;
                        return error;
                }
                var shopAddressName = $("form#update-retailer-details-form input[name=shopAddressName"+i+"]").val();
                $("form#update-retailer-details-form input[name=shopAddressName"+i+"]").removeClass("border-highlight");
                if(shopAddressName == ""){
                        alert("Shop Address Name is required");
                        $("form#update-retailer-details-form input[name=shopAddressName"+i+"]").addClass("border-highlight");
                        error = true;
                        return error;
                }
                var shopAddressLine1 = $("form#update-retailer-details-form input[name=shopAddressLine1"+i+"]").val();
                $("form#update-retailer-details-form input[name=shopAddressLine1"+i+"]").removeClass("border-highlight");
                if(shopAddressLine1 == ""){
                        alert("Shop Address Line1 is required");
                        $("form#update-retailer-details-form input[name=shopAddressLine1"+i+"]").addClass("border-highlight");
                        error = true;
                        return error;
                }
                var shopAddressLine2 = $("form#update-retailer-details-form input[name=shopAddressLine2"+i+"]").val();
                $("form#update-retailer-details-form input[name=shopAddressLine2"+i+"]").removeClass("border-highlight");
                if(shopAddressLine2 == ""){
                        alert("Shop Address Line2 is required");
                        $("form#update-retailer-details-form input[name=shopAddressLine2"+i+"]").addClass("border-highlight");
                        error = true;
                        return error;
                }
                var shopAddressCity = $("form#update-retailer-details-form input[name=shopAddressCity"+i+"]").val();
                $("form#update-retailer-details-form input[name=shopAddressCity"+i+"]").removeClass("border-highlight");
                if(shopAddressCity == ""){
                        alert("Shop Address City is required");
                        $("form#update-retailer-details-form input[name=shopAddressCity"+i+"]").addClass("border-highlight");
                        error = true;
                        return error;
                }
                var shopAddressPinCode = $("form#update-retailer-details-form input[name=shopAddressPinCode"+i+"]").val();
                $("form#update-retailer-details-form input[name=shopAddressPinCode"+i+"]").removeClass("border-highlight");
                if(shopAddressPinCode == ""){
                        alert("Shop Address is Pin Code required");
                        $("form#update-retailer-details-form input[name=shopAddressPinCode"+i+"]").addClass("border-highlight");
                        error = true;
                        return error;
                }
                var shopAddressState = $("#shopAddressState"+i+" option:selected").val();
                $("#shopAddressState"+i+" option:selected").removeClass("border-highlight");
                if(shopAddressState == ""){
                        alert("Shop Address State is required");
                        $("#shopAddressState"+i+" option:selected").addClass("border-highlight");
                        error = true;
                        return error;
                }
        }
        
        console.log("validation retailer details error = " + error);
        return error;
}


function retailerDetailsJson(){
        console.log("retailerDetailsJson")
        var retailerDetailsObject = {};
        retailerDetailsObject['userFirstName'] = $("form#update-retailer-details-form input[name=firstName]").val();
        retailerDetailsObject['userLastName'] = $("form#update-retailer-details-form input[name=lastName]").val();
        retailerDetailsObject['userEmailId'] = $("form#update-retailer-details-form input[name=emailId]").val();
        retailerDetailsObject['userMobileNumber'] = $("form#update-retailer-details-form input[name=mobileNumber]").val();
        
        //retailerDetailsObject['emailIdOrMobileNumber'] = $('#retailer-details-search-text').val().trim();
        retailerDetailsObject['emailIdOrMobileNumber'] = $("form#update-retailer-details-form input[name=emailId]").val();
        retailerDetailsObject['name'] = $("form#update-retailer-details-form input[name=retailerName]").val();
        retailerDetailsObject['number'] = $("form#update-retailer-details-form input[name=retailerNumber]").val();
        var districtName = $("#form #update-retailer-details-form input[name=districtName] selected")
        retailerDetailsObject['fofo'] = $("form#update-retailer-details-form input[name=fofoPartner]").val();
        retailerDetailsObject['gstNumber'] = $("form#update-retailer-details-form input[name=gstNumber]").val();
        retailerDetailsObject['active'] = $("form#update-retailer-details-form input[name=active]").val();
        var fileSelector = $('#retailerDocument')[0];
        if(fileSelector != undefined && fileSelector.files[0] != undefined){
                var documentId = uploadDocument(fileSelector.files[0]);
                retailerDetailsObject['documentId'] = documentId;
        }else{
                retailerDetailsObject['documentId'] = 0;
        }
        
        //retailerDetailsObject['file'] = $('#retailerDocument')[0].files[0];
        var retailerAddressObject = {};
        retailerAddressObject['name'] = $("form#update-retailer-details-form input[name=retailerAddressName]").val();
        retailerAddressObject['line1'] = $("form#update-retailer-details-form input[name=retailerAddressLine1]").val();
        retailerAddressObject['line2'] = $("form#update-retailer-details-form input[name=retailerAddressLine2]").val();
        retailerAddressObject['city'] = $("form#update-retailer-details-form input[name=retailerAddressCity]").val();
        retailerAddressObject['pinCode'] = $("form#update-retailer-details-form input[name=retailerAddressPinCode]").val();
        retailerAddressObject['state'] = $("#retailerAddressState option:selected").val();
        
        retailerDetailsObject['address'] = retailerAddressObject;
        
        retailerDetailsObject['shops'] = [];
        var shopDetailsSize = $("#shopDetailsSize").attr("size");
        
        for(var i = 0; i < shopDetailsSize; i++){
                var shopObject = {};
                var shopId = $("form#update-retailer-details-form input[name=shopName"+i+"]").attr('shopId');
                shopObject['shopId'] = shopId;
                shopObject['name'] = $("form#update-retailer-details-form input[name=shopName"+i+"]").val();
                
                var fileSelector = $('#retailerShopDocument'+i)[0];
                if(fileSelector != undefined && fileSelector.files[0] != undefined){
                        var documentId = uploadDocument(fileSelector.files[0]);
                        shopObject['documentId'] = documentId;
                }else{
                        shopObject['documentId'] = 0;
                }
                var sameAsRetailerAddress = $("form#update-retailer-details-form input[name=sameAsRetailerAddress"+i+"]").val();
                shopObject['sameAsRetailerAddress'] = (sameAsRetailerAddress == 'true');
                if(shopId == '0' && sameAsRetailerAddress == 'true'){
                        shopObject['address'] = null;
                }else{
                        shopObject['address'] = getShopAddressObject(i);
                }
                retailerDetailsObject['shops'].push(shopObject);
                
        }
        
        return JSON.stringify(retailerDetailsObject);
}

function getShopAddressObject(counter){
        var shopAddressObject = {};
        shopAddressObject['name'] = $("form#update-retailer-details-form input[name=shopAddressName"+counter+"]").val();
        shopAddressObject['line1'] = $("form#update-retailer-details-form input[name=shopAddressLine1"+counter+"]").val();
        shopAddressObject['line2'] = $("form#update-retailer-details-form input[name=shopAddressLine2"+counter+"]").val();
        shopAddressObject['city'] = $("form#update-retailer-details-form input[name=shopAddressCity"+counter+"]").val();
        shopAddressObject['pinCode'] = $("form#update-retailer-details-form input[name=shopAddressPinCode"+counter+"]").val();
        shopAddressObject['state'] = $("#shopAddressState"+counter+" option:selected").val();
        return shopAddressObject;
}

function schemeDetailsJson(){
        console.log("schemeDetailsJson")
        var schemeObject = {};
        schemeObject['name'] = $("form#create-scheme-form input[name=schemeName]").val();
        schemeObject['description'] = $("form#create-scheme-form input[name=description]").val();
        schemeObject['type'] = $("#schemeType option:selected").val();
        schemeObject['amountType'] = $("#amountType option:selected").val();
        schemeObject['amount'] = $('#schemeAmount').val();
        //var startEndDateTime = $("form#create-scheme-form input[name=startEndDateTime]").val().split("-");
        var startDateTimeString = $("form#create-scheme-form input[name=startDateTime]").val();
        console.log("startDateTimeString : "+startDateTimeString);
        var endDateTimeString = $("form#create-scheme-form input[name=endDateTime]").val();
        console.log("endDateTimeString : "+endDateTimeString);
        
        schemeObject['startDateTimeString'] = startDateTimeString;
        schemeObject['endDateTimeString'] = endDateTimeString;
        schemeObject['itemIds'] = [];
        var itemIds = $("#itemsDescription").val();
        //var itemIds = itemIdsString.substring(1, itemIdsString.length - 1).split(",");
        for(var i = 0; i < itemIds.length; i++){
                schemeObject['itemIds'].push(parseInt(itemIds[i]));
        }
        schemeObject['retailerAll'] = $("form#create-scheme-form input[name=retailerAll]").val();
        if($("#retailerAll").val() == 'true'){
                schemeObject['retailerIds'] = [];
        }else{
                schemeObject['retailerIds'] = []
                var retailerIds = $("#retailerIds").val().split(",");
                for(var retailerId of retailerIds){
                        schemeObject['retailerIds'].push(parseInt(retailerId));
                }
        }
        return JSON.stringify(schemeObject);
}

function getSerialNumbersFromOrder($el){
        var $serialNumberElement = $el.find('.serialNumber');
        if($serialNumberElement.val() == ''){
                return null;
        }
        var insuranceAmount = parseFloat($el.find('.insuranceAmount').val());
        if(insuranceAmount > 0){
                insurance = true;
                globalInsurace = true;
        }else{
                insurance = false;
        }
        return {'serialNumber':$serialNumberElement.val(),'insurance':insurance,'amount':insuranceAmount}
}

function orderDetailsPayload(){
                var orderObj = {};
                var priceQtyArray = [];
                var customerObj = {};
                var paymentOption = [];
                var globalInsurance = false;
                
                $("form#cd input.serialNumber").each(function(){
                        var itemId = parseInt($(this).attr("itemId"));
                        if (orderObj.hasOwnProperty('fofoOrderItems')){
                                var itemDetails = orderObj['fofoOrderItems'];
                                if (itemDetails.hasOwnProperty(itemId)){
                                        var serialNumbers = itemDetails[itemId];
                                        serialNumbers.push($(this).val());
                                        itemDetails[itemId] = serialNumbers;
                                }else{
                                        var serialNumbers = [];
                                        serialNumbers.push($(this).val());
                                        itemDetails[itemId] = serialNumbers;
                                }
                        }else{
                                var serialNumbers = [];
                                serialNumbers.push($(this).val());
                                var tmp ={};
                                tmp[itemId]  = serialNumbers;
                                orderObj['fofoOrderItems'] = tmp;
                        }
                });
                console.log( JSON.stringify(orderObj));
                $("#order-details").find("tr:not(:first-child)").each(function(index, el){
                        //console.log(el);
                        //console.log(index);
                        var $el = $(el);
                        var $unitPriceElement = $el.find('.unitPrice');
                        var $discountAmountElement = $el.find('.discountAmount');
                        
                        var itemId = parseInt($unitPriceElement.attr("itemId"));
                        var unitPrice = parseFloat($unitPriceElement.val());
                        var qty = parseInt($unitPriceElement.attr("quantity"));
                        var discountAmount = parseFloat($discountAmountElement.val());
                        var mop = $discountAmountElement.attr("mop");
                        var tmpObj = {'itemId':itemId,'sellingPrice':unitPrice,'quantity':qty};
                        tmpObj.discountAmount = discountAmount;
                        /*tmpObj['serialNumberDetails'] = [];
                        var found = false;
                        for(var i = 0; i < priceQtyArray.length; i++){                  
                                if (priceQtyArray[i]["itemId"] == itemId){
                                        found = true;
                                        break;
                                }
                        }
                        if(!found){
                                priceQtyArray.push(tmpObj);
                        }else{
                                for(var i = 0; i < priceQtyArray.length; i++){                  
                                        if (priceQtyArray[i]["itemId"] == itemId){
                                                priceQtyArray[i]["quantity"] = priceQtyArray[i]["quantity"] + 1;
                                                break;
                                        }
                                }
                        }
                        var serialNumberDetails = getSerialNumbersFromOrder($el);
                        if(serialNumberDetails != null){
                                for(var i = 0; i < priceQtyArray.length; i++){                  
                                        if (priceQtyArray[i]["itemId"] == itemId){
                                                priceQtyArray[i]["serialNumberDetails"].push(serialNumberDetails);
                                                break;
                                        }
                                }
                        }
                });*/
                        
                        if (orderObj['fofoOrderItems'][itemId] === undefined){
                                tmpObj['serialNumberDetails'] =[];
                        }
                        else{
                                //tmpObj['serialNumbers'] = orderObj['fofoLineItems'][itemId];
                                tmpObj['serialNumberDetails'] = [];
                        }
                        var found = false;
                        for(var i = 0; i < priceQtyArray.length; i++){                  
                                if (priceQtyArray[i]["itemId"] == itemId){
                                        priceQtyArray[i]["quantity"] = priceQtyArray[i]["quantity"] + 1;
                                        found = true;
                                        break;
                                }
                        }
                        if(!found){
                                priceQtyArray.push(tmpObj);
                        }
                });
                
                
                $("#order-details").find("tr:not(:first-child)").each(function(index,el){
                        //console.log(el);
                        //console.log(index);
                        var $serialNumberElement = $(el).find('.serialNumber');
                        var itemId = parseInt($serialNumberElement.attr("itemId"));
                        var insuranceAmount = parseFloat($(el).find('.insuranceAmount').val());
                        //if (priceQtyArray['fofoLineItems'][itemId] !=undefined){
                                
                        //}
                        //console.log($serialNumberElement.val());
                        //console.log(itemId);
                        for(var i = 0; i < priceQtyArray.length; i++){
                                console.log(priceQtyArray[i]["itemId"]);
                                if (priceQtyArray[i]["itemId"] == itemId){
                                        if(insuranceAmount > 0){
                                                insurance = true;
                                                globalInsurance = true;
                                        }else{
                                                insurance = false;
                                        }
                                        var serialNumberDetails = {'serialNumber':$serialNumberElement.val(),'insurance':insurance,'amount':insuranceAmount}
                                        priceQtyArray[i]['serialNumberDetails'].push(serialNumberDetails);
                                }
            }
                });
                
                console.log("priceQtyArray : "+JSON.stringify(priceQtyArray));
                customerObj['firstName'] = $("form#cd input[name=firstName]").val();
                customerObj['lastName'] = $("form#cd input[name=lastName]").val();
                customerObj['mobileNumber'] = $("form#cd input[name=phone]").val(); 
                customerObj['emailId'] = $("form#cd input[name=email]").val();
                customerObj['dateOfBirth'] = $("form#cd input[name=dateOfBirth]").val();
                var customerAddress = {};
                customerAddress['name'] = $("form#cd input[name=firstName]").val() + " " + $("form#cd input[name=lastName]").val();
                customerAddress['line1'] = $("form#cd input[name=line1]").val();
                customerAddress['line2'] = $("form#cd input[name=line2]").val();
                customerAddress['landmark'] = $("form#cd input[name=landmark]").val();
                customerAddress['city'] = $("form#cd input[name=city]").val();
                customerAddress['state'] = $('select[name=state] option:selected').val();
                customerAddress['pinCode'] = $("form#cd input[name=pinCode]").val();
                customerAddress['phoneNumber'] = $("form#cd input[name=alternatePhone]").val();
                customerAddress['country'] = "India";
                customerObj['customerAddressId'] = parseInt($("form#cd input[name=phone]").attr("addressId"));
                customerObj['address'] = customerAddress; 
                console.log( JSON.stringify(customerObj));
                $("#payment-details input").each(function(){
                console.log($(this).attr('name'));
                if ($(this).attr('name') =="" ){
                        return;
                }
                var paymentObj = {};
                paymentObj['type'] = $(this).attr('name');
                if ($(this).val() == ""){
                        paymentObj['amount'] = 0.0;
                }
                else{
                        paymentObj['amount'] = parseFloat($(this).val());
                }
                paymentOption.push(paymentObj);
                });
                console.log( JSON.stringify(paymentOption));
                
                var retObj = {};
                var dateOfBirth = $("form#cd input[name=dateOfBirth]").val();
                if(globalInsurance){
                        retObj['customerDateOfBirth'] = (dateOfBirth);
                }
                retObj['fofoOrderItems'] = (priceQtyArray);
                retObj['customer'] = (customerObj);
                retObj['paymentOptions'] =  (paymentOption);
                
                console.log(retObj);
                return  JSON.stringify(retObj);
}