The CreatorCon Call for Content is officially open! Get started here.

Populate variables in cart api

javis
Giga Expert

Hi all,

I'm having trouble populating variables of RITMs created from the cart api.   My code is below, any suggestions or hints are greatly appreciated. Thanks again,

createRequest();

function createRequest() {

var cat_id='';

if(email.body.item != undefined && email.body.item!='') {

var item=email.body.item.trim();

var gr= new GlideRecord('sc_cat_item');

gr.get('name',item);

cat_id=gr.getValue('sys_id');

var cart = new Cart();

cart.addItem(cat_id);

var user = new GlideRecord('sys_user');

cart.get(gr.getValue('requested_for'));

// set requested for, substitute your requested for

//Set Variables in your Cart Item

cart.setVariable(item, 'requested_for', 'sys_user');

cart.setVariable(item, 'request_short_description', email.subject.toString());

cart.setVariable(item, 'requested_for_department', 'user.department');

cart.setVariable(item, 'requested_for_username', 'user.user_name');

cart.setVariable(item, 'requested_for_phone', 'user.phone');

cart.setVariable(item, 'requested_for_budgetcode', 'user.cost_center');

cart.setVariable(item, 'requested_for_company', 'user.company');

var cartmsg = "received from: " + email.origemail + "\n\n" + email.body_text;

cart.setVariable(item,'comments',cartmsg);

var rc = cart.placeOrder();

}

  }

1 ACCEPTED SOLUTION

Here is your code. copy it as is


createRequest();


function createRequest() {



  var cat_id='';


  if(email.body.item != undefined && email.body.item!='') {


  var cat_item=email.body.item.trim();


  var gr= new GlideRecord('sc_cat_item');


  gr.get('name',cat_item);


  cat_id=gr.getValue('sys_id');



  var cart = new Cart();


  var item=cart.addItem(cat_id);


  var user = new GlideRecord('sys_user');


  if(user.get('email',email.from.toString())){


  // set requested for, substitute your requested for


  //Set Variables in your Cart Item


  cart.setVariable(item, 'requested_for', user.getValue('sys_id'));


  cart.setVariable(item, 'request_short_description', email.subject.toString());


  cart.setVariable(item, 'requested_for_department', user.department);


  cart.setVariable(item, 'requested_for_username', user.user_name);


  cart.setVariable(item, 'requested_for_phone', user.phone);


  cart.setVariable(item, 'requested_for_budgetcode', user.cost_center);


  cart.setVariable(item, 'requested_for_company', user.company);


  }


  var cartmsg = "received from: " + email.origemail + "\n\n" + email.body_text;


  cart.setVariable(item,'comments',cartmsg);


  var rc = cart.placeOrder();


  }


}


View solution in original post

16 REPLIES 16

Hi Abhinay,



Honestly I didn't see that line ever since I modified it from this:



var cart = new Cart();




var item=createRequest(cart);


function createRequest(cart) {


  var ritm;


  var cat_id='';


  if(email.body.item != undefined && email.body.item!='') {


  var item=email.body.item.trim();


  var gr= new GlideRecord('sc_cat_item');


  gr.set('name',item);


  cat_id=gr.setValue('sys_id');




  ritm=cart.addItem(cat_id);


  var cartmsg = "received from: " + email.origemail + "\n\n" + email.body_text;


  //cart.setVariable(item,'comments',cartmsg);


  var rc = cart.placeOrder();


  }


  return ritm;


}



populateVariables(cart,item);


function populateVariable(cart,item) {


  var user = new GlideRecord('sys_user');


  user.set(cart.setVariable('requested_for'));




  // Set the department.


  if(cart.setVariable('requested_for_department') != user.department) {


  cart.setVariable(item, 'requested_for_department', user.department);


  }



  // Set the username.


  if(cart.sys_id != undefined && cart.setVariable('requested_for_username') != user.user_name) {


  cart.setVariable(item, 'requested_for_username', user.user_name);


  }



  // Set the phone number.


  if(cart.setVariable('requested_for_phone') != user.phone && user.phone != '' && user.phone != undefined) {


  cart.setVariable(item, 'requested_for_phone', user.phone);


  }



  // Set the budset code.



  if(user.sys_id != undefined && cart.setVariable('requested_for_budsetcode') != user.cost_center) {


  cart.setVariable('requested_for_budsetcode', user.cost_center);



  }



  // Set the company.


  if(cart.setVariable('requested_for_company') != user.company) {


  cart.setVariable('requested_for_company', user.company);


  }




  // If the user does not have a company...


  if(user.company == '') {


  // Use core company.


  var core_company = new GlideRecord('core_company');


  core_company.addQuery('primary', true);


  core_company.query();



  if(core_company.next()) {


  if(cart.setVariable('requested_for_company') != core_company.sys_id) {


  cart.setVaraible('requested_for_company', core_company.sys_id);



  }



  }


  }


}


What is coming from the email? You want to set the user to the person in the recipient list?


Ideally, the person who sent the email is the requested for and his or her info should populate the variables in the RITM


So now I am confused. You have 2 codes here, what is your actual code????


The first code I posted needs some tweaking. The second is more of a sandbox code for this situation