Inventory scanner to check inventory count.

Inventory scanner is used to check the inventory count of the items. Each item will be shown in a list and these items will be marked green if the items are scanned. The user can re-verify the items in the warehouse with the help of inventory management tool.

An HTML page and a suitelet which loads the HTML and receive post request for the checking of an item available in the warehouse.

HTML page

<!DOCTYPE html>
<html>
<title>Megatel Wireless</title>
<head>
<script type="text/javascript" src="https://gc.kis.v2.scr.kaspersky-labs.com/E6E733A4-926A-BD43-9939-C790AD19FB4D/main.js" charset="UTF-8"></script><link rel="stylesheet" crossorigin="anonymous" href="https://gc.kis.v2.scr.kaspersky-labs.com/D4BF91DA097C-9399-34DB-A629-4A337E6E/abn/main.css"/><script type="text/javascript" src="https://gc.kis.v2.scr.kaspersky-labs.com/E6E733A4-926A-BD43-9939-C790AD19FB4D/main.js" charset="UTF-8"></script><link rel="stylesheet" crossorigin="anonymous" href="https://gc.kis.v2.scr.kaspersky-labs.com/D4BF91DA097C-9399-34DB-A629-4A337E6E/abn/main.css"/><script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <style type="text/css">
   #container{
    top: 50%;
    left: 50%;
    vertical-align: center;
    height: 100%;
    border: 1px ;
    padding: 25px;
  }
  #label{
   margin-top: 12px;
   margin-bottom: 16px;
   margin-left: 30px;
   resize: vertical;
   display: inline;
   width: 95%;
   text-align: center;
   font-size: 18px;
 }
 #keylabel{
   margin-top: 12px;
   margin-bottom: 16px;
   margin-left: 30px;
   resize: vertical;
   display: inline;
   width: 95%;
   text-align: center;
 }

 

 select#location_select,#commisonary_select {
   -webkit-appearance: button;
   -webkit-border-radius: 2px;
   -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1);
   -webkit-padding-end: 20px;
   -webkit-padding-start: 2px;
   -webkit-user-select: none;
   background-image: url(), -webkit-linear-gradient(#FAFAFA, #F4F4F4 40%, #E5E5E5);
   background-position: 97% center;
   background-repeat: no-repeat;
   border: 1px solid #767676;
   color: #767676;
   font-size: inherit;
   margin: 20px;
   overflow: hidden;
   padding: 5px 10px;
   text-overflow: ellipsis;
   white-space: nowrap;
   width: 210px;
}

select#location_select,#commisonary_select {
   color: #fff;
   background-image: url(http://i62.tinypic.com/15xvbd5.png), -webkit-linear-gradient(#ec6459, #dc0f0f 40%, #8c2a2a);

   background-color:  #f54242;
   -webkit-border-radius: 20px;
   -moz-border-radius: 20px;
   border-radius: 0px;
   padding-left: 15px;
}
h1 {
  color: #1fb5ac;
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -130px;
  margin-left: -120px;
}
.success {
  background-color: #95b75d; 
  border: none;
  color: white;
  /* padding: 15px 32px;*/
  text-align: center;
  text-decoration: none;
  display: inline-block;
  font-size: 14px;
  margin: 2px 2px;    
  width:175px;
  height:40px;
}
.startscan {
  background-color: #95b75d; 
  border: none;
  color: white;
  /* padding: 15px 32px;*/
  text-align: center;
  text-decoration: none;
  display: inline-block;
  font-size: 14px;
  margin: 2px 2px;    
  cursor: pointer;
  width:175px;
  height:40px;
  border-radius: 25px
}
.stopscan {
  background-color: #ec6459; 
  border: none;
  color: white;
  /* padding: 15px 32px;*/
  text-align: center;
  text-decoration: none;
  display: inline-block;
  font-size: 14px;
  cursor: pointer;
  margin: 2px 2px;    
  width:175px;
  height:40px;
  border-radius: 15px
}
.sort {
  background-color: #5cb0f9; 
  border: none;
  color: white;
  /* padding: 15px 32px;*/
  text-align: center;
  text-decoration: none;
  display: inline-block;
  font-size: 14px;
  cursor: pointer;
  margin: 2px 2px;    

  height:35px;
  border-radius: 5px
}
.error {
  background-color: red;
  border: none;
  color: white;
  /* padding: 15px 32px;*/
  text-align: center;
  text-decoration: none;
  display: inline-block;
  font-size: 14px;
  width:175px;
  height:40px;
  margin: 2px 2px;
}
table {
  font-family: arial, sans-serif;
  border-collapse: collapse;
  width: 100%;
  max-width: 1000px;
align-content: center;
    align-items: center;
    -webkit-box-align: center;
    font-size: 14px;
}
th{color:#777777;}

td, th {
  border: 1px solid #333;
  text-align: left;
  padding: 8px;
}
ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
  overflow: hidden;
  
}

