- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-05-2018 01:17 PM
To fulfill a need I have created a Consume UI Action that runs the following code:
var consumeQTY = '1';
//Lenovo Laptop
var lenovo_laptop1 = current.u_lenovo_laptop.getDisplayValue();
//gs.log("CDL: commercial::"+current.cat_item.getDisplayValue() );
var lenovo_laptop = current.u_lenovo_laptop;
var laptop = new GlideRecord('alm_hardware');
laptop.get(lenovo_laptop);
laptop.install_status = '1';
laptop.assigned_to = current.request.requested_for;
laptop.update();
//printer
var printer = current.u_printer;
var printer1 = new GlideRecord('cmdb_ci_printer');
printer1.get(printer);
printer1.assigned_to = current.request.requested_for;
printer1.update();
//Apple iphone
var iphone = current.u_apple_iphone;
var iphone1 = new GlideRecord('alm_hardware');
iphone1.get(iphone);
iphone1.assigned_to = current.request.requested_for;
iphone1.install_status = '1';
iphone1.update();
//Apple ipad
var ipad = current.u_apple_ipad_pro;
var ipad1 = new GlideRecord('alm_hardware');
ipad1.get(ipad);
ipad1.assigned_to = current.request.requested_for;
ipad1.install_status = '1';
ipad1.update();
// Projector
var projector = current.u_projector;
var proj = new GlideRecord('alm_consumable');
proj.get(projector);
proj.quantity = proj.quantity - consumeQTY;
proj.update();
// Laptop Carry Case
var ltcc = current.u_laptop_carry_case;
var lcc = new GlideRecord('alm_consumable');
lcc.get(ltcc);
lcc.quantity = lcc.quantity - consumeQTY;
lcc.update();
//Ethernet Cable
var eCable = current.u_ethernet_cable;
var eCab = new GlideRecord('alm_consumable');
eCab.get(eCable);
eCab.quantity = eCab.quantity - consumeQTY;
eCab.update();
//iPhone Screen Protector
var scrPro = current.u_iphone_screen_protector;
var sp = new GlideRecord('alm_consumable');
sp.get(scrPro);
sp.quantity = sp.quantity - consumeQTY;
sp.update();
//iPhone Universal Holder
var uniHold = current.u_iphone_universal_holder;
var iPhoneUH = new GlideRecord('alm_consumable');
iPhoneUH.get(uniHold);
iPhoneUH.quantity = iPhoneUH.quantity - consumeQTY;
iPhoneUH.update();
// Car Charger
var cc = current.u_car_charger;
var carCh = new GlideRecord('alm_consumable');
carCh.get(cc);
carCh.quantity = carCh.quantity - consumeQTY;
carCh.update();
// SpeakerPhone
var spkp = current.u_speakerphone;
var spkphn = new GlideRecord('alm_consumable');
spkphn.get(spkp);
spkphn.quantity = spkphn.quantity - consumeQTY;
spkphn.update();
//USB Cable
var usbCable = current.u_usb_cable_for_printer;
var usbCab = new GlideRecord('alm_consumable');
usbCab.get(usbCable);
usbCab.quantity = usbCab.quantity - consumeQTY;
usbCable.update();
//Wireless Mouse
var kmc = current.u_wireless_mouse;
var kmcombo = new GlideRecord('alm_consumable');
kmcombo.get(kmc);
kmcombo.quantity = kmcombo.quantity - consumeQTY;
kmcombo.update();
//Encrypted USB
var usb = current.u_encrypted_usb_drive;
var usbDis = new GlideRecord('alm_consumable');
usbDis.get(usb);
usbDis.quantity = usbDis.quantity - consumeQTY;
usbDis.update();
//Digital AV Adapter
var avAdapter = current.u_encrypted_usb_drive;
var avDis = new GlideRecord('alm_consumable');
avDis.get(avAdapter);
avDis.quantity = avDis.quantity - consumeQTY;
avDis.update();
//Privacy Filter for Laptop
var pf = current.u_privacy_filter_for_laptop;
var prifil = new GlideRecord('alm_consumable');
prifil.get(pf);
prifil.quantity = prifil.quantity - consumeQTY;
prifil.update();
//smart keyboard
var sk = current.u_smart_keyboard;
var smartKey = new GlideRecord('alm_consumable');
smartKey.get(sk);
smartKey.quantity = smartKey.quantity - consumeQTY;
smartKey.update();
//ipad case
var ipadc = current.u_ipad_case;
var ipadcase = new GlideRecord('alm_consumable');
ipadcase.get(ipadc);
ipadcase.quantity = ipadcase.quantity - consumeQTY;
ipadcase.update();
//ipad Screen Protector
var ipadScrn = current.u_ipad_screen_protector;
var ipadScreen = new GlideRecord('alm_consumable');
ipadScreen.get(ipadScrn);
ipadScreen.quantity = ipadScreen.quantity - consumeQTY;
ipadScreen.update();
//iphone case
var iphonec = current.u_iphone_case;
var iphonecase = new GlideRecord('alm_consumable');
iphonecase.get(iphonec);
iphonecase.quantity = iphonecase.quantity - consumeQTY;
iphonecase.update();
//VGA Adapter
var vgaAdap = current.u_lightning_to_vga_model;
var vgaAdapter = new GlideRecord('alm_consumable');
vgaAdapter.get(vgaAdap);
vgaAdapter.quantity = vgaAdapter.quantity - consumeQTYy;
vgaAdapter.update();
//Bluetooth Headset
var bh = current.u_bluetooth_headset;
var blueHead = new GlideRecord('alm_consumable');
blueHead.get(bh);
blueHead.quantity = blueHead.quantity - consumeQTY;
blueHead.update();
//Mini Display port to HDMI
var disPort = u_mini_display_port_to_hdmi;
var miniDisPort = new GlideRecord('alm_consumable');
miniDisPort.get(disPort);
miniDisPort.quantity = miniDisPort.quantity - consumeQTY;
miniDisPort.update();
//Surge Protector
var surgeP = current.u_surge_protector;
var surgeProtect = new GlideRecord('alm_consumable');
surgeProtect.get(surgeP);
surgeProtect.quantity = surgeProtect.quantity - consumeQTY;
surgeProtect.update();
//Lightning Cable
var lightCable = current.u_lightning_cable;
var lightningCable = new GlideRecord('alm_consumable');
lightningCable.get(lightCable);
lightningCable.quantity = lightningCable.quantity - consumeQTY;
lightningCable.update();
//Projector Carry Case
var projcc = current.u_projector_carrying_case;
var projectorcc = new GlideRecord('alm_consumable');
projectorcc.get(projcc);
projectorcc.quantity = projectorcc.quantity - consumeQTY;
projectorcc.update();
//HDMI Cable
var hdmiCab = current.u_hdmi_cable;
var hdmiCable = new GlideRecord('alm_consumable');
hdmiCable.get(hdmiCab);
hdmiCable.quantity = hdmiCable.quantity - consumeQTY;
hdmiCable.update();
action.setRedirectURL(current);
current.update();
but I need to have the form save before it executes the code. We currently have the techs clicking save and then clicking Consume, but the occasionally forget and then the 27 fields worth of data on the form is lost.
Anyone have an idea of how I can accomplish this?
Solved! Go to Solution.
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-11-2018 01:42 PM
This turned out to be shockingly easy. All I needed to do was to move the current.update(); to the top of the script. I also added in a prompt for the end user. Here's my code in case anyone wants it as a roadmap:
Name: Consume
Action name:
Active: True
Client: True
Onclick: consumeItems()
Condition: current.request_item.cat_item.getDisplayValue() == 'Commercial Bundle'
Script:
function consumeItems(){
var answer=confirm("This should only be done once all consumable fields are populated. \n\nAre you sure you are ready to consume the items?");
if (answer==true)
{
gsftSubmit(null, g_form.getFormElement(), 'consume_items'); //MUST call the 'Action name' set in this UI Action
}
else
{
return false;
}
}
//save the document
current.update();
//consume items
var consumeQTY = '1';
//Lenovo Laptop
var lenovo_laptop = g_form.getValue('u_lenovo_laptop');
var laptop = new GlideRecord('alm_hardware');
laptop.get(lenovo_laptop);
laptop.install_status = '1';
laptop.assigned_to = g_form.getValue('request.requested_for');
laptop.update();
//printer
var printer = g_form.getValue('u_printer');
var printer1 = new GlideRecord('cmdb_ci_printer');
printer1.get(printer);
printer1.assigned_to = g_form.getValue('request.requested_for');
printer1.update();
//Apple iphone
var iphone = g_form.getValue('u_apple_iphone');
var iphone1 = new GlideRecord('alm_hardware');
iphone1.get(iphone);
iphone1.assigned_to = g_form.getValue('request.requested_for');
iphone1.install_status = '1';
iphone1.update();
//Apple ipad
var ipad = g_form.getValue('u_apple_ipad_pro');
var ipad1 = new GlideRecord('alm_hardware');
ipad1.get(ipad);
ipad1.assigned_to = g_form.getValue('request.requested_for');
ipad1.install_status = '1';
ipad1.update();
// Projector
var projector = g_form.getValue('u_projector');
var proj = new GlideRecord('alm_consumable');
proj.get(projector);
proj.quantity = proj.quantity - consumeQTY;
proj.update();
// Laptop Carry Case
var ltcc = g_form.getValue('u_laptop_carry_case');
var lcc = new GlideRecord('alm_consumable');
lcc.get(ltcc);
lcc.quantity = lcc.quantity - consumeQTY;
lcc.update();
//Ethernet Cable
var eCable = g_form.getValue('u_ethernet_cable');
var eCab = new GlideRecord('alm_consumable');
eCab.get(eCable);
eCab.quantity = eCab.quantity - consumeQTY;
eCab.update();
//iPhone Screen Protector
var scrPro = g_form.getValue('u_iphone_screen_protector');
var sp = new GlideRecord('alm_consumable');
sp.get(scrPro);
sp.quantity = sp.quantity - consumeQTY;
sp.update();
//iPhone Universal Holder
var uniHold = g_form.getValue('u_iphone_universal_holder');
var iPhoneUH = new GlideRecord('alm_consumable');
iPhoneUH.get(uniHold);
iPhoneUH.quantity = iPhoneUH.quantity - consumeQTY;
iPhoneUH.update();
// Car Charger
var cc = g_form.getValue('u_car_charger');
var carCh = new GlideRecord('alm_consumable');
carCh.get(cc);
carCh.quantity = carCh.quantity - consumeQTY;
carCh.update();
// SpeakerPhone
var spkp = g_form.getValue('u_speakerphone');
var spkphn = new GlideRecord('alm_consumable');
spkphn.get(spkp);
spkphn.quantity = spkphn.quantity - consumeQTY;
spkphn.update();
//USB Cable
var usbCable = g_form.getValue('u_usb_cable_for_printer');
var usbCab = new GlideRecord('alm_consumable');
usbCab.get(usbCable);
usbCab.quantity = usbCab.quantity - consumeQTY;
usbCable.update();
//Wireless Mouse
var kmc = g_form.getValue('u_wireless_mouse');
var kmcombo = new GlideRecord('alm_consumable');
kmcombo.get(kmc);
kmcombo.quantity = kmcombo.quantity - consumeQTY;
kmcombo.update();
//Encrypted USB
var usb = g_form.getValue('u_encrypted_usb_drive');
var usbDis = new GlideRecord('alm_consumable');
usbDis.get(usb);
usbDis.quantity = usbDis.quantity - consumeQTY;
usbDis.update();
//Digital AV Adapter
var avAdapter = g_form.getValue('u_encrypted_usb_drive');
var avDis = new GlideRecord('alm_consumable');
avDis.get(avAdapter);
avDis.quantity = avDis.quantity - consumeQTY;
avDis.update();
//Privacy Filter for Laptop
var pf = g_form.getValue('u_privacy_filter_for_laptop');
var prifil = new GlideRecord('alm_consumable');
prifil.get(pf);
prifil.quantity = prifil.quantity - consumeQTY;
prifil.update();
//smart keyboard
var sk = g_form.getValue('u_smart_keyboard');
var smartKey = new GlideRecord('alm_consumable');
smartKey.get(sk);
smartKey.quantity = smartKey.quantity - consumeQTY;
smartKey.update();
//ipad case
var ipadc = g_form.getValue('u_ipad_case');
var ipadcase = new GlideRecord('alm_consumable');
ipadcase.get(ipadc);
ipadcase.quantity = ipadcase.quantity - consumeQTY;
ipadcase.update();
//ipad Screen Protector
var ipadScrn = g_form.getValue('u_ipad_screen_protector');
var ipadScreen = new GlideRecord('alm_consumable');
ipadScreen.get(ipadScrn);
ipadScreen.quantity = ipadScreen.quantity - consumeQTY;
ipadScreen.update();
//iphone case
var iphonec = g_form.getValue('u_iphone_case');
var iphonecase = new GlideRecord('alm_consumable');
iphonecase.get(iphonec);
iphonecase.quantity = iphonecase.quantity - consumeQTY;
iphonecase.update();
//VGA Adapter
var vgaAdap = g_form.getValue('u_lightning_to_vga_model');
var vgaAdapter = new GlideRecord('alm_consumable');
vgaAdapter.get(vgaAdap);
vgaAdapter.quantity = vgaAdapter.quantity - consumeQTYy;
vgaAdapter.update();
//Bluetooth Headset
var bh = g_form.getValue('u_bluetooth_headset');
var blueHead = new GlideRecord('alm_consumable');
blueHead.get(bh);
blueHead.quantity = blueHead.quantity - consumeQTY;
blueHead.update();
//Mini Display port to HDMI
var disPort = g_form.getValue('u_mini_display_port_to_hdmi');
var miniDisPort = new GlideRecord('alm_consumable');
miniDisPort.get(disPort);
miniDisPort.quantity = miniDisPort.quantity - consumeQTY;
miniDisPort.update();
//Surge Protector
var surgeP = g_form.getValue('u_surge_protector');
var surgeProtect = new GlideRecord('alm_consumable');
surgeProtect.get(surgeP);
surgeProtect.quantity = surgeProtect.quantity - consumeQTY;
surgeProtect.update();
//Lightning Cable
var lightCable = g_form.getValue('u_lightning_cable');
var lightningCable = new GlideRecord('alm_consumable');
lightningCable.get(lightCable);
lightningCable.quantity = lightningCable.quantity - consumeQTY;
lightningCable.update();
//Projector Carry Case
var projcc = g_form.getValue('u_projector_carrying_case');
var projectorcc = new GlideRecord('alm_consumable');
projectorcc.get(projcc);
projectorcc.quantity = projectorcc.quantity - consumeQTY;
projectorcc.update();
//HDMI Cable
var hdmiCab = g_form.getValue('u_hdmi_cable');
var hdmiCable = new GlideRecord('alm_consumable');
hdmiCable.get(hdmiCab);
hdmiCable.quantity = hdmiCable.quantity - consumeQTY;
hdmiCable.update();

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-05-2018 01:25 PM
Easy way to handle this would be to set up your UI action just to save a specific field value. Then just move all of this to an 'after' business rule to do the update of everything else based on that condition.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-11-2018 01:42 PM
This turned out to be shockingly easy. All I needed to do was to move the current.update(); to the top of the script. I also added in a prompt for the end user. Here's my code in case anyone wants it as a roadmap:
Name: Consume
Action name:
Active: True
Client: True
Onclick: consumeItems()
Condition: current.request_item.cat_item.getDisplayValue() == 'Commercial Bundle'
Script:
function consumeItems(){
var answer=confirm("This should only be done once all consumable fields are populated. \n\nAre you sure you are ready to consume the items?");
if (answer==true)
{
gsftSubmit(null, g_form.getFormElement(), 'consume_items'); //MUST call the 'Action name' set in this UI Action
}
else
{
return false;
}
}
//save the document
current.update();
//consume items
var consumeQTY = '1';
//Lenovo Laptop
var lenovo_laptop = g_form.getValue('u_lenovo_laptop');
var laptop = new GlideRecord('alm_hardware');
laptop.get(lenovo_laptop);
laptop.install_status = '1';
laptop.assigned_to = g_form.getValue('request.requested_for');
laptop.update();
//printer
var printer = g_form.getValue('u_printer');
var printer1 = new GlideRecord('cmdb_ci_printer');
printer1.get(printer);
printer1.assigned_to = g_form.getValue('request.requested_for');
printer1.update();
//Apple iphone
var iphone = g_form.getValue('u_apple_iphone');
var iphone1 = new GlideRecord('alm_hardware');
iphone1.get(iphone);
iphone1.assigned_to = g_form.getValue('request.requested_for');
iphone1.install_status = '1';
iphone1.update();
//Apple ipad
var ipad = g_form.getValue('u_apple_ipad_pro');
var ipad1 = new GlideRecord('alm_hardware');
ipad1.get(ipad);
ipad1.assigned_to = g_form.getValue('request.requested_for');
ipad1.install_status = '1';
ipad1.update();
// Projector
var projector = g_form.getValue('u_projector');
var proj = new GlideRecord('alm_consumable');
proj.get(projector);
proj.quantity = proj.quantity - consumeQTY;
proj.update();
// Laptop Carry Case
var ltcc = g_form.getValue('u_laptop_carry_case');
var lcc = new GlideRecord('alm_consumable');
lcc.get(ltcc);
lcc.quantity = lcc.quantity - consumeQTY;
lcc.update();
//Ethernet Cable
var eCable = g_form.getValue('u_ethernet_cable');
var eCab = new GlideRecord('alm_consumable');
eCab.get(eCable);
eCab.quantity = eCab.quantity - consumeQTY;
eCab.update();
//iPhone Screen Protector
var scrPro = g_form.getValue('u_iphone_screen_protector');
var sp = new GlideRecord('alm_consumable');
sp.get(scrPro);
sp.quantity = sp.quantity - consumeQTY;
sp.update();
//iPhone Universal Holder
var uniHold = g_form.getValue('u_iphone_universal_holder');
var iPhoneUH = new GlideRecord('alm_consumable');
iPhoneUH.get(uniHold);
iPhoneUH.quantity = iPhoneUH.quantity - consumeQTY;
iPhoneUH.update();
// Car Charger
var cc = g_form.getValue('u_car_charger');
var carCh = new GlideRecord('alm_consumable');
carCh.get(cc);
carCh.quantity = carCh.quantity - consumeQTY;
carCh.update();
// SpeakerPhone
var spkp = g_form.getValue('u_speakerphone');
var spkphn = new GlideRecord('alm_consumable');
spkphn.get(spkp);
spkphn.quantity = spkphn.quantity - consumeQTY;
spkphn.update();
//USB Cable
var usbCable = g_form.getValue('u_usb_cable_for_printer');
var usbCab = new GlideRecord('alm_consumable');
usbCab.get(usbCable);
usbCab.quantity = usbCab.quantity - consumeQTY;
usbCable.update();
//Wireless Mouse
var kmc = g_form.getValue('u_wireless_mouse');
var kmcombo = new GlideRecord('alm_consumable');
kmcombo.get(kmc);
kmcombo.quantity = kmcombo.quantity - consumeQTY;
kmcombo.update();
//Encrypted USB
var usb = g_form.getValue('u_encrypted_usb_drive');
var usbDis = new GlideRecord('alm_consumable');
usbDis.get(usb);
usbDis.quantity = usbDis.quantity - consumeQTY;
usbDis.update();
//Digital AV Adapter
var avAdapter = g_form.getValue('u_encrypted_usb_drive');
var avDis = new GlideRecord('alm_consumable');
avDis.get(avAdapter);
avDis.quantity = avDis.quantity - consumeQTY;
avDis.update();
//Privacy Filter for Laptop
var pf = g_form.getValue('u_privacy_filter_for_laptop');
var prifil = new GlideRecord('alm_consumable');
prifil.get(pf);
prifil.quantity = prifil.quantity - consumeQTY;
prifil.update();
//smart keyboard
var sk = g_form.getValue('u_smart_keyboard');
var smartKey = new GlideRecord('alm_consumable');
smartKey.get(sk);
smartKey.quantity = smartKey.quantity - consumeQTY;
smartKey.update();
//ipad case
var ipadc = g_form.getValue('u_ipad_case');
var ipadcase = new GlideRecord('alm_consumable');
ipadcase.get(ipadc);
ipadcase.quantity = ipadcase.quantity - consumeQTY;
ipadcase.update();
//ipad Screen Protector
var ipadScrn = g_form.getValue('u_ipad_screen_protector');
var ipadScreen = new GlideRecord('alm_consumable');
ipadScreen.get(ipadScrn);
ipadScreen.quantity = ipadScreen.quantity - consumeQTY;
ipadScreen.update();
//iphone case
var iphonec = g_form.getValue('u_iphone_case');
var iphonecase = new GlideRecord('alm_consumable');
iphonecase.get(iphonec);
iphonecase.quantity = iphonecase.quantity - consumeQTY;
iphonecase.update();
//VGA Adapter
var vgaAdap = g_form.getValue('u_lightning_to_vga_model');
var vgaAdapter = new GlideRecord('alm_consumable');
vgaAdapter.get(vgaAdap);
vgaAdapter.quantity = vgaAdapter.quantity - consumeQTYy;
vgaAdapter.update();
//Bluetooth Headset
var bh = g_form.getValue('u_bluetooth_headset');
var blueHead = new GlideRecord('alm_consumable');
blueHead.get(bh);
blueHead.quantity = blueHead.quantity - consumeQTY;
blueHead.update();
//Mini Display port to HDMI
var disPort = g_form.getValue('u_mini_display_port_to_hdmi');
var miniDisPort = new GlideRecord('alm_consumable');
miniDisPort.get(disPort);
miniDisPort.quantity = miniDisPort.quantity - consumeQTY;
miniDisPort.update();
//Surge Protector
var surgeP = g_form.getValue('u_surge_protector');
var surgeProtect = new GlideRecord('alm_consumable');
surgeProtect.get(surgeP);
surgeProtect.quantity = surgeProtect.quantity - consumeQTY;
surgeProtect.update();
//Lightning Cable
var lightCable = g_form.getValue('u_lightning_cable');
var lightningCable = new GlideRecord('alm_consumable');
lightningCable.get(lightCable);
lightningCable.quantity = lightningCable.quantity - consumeQTY;
lightningCable.update();
//Projector Carry Case
var projcc = g_form.getValue('u_projector_carrying_case');
var projectorcc = new GlideRecord('alm_consumable');
projectorcc.get(projcc);
projectorcc.quantity = projectorcc.quantity - consumeQTY;
projectorcc.update();
//HDMI Cable
var hdmiCab = g_form.getValue('u_hdmi_cable');
var hdmiCable = new GlideRecord('alm_consumable');
hdmiCable.get(hdmiCab);
hdmiCable.quantity = hdmiCable.quantity - consumeQTY;
hdmiCable.update();
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-12-2019 11:42 AM
This was helpful. I am doing something similar, and trying to save the form data before the server-side of the UI action runs doesn't work - the form is not committed.
g_form.save();
gsftSubmit(...);