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

Validacion campo en front con JS

Buenos días

Vuelvo a crear el topic para que, en caso que llegue a la solución, también quede como guía a otros desarrolladores que estén iniciado con php-js y SuiteCRM.

Despues de varias recomendaciones de encarar esto por el Front, estoy intentando que la alerta de los duplicados salga dinámicamente cuando se carga el campo.
Al no tener la Custom View creada, heredé la actual e hice una llamada a un script JS.
Paso las rutas donde fue creado cada archivo:

VISTA ← Custom/modules/MODULO->views
PHP ← Custom/modules/MODULO
JS ← Custom/modules/MODULO

<?php

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

require_once 'modules/Contacts/views/view.edit.php';

class CustomContactsViewEdit extends ContactsViewEdit

{

    public function __construct()

    {

        parent::__construct();

        $this->useForSubpanel = true;

        $this->useModuleQuickCreateTemplate = true;

    }

    public function display()

    {

        parent::display();

        echo '<script> validacion() </script>';

    }

   

}

SCRIPT:


$('#cuil2_c').keyup(function(){

    var cod = $("#cuil2_c").val(); //console.log(cod);

        // llamada ajax a un archivo php donde realizas la query a la base de datos

    $.post('../../../custom/modules/Contacts/verificacionCuit.php'),

        {

             codigo: $("#cuil2_c").val(), record: document.EditView.record.value

        }  

        function(data) {

               console.log(data);

        if (data === 1) {

            removeFromValidate('EditView', 'cuil2_c');

            addToValidate('EditView', 'cuil2_c', 'text', true, 'Cuil Required');

            mostrar_modal('Este código ya está utilizado');

            //$('#nro_iden_value_result').html('<strong style="color:red;"> &#x2717;</strong>');

            $("#cuil2_c").val('');

            $("#cuil2_c").css({"background":"#d8f5ee"});//default

        }

        else {

            removeFromValidate('EditView', 'cuil2_c');

            addToValidate('EditView', 'cuil2_c', '', true, 'Cuil Required');

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

            $("#cuil2_c").css({"background":"#82e0aa"});//verde

        }

    });

});

Archivo PHP con valor de retorno para coincidencias:

<?php

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

class verificacionCuit

{

   

    public function verificaCuit($bean)

    {

   

        $cuil_ingresado = $bean->cuil2_c;

             

        $accountBean = BeanFactory::getBean('Contacts');

        $beanlist = $accountBean->get_list(

                                    $order_by = "first_name",

                                    $where = "cuil2_c = ${cuil_ingresado}",

                                    $row_offset = 0,

                                    $limit=-1,

                                    $max=-1,

                                    $show_deleted = 0);        

                              

        if($beanlist['row_count'] >= 1 ){  

         

          return 1;                

         

          exit;                          

           

        } else {}

               
   

    }

}

?>

Sigo sin éxito en las pruebas en mi entorno local y no logro encontrar el error.
¿Donde podría investigar sobre esto? ¿Alguien sabe como podría encararlo?

Gracias !

Hola, veo dos posibles razones.

  1. Verificaste que verificacionCuit.php llegue a ejecutarse ? porque la ruta me parece un poco larga

  2. Creo que no puedes heredar un bean sin antes guardar (a menos que sea un process_record) Quizás por ese motivo la consulta no funcione

Bueno, además te comento que yo lo haría de la siguiente forma : Añadir JS a la vista de edición con el Ajax de verificación.

‘includes’ =>
array (
0 =>
array (
‘file’ => ‘custom/modules/MYMODULE/js/script.js’,
),
),

Saludos

Hola dampudia! Muchas gracias por tu respuesta.

Ya fue solucionado esto