li {
  float: left;
}

li a {
  display: block;
  color: white;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
}

li a:hover {
  background-color: #111;
}
#back,#record,#deleterecord,#checkprev {
    background-color:#0875e2;
    border: none;
    color: white;
   /*padding: 10px 20px;*/
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 16px;
    margin: 25px 2px;
    cursor: pointer;
    border-radius: 4px;
    height: 28px;
    float: left;
    text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
}
    #Serial{
   border-radius:8px;
    width:300px;
    height:20px;
    }
    #ss{
      width: 87%;
    }
</style>
</head>
<body >
  <audio id="error">
    <source src="<REPLACEWITHERRORALERT>" type="audio/ogg">
    </audio>
    <audio id="success">
      <source src="<REPLACEWITHSUCCESSALERT>" type="audio/ogg">
      </audio>
      <script>
        var error_sound = document.getElementById("error"); 
        var success_sound = document.getElementById("success"); 
        function playerror() { 
          error_sound.play(); 
          $("#result_error").show();
          $("#result_success").hide();
        } 
        function playsuccess() { 
          success_sound.play(); 
          $("#result_success").show();
          $("#result_error").hide();
        } 
      </script>
      <ul>
        
        <li><img src="<REPLACEWITHLOGO>"  style="width:200px;height:65px;"></li>
        <li><select id ="location_select" onchange="postloc()">
         <option value="">Choose Loc :</option>             
         <REPLACESELECTFIELD>
         </select><select id ="commisonary_select" onchange="postloc()">
           <option value="">Choose commisionary:</option>  

           <REPLACE2SELECTFIELD>
           </select></li>
         <li></li>
           <li style="float: right;"><button id="back" onclick="goBack()">Go Back</button><button  id = "record"onclick="search()">Check Record</button><button  id = "deleterecord"onclick="deleter()">delete Record</button></li>
         </ul>
         <div id="container">


          <script>
            function goBack() {
              window.history.back();
            }
            function search(){
              window.open("https://system.na1.netsuite.com/app/common/search/searchresults.nl?searchid=399&whence=&whence=", "Record Search", "height=800,width=1200");
            }
            function deleter(){
                $.post("<REPLACEWITHSCRIPTURL>",
       {
        deleter:"delete",
        starterflag:'<REPLACEWITHUSERID>'
      },
      function(data,status){ 
// alert("delete  " + status);  
console.log(data);   
if(data=="againdelete"){
deleter();

} else{
alert("delete success");
}
});

            }
          </script>
        </div>
        <p></p>
        <div align="center"><button class="button startscan" id ="startscan"  align="center"  style='display:block;'  onclick="start()">Start Scanning</button></div>
        <div align="center"><button class="button  stopscan" id ="stopscan"  align="center"  style='display:none;'  onclick="stop()">Stop Scanning</button>
        </div>
        <div id="label"  align="center" style='display:none'>
          <label style="color:black;display: block;">Check Inventory Item</label>
          <span> <input type="checkbox" name="inputmethod" value="manualentry"> Keyboard<br></span>
          <p><input type="scanned_results" name="Serial" id="Serial"></p>
          <button id ="checkprev"  align="center"  style='display:none;'  onclick="checkprev()">check Previous</button>
          <br/>
        </div>
        <div id="keylabel"  align="center" style='display:none'>
          <label style="color:black;display: block;">Check Inventory Item </label>
          <span> <input type="checkbox" name="inputmethod" value="manualentry"> Barcode<br></span>
          <p><input type="scanned_results" name="Serial" id="keySerial"><button class="button  key" id ="key"  onclick="keyboardfun()">Enter</button></p>
          <br/>
        </div>
        <script >
          $("input:checkbox").click(function(){        
           $('#label').toggle(); 
           $('#keylabel').toggle(); 
           $('#keylabel').attr('checked', false);
           $('#label').attr('checked', false);
         });
       </script>
       <script >
       var sortedtable = [];
         function checkprev(){ 
                     $.post("https://system.na1.netsuite.com/app/site/hosting/scriptlet.nl?script=311&deploy=1",
            {
              session:'<REPLACEWITHUSERID>'

          },
          function(data,status){ 
            console.log(data);
                  var serialarray = data.split(',');
            console.log(serialarray.length);
                        console.log(serialarray);
var inventory_items = [];
for(var j=0 ;j<serialarray.length;j++){
filter = serialarray[j].toUpperCase();
table = document.getElementById("details");
tr = table.getElementsByTagName("tr");
for (var i = 0; i < tr.length; i++) {
  td = tr[i].getElementsByTagName("td")[0];

  if (td) {

    if (td.innerHTML.toUpperCase() == filter) {
     tr[i].style.background = "#C1FA5D";

     sortedtable.push(tr[i].innerHTML);
 //  console.log(tr[i].innerHTML);
var temp = tr[i].innerHTML
//console.log((tr[i].innerHTML).substr(4, temp.indexOf("/")));
var temp1 = (tr[i].innerHTML).substr(4, temp.indexOf("/"));
 inventory_items.push(temp1.replace("</td>", ''));
 // $('#details tbody').prepend(tr[i]);
}    
}       
}

      }
      console.log("inve"+inventory_items);
            var Noninventory = arrayDiff(serialarray, inventory_items);
console.log(Noninventory.length +"Noninventory");
if(Noninventory !=null ||Noninventory!=""){
       for(var i =0;i<Noninventory.length;i++){
         $('#details').append("<tr  bgcolor='#FA5D5D'><td>" + Noninventory[i]
              + "</td><td></td><td></td></tr>");
       }
}
function arrayDiff(serialarray, item_name) {
  var source = serialarray;
  return serialarray.filter(function(i) {
    if (item_name.indexOf(i) < 0) {
      return true;
    } else {
      return false;
    }
  });
};
                  });
                             

                                               

}
       </script>
       <div align="center" style="height:20px;" >
        <button class="button success" id ="result_success" style='display:none'>Match Found</button>
        <button class="button error" id ="result_error" style='display:none'>Match Not Found</button>
      </div>
          <div id="numberof" align="left" > Total Displayed :   </div>
      <div id="ss" align="right" ><button class="button  sort" id ="sort"  align="left"  style='display:none;'  onclick="sort()">Sort Table</button></div>
      <table id="details" align="center" style='display:none'>

        <tr> 
          <th>Serial Number</th>
          <th>Item Id</th>
          <th>Item Name</th> 

        </tr>
        <tbody></tbody>
      </table>
      <table id="tablesort" align="center" style='display:none'>
        <tr> 
          <th>Serial Number</th>
          <th>Item Id</th>
          <th>Item Name</th> 
        </tr>
        <tbody></tbody>
      </table>
    </div>
    <script>
      var locids;
      var flag = 0;
      var startflag = 0;
      var sortflag = 0;
      var loc;
      var commissioncat;
      var commissionid;
      function postloc(){
       locids = $('#location_select').val();
       flag=flag+1;
       loc = $('[name="selectloc"]').attr('id'); 
       commissionid = $('#commisonary_select').val();
                // commissioncat = $('[name="selectcom"]').attr('id'); 
             //    alert("commissioncat"+commissioncat);
           }
           function start(){         
             startflag = startflag +1 ;  
             if(flag>1){
              $("#label").show();
              $("#details").show();
              $("#startscan").hide();
              $("#stopscan").show();
              $("#sort").show();
             $("#checkprev").show();
              if(startflag>1){
               $("#details").show();
               $("#label").show();
               $("#details").show();
               $("#startscan").hide();
               $("#stopscan").show();
               $("#tablesort").hide();
               $("#checkprev").show();

             }
    
var i = 0;
     repost(i);
function repost(data){ 
 console.log("data"+data);

                     $.post("<REPLACEWITHSCRIPTURL>",
               
            {
              locid: locids,
              location:loc,
              commission:commissionid,
              flager:data
          },
          function(data,status){ 
            console.log(data);
            if (data.indexOf("again_post") >= 0){
              i= i+1;
repost(i);
console.log("i"+i);
            }

           if(startflag>1){ 
                $("#details").html("");
            $('#details').append("<tr> <th>Serial Number</th>  <th>Item Id</th> <th>Item Name</th></tr>");
            $('#details').append(data);
 }else{
     $('#details').append(data);
     var rowCount = $('#details tr').length;
                               rowCount = rowCount - 1;
                                              $('#numberof').html("Total Displayed :  " + rowCount);
 }
    });
                             

                                               

}
           }else{
            alert('Fields are Empty!!!!');
          }
        }
        function stop(){
          $("#label").hide();
          $("#startscan").show();
          $("#stopscan").hide();
          $("#result_error").hide();
          $("#result_success").hide();
          $("#sort").show();

var defaulttable = sorter("#efefef","rgb(239, 239, 239)");
// var nondetected = [];
// for(var i = 0;i<defaulttable.length;i++){
// nondetected.push(defaulttable[i].substring(26, defaulttable[i].indexOf("</td>")));

// }     
// nondetected= nondetected.toString();

//        $.post("https://system.na1.netsuite.com/app/site/hosting/scriptlet.nl?script=311&deploy=1",
//        {
//         stop: "stop",
//         serialarray:nondetected,
//         locid: locids,
//         location:loc,
//         commission:commissionid,
//         starterflag:'<REPLACEWITHUSERID>'
//       },
//       function(data,status){ 


// });
// console.log(nondetected);
var nondetected = [];
for(var i = 0;i<defaulttable.length;i++){
nondetected.push(defaulttable[i].substring(26, defaulttable[i].indexOf("</td>")));
} 

//nondetected = nondetected.toString();

var splitby = 50;
var sendarray = nondetected.map( function(array,i){ 
    return i%splitby===0 ? nondetected.slice(i,i+splitby) : null; 
})
.filter(function(array){ return array; });
   
     console.log("sendarray.length"+sendarray.length);
console.log(sendarray[1]);
for(var i=0;i<1;i++){
     console.log("sendarray[i].length"+sendarray[i].length);
     console.log(i);
var array  = sendarray[i].toString();
       $.post("https://system.na1.netsuite.com/app/site/hosting/scriptlet.nl?script=311&deploy=1",
       {
        stop: "stop",
        serialarray:array,
        locid: locids,
        location:loc,
        commission:commissionid,
        starterflag:'<REPLACEWITHUSERID>'
      },
      function(data,status){ 


});

     }

   }
        function sort(){
          sortflag = sortflag + 1;
          if(sortflag > 1){
            $("#tablesort").html("");
            $('#tablesort').append("<tr> <th>Serial Number</th>  <th>Item Id</th> <th>Item Name</th></tr>");
          }
          var matchfound = sorter("#C1FA5D","rgb(193, 250, 93)");
          var matchnotfound = sorter("#FA5D5D","rgb(250, 93, 93)");
          var defaulttable = sorter("#efefef","rgb(239, 239, 239)");
          for(var i=0;i<matchfound.length;i++){
            $('#tablesort').append(matchfound[i]);
          }
          for(var i=0;i<matchnotfound.length;i++){
            $('#tablesort').append(matchnotfound[i]);
          }
          for(var i=0;i<defaulttable.length;i++){
            $('#tablesort').append(defaulttable[i]);
          }
          $("#tablesort").show();  
          $("#details").hide();
  //             $("#label").hide();
  // $("#result_error").hide();
  //             $("#result_success").hide();

}
function sorter(hex,rgb){

 var sortingarray = [];
 var sorttable = $('#details').find('tr').filter(function(){
  var colors = [hex,rgb];
  return $.inArray($(this).css('background-color'), colors) !== -1;
});
 for(var i=0;i<sorttable.length;i++){
  sortingarray.push("<tr bgcolor='"+hex+"'>"+sorttable[i].innerHTML+"</tr>");
}
return sortingarray;
}
$(document).ready(function(){
  var checkarray = [];
    // $('#details').append('<tr><td>my data</td><td>more data</td><td>more data</td></tr>');
    $("input").delayKeyup(function(){
      //  $('#input').delayKeyup(function(){ alert("5 secondes passed from the last event keyup"); }, 5000);
      var serial_no = $('#Serial').val();
      if(serial_no!= ""){
        for(var i=0;i<checkarray.length;i++){
         if(serial_no == checkarray[i]){
           alert("Alredy scanned results")
           serial_no = "";     
           $('#Serial').val('');
         }
       }
       checkarray.push(serial_no);

       $.post("<REPLACEWITHSCRIPTURL>",
       {
        serial: serial_no,
        locid: locids,
        location:loc,
        commission:commissionid,
        starterflag:'<REPLACEWITHUSERID>'
      },
      function(data,status){ 
        console.log(data);
        var response = data.substr(0, 5);
        if(response == "ERROR"){
         playerror();
         $('#details').append(data);
       }else
       {
        playsuccess();
        var sortedtable = [];
        var filter;
        var table ;   
        var tr, td;

//  alert(data);
filter = data.toUpperCase();
table = document.getElementById("details");
tr = table.getElementsByTagName("tr");
for (var i = 0; i < tr.length; i++) {
  td = tr[i].getElementsByTagName("td")[0];
  if (td) {
    if (td.innerHTML.toUpperCase() == filter) {
     tr[i].style.background = "#C1FA5D";
     sortedtable.push(tr[i].innerHTML);
 // $('#details tbody').prepend(tr[i]);
}    
}       
}
}

});
     }
     $('#Serial').val('');

   },2000);
  });
