lunedì 19 maggio 2008

Calcolo del Cin del Bollettino Freccia

Su richiesta di qualcuno che me l'ha chiesto esemplifico il calcolo del Cin del bollettino freccia.

Il bollettino freccia è il sostituto del bollettino postale introdotto dalle banche come forma alternativa di pagamento.

I campi necessari per il calcolo del cin del bollettino freccia sono i seguenti

Campo Componenti Lunghezza Note
Importo   9 Importo * 100 senza decimali con zeri significativi nessun segno solo importi positivi
Cin importo   1 Vedi formula
Identificativo pagamento   21  
  Codice Sia 5 Attribuito dalla banca all'azienda cliente
  Riferimento 16 Riferimento univoco al documento
Cin intermedio   1 Vedi formula
IBAN   27  
  Codice paese 2 previsti IT e SM
  CIN IBAN 2 Vedi calcolo CIN IBAN
  CIN BBAN 1 Vedi calcolo CIN BBAN
  ABI 5 Codice Abi cliente
  CAB 5 Codice Cab cliente
  CC 12 Numero conto corrente cliente
Codice esenzione   1 Valore fisso = 1
Codice Divisa   1 Valore fisso = E
Cin complessivo   1 Calcolato su tutti i campi precedenti

 

I caratteri ammessi per i campi alfanumerici sono tutti i 26 caratteri maiuscoli i caratteri cioè presenti nella  tabella ASCII da 65 a 90 compresi più i 10 caratteri da 0 a 9 compresi.

Rimando alla consultazione del mio blog per il calcolo del CIN del BBAN e dell'IBAN.

Formula del Cin Freccia

Il calcolo è abbastanza lineare (in pseudocodice):

Per ogni carattere contenuto nel codice da cui calcolare il cin
Si accumula il valore ascii moltiplicato per la posizione relativa del carattere nel codice partendo da sinistra (Esempio con un codice A1 la somma diventa 65 * 1 +  49 * 2).

Si calcola il resto della divisione intera per 36 (funzione modulo) + 1

Con quest'ultimo valore si ottiene il carattere "puntato" come sottostringa di: Z0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ

La funzione in C#

private static string CalcolaCin(string valore)
{
       if ((valore == string.Empty) || (valore == null))
       {
             throw new Exception("Valore non ammesso");
       }
       string lettere = "Z0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
       int somma = 0;
       int i = 0;
       for (int k = 0; k < valore.Length; k++)
       {
             char c = valore.Substring(k,1).ToCharArray()[0];
             somma += (int) c * (k + 1);
       }
       i = (somma % 36);
       return lettere.Substring(i,1);
}

Esempio di calcolo con C#
Esempio di calcolo con VB.NET
Libreria comune da referenziare

Powerered with Window Live Writer

4 commenti:

Anonimo ha detto...

quello che stavo cercando, grazie

Anonimo ha detto...

La ringrazio per Blog intiresny

Anonimo ha detto...

Si, probabilmente lo e

Unknown ha detto...

Purtroppo i link portano su un archivio vuoto. E' possibile avere i file?

Grazie