Voy a dejar un bloque de código donde se realiza la comprobación del dígito de control de un número de cuenta para saber si este es correcto.
//Comprobar longitud y numero de cuenta
Suma1Int:=0;
Suma2Int:=0;
IF vTXTNumCuenta <> '' THEN BEGIN
FOR vIndex:=1 TO 10 DO BEGIN
Suma1:=0;
Suma2:=0;
EVALUATE(Digit1,COPYSTR(vTXTNumCuenta,9,1));
EVALUATE(Digit2,COPYSTR(vTXTNumCuenta,10,1));
CASE vIndex OF
1: BEGIN
EVALUATE(Suma1,COPYSTR(vTXTNumCuenta,1,1));
EVALUATE(Suma2,COPYSTR(vTXTNumCuenta,11,1));
Suma1Int:=Suma1*4;
Suma2Int:=Suma2*1;
END;
2: BEGIN
EVALUATE(Suma1,COPYSTR(vTXTNumCuenta,2,1));
EVALUATE(Suma2,COPYSTR(vTXTNumCuenta,12,1));
Suma1Int+=Suma1*8;
Suma2Int+=Suma2*2;
END;
3: BEGIN
EVALUATE(Suma1,COPYSTR(vTXTNumCuenta,3,1));
EVALUATE(Suma2,COPYSTR(vTXTNumCuenta,13,1));
Suma1Int+=Suma1*5;
Suma2Int+=Suma2*4;
END;
4: BEGIN
EVALUATE(Suma1,COPYSTR(vTXTNumCuenta,4,1));
EVALUATE(Suma2,COPYSTR(vTXTNumCuenta,14,1));
Suma1Int+=Suma1*10;
Suma2Int+=Suma2*8;
END;
5: BEGIN
EVALUATE(Suma1,COPYSTR(vTXTNumCuenta,5,1));
EVALUATE(Suma2,COPYSTR(vTXTNumCuenta,15,1));
Suma1Int+=Suma1*9;
Suma2Int+=Suma2*5;
END;
6: BEGIN
EVALUATE(Suma1,COPYSTR(vTXTNumCuenta,6,1));
EVALUATE(Suma2,COPYSTR(vTXTNumCuenta,16,1));
Suma1Int+=Suma1*7;
Suma2Int+=Suma2*10;
END;
7: BEGIN
EVALUATE(Suma1,COPYSTR(vTXTNumCuenta,7,1));
EVALUATE(Suma2,COPYSTR(vTXTNumCuenta,17,1));
Suma1Int+=Suma1*3;
Suma2Int+=Suma2*9;
END;
8: BEGIN
EVALUATE(Suma1,COPYSTR(vTXTNumCuenta,8,1));
EVALUATE(Suma2,COPYSTR(vTXTNumCuenta,18,1));
Suma1Int+=Suma1*6;
Suma2Int+=Suma2*7;
END;
9: BEGIN
EVALUATE(Suma2,COPYSTR(vTXTNumCuenta,19,1));
Suma2Int+=Suma2*3;
END;
10: BEGIN
EVALUATE(Suma2,COPYSTR(vTXTNumCuenta,20,1));
Suma2Int+=Suma2*6;
END;
END;
END;
//Primer dígito de control entidad+sucursal
Parc1:=0;
Parc1:= 11 - (Suma1Int MOD 11);
IF Parc1 > 9 THEN
Parc1:=11 - Parc1;
//Segundo dígito de control Numero Cuenta
Parc2:=0;
Parc2:=11 - (Suma2Int MOD 11);
IF Parc2 > 9 THEN
Parc2:=11 - Parc2;
IF (Digit1 = Parc1) AND (Digit2 = Parc2) THEN BEGIN
END
ELSE BEGIN
ERROR('Número cuenta erroneo, no corresponde el DC: %1%2',Parc1,Parc2);
END;
END;
No hay comentarios:
Publicar un comentario