El Código Cuenta Cliente (CCC) es un código utilizado en España por las entidades financieras (bancos, cajas y cooperativas de crédito) para la identificación de las cuentas de sus clientes. Consta de veinte dígitos.

Estructura del CCC

editar

Los veinte dígitos del CCC están divididos en cuatro bloques distintos de acuerdo con la siguiente estructura: E O D N.[1]

  • Los primeros cuatro dígitos son el Código de la Entidad, que coincide con el Número de Registro de Entidades del Banco de España (NRBE).[2]
  • Los siguientes cuatro dígitos identifican la oficina.
  • Los siguientes dos dígitos son los llamados dígitos de control, que sirven para validar el CCC.
  • Los últimos diez dígitos identifican unívocamente la cuenta.

Dígitos de control

editar

Los dígitos situados en las posiciones novena y décima se generan a partir de los demás dígitos del CCC, permitiendo comprobar la validez del mismo y reducir la posibilidad de errores de manipulación. El primero de ellos valida conjuntamente los códigos de entidad y de oficina; el segundo, valida el número de cuenta.

Para obtener cada uno de los dígitos de control se realiza el procedimiento siguiente:

  • Para el primer dígito: puesto que el código conjunto de Entidad y de Oficina tiene tan solo ocho cifras, se completa con dos ceros (00) por la izquierda para hacer la comprobación.
  • Cada uno de los dígitos que componen el código se multiplica por un factor asociado a su posición en el código. Los factores para cada posición, de izquierda a derecha, son: 1, 2, 4, 8, 5, 10, 9, 7, 3, 6. (Estos factores son mod 11 para . Como 2 es una raíz primitiva módulo 11, esto genera una secuencia de 10 números distintos. Este producto se hace para detectar trasposiciones de números, por ejemplo 47 en lugar de 74.)
  • A continuación, se suman los diez productos obtenidos.
  • El resultado de esta suma se divide por 11 y se anota el resto que produce la división.
  • Este resto se resta de 11 para obtener el dígito de control correspondiente a cada uno de los códigos.
  • Puesto que estamos interesados en obtener solo una cifra, si la cantidad resultante fuese 10, se tomará en su lugar el dígito 1; y si fuese 11, el 0.

Cálculo de los dígitos de control

editar

Existen programas y códigos para calcular los dígitos de control del CCC.[3]

En C++ Builder

editar
AnsiString __fastcall TForm1::CalculaDigito(AnsiString Entidad, AnsiString Oficina, AnsiString Numero)
{
     AnsiString Cadena;
     int nResto;
     int aPesos[10] = {6,3,7,9,10,5,8,4,2,1};
     
     Cadena = "";
     nResto = 0;
     for (int nItem = 1; nItem <= (Entidad + Oficina).Length(); nItem ++)
          nResto += StrToInt((Entidad + Oficina).SubString(nItem, 1)) * aPesos[8 - nItem];

     nResto = 11 - (nResto % 11);
     if (nResto == 11)
          nResto = 0;
     else if (nResto == 10)
          nResto = 1;
     Cadena = FormatFloat("0", nResto);

     nResto = 0;
     for (int nItem = 1; nItem <= Numero.Length(); nItem ++)
          nResto += StrToInt(Numero.SubString(nItem, 1)) * aPesos[10 - nItem];

     nResto = 11 - (nResto % 11);
     if (nResto == 11)
          nResto = 0;
     else if (nResto == 10)
          nResto = 1;
     Cadena = Cadena + FormatFloat("0", nResto);
     return (Cadena);
}
//---------------------------------------------------------------------------

En Perl

editar
use strict;
use warnings;

sub calcula_dc {
  my ($entidad, $oficina, $cuenta) = @_;

  my $calcula_digito = sub {
    my @digitos  = split //, shift;
    my @factores = (1, 2, 4, 8, 5, 10, 9, 7, 3, 6);
    my $suma = 0;
    foreach my $i (0..9) {
      $suma += $digitos[$i] * $factores[$i];
    }
    my $digito = (11 - $suma % 11) < 10
                  ? (11 - $suma % 11)
                  : 11 - (11 - $suma % 11);
    return $digito;
  };

  return $calcula_digito->("00${entidad}${oficina}")
       . $calcula_digito->($cuenta);
}

sub valida_dc {
  my ($entidad, $oficina, $dc, $cuenta) = @_;
  return $dc == calcula_dc($entidad, $oficina, $cuenta);
}

En PHP