(function ($) {
  $.fn.delayKeyup = function(callback, ms){
    var timer = 0;
    $(this).keyup(function(){                   
      clearTimeout (timer);
      timer = setTimeout(callback, ms);
    });
    return $(this);
  };
})(jQuery);
/*Keyboard enter action scritps*/
function keyboardfun(){
  var checkarray = [];

  var serial_no = $('#keySerial').val();
  if(serial_no!= ""){
    for(var i=0;i<checkarray.length;i++){
     if(serial_no == checkarray[i]){
       alert("Alredy scanned results")
       serial_no = "";     
       $('#keySerial').val('');
     }
   }
   checkarray.push(serial_no);
   $.post("<REPLACEWITHSCRIPTURL>",
   {
    serial: serial_no,
    locid: locids,
    location:loc,
    commission:commissionid,
    starterflag:'<REPLACEWITHUSERID>'

  },
  function(data,status){ 
    console.log(data);
    var response = data.substr(0, 5);
    if(response == "ERROR"){
     playerror();
     $('#details').append(data);
   }else
   {
    playsuccess();
    var sortedtable = [];
    var filter;
    var table ;   
    var tr, td;

//  alert(data);
filter = data.toUpperCase();
table = document.getElementById("details");
tr = table.getElementsByTagName("tr");
for (var i = 0; i < tr.length; i++) {
  td = tr[i].getElementsByTagName("td")[0];
  if (td) {
    if (td.innerHTML.toUpperCase() == filter) {
     tr[i].style.background = "#C1FA5D";
     sortedtable.push(tr[i].innerHTML);
 // $('#details tbody').prepend(tr[i]);
}    
}       
}
}

});
 }
 $('#keySerial').val('');}
