Make a quick vote 🗳 ️How do you refer to SuiteCRM extensions: add-ons or plug-ins? Click here to have your say 👈

Error en validacion con JQUERY

Buenas tardes. Realicé en mi ambiente local una validación con JQUERY y AJAX y funciona sin problema, a la hora de pasarlo al servidor en producción me “desaparece” el input al cual estoy validando.

En principio cree un entry point que apunta a un archivo PHP que hace la validación en la base de datos y devuelve un valor u otro si existe o no el campo. Hasta ahi vamos bien.

El módulo no tiene una vista de edición creada, por lo que en mi carpeta CUSTOM cree en la ruta /custom/MODULO/views/view.edit.php :

<?php

if (!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');

require_once('include/MVC/View/views/view.edit.php');

class CustomEmpresasViewEdit extends ViewEdit

{

    public function __construct()

    {

        parent::__construct();        

    }

    /**

     * @see SugarView::display()

     *

     * We are overridding the display method to manipulate the sectionPanels.

     * If portal is not enabled then don't show the Portal Information panel.

     */

    public function display()

    {    

        $this->useForSubpanel = true;

       

        // habilitamos el valor del nombre en el archivo tpl (enviar y recibir archivos por medio de HTTP)

        $this->ss->assign('cuit_cuil_c', $this->bean->cuit_cuil_c);

        // cargamos el contenido del tpl en la variable        

        $name_input_code = $this->ss->fetch('custom/modules/empre_Empresas_vp/tpls/cuitUnico.tpl.js');

        // enviamos el contenido a "editviewdefs"        

        $this->ss->assign('validacionCuit', $name_input_code);

            parent::display();

                    

        }

       

    }

?>

El archivo .tpl.js en /custom/MODULO/tpls/…tpl.js

<input type="text" name="cuit_cuil_c" id="cuit_cuil_c" maxlength="11" value="{$cuit_cuil_c}"/>

   <span id="cuit_unico_resultado"></span>

{literal}

<script src='/include' type="text/javascript">

    $(document).ready(function() {$('#cuit_cuil_c').blur(function () {

        $(".module-title-text").prop("id", "tipoVista");

        let vista = document.getElementById('tipoVista').innerHTML.trim();

        $('#cuit_unico_resultado').html('<strong> Verificando cuit...</strong>');

        $.post('RutaDelEntryPoint', { cuit_cuil_c: $('#cuit_cuil_c').val() }, function (data) {

            var cuitString = document.getElementById('cuit_cuil_c').value;

            var digitos = cuitString.length;

            const regex = /^[0-9]*$/;

            const soloNumeros = regex.test(cuitString);

            //Si existe la información o tiene menos de 11 dígitos, agregamos la propiedad Disabled al botón de guardar y le damos un valor true.

            //Agregamos comentarios para que el usuario sepa el motivo del error

            if (!soloNumeros) {

                $(".button.primary").prop("disabled", "true");

                $('#cuit_unico_resultado').html('<strong style="color:red;"> &#x2717 <br>Ingrese únicamente dígitos numéricos</strong>');

            }

            else if (digitos < 11) {

                $(".button.primary").prop("disabled", "true");

                $('#cuit_unico_resultado').html('<strong style="color:red;"> &#x2717 <br>Debe tener al menos 11 dígitos</strong>');

            }

            else if (data == 'existe' && vista == 'Crear') {

                $(".button.primary").prop("disabled", "true");

                $('#cuit_unico_resultado').html('<strong style="color:red;"> &#x2717 <br>CUIT Duplicado o inválido</strong>');

            }

            else if (data == 'existe' && vista != 'Crear' || data == 'unico') {

                $(".button.primary").prop("disabled", "");

                $('#cuit_unico_resultado').html('<strong style="color:green;"> &#x2713 </strong>');

            }

            else { }

        });

    })});

</script>

{/literal}

y finalmente en custom/MODULO/metadata/editviewdefs.php, le agregue la siguiente línea al campo:
'customCode' => '{$validacionCuit}',

El problema está, justo, en esta línea. A la hora de hacer una reconstrucción rápida me desaparece el input al que apunto. Entiendo que es esta línea ya que, si la borro y pongo otra “reconstruccion rapida” vuelve a aparecer… No entiendo que está pasando ya que en otros ambientes me funciona correctamente.

Espero alguno haya pasado por algo similar y pueda ayudarme!
Gracias…

Me parece que el problema está en los permisos de los archivos de tu instalación de producción. Mira que sean igual a los de tu test.

Hola Broz! No, los permisos están iguales a los de Test. No entiendo que podría estar pasando… en el código veo todo ok. Ya no se que puede ser

Hola, prueba solo con un console.log(‘algo’); en el archivo js y verifica si se imprime, si es que se imprime entonces el código con error esta en el js y debes debuguear, respetar la sintaxis, etc.

Si no se imprime (que lo dudo) entonces debes revisar el suitecrm.log y logs de php porque debería ser un error en el código de la vista.

Saludos

1 Like