editar
function valcuenta_bancaria($cuenta1,$cuenta2,$cuenta3,$cuenta4){
if (strlen($cuenta1)!=4) return false;
if (strlen($cuenta2)!=4) return false;
if (strlen($cuenta3)!=2) return false;
if (strlen($cuenta4)!=10) return false;

if (mod11_cuenta_bancaria("00".$cuenta1.$cuenta2)!=$cuenta3{0}) return false;
if (mod11_cuenta_bancaria($cuenta4)!=$cuenta3{1}) return false;
return true;
}
//////////////////////////////////////////////////////////////////////////////////////

function mod11_cuenta_bancaria($numero){
if (strlen($numero)!=10) return "?";

$cifras = Array(1,2,4,8,5,10,9,7,3,6);
$chequeo=0;
for ($i=0; $i < 10; $i++)
    $chequeo += substr($numero,$i,1) * $cifras[$i];

$chequeo = 11 - ($chequeo % 11);
if ($chequeo == 11) $chequeo = 0;
if ($chequeo == 10) $chequeo = 1;
return $chequeo;
}

En Python

editar

Si entidad, oficina, y cuenta son strings con 4, 4, y 10 dígitos respectivamente (por ejemplo, '0049', '1500', y '1234567892'), la siguiente función calcula los dígitos de control correspondientes ('05' en el ejemplo, con lo que la cuenta sería 0049-1500-05-1234567892).

def digitos_control(entidad, oficina, cuenta):
    def proc(ds):  # procedimiento para el dígito de control de los dígitos ds
        assert ds.isdigit() and len(ds) == 10, f'no son 10 dígitos: {ds}'
        resultado = 11 - sum(int(d) * 2**i for i,d in enumerate(ds)) % 11
        return resultado if resultado < 10 else 11 - resultado
    return '%d%d' % (proc('00'+entidad+oficina), proc(cuenta))

En javaScript

editar
// método de la clase String que indica si la cadena se corresponde con un número de cuenta bancaria 
// en formato dddd-dddd-dd-dddddddddd

String.prototype.isCC= function()
{
    var controlDigit=function(number)
    {
        var intSum=0;
        for (var intI=0;intI<10;intI++)
            intSum+=(Math.pow(2,intI) * number[intI]);
        intSum%= 11;
        return (intSum<=1?intSum:(11-intSum));      
    };
    if (/^([0-9]{4})\-([0-9]{4})\-([0-9]{2})\-([0-9]{10})$/.test(this))
        return (controlDigit("00"+RegExp.$1+RegExp.$2)==RegExp.$3[0] 
                    && controlDigit(RegExp.$4)==RegExp.$3[1]);
    return false;    
};

// ejemplo de uso
   alert("0049-1500-05-1234567892".isCC())  // true
   alert("0049-1500-05-1234567890".isCC())  // false

IBAN

editar

El CCC está siendo sustituido por el IBAN, que es una codificación internacional que incluye el CCC.123

Véase también

editar

NIF y CIF en Identificación tributaria, IVA, NASS.

Enlaces externos

editar

Referencias

editar


📚 Artikel Terkait di Wikipedia

Iterador

interfaz Traversable). mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); $mysqli = new \mysqli('host.example.com', 'username', 'password', 'database_name');

Objeto inmutable

bloqueadas con la función lock_hash de Hash::Util): package Inmutable; use strict; use warnings; use base qw(Class::Accessor); # crecion de los metodos de

Hack (lenguaje de programación)

Mode». docs.hhvm.com. Consultado el 2 de febrero de 2015.  «Hack Manual: Strict Mode». docs.hhvm.com. Consultado el 2 de febrero de 2015.  HHVM Máquina

Víctor Parro García

Chemistry, 271(18):10627-34 2003 «Gene function analysis in environmental isolates: the nif regulon of the strict iron oxidizing bacterium Leptospirillum

Sauropsida

saurópsidos (Sauropsida-del griego «cara de lagarto»- o también Reptilia stricto sensu)​ son un clado de vertebrados amniotas al que pertenecen la mayor

Pueblo druso

Neoplatonic, and Iranian elements, however, are combined under a doctrine of strict monotheism.»  Quilliam, Neil (1999). Syria and the New World Order. Michigan

Carnivoramorpha

Anthony Friscia, eds. Carnivoran evolution. New views on phylogeny, form and function. Cambridge University Press. pp. 25–63. ISBN 9781139193436. doi:10.1017/CBO9781139193436

Historial de versiones del kernel de Linux

headers tree [LWN.net]». lwn.net. Consultado el 11 de julio de 2022.  «Strict memcpy() bounds checking for the kernel [LWN.net]». lwn.net. Consultado