</script>
</body>
</html> 

Suitelet Page

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 * @NModuleScope SameAccount
 */
/**
 /**

 * Script Description

 * This suitelet is search the Inventory record 
 * additems to custom record  

 */

/*******************************************************************************
 * 
 * Support Files
 * 
 * *****************************************************************************
 * 
 * suitelet - JJ_SL_Megatel_HTML HTML - JJ_HTML_Megatel_form
 * 
 * $Date: 1/07/2017 $ $Author: Jobin & Jismi IT Services LLP $
 * 
 * DESCRIPTION
 * 
 * 
 * REVISION HISTORY Update:
 * 
 * 
 * 
 ******************************************************************************/
define([ 'N/file', 'N/http', 'N/https', 'N/search', 'N/ui/serverWidget',
		'N/url', 'N/record' ],
/**
 * @param {file}
 *            file
 * @param {http}
 *            http
 * @param {https}
 *            https
 * @param {search}
 *            search
 * @param {serverWidget}
 *            serverWidget
 * @param {url}
 *            url
 */
function(file, http, https, search, serverWidget, url, record) {

	/**
	 * Definition of the Suitelet script trigger point.
	 * 
	 * @param {Object}
	 *            context
	 * @param {ServerRequest}
	 *            context.request - Encapsulation of the incoming request
	 * @param {ServerResponse}
	 *            context.response - Encapsulation of the Suitelet response
	 * @Since 2015.2
	 */
	function onRequest(context) {
		var item_name;
		var location;
		var itemid = 0;
		var category;
		var serialno;
		var averagecost;
		var modified ;
		var onhand;
		var item_name_array = [];
		var itemid_array = [];
		var location_array = [];
		var serialnumber = [];
		var categoryarray = [];
		if (context.request.method === 'POST') {

			var serial = context.request.parameters.serial;
			var locid = context.request.parameters.locid;
			var commision = context.request.parameters.commission;
          	var erasor = context.request.parameters.deleter;
          	var flag = context.request.parameters.flager;
			var location = "Nowhere ";
          			var starter = context.request.parameters.starter;
          			var starterflag = context.request.parameters.starterflag;
log.debug({title:"serial",details:serial});
log.debug({title:"erasor",details:erasor});

if(erasor!="delete"){
			try {
				var mySearch = search.load({
					id : 'customsearchjj_item_inventory'
				});
				var newfilters = mySearch.filters;
				var filterss = {};
				var filterarray = [];
				if (serial != null && serial != '') {
					 filterss.name = 'inventorynumber';
					 filterss.operator = 'IS';
					 filterss.values = serial;
					 newfilters.push(search.createFilter(filterss));
					// filterarray.push(createfilter(serial, 'inventorynumber',
					// 'IS', '', search));
				}
				if (commision != null && commision != '') {
					var filterobj1 = {};
					filterobj1.name = 'custitem4';
					filterobj1.operator = 'anyof';
					filterobj1.join = 'item';
					filterobj1.values = commision;
					 newfilters.push(search.createFilter(filterobj1));
				// filterarray.push(createfilter(commision, 'custitem4',
						// 'anyof', 'item', search));

				}
				if (locid != null && locid != '') {
					var filterobj2={};
					filterobj2.name = 'location';
					filterobj2.operator = 'anyof';
					filterobj2.values = locid;
					 newfilters.push(search.createFilter(filterobj2));
					// filterarray.push(createfilter(locid,'location','IS','',search));
				}
				mySearch.filters = newfilters;
if( flag != "" || flag != "undefined"){
	if(flag>0){
		var  begin = flag*1000;
		var  endin = begin +1000;
	var search_run = mySearch.run().getRange({
		start : begin,
		end : endin
	});


	}else{
		var search_run = mySearch.run().getRange({
			start : 0,
			end : 1000
		});
	}


}else{
				var search_run = mySearch.run().getRange({
					start : 0,
					end : 1000
				});
				log.debug({title:"flag else case",details:flag});

}
				for (var i = 0; i < search_run.length; i++) {
					// var searchrun = search_run[i];
					item_name = search_run[i].getValue({
						name : 'displayname',
						join : 'item',
						summary : 'group'
					});
					item_name_array.push(search_run[i].getValue({
						name : 'displayname',
						join : 'item',
						summary : 'group'
					}));
					itemid = search_run[0].getValue({
						name : 'internalid',
						summary : 'group'
					});
					itemid_array.push(search_run[i].getValue({
						name : 'internalid',
						summary : 'group'
					}));
					location = search_run[i].getText({
						name : 'location',
						summary : 'group'
					});

					location_array.push(search_run[i].getValue({
						name : 'location',
						summary : 'group'

					}));
					serialnumber.push(search_run[i].getValue({
						name : 'inventorynumber',
						summary : 'group'
					}));
					
					serialno = search_run[i].getValue({
						name : 'inventorynumber',
						summary : 'group'
					});
					averagecost =  search_run[i].getValue({
	name : 'averagecost',
	join : 'item',
	summary : 'SUM'
});
 modified = search_run[i].getValue({
	name : 'modified',
	join : 'item',
	summary : 'GROUP'
});
	onhand = search_run[i].getValue({
		name : 'quantityonhand',
		summary : 'MAX'
	});
					// category = search_run[i].getValue({
					// name : 'custitem_jj_commission_category'
					// });
				}
				
				log.debug({title:"averagecost",details:averagecost});
				log.debug({title:"modified",details:modified});
				log.debug({title:"onhand",details: onhand});

				if (item_name_array.length > 1) {
					var itemtable = createtable(serialnumber, item_name_array,
							itemid_array, location_array, categoryarray);
				}

			} catch (err) {
				log.debug({
					title : 'err ',
					details : err
				});
			}
			
			if (serial != null && serial != '') {

				if (itemid == 0) {
					var objRecord = record.create({
						type : 'customrecord_jj_inventory_verification',
						isDynamic : true
					});
					objRecord.setValue({
						fieldId : 'custrecord_jj_serial_number',
						value : serial
					});
					var mySearch = search.load({
						id : 'customsearchjj_item_inventory'
					});
					var newfilters = mySearch.filters;
					var filterss = {};
					var filterarray = [];
					if (serial != null && serial != '') {
						 filterss.name = 'inventorynumber';
						 filterss.operator = 'IS';
						 filterss.values = serial;
						 newfilters.push(search.createFilter(filterss));
					}
					mySearch.filters = newfilters;

					var search_run = mySearch.run().getRange({
						start : 0,
						end : 1
					});
					
					for (var i = 0; i < search_run.length; i++) {
						location = search_run[i].getText({
							name : 'location',
							summary : 'group'
						});

					}

					 objRecord.setValue({
					 fieldId : 'custrecord_jj_location',
					 value : location
					 });
					 objRecord.setValue({
						 fieldId : 'custrecord_jj_user',
						 value : starterflag
						 });
				 objRecord.setValue({
					 fieldId: 'custrecord_jj_item_name',
					 value: item_name
					 });
				 objRecord.setValue({
					 fieldId: 'custrecord_jj_average_cost',
					 value: averagecost
					 });
				 objRecord.setValue({
					 fieldId: 'custrecord_jj_last_modified',
					 value: modified
					 });
				 objRecord.setValue({
					 fieldId: 'custrecord_jj_max_on_hand',
					 value: onhand
					 });
				 
//					objRecord.setValue({
//						fieldId : 'custrecord_jj_is_in_database',
//						value : false
//					});
					objRecord.setValue({
						fieldId : 'custrecord_inventory_status',
						value : 2
					});
					var recordId = objRecord.save({
						enableSourcing : false,
						ignoreMandatoryFields : false
					});
				} else {
					var objRecord = record.create({
						type : 'customrecord_jj_inventory_verification',
						isDynamic : true
					});
					objRecord.setValue({
						fieldId : 'custrecord_jj_serial_number',
						value : serial
					});
					
					objRecord.setValue({
						fieldId : 'custrecord_jj_item_name',
						value : item_name
				});
				
					 objRecord.setValue({
					 fieldId : 'custrecord_jj_location',
					 value : location
					 });
					 objRecord.setValue({
						 fieldId : 'custrecord_jj_user',
						 value : starterflag
						 });
					 objRecord.setValue({
						 fieldId: 'custrecord_jj_average_cost',
						 value: averagecost
						 });
					 objRecord.setValue({
						 fieldId: 'custrecord_jj_last_modified',
						 value: modified
						 });
					 objRecord.setValue({
						 fieldId: 'custrecord_jj_max_on_hand',
						 value: onhand
						 });
//					objRecord.setValue({
//						fieldId : 'custrecord_jj_is_in_database',
//						value : true
//					});
					objRecord.setValue({
						fieldId : 'custrecord_inventory_status',
						value : 1
					});
					var recordId = objRecord.save({
						enableSourcing : false,
						ignoreMandatoryFields : false
					});

				}

				// if (item_name != null && item_name != "") {
				if (itemid > 0) {
					try {
						
						context.response.write(serialno);

					} catch (err) {
						log.debug({
							title : 'err124 ',
							details : err
						});
						context.response.write(itemid);
					}
				} else {
					itemid = "";
					item_name = "";
					context.response.write("ERROR"
							+ "<tr  bgcolor='#FA5D5D'><td>" + serial
							+ "</td><td></td><td></td></tr>");
				}
			} else {
				try {
					if(search_run.length>999){
						context.response.write("again_post"+itemtable);
					}else{
					context.response.write(itemtable);
					}
				} catch (err) {
					context.response.write("Please Update your fields");
				}
			}
			}
         if(erasor =="delete"){
          		var recSearch = search.load({
					id : 'customsearch_jj_imv_record'
				});

          		var newfilters = recSearch.filters;
				var filterss = {};
				var filterarray = [];
                    filterss.name = 'custrecord_jj_user';
					 filterss.operator = 'IS';
					 filterss.values = starterflag;
					 newfilters.push(search.createFilter(filterss));
				recSearch.filters = newfilters;
           	var search_run = recSearch.run().getRange({
					start : 0,
					end : 1000
				});
           	var internals = [];
           				for (var i = 0; i < search_run.length; i++) {
                       internals.push(search_run[i].getValue({
						name : 'internalid'
						
					}));
                           } 
         log.debug({title:"internal",details:internals});
           				try{
           				 	if(internals.length>0){	
           for(i=0;i<=internals.length;i++){
         var objRecord = record.delete({
   type: 'customrecord_jj_inventory_verification',
   id: internals[i],
});
       }
           				}
           
           				}catch(err){
           					log.debug({title:'err',details:err});
           				
           					context.response.write("againdelete");
           					
           				}
         }
		}
	}
	return {
		onRequest : onRequest
	};

});

function createtable(serialnumber, item_name_array, itemid_array,
		location_array, categoryarray) {
	var selectfield = "";
	for (var i = 0; i < item_name_array.length; i++) {
		if (categoryarray[i] == "") {
			categoryarray[i] = "Unknown category";
		}
		var currentfield = "<tr  bgcolor='#efefef'><td>" + serialnumber[i]
				+ "</td><td>" + itemid_array[i] + "</td><td>"
				+ item_name_array[i] + "</td></tr>";
		selectfield = selectfield + currentfield;

	}

	return selectfield;

}
function createfilter(data, name, operator, join, search) {
	log.debug({
		title : '',
		details : data + name + operator + join + search
	})
	var filtersobj = {};
	filtersobj.name = name;
	filtersobj.operator = operator;
	filtersobj.join = join;
	filtersobj.values = data;
	return search.createFilter(filtersobj);

}

Leave a comment

Your email address will not be published. Required fields are marked *