Subversion-Projekte lars-tiefland.zeldi.de_alt

Revision

Blame | Letzte Änderung | Log anzeigen | RSS feed

/**
 * Created for project jquery-validation.
 * @Description Brazillian PIS or NIS number (Número de Identificação Social Pis ou Pasep) is the equivalent of a
 * Brazilian tax registration number NIS of PIS numbers have 11 digits in total: 10 numbers followed by 1 check numbers
 * that are being used for validation.
 * @copyright (c) 21/08/2018 13:14, Cleiton da Silva Mendonça
 * @author Cleiton da Silva Mendonça <cleiton.mendonca@gmail.com>
 * @link http://gitlab.com/csmendonca Gitlab of Cleiton da Silva Mendonça
 * @link http://github.com/csmendonca Github of Cleiton da Silva Mendonça
 */
$.validator.addMethod( "nisBR", function( value ) {
        var number;
        var cn;
        var sum = 0;
        var dv;
        var count;
        var multiplier;

        // Removing special characters from value
        value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" );

        // Checking value to have 11 digits only
        if ( value.length !== 11 ) {
                return false;
        }

        //Get check number of value
        cn = parseInt( value.substring( 10, 11 ), 10 );

        //Get number with 10 digits of the value
        number = parseInt( value.substring( 0, 10 ), 10 );

        for ( count = 2; count < 12; count++ ) {
                multiplier = count;
                if ( count === 10 ) {
                        multiplier = 2;
                }
                if ( count === 11 ) {
                        multiplier = 3;
                }
                sum += ( ( number % 10 ) * multiplier );
                number = parseInt( number / 10, 10 );
        }
        dv = ( sum % 11 );

        if ( dv > 1 ) {
                dv = ( 11 - dv );
        } else {
                dv = 0;
        }

        if ( cn === dv ) {
                return true;
        } else {
                return false;
        }
}, "Please specify a valid NIS/PIS number" );