Show Sub account if Account has child account else hide the field

Samiksha2
Mega Sage

Hi All,

 

I have a requirement to show the sub account(and make it mandatory) only when selected account has any child account.

I tried using client script but it was not working. 

Onchange of Account

var subAccount = g_form.getValue("u_sub_account");
    g_form.clearValue("u_sub_account");
    if (subAccount == '') {
        g_form.setMandatory("u_sub_account", false);
    } else {
        g_form.setMandatory("u_sub_account", true);
    }

Samiksha2_0-1690271937544.png

 

So I tried using script include.

Script include

var account_details = Class.create();
account_details.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
    getSubAccount: function() {
        var answer = "";
        var subacc = this.getParameter('sysparm_account');
        var acc = new GlideRecord('customer_account');
        // acc.addQuery('account_parent',subacc);
        acc.addEncodedQuery('account_parentISNOTEMPTY');
        acc.query();
        if (acc.next()) {
            answer = 'Yes';
        } else {
            answer = 'No';
        }
        return answer;
    },
    type: 'account_details'
});

And Onchange client script

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }

    var subAccount = g_form.getValue("u_sub_account");
    var account = g_form.getValue("account");

    var ga = new GlideAjax('account_details');
    ga.addParam('sysparm_name', 'getSubAccount');
    ga.addParam('sysparm_account', account);
    ga.getXML(myCallBack);
    //ga.getXMLAnswer(getAccount);
    function myCallBack(response) {
        var cc = response.responseXML.documentElement.getAttribute('answer');
        alert(cc);
        if (cc == 'Yes') {
            g_form.setMandatory("u_sub_account", true);
        }
    }

    // function getAccount(answer) {
    //     g_form.setMandatory("u_sub_account", true);

    // }
    g_form.clearValue("u_sub_account");
}

 

In alert null is coming.

 

Please help in this.

 

Thanks,

Samiksha Sonam

1 ACCEPTED SOLUTION

Samiksha2
Mega Sage

I have made small change in the script include and client script. It is working now.

 

Script include:
var account_details = Class.create();
account_details.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
    getSubAccount: function() {

        var subacc = this.getParameter('sysparm_account');
        var acc = new GlideRecord('customer_account');
        // acc.addQuery('account_parent',subacc);
        //acc.addEncodedQuery('account_parentISNOTEMPTY');
        acc.addEncodedQuery('account_parent=' + subacc);
        acc.query();
        if (acc.next()) {
            var answer = 'Yes';
        } else {
            var answer = 'No';
        }
        return answer;
    },
    type: 'account_details'
});


Client script: Onchange of Account

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }

    var subAccount = g_form.getValue("u_sub_account");
    var account = g_form.getValue("account");

    var ga = new GlideAjax('account_details');
    ga.addParam('sysparm_name', 'getSubAccount');
    ga.addParam('sysparm_account', account);
    ga.getXML(myCallBack);
    //ga.getXMLAnswer(getAccount);
    function myCallBack(response) {
        var cc = response.responseXML.documentElement.getAttribute('answer');
        alert(cc);
        if (cc == 'Yes') {
            g_form.setMandatory("u_sub_account", true);
        }
		else{
			g_form.setMandatory("u_sub_account", false);
		}
    }

    // function getAccount(answer) {
    //     g_form.setMandatory("u_sub_account", true);

    // }
    g_form.clearValue("u_sub_account");
}

View solution in original post

1 REPLY 1

Samiksha2
Mega Sage

I have made small change in the script include and client script. It is working now.

 

Script include:
var account_details = Class.create();
account_details.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
    getSubAccount: function() {

        var subacc = this.getParameter('sysparm_account');
        var acc = new GlideRecord('customer_account');
        // acc.addQuery('account_parent',subacc);
        //acc.addEncodedQuery('account_parentISNOTEMPTY');
        acc.addEncodedQuery('account_parent=' + subacc);
        acc.query();
        if (acc.next()) {
            var answer = 'Yes';
        } else {
            var answer = 'No';
        }
        return answer;
    },
    type: 'account_details'
});


Client script: Onchange of Account

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }

    var subAccount = g_form.getValue("u_sub_account");
    var account = g_form.getValue("account");

    var ga = new GlideAjax('account_details');
    ga.addParam('sysparm_name', 'getSubAccount');
    ga.addParam('sysparm_account', account);
    ga.getXML(myCallBack);
    //ga.getXMLAnswer(getAccount);
    function myCallBack(response) {
        var cc = response.responseXML.documentElement.getAttribute('answer');
        alert(cc);
        if (cc == 'Yes') {
            g_form.setMandatory("u_sub_account", true);
        }
		else{
			g_form.setMandatory("u_sub_account", false);
		}
    }

    // function getAccount(answer) {
    //     g_form.setMandatory("u_sub_account", true);

    // }
    g_form.clearValue("u_sub_account");
}