Buenos dias muchachos:
Estoy validando en el modelo. Tengo una tabla con el campo Cuit. el mismo
esta declarado como integer(11).

en el modelo, en las validaciones tengo:

'cuit'=> array(
                 'rule' => array('CPcuitValido'),
                 'message' => 'Cuit invalido.'
               )

y la funcion declarada mas abajo que dice:

function CPcuitValido( $cuit ) {
                    $esCuit=false;
                      if ( strlen($cuit) <> 11) {  // si to estan todos los
digitos
                        $esCuit=false;
                    } else
                     {
                        $x=$i=$dv=0;
                        // Multiplico los dígitos.
                        $vec[0] = (substr($cuit, 0, 1)) * 5;
                        $vec[1] = (substr($cuit, 1, 1)) * 4;
                        $vec[2] = (substr($cuit, 2, 1)) * 3;
                        $vec[3] = (substr($cuit, 3, 1)) * 2;
                        $vec[4] = (substr($cuit, 4, 1)) * 7;
                        $vec[5] = (substr($cuit, 5, 1)) * 6;
                        $vec[6] = (substr($cuit, 6, 1)) * 5;
                        $vec[7] = (substr($cuit, 7, 1)) * 4;
                        $vec[8] = (substr($cuit, 8, 1)) * 3;
                        $vec[9] = (substr($cuit, 9, 1)) * 2;

                        // Suma cada uno de los resultado.
                        for( $i = 0;$i<=9; $i++) {
                            $x += $vec[$i];
                        }
                        $dv = (11 - ($x % 11)) % 11;
                        if ($dv == (substr($cuit, 10, 1)) ) {
                            $esCuit=true;
                        }
                    }
                    return( $esCuit );
                }

Hasta aca todo bien. elproblema es que cuando ejecuto me da siempre cuit
invalido.  Se queda en la linea
if ( strlen($cuit) <> 11),
y el navegador muestra una advertencia:
 strlen() expects parameter 1 to be string, array given.
 Como que recibio una matriz en vez de un string o un int. Aclaro q ya
probe en la BD cambiarle el tipo a cuit por string.
 y cuando dejo que la funcion pase el if (por ej lo pongo
 if ( strlen($cuit) = 11) igual en vez de dsitinto, para q pase la
condicion,
 me da un error fatal
 Fatal error: Can't use function return value in write context in
C:\xampp\htdocs\PRUEBA\app\models\contribuyente.php on line 71

 La linea 71, es precisamente la del bendito If.....

 si alguien me puede dar una mano de por que la funcion me toma una
matriz.. hace 3 dias q vengo dando vueltas con esto.

 desde ya muchas gracias y saludos

 Pablo

-- 
Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de Grupos 
de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a 
cakephp-es@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a 
cakephp-es+unsubscr...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en 
http://groups.google.com/group/cakephp-es?hl=es.

Responder a