Còdic conta client
El Còdic Conta Client (CCC) és un còdic utilisat en Espanya per les entitats financeres (bancs, caixes i cooperatives de crèdit) per a l'identificació de les contes dels seus clients. Consta de vint dígits.
Estructura de el CCC
[editar | editar còdic]Els vint dígits de el CCC estan dividits en quatre blocs distints d'acort en la següent estructura: I O D N.[1]
- Els primers quatre dígits són el Còdic de l'Entitat, que coincidix en el Número de Registre d'Entitats del Banc d'Espanya (NRBE).[2]
- Els següents quatre dígits identifiquen l'oficina.
- Els següents dos dígits són els cridats dígits de control, que servixen per a validar el CCC.
- Els últims dèu dígits identifiquen unívocamente el conte.
Dígits de control
[editar | editar còdic]Els dígits situats en les posicions novena i dècima es generen a partir dels demés dígits de el CCC, permetent comprovar la validea del mateix i reduir la possibilitat d'errors de manipulació. El primer d'ells valida conjuntament els còdics d'entitat i d'oficina; el segon, valguda l'número.
Per a obtindre cada u dels dígits de control es realisa el procediment següent:
- Per al primer dígit: lloc que el còdic conjunt d'Entitat i d'Oficina té tan sol huit sifres, es completa en dos zeros (00) per l'esquerra per a fer la comprovació.
- Cada u dels dígits que componen el còdic es multiplica per un factor associat a la seua posició en el còdic. Els factors per a cada posició, d'esquerra a dreta, són: 1, 2, 4, 8, 5, 10, 9, 7, 3, 6. (Estos factors són mod 11 per a . Com 2 és una raïl primitiva mòdul 11, açò genera una seqüència de 10 números distints. Este producte es fa per a detectar trasposiciones de números, per eixemple 47 en lloc de 74.)
- A continuació, se sumen els dèu productes obtinguts.
- El resultat d'esta suma es dividix per 11 i s'anota el restant que produïx la divisió.
- Este restant es resta d'11 per a obtindre el dígit de control corresponent a cada u dels còdics.
- ya que estem interessats en obtindre solament una sifra, si la cantitat resultant anara 10, es prendrà en el seu lloc el dígit 1; i si anara 11, el 0.
Càlcul dels dígits de control
[editar | editar còdic]Existixen programes i còdics per a calcular els dígits de control de el CCC.[3]
En C++ Builder
[editar | editar còdic]AnsiString __fastcall TForm1::CalculaDigito(AnsiString Entitat, AnsiString Oficina, AnsiString Numere)
{
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 <= (Entitat + Oficina).Length(); nItem ++)
nResto += StrToInt((Entitat + 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 <= Numere.Length(); nItem ++)
nResto += StrToInt(Numere.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 | editar còdic]use strict;
use warnings;
sub calcula_dc {
my ($entitat, $oficina, $conte) = _;
my $calcula_digito = sub {
my digitos = split //, shift;
my factors = (1, 2, 4, 8, 5, 10, 9, 7, 3, 6);
my $suma = 0;
foreach my $i (0..9) {
$suma += $digitos[$i] * $factors[$i];
}
my $digito = (11 - $suma % 11) < 10
? (11 - $suma % 11)
: 11 - (11 - $suma % 11);
return $digito;
};
return $calcula_digito->("00${entitat}${oficina}")
. $calcula_digito->($conte);
}
sub valida_dc {
my ($entitat, $oficina, $dc, $conte) = _;
return $dc == calcula_dc($entitat, $oficina, $conte);
}En PHP
[editar | editar còdic]function valcuenta_bancària($conta1,$conta2,$conta3,$conta4){
if (strlen($conta1)!=4) return false;
if (strlen($conta2)!=4) return false;
if (strlen($conta3)!=2) return false;
if (strlen($conta4)!=10) return false;
if (mod11_conte_bancari("00".$conta1.$conta2)!=$conta3{0}) return false;
if (mod11_conte_bancari($conta4)!=$conta3{1}) return false;
return true;
}
//////////////////////////////////////////////////////////////////////////////////////
function mod11_conte_bancari($numere){
if (strlen($numere)!=10) return "?";
$sifres = Array(1,2,4,8,5,10,9,7,3,6);
$chequeo=0;
for ($i=0; $i < 10; $i++)
$chequeo += substr($numere,$i,1) * $sifres[$i];
$chequeo = 11 - ($chequeo % 11);
if ($chequeo == 11) $chequeo = 0;
if ($chequeo == 10) $chequeo = 1;
return $chequeo;
}En Python
[editar | editar còdic]
Si entitat, oficina, i conte són strings en 4, 4, i 10 dígits respectivament (per eixemple, '0049', '1500', i '1234567892'), la següent funció calcula els dígits de control corresponents ('05' en l'eixemple, en lo que el conte seria 0049-1500-05-1234567892).
def digitos_control(entitat, oficina, conte):
def proc(ds): # procediment per al dígit de control dels dígits ds
assert ds.isdigit() and len(ds) == 10, f'no són 10 dígits: {ds}'
resultat = 11 - sum(int(d) * 2**i for i,d in enumerate(ds)) % 11
return resultat if resultat < 10 else 11 - resultat
return '%d%d' % (proc('00'+entitat+oficina), proc(conte))En javaScript
[editar | editar còdic]// método de la classe String que indica si la cadena es correspon en un número bancària
// en format 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;
};
// eixemple d'us
alert("0049-1500-05-1234567892".isCC()) // true
alert("0049-1500-05-1234567890".isCC()) // falseIBAN
[editar | editar còdic]El CCC està sent substituït pel IBAN, que és una codificació internacional que inclou el CCC.123
Vore també
[editar | editar còdic]NIF i CIF en Identificació tributària, IVA, NASS.
Referències
[editar | editar còdic]- ↑ https://web.archive.org/web/20110806032450/http://www.iberfinanzas.com/index.php/C/codigo-conta-client-CCC.html
- ↑ «Consulta de el NRBE». Archivat des d'el original, el 18 de decembre de 2010. Consultat el 7 d'abril de 2011.
- ↑ http://www.luciano.es/utiles/ccc.htm
Referències
[editar | editar còdic]
- Este artícul conté una traducció derivada de «Código cuenta cliente» de Wikipedia en castellà publicada baix la Llicència de documentació lliure de GNU i la Llicència Creative Commons Reconeiximent-CompartirIgual 4.0 Internacional.