![]() |
|
Snippets |
|
This is a CUIT validator for argentinian users.
/** * albaCUITValidator Valida el CUIT * * @package alba * @author Héctor Sanchez <hsanchez@pressenter.com.ar> * @author José Luis Di Biase <josx@interorganic.com.ar> * @author Fernando Toledo <ftoledo@pressenter.com.ar> * @version SVN: $Id: albaCUITValidator.class.php 4347 2007-02-28 21:19:57Z josx $ * @filesource * @license GPL */ class albaCUITValidator extends sfValidator { function initialize($context, $parameters = null) { // initialize parent parent::initialize($context); // set defaults $this->getParameterHolder()->set('cuit_error', 'CUIT Invalido'); $this->getParameterHolder()->add($parameters); return true; } public function execute(&$value, &$error) { $cuit = $value; $coeficiente = array(5,4,3,2,7,6,5,4,3,2); $cuit_rearmado = ""; //separo cualquier caracter que no tenga que ver con numeros for ($i=0; $i < strlen($cuit); $i= $i +1) { if ((Ord(substr($cuit, $i, 1)) >= 48) && (Ord(substr($cuit, $i, 1)) <= 57)) $cuit_rearmado = $cuit_rearmado . substr($cuit, $i, 1); } // si no estan todos los digitos if (strlen($cuit_rearmado) <> 11) { $error = $this->getParameterHolder()->get('cuit_error'); return false; } else { $sumador = 0; $verificador = substr($cuit_rearmado, 10, 1); //tomo el digito verificador for ($i=0; $i <=9; $i=$i+1) $sumador = $sumador + (substr($cuit_rearmado, $i, 1)) * $coeficiente[$i];//separo cada digito y lo multiplico por el coeficiente $resultado = $sumador % 11; $resultado = 11 - $resultado; //saco el digito verificador if (intval($verificador) <> $resultado) { $error = $this->getParameterHolder()->get('cuit_error'); return false; } else { //$cuit_rearmado = substr($cuit_rearmado, 0, 2) . "-" . substr($cuit_rearmado, 2, 8) . "-" . substr($cuit_rearmado, 10, 1); return true; } } } } ?>