Capture value with client script

Ariomar de Deus
Tera Contributor

I'm having trouble capturing the original value of the func_matricula field before the replace and before the glideajax. Could you help me? I need to insert the value into the v_chaves_fta field.

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
 
    var paraQuem = g_form.getValue('para_quem_ser_pedido');
    var matricula = g_form.getValue('func_matricula').replace(/\D/g, '').slice(0, -1);
    var matricula2 = g_form.getValue('matri_estagiario');
    
 
    if (paraQuem == 'para_mim_mesmo') {
 
        g_form.setValue('v_chaves_fta', matricula3);
 
        //console.log('API entrou na condição para mim mesmo');    
        var ga1 = new GlideAjax('InforComplementar');
        ga1.addParam('sysparm_name', 'chamarAPIConsultarInfor');
        ga1.addParam('sysparm_numero_matricula', matricula);
 
        ga1.getXMLAnswer(function(resposta) {
 
            //console.log('API Dados Funcionarios ' + matricula);
 
            if (!resposta) {
                alert("Sem dados da API");
                return;
            }
            if (!matricula) {
                alert('Campo matricula está vazio');
            }
            try {
                var dados = JSON.parse(resposta);
                //console.log(' JSON retornado e interpretado ', dados);
                var msg = dados.message.trim().toLowerCase();
 
                if (dados.return_code == '200') {
 
                    if (msg.indexOf('funcionario nao consta do cadastro.') !== -1) {
                        // console.log('Resposta vindo da API GA1: ', dados.message);
                        alert('Este usuário não possui cadastro');
                        return;
                    }
                    g_form.setValue('prefixo_de_lotacao', dados.codigo_dependencia_lotacao);
                    g_form.setValue('nome_dependencia_lotacao', dados.nome_dependencia_lotacao);
                    g_form.setValue('data_da_posse', dados.data_posse_banco);
                    g_form.setValue('message', dados.message);
                    //console.log('Data da posse retornada na API ' + dados.data_posse_banco);
                } else {
                    //console.log('Resposta vindo da API GA1: ', dados.message);
                    g_form.setValue('message', dados.message);
                    //alert('Funcionario nao consta do Cadastro.');
                }
            } catch (erro) {
                g_form.setValue('message', 'Erro a resposta da API');
                //console.log('Erro ao processar JSON :' + erro.message);
            }
        });
 
        // obter retorno da API dados complementares
        var ga2 = new GlideAjax('InforComplementar');
        ga2.addParam('sysparm_name', 'chamarAPIcomplementares');
        ga2.addParam('sysparm_numero_matricula_user', matricula2);
        ga2.addParam('sysparm_numero_matricula_fun', matricula2);
 
        ga2.getXMLAnswer(function(resposta) {
 
            if (!resposta) {
                alert("Sem dados da API");
                return;
            }
 
            try {
                var dados = JSON.parse(resposta);
                //console.log(' JSON retornado e interpretado ', dados);
                var msg = dados.message.trim().toLowerCase();
 
                if (dados.return_code == '200') {
                    // console.log('Resposta vindo da API GA2 - MSG:', msg);
                    g_form.setValue('tipo_sanguineo', dados.codigo_tipo_sangue);
                    g_form.setValue('prefixo_do_malote', dados.codigo_dependencia_responsavel);
                    g_form.setValue('nome_do_prefixo_do_malote', dados.nome_dependencia_responsavel);
                    g_form.setValue('message', dados.message);
                    //console.log('Data da posse retornada na API ' + dados.data_posse_banco)
                } else {
                    //console.log('Resposta vindo da API GA2: ', dados.message);
                    g_form.setValue('message', dados.message);
                    // alert('Funcionario nao consta do Cadastro.');
                }
            } catch (erro) {
                g_form.setValue('message', 'Erro a resposta da API');
                alert('Erro na resposta da API');
                //console.log('Erro ao processar JSON :' + erro.message);
            }
        });
 
        var codigoUor = g_form.getValue('codigo_uor_unidade');
        var ga3 = new GlideAjax('InforComplementar');
        ga3.addParam('sysparm_name', 'chamarAPIundOrganizacional');
        ga3.addParam('sysparm_codigo_uor', codigoUor);
 
        ga3.getXMLAnswer(function(resposta3) {
 
            if (!resposta3) {
                alert("Sem dados da API");
                return;
            }
            if (!codigoUor) {
                alert('Campo "Código Uor/Unidade" está vazio');
            }
            try {
                var dados3 = JSON.parse(resposta3);
                //console.log(' JSON retornado e interpretado ', dados);
 
                if (dados3.return_code == '200') {
                    g_form.setValue('uf_do_prefixo_de_lotacao', dados3.sigla_uf_uor);
                    g_form.setValue('message', dados3.message);
                } else {
                    //console.log('Resposta vindo da API GA1: ', dados.message);
                    g_form.setValue('message', dados3.message);
                }
            } catch (erro) {
                g_form.setValue('message', 'Erro a resposta da API');
                //console.log('Erro ao processar JSON :' + erro.message);
            }
        });
 
 
    } else {
        // console.log('entrou no else');
    }
}
 

 

1 ACCEPTED SOLUTION

Brad Bowman
Kilo Patron
Kilo Patron

Just use

var matricula3 = g_form.getValue('func_matricula');

if this is the field/variable that is triggered by the onChange script, use oldValue instead.  As posted, you're attempting to set the field value to an undefined script variable.

 

View solution in original post

1 REPLY 1

Brad Bowman
Kilo Patron
Kilo Patron

Just use

var matricula3 = g_form.getValue('func_matricula');

if this is the field/variable that is triggered by the onChange script, use oldValue instead.  As posted, you're attempting to set the field value to an undefined script variable.