- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-31-2024 01:13 PM
I have a table that contains employee data by plant. When I select 'plant' on a catalog item form I want the QC Manager, Plant Accountant, and Shipping Manager fields to auto populate. My script include tests out correctly and returns the correct data.
Name - PlantManagerFetcher
Client Callable
All Application scopes
var PlantManagerFetcher = Class.create();
PlantManagerFetcher.prototype = {
initialize: function() {},
getManagersByPlant: function(plantName) {
var result = {};
var gr = new GlideRecord('u_rwi_plants');
// Use the correct column names
gr.addQuery('u_plant', plantName);
gr.query();
if (gr.next()) {
result.qc_manager = gr.getValue('u_qc_manager');
result.plant_accountant = gr.getValue('u_plant_accountant');
result.shipping_manager = gr.getValue('u_shipping_manager');
}
return result;
},
type: 'PlantManagerFetcher'
};
I've tried a half dozen variants of the catalog client script but keep getting a null error. Is there anything that stands out in the catalog client script?
Catalog Client Script
Name - Plant
All
OnChange
Variable Name - u_plant
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue === '') {
return;
}
console.log('Selected Plant:', newValue);
var ga = new GlideAjax('PlantManagerFetcher');
ga.addParam('sysparm_name', 'getManagersByPlant');
ga.addParam('plantName', newValue);
ga.getXMLAnswer(function(response) {
console.log('Response:', response);
try {
var managers = JSON.parse(response);
console.log('Parsed Managers:', managers);
// Update form fields with the fetched manager data
g_form.setValue('u_qc_manager', managers.qc_manager || '');
g_form.setValue('u_plant_accountant', managers.plant_accountant || '');
g_form.setValue('u_shipping_manager', managers.shipping_manager || '');
console.log('QC Manager:', g_form.getValue('u_qc_manager'));
console.log('Plant Accountant:', g_form.getValue('u_plant_accountant'));
console.log('Shipping Manager:', g_form.getValue('u_shipping_manager'));
} catch (e) {
console.error('Error parsing JSON response:', e);
}
});
}
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-31-2024 08:11 PM
Hi @Alan42
Please try and see the below code:
Script Include:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-31-2024 08:11 PM
Hi @Alan42
Please try and see the below code:
Script Include:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-06-2024 07:30 AM
Thank you. Your suggested changes worked. Here are the edits that finally did the trick.
var PlantManagerFetcher = Class.create();
PlantManagerFetcher.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getManagersByPlant: function() {
var plantName = this.getParameter('sysparm_plantName');
var result = {};
var gr = new GlideRecord('u_rwi_plants');
gr.addQuery('u_plant', plantName);
gr.query();
if (gr.next()) {
result.qc_manager = gr.getValue('u_qc_manager');
result.plant_accountant = gr.getValue('u_plant_accountant');
result.shipping_manager = gr.getValue('u_shipping_manager');
}
return JSON.stringify(result);
},
type: 'PlantManagerFetcher'
});
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue === '') {
return;
}
console.log('Selected Plant:', newValue);
var ga = new GlideAjax('PlantManagerFetcher');
ga.addParam('sysparm_name', 'getManagersByPlant');
ga.addParam('sysparm_plantName', newValue); // Correct parameter name
ga.getXMLAnswer(function(response) {
console.log('Response:', response);
try {
var managers = JSON.parse(response);
console.log('Parsed Managers:', managers);
// Update form fields with the fetched manager data
g_form.setValue('u_qc_manager', managers.qc_manager || '');
g_form.setValue('u_plant_accountant', managers.plant_accountant || '');
g_form.setValue('u_shipping_manager', managers.shipping_manager || '');
console.log('QC Manager:', g_form.getValue('u_qc_manager'));
console.log('Plant Accountant:', g_form.getValue('u_plant_accountant'));
console.log('Shipping Manager:', g_form.getValue('u_shipping_manager'));
} catch (e) {
console.error('Error parsing JSON response:', e);
}
});
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-02-2024 07:56 PM