- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-22-2018 05:37 PM
Sure.
Here's the script for the UI Action:
function openPopUp(){
var dialogClass = window.GlideModal ? GlideModal : GlideDialogWindow;
var dialog = new dialogClass("return_to_stock");
dialog.setWidth("600");
dialog.setTitle("Return Asset to Stock");
dialog.setPreference("sysparm_sys_ids", g_form.getUniqueValue());
dialog.render(); // Open the dialog box
}
And for the UI Page 'return_to_stock'...
HTML:
<g:ui_form>
<input type="hidden" id="cancelled" name="cancelled" value="false"/>
<input type="hidden" name="ci_sys_ids" id="ci_sys_ids" value="${sysparm_sys_ids}"/>
<!-- Set up form fields and labels -->
<table width="100%">
<tr>
<td>
<div class="form-group form-horizontal">
<div class="col-md-4 text-right">
<g:form_label> ${gs.getMessage('Stock room')} </g:form_label>
</div>
<div class="col-md-8">
<g:ui_reference name="stock_room" id="stock_room" table="alm_stockroom" query="type!=e2aa2b3f3763100044e0bfc8bcbe5dde^ORtypeISEMPTY" completer="AJAXReferenceCompleter" columns="name;location"/>
</div>
</div>
</td>
</tr>
<tr style="height: 4px"><td></td></tr>
<tr>
<td>
<div class="form-group form-horizontal">
<div class="col-md-4 text-right">
<g:form_label> ${gs.getMessage('Sub State')} </g:form_label>
</div>
<div class="col-md-8">
<select name="sub_status" id="sub_status">
<option value="">${gs.getMessage('-- None --')}</option>
<g2:evaluate var="jvar_item" expression="
var gr = new GlideRecord('sys_choice');
gr.addQuery('element', 'substatus');
gr.addQuery('dependent_value', '9');
gr.addQuery('name', 'alm_asset');
gr.addQuery('value','!=', 'reserved');
gr.addQuery('value','!=', 'pre_allocated');
gr.addQuery('inactive', 'false');
gr.addQuery('language', 'en');
gr.orderBy('sequence');
gr.query();
"/>
<j2:while test="$[gr.next()]">
<option value="$[gr.value]">$[gr.label]</option>
</j2:while>
</select>
</div>
</div>
</td>
</tr>
<tr id="dialogbuttons">
<td colspan="8" align="right">
<div class="modal-footer">
<button class="btn btn-primary action_context edit-close pull-right" type="submit" id="submit" onclick="return onSubmit();">${gs.getMessage('OK')}</button>
<button class="btn btn-default action_context edit-close pull-right" type="submit" id="cancel" onclick="return onCancel();">${gs.getMessage('Cancel')}</button>
</div>
</td>
</tr>
</table>
</g:ui_form>
Client Script:
function onCancel() {
var c = gel('cancelled');
c.value = "true";
GlideDialogWindow.get().destroy();
jslog('Return to stock - Cancelled');
}
function onSubmit() {
jslog('Return to stock - Submitted');
if (gel('sub_status').value == '') {
alert("${JS:gs.getMessage('Please select a Sub Status')}");
return false;
}
else if (gel('stock_room').value == '') {
alert("${JS:gs.getMessage('Please select a Stockroom')}");
return false;
}
else {
var c = gel('cancelled');
c.value = "false";
return true;
}
}
Processing Script:
if(cancelled == "false"){
updateAssets();
}
var urlOnStack = GlideSession.get().getStack().bottom();
response.sendRedirect(urlOnStack);
function updateAssets() {
try {
var gr = new GlideRecord('alm_hardware');
gr.addQuery('ci', 'IN', ci_sys_ids);
gr.query();
while (gr.next()) {
gr.install_status = 6;
gr.substatus = sub_status;
gr.stockroom = stock_room;
gr.u_place = '';
gr.install_date = '';
gr.assigned_to = '';
gr.location = gr.stockroom.location;
gr.update();
gs.addInfoMessage(gs.getMessage('Asset {0} returned to stock.', [gr.display_name]));
}
var update_ct = gr.getRowCount();
if (update_ct > 0) {
if (update_ct > 1) {
gs.addInfoMessage(gs.getMessage('{0} assets returned to stock.', [update_ct]));
}
}
else{
gs.addInfoMessage(gs.getMessage('No assets returned to stock.'));
}
}
catch(err){
gs.addInfoMessage('Exception: ' + err);
}
}
We also have a List Choice UI Action which uses the same UI Page but the script in the UI Action is slightly different:
function openListReturnToStockPopUp(){
var selSysIds = g_list.getChecked();
var dialogClass = window.GlideModal ? GlideModal : GlideDialogWindow;
var dialog = new dialogClass("return_to_stock");
dialog.setWidth("600");
dialog.setTitle("Return Asset to Stock");
dialog.setPreference('sysparm_sys_ids', selSysIds);
dialog.render(); // Open the dialog box
}
Hope this helps.
Robin