Oracle - digitos de control

   
Vista:

digitos de control

Publicado por nus (2 intervenciones) el 17/09/2007 13:11:39
hola,
no tendreis alguna funcion para validar los digitos de control de una cuenta bancaria en plsql?
gracias de antemano a todos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:digitos de control

Publicado por Hector (126 intervenciones) el 18/09/2007 04:02:21
Hola.
Cada proveedor de servicios bancarios usa un método diferente de cálculo de dicho digito y es dificil que alguién te lo diga, porque es una información privilegiada que no debe conocer cualquiera.

Yo trabajo para un banco y por lo que he podido observar dicha generación esta en un objeto que esta compilado y encriptado para evitar miradas indiscretas.

No es que quiera ser pesimista, sino realista y que mejor preguntes a tu banco si te puede dar dicho dato, o darte una función que puedas usar para generar dicho dígito.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:digitos de control

Publicado por mad (88 intervenciones) el 18/09/2007 07:22:45
Este procedimiento te retorna el digito de control pasandole un numero de cuenta. Espero que sea lo que buscas.

CREATE OR REPLACE PROCEDURE Dame_Digito_Control(NUMERO_CUENTA IN NUMBER, DC_OUT OUT NUMBER)
IS
UnidadC NUMBER:=6;
DecenaC NUMBER:=3;
CentenaC NUMBER:=7;
UnidadMillarC NUMBER:=9;
DecenaMillarC NUMBER:=10;
CentenaMillarC NUMBER:=5;
UnidadMillonC NUMBER:=8;
DecenaMillonC NUMBER:=4;
CentenaMillonC NUMBER:=2;
UnidadMillarMillonC NUMBER:=1;
UnidadB NUMBER:=6;
DecenaB NUMBER:=3;
CentenaB NUMBER:=7;
UnidadMillarB NUMBER:=9;
DecenaMillarB NUMBER:=10;
CentenaMillarB NUMBER:=5;
UnidadMillonB NUMBER:=8;
DecenaMillonB NUMBER:=4;
ResultadoBanco NUMBER;
ResultadoCuenta NUMBER;
CalculoDigitosControl NUMBER;
Calculo1 NUMBER;
Calculo2 NUMBER;
DigitoControl1 NUMBER;
DigitoControl2 NUMBER;
CodigoEntidad VARCHAR2(4) ;
CodigoSucursal VARCHAR2(4) ;
CodigoCuenta VARCHAR2(10);
DigitoControl VARCHAR2(2) ;
w_num_cuenta_char VARCHAR2(20);

BEGIN
w_num_cuenta_char := LPAD(TO_CHAR(NUMERO_CUENTA),20,0);
CodigoEntidad := SUBSTR(w_num_cuenta_char,1,4) ;
CodigoSucursal := SUBSTR(w_num_cuenta_char,5,4) ;
CodigoCuenta := SUBSTR(w_num_cuenta_char,11,10) ;
DigitoControl := SUBSTR(w_num_cuenta_char,9,2) ;
ResultadoBanco := (TO_NUMBER(SUBSTR(CodigoSucursal,4,1))* UnidadB )+
(TO_NUMBER(SUBSTR(CodigoSucursal,3,1))* DecenaB )+
(TO_NUMBER(SUBSTR(CodigoSucursal,2,1))* CentenaB )+
(TO_NUMBER(SUBSTR(CodigoSucursal,1,1))* UnidadMillarB )+
(TO_NUMBER(SUBSTR(CodigoEntidad,4,1)) * DecenaMillarB )+
(TO_NUMBER(SUBSTR(CodigoEntidad,3,1)) * CentenaMillarB)+
(TO_NUMBER(SUBSTR(CodigoEntidad,2,1)) * UnidadMillonB )+
(TO_NUMBER(SUBSTR(CodigoEntidad,1,1)) * DecenaMillonB );
Calculo1 := ResultadoBanco MOD 11;
DigitoControl1 := 11 - Calculo1;
IF DigitoControl1 = 10 THEN
DigitoControl1 := 1;
ELSIF DigitoControl1 = 11 THEN
DigitoControl1 := 0;
END IF;
DBMS_OUTPUT.PUT_LINE ('El digito primero:'||DigitoControl1);

ResultadoCuenta := (TO_NUMBER(SUBSTR(CodigoCuenta,10,1))* UnidadC )+
(TO_NUMBER(SUBSTR(CodigoCuenta,9,1)) * DecenaC )+
(TO_NUMBER(SUBSTR(CodigoCuenta,8,1)) * CentenaC )+
(TO_NUMBER(SUBSTR(CodigoCuenta,7,1)) * UnidadMillarC )+
(TO_NUMBER(SUBSTR(CodigoCuenta,6,1)) * DecenaMillarC )+
(TO_NUMBER(SUBSTR(CodigoCuenta,5,1)) * CentenaMillarC)+
(TO_NUMBER(SUBSTR(CodigoCuenta,4,1)) * UnidadMillonC )+
(TO_NUMBER(SUBSTR(CodigoCuenta,3,1)) * DecenaMillonC )+
(TO_NUMBER(SUBSTR(CodigoCuenta,2,1)) * CentenaMillonC )+
(TO_NUMBER(SUBSTR(CodigoCuenta,1,1)) * UnidadMillarMillonC );
Calculo2 := ResultadoCuenta MOD 11;
DigitoControl2 := 11 - Calculo2;
IF DigitoControl2 = 10 THEN
DigitoControl2 := 1;
ELSIF DigitoControl2 = 11 THEN
DigitoControl2 := 0;
END IF;

DC_OUT := TO_NUMBER(TO_CHAR(DigitoControl1)||TO_CHAR( DigitoControl2)) ;

DBMS_OUTPUT.PUT_LINE ('El digito dos:'||DigitoControl2);

END Dame_Digito_Control;
/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:digitos de control

Publicado por nus (2 intervenciones) el 18/09/2007 07:36:54
Hola, muchas gracias a los dos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar