BULMA Bulma amb el projecta Defective by Desing
Bergantells Usuaris de GNU/Linux de Mallorca i Afegitons   |   Bisoños Usuarios de GNU/Linux de Mallorca y Alrededores
CONTENIDOS
. Jornadas de software libre
. Version para PDA
. Enlaces breves
. La asociacion
. Los mas leidos
. Autores [Actividad]
. Ultimos Comentarios
. Todos los titulares!
. Estadisticas
. Guia de estilo
. ¿Sugerencias?
. Wiki
. XML [Ayuda]
Listas de correo
. Archivos bulmailing
. Archivos BulmaGes
Radio libre :-)
. Des de la Xarxa (Archivos)
. Mallorca en Xarxa
Busquedas

+ Enlaces Linux
Ultimos kernels
(02/09/2010 18:16:25)
    
Google


En bulma.net
En internet
Como Calcular el Digito de Control de una Cuenta Corriente en PHP (223071 lectures)
Por Gabriel
Gigi (http://www.degabriel.es)
Creado el 28/06/2002 20:35 modificado el 28/06/2002 20:35

Vamos a ver como calcular ese digito de Control para validar numeros de Cuentas Corrientes. Quizas a muchos no les sirva para nada, pero quien tenga que programar este control, le podra venir de perlas

Pagina1/1

Como ejemplo, cogeremos los datos de la cuenta de Asociación de Bulma que la tenemos en La Caixa:
Nombre de la Cuenta: ASOCIACION BULMA
Numero completo de la Cuenta: 2100-0150-63-0200455826
Que significa:
Entidad: 2100 La Caixa
Oficina: 0150 Santa Catalina
DC     : 63
Cuenta : 0200455826
Primero de todo vamos a empezar creando la función en PHP que usaremos para validar los datos de la Cuenta Corriente:
Function CalculoCC($IentOfi,$InumCta)
{
	$APesos = Array(1,2,4,8,5,10,9,7,3,6); // Array de "pesos"
	$DC1=0;
	$DC2=0;
	$x=8;
	while($x>0) {
		$digito=$IentOfi[$x-1];
		$DC1=$DC1+($APesos[$x+2-1]*($digito));
		$x = $x - 1;
	}
	$Resto = $DC1%11;
	$DC1=11-$Resto;
	if ($DC1==10) $DC1=1;
	if ($DC1==11) $DC1=0;              // Dígito control Entidad-Oficina

	$x=10;
	while($x>0) {
		$digito=$InumCta[$x-1];
		$DC2=$DC2+($APesos[$x-1]*($digito));
		$x = $x - 1;
	}
	$Resto = $DC2%11;
	$DC2=11-$Resto;
	if ($DC2==10) $DC1=1;
	if ($DC2==11) $DC1=0;         // Dígito Control C/C

	$DigControl=($DC1)."".($DC2);   // los 2 números del D.C.
	return $DigControl;
}
Ahora ya tenemos la función hecha.

Para que funcione simplemente la llamaremos de la siguiente forma pasandole los parametros del formulario:

	$parte1=$cc1."".$cc2;
	$parte2=$cc4;
	$mensaje="No es correcto los Datos Bancarios";
	$cc="";
	if (($cc1<>"") && ($cc2<>"") && ($cc3<>"") && ($cc4<>"") ){
		$resultado=CalculoCC($parte1,$parte2);
		if ($resultado==$cc3){
			$mensaje="Datos Bancarios Correctos";
			$cc=$cc1."-".$cc2."-".$cc3."-".$cc4;
		}
	}
	echo $mensaje;
Y para acabar, ponemos un ejemplo de formulario para poder usar estos ejemplo:
Cuenta Corriente:
Entidad(cc1) Oficina(cc2) Control(cc3) NºCuenta(cc4)

Nota:
Podeis emplear algo de JavaScript para comprobar que los valores del formulario tienen datos, pero eso os lo dejo a vosotros.

Podeis encontrar mas información en:

  • http://www.grupoalbor.com/Ideas/IdeasD/Delphi4.htm
  • http://www.abanfin.com/dirfinan/negociacion/ccc.htm

  • Imprimir
    Version para
    imprimir

    Imprimir
    Version
    PDF
    Comentarios
    Es posible que se hayan omitido algunos comentarios considerados poco constructivos
    1.  Lo mismo en python (28/06/2002 23:46, #7038)
      Por: chemacorte (http://zaralinux.org)

    Por si alguien quiere comparar, aquí tengo la rutina en python:


    def _CRC(cTexto):
      """Cálculo del CRC de un número de 10 dígitos
      ajustados con ceros por la izquierda"""

      factor=(1,2,4,8,5,10,9,7,3,6)

      # Cálculo CRC
      nCRC=0
      for n in range(10):
        nCRC += int(cTexto[n])*factor[n]

      # Reducción del CRC a un dígito
      nValor=11 - nCRC%11
      if nValor==10: nValor=1
      elif nValor==11: nValor=0

      return nValor

    def CalcCC(cBanco,cSucursal,cCuenta):
      """Cálculo del Código de Control Bancario"""

      cTexto="00%04d%04d" % (int(cBanco),int(cSucursal))
      DC1=_CRC(cTexto)

      cTexto="%010d" % long(cCuenta)
      DC2=_CRC(cTexto)

      return "%1d%1d" % (DC1,DC2)

     
    2.  En java (16/09/2002 13:11, #8468)
      Por: El cobarde anónimorl

    Traducción del código en PHP que aparece aquí:


    public static int getControlDigits(String office, String account)
    {
    final int OFFICE_LENGTH = 8;
    final int ACCOUNT_LENGTH = 10;

    final int[] WEIGHTS = new int[] {1, 2, 4, 8, 5, 10, 9, 7, 3, 6};
    int officeControl = 0;
    int accountControl = 0;

    for (int i=0; i&lt;OFFICE_LENGTH; i++)
    {
    int digit = Integer.parseInt("" + office.charAt(i));
    officeControl += digit * WEIGHTS[i + 2];
    }
    int remainder = officeControl % 11;
    officeControl = 11 - remainder;
    if (officeControl &gt;= 10) officeControl = remainder;

    for (int i=0; i&lt;ACCOUNT_LENGTH; i++)
    {
    int digit = Integer.parseInt("" + account.charAt(i));
    accountControl += digit * WEIGHTS[i];
    }
    remainder = accountControl % 11;
    accountControl = 11 - remainder;
    if (accountControl &gt;= 10) accountControl = remainder;

    return officeControl * 10 + accountControl;
    }

     
    3.  Re: En java (16/09/2002 13:13, #8469)
      Por: El cobarde anónimorl

    Por si no se ve! Lo anterior era la traducción a un método estático en java, pero no es obligatorio que sea 'static'.

     
    4.  En Java J2ME (para el movil) (07/01/2006 20:57, #30399)
      Por: Urreta
    Aviso que es el primer programa java que "hago", bueno he adaptado el script java de arriba y lo he añadido a un programa de un tutotial sobre j2me, y funciona ;-)

    El programa espera los 20 digitos de la cuenta y te dice si es correcta o erronea. Pueden existir partes del código que no sirvan para nada, si eres capaz de limpiarlo mejor espero tu aporación.

    Si quereis descargaros el archivo jad (desde el movil) teneis un enlace en:

    http://urrezabal.utilitas.org/wap/

    los archivos en cuestion son:
    http://urrezabal.utilitas.org/wap/CuentaBancaria.jad
    http://urrezabal.uti litas.org/wap/CuentaBancaria.jar

    código fuente
    =============

    import java.io.*;

    import javax.microedition.io.*;
    import javax.microedition.midlet.*;
    import javax.microedition.lcdui.*;

    public class CuentaBancaria extends MIDlet
    implements CommandListener, Runnable {
    private Display mDisplay;

    private Command mExitCommand, mFindCommand, mCancelCommand;

    private TextBox mSubmitBox;
    private Form mProgressForm;
    private StringItem mProgressString;

    public CuentaBancaria() {
    mExitCommand = new Command("Salir", Command.EXIT, 0);
    mFindCommand = new Command("Comprobar", Command.SCREEN, 0);
    mCancelCommand = new Command("Cancelar", Command.CANCEL, 0);

    mSubmitBox = new TextBox("Cuenta Bancaria", "", 20, TextField.NUMERIC);
    mSubmitBox.addCommand(mExitCommand);
    mSubmitBox.addCommand(mFindCommand);
    mSubmitBox.setCommandListener(this);

    mProgressForm = new Form("Procesando...");
    mProgressString = new StringItem(null, null);
    mProgressForm.append(mProgressString);
    }

    public void startApp() {
    mDisplay = Display.getDisplay(this);

    mDisplay.setCurrent(mSubmitBox);
    }

    public void pauseApp() {}

    public void destroyApp(boolean unconditional) {}

    public void commandAction(Command c, Displayable s) {
    if (c == mExitCommand) {
    destroyApp(false);
    notifyDestroyed();
    }
    else if (c == mFindCommand) {
    // Show the progress form.
    mDisplay.setCurrent(mProgressForm);
    // Kick off the thread to do the query.
    Thread t = new Thread(this);
    t.start();
    }
    }

    public void run() {
    String ccc = mSubmitBox.getString();
    String resultado;

    resultado = comprobar(ccc);


    Alert results = new Alert("Comprobación", resultado,
    null, null);
    results.setTimeout(Alert.FOREVER);
    mDisplay.setCurrent(results, mSubmitBox);
    }


    public String comprobar(String ccc)
    {

    final int[] WEIGHTS = new int[] {1, 2, 4, 8, 5, 10, 9, 7, 3, 6};
    int dc = Integer.parseInt("" + ccc.charAt(8)) * 10 + Integer.parseInt("" + ccc.charAt(9));
    int officeControl = 0;
    int accountControl = 0;

    for (int i=0; i= 10) officeControl = remainder;

    for (int i=10; i= 10) accountControl = remainder;

    if (dc == officeControl * 10 + accountControl){
    return "CORRECTA";
    }
    else{
    return "ERRONEA";
    }
    }
    }

     
    5.  Re: En Java J2ME (para el movil) (07/01/2006 21:03, #30402)
      Por: Urreta
    Al código le faltan partes, lo teneis completo en:

    http://urrezabal.uti litas.org/wap/CuentaBancaria.java

     
    6.  Re: En Java J2ME (para el movil) (12/03/2006 19:48, #31413)
      Por: luis
    me gustaria saber como puedo uinstalar este programa en las aplicaciones de mi movil si podeis informarme hacerlo a gennius27103101@hotmail.com gracias

     
    7.  Re: Lo mismo en python (08/03/2003 11:37, #12660)
      Por: PalmaNova
    Qué manía con el python con lo feo que es!

     
    8.  Re: Lo mismo en python (30/05/2006 21:44, #32860)
      Por: Anónimo (http://andion.homeip.net/zopenco)
    Pues a mi lo simple me parece bonito.. :D, el codigo en php si que es horrible (segun mi medida, claro está) xD

     
    9.  Re: Lo mismo en python (31/08/2004 13:42, #23086)
      Por: Anónimo
    def _CRC(cTexto):
      factor=(1,2,4,8,5,10,9,7,3,6)
      nV alor=11-reduce(int.__add__, [int(x)*y for x,y in zip(cTexto,factor)])%11

      if nValor==10: nValor=1
      elif nValor==11: nValor=0

      return nValor

    def CalcCC(cOficina,cCuenta):
       return "%1d%1d" % (_CRC(cOficina),_CRC(cCuenta))

     
    10.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (29/06/2002 08:50, #7039)
      Por: Luisito (http://pasando_de_dar_webs_q_no_sirven_para_nada.com)
    Esta chulo tu programa y demas, pero podrias haber explicado que hace, para los que no sepan php podamos saber que tenemos que hacer en cualquier lenguaje

     
    11.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (29/06/2002 18:37, #7050)
      Por: Antoni Aloy

    Extret de la documentació de una norma bancària:

    "Los dígitos de control verifican los códigos de Entidad y Oficina, el primero, y el número de cuenta, el segundo
    Para la obtenció de cada uno de ellos, se utiliza el modulo 11: la suma de los productos obtenidos al multiplicar cada una de las cifras componentes de los elementos por los pesos asignados, se divide entre 11; el resto de lat división se deduce de 11, cuyo resultado es el dígito de control, con las excepciones siguientes: si fuese 10, se considerará 1, y si fera 11, cero."

    Per mi que fins i tot estan més clars els codis font dels programes que s'adjunten.

    Read the source, Luke!

    Per una altra banda i com es pot comprovar el codi Python es força més legible que el PHP (de fet m'atreviria dir que més que qualsevol altre ;D )


     
    12.  no fumadores (04/02/2007 20:40, #38269)
      Por: sonia (http://calculo)
    nada de nada porkerias

     
    13.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (01/07/2002 10:44, #7072)
      Por: Capsize
    Si os interesa yo tengo el de la Seguridad Social y el de los CIF. Ya direis cosas. Pos lo tengo en VB ya que en el curro es donde lo usamos y no tenemos otra cosa.

     
    14.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (01/07/2002 16:21, #7076)
      Por: Gigi (http://www.navegalia.com/personal/gginard/mispag.htm)
    El de la Seguridad Social, no lo he empleado. Pero para calcular el NIF, si buscas en Google encontraras muchos codigos, aunque me quedo con el siguiente por su sencillez hecho en JavaScript:

    <HTML>
    <HEAD>
    <TITLE>Calculo del NIF</TITLE>
    <script language=JavaScript>
    function calcularletra ()
    {
    var cadena = 'TRWAGMYFPDXBNJZSQVHLCKET';
    var posicion = vdni.value % 23;
    vletra.value=cadena.charAt(posicion);
    }
    </script>
    </HEAD>
    <BODY>
    <p align=center>
    D.N.I: <input maxlength=10 name=vdni size=20> - <input maxlength=2 name=vletra size=6>
    </p>

    <p align=center>
    <input name="Calcular la Letra" onClick="calcularletra ();" type=button value="Calcular la Letra">
    </BODY>
    </HTML>


     
    15.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (01/07/2002 16:56, #7081)
      Por: Capsize
    Esto calcula el nif, muy bien, pero yo hablo del CIF

     
    16.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (01/07/2002 16:22, #7077)
      Por: chemacorte (http://zaralinux.org)

    Yo también tengo en python el cálculo del NIF (persona física, nacional y extranjera, y persona jurídica). De momento, hasta que lo ponga en un lugar mejor, se puede descargar de http://es.groups.yahoo.com/group/python-es/files/chemacortes/

    No tengo código para calcular el código de control del número de la seguridad social, pero creo recordar que era tan simple como calcular el módulo 97,¿no?

    Todos estas rutinas las he pasado desde VB, que a su vez son conversiones desde Clipper.


     
    17.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (01/07/2002 16:55, #7080)
      Por: Capsize
    Si, yo tb las tengo de clipper pasadas a VB, y la que tengo no es del NIF sino del CIF, A07016991. por ejemplo. el ultimo digito es el de control.

     
    18.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (02/07/2002 10:32, #7096)
      Por: chemacorte (http://zaralinux.org)
    Pues sí que me interesaría el cálculo del CIF. Nunca se sabe cuándo te hará falta.

     
    19.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (02/07/2002 11:26, #7098)
      Por: Capsize
    Pos ahi te va el listado en clipper pero es facil adaptarlo a lo que quieras.
    FUNCTION ChkCifNa(cCif)
    LOCAL lOk,cDc,a,res,i,j,k
    LOCAL cc[7],nc[7],b[4],bb[4]
    LOCAL c,d
    IF LEN(cCif)8
    lOk:=.f.
    ELSE
    cDc:=RIGHT(cCif,1)
    for i:=1 to 7
    cc[i]:=SUBSTR(cCif,i,1)
    next i
    for j:=1 to 7
    nc[j]:=VAL(cc[j])
    next j
    a:=nc[2]+nc[4]+nc[6]
    b[1]:=strzero(nc[1]*2,2)
    b[2]:=strzero(nc[3]*2,2)
    b[3]:=strzero(nc[5]*2,2)
    b[4]:=strzero(nc[7]*2,2)
    for k:=1 to 4
    bb[k]:=VAL(LEFT(b[k],1))+VAL(RIGHT(b[k],1))
    next k
    res:=bb[1]+bb[2]+bb[3]+bb[4]
    c:=a+res
    d:=10-(val(right(strzero(c,2),1)))
    if d==10
    d:=0
    endif
    IF right(str(d,2),1)==cDc
    lOk:=.t.
    ELSE
    lOk:=.f.
    ENDIF
    ENDIF
    RETURN(lOk)

     
    20.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (02/07/2002 11:27, #7099)
      Por: Capsize
    Se me olvidaba, como parametro a la funcion se le pasa el CIF sin la letra, por ejemplo: A07016991, se le pasa, 07016991, y te devulve .t. o .f. si es correcto el cif o no. Saludos

     
    21.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (03/07/2002 15:27, #7116)
      Por: chemacorte (http://zaralinux.org)
    Si no estoy equivocado, es justamente la fórmula de Luhn que se dice en otro de los comentarios.

     
    22.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (02/07/2002 09:54, #7095)
      Por: Susana
    Nos interesa el de la Seguridad Social.
    Si nos dices donde se puede descargar o si no, si nos lo puedes enviar a susanamnc@mixmail.com, te lo agradecemos.

     
    23.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (01/08/2002 10:37, #7508)
      Por: Xtina
    Hola necesito el código par avalidar el Número de la Seguridad Social
    y no lo encuentro por ninguna parte.

    ¿Me lo podeis enviar a la cuenta XtinaPim@hotmail.com?

    Muchas Gracias

     
    24.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (22/01/2003 16:33, #11673)
      Por: El Jose y el Paco
    Y no serías capaz de mandarnos el código... Nos tienen pillados por los huevos porque tenemos que meter una validación de CIF en VB. Mándalo a bbvinfor.d320js5@grupobbva.com si quieres... Salu2, compañero.

     
    25.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (28/10/2003 13:02, #17707)
      Por: El cobarde anónimo
    Me podrías enviar el de calculo del dígito de la seguridad social. Gracias, y un saludo.

     
    26.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (25/05/2004 01:23, #21438)
      Por: digarme
    Soy formador y esa clase de ejercicio me vienen muy bien para mis clases se me pudieras enviar las explicaciones mis alumnos estarian encamtados de hacer el programa. Gracias formacion@digarme.com

     
    27.  Calcular el NIF, el CIF y el NIE (15/12/2005 10:01, #30037)
      Por: dj Rulas
    Necesito saber el codigo fuente para validar el NIF y el CIF. Y si tuviese también algo por ahí para calcular el NIE, se lo agradecería mucho. Mi correo: superdjrulas@hotmail.com Gracias.
    Un Saludo.

     
    28.  Y sobre tarjetas de crédito... (01/07/2002 15:46, #7074)
      Por: pnongrata
    Podéis mirar en esta página donde explican qué es la "fórmula de Luhn":

    http://www.webopedia.com/TERM/L/Luhn_formula.html

     
    29.  Re: Y sobre tarjetas de crédito... (02/07/2002 10:44, #7097)
      Por: chemacorte (http://zaralinux.org)
    def luhn(nCard):
    ····nSum=0
    ····nRest=nCard

    ····while nRest>0:

    ········# Odd position
    ········nRest,nDigit=divmod(nRest,10)
    ········nSum+=nDigit

    ········# Even position
    ········nRest,nDigit=divmod(nRest,10)
    ········if nDigit<5:
    ············nSum+=2*nDigit
    ········else:
    ··········· ·nSum+=2*n Digit-9 # Reducing to one digit

    ····return nSum%10

    def check_card(nCard):
    ····"""Return true if the credit-card number is valid"""
    ····return luhn(nCard)==0

     
    30.  Como Calcular el Digito de Control de una Cuenta Corriente en C++ (16/07/2002 12:33, #7276)
      Por: Fede (http://facturalux.org)
    Hola en el proyecto FacturaLUX tenemos una versión del calculo del DC en C++, os lo pego aquí:

    /** Obtiene el número del digito de control, para cuentas bancarias.

    Los números de las cuentas corrientes se organizan de la forma siguiente:

    4 Digitos----->Código del banco (ej. 0136 Banco Arabe español)
    4 Digitos----->Código de la oficina
    1 Digito de control------>de los 8 primeros digitos
    1 Digito de control------>del número de cuenta (de los 10 ultimos digitos)
    10 Digitos del número de la cuenta

    Para comprobar el numero de cuenta se pasa primero los 8 primeros digitos
    obteniendo asi el primer digito de control, después se pasan los 10 digitos
    del número de la cuenta obteniendo el segundo digito de control.

    @param n Número del que se debe obtener el dígito de control
    @return Caracter con el dígito de control asociado al número dado */
    static QChar calcularDC (const QString & n);

    QChar
    FLUtil::calcularDC (const QString & n)
    {
    int Tabla[10] = {6,3,7,9,10,5,8,4,2,1};
    int DC, Suma = 0, nDigitos;

    nDigitos = n.length () - 1;
    for (uint ct = 1; ct {
    Suma += Tabla[nDigitos] * (n[ct - 1] - '0');
    nDigitos--;
    }

    DC = 11 - (Suma % 11);
    if (DC == 11)
    DC = 0;
    else if (DC == 10)
    DC = 1;
    return QChar::QChar (DC + 48);
    }

    En la clase FLUtil del proyecto hay otras rutinas para calcular la letra del NIF o para pasar un numero a su forma hablada, p.e 124 lo pasaría a "ciento veinticuatro".

    Saludos

    Federico Albujer Zornoza

     
    31.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (30/09/2002 01:20, #8762)
      Por: Isleño
    Necesito la fórmula para calcular el número de la seguridad social y la fórmula para calcular el número de una tarjeta de crédito, agradecería que alguien me lo enviara a: zoti@canariastelecom.com muchas gracias y un saludo

     
    32.  CALCULAR DIGITOS DE CONTROL DE LA SEGURIDAD SOCIAL (03/10/2002 02:53, #8849)
      Por: El cobarde anónimo
    Es muy sencillo calcularlo:

    Para los ke tengan la targeta antigua tendran algo como esto: 38+[Nº s.s.]+B ó T (Titular o Beneficiario)

    D.C.= Digitos de control (2 digitos)

    Y las nuevas targetas son asi: 3800+[Nº s.s.]+D.C.

    Entonces para calcular el DC sera asi:

    DC= 380[Nº s.s] mod 97

    Ejemplo:

    Nº s.s= 234586

    DC= 380234586 mod 97= 18

    Con lo ke kedaria: 380023458618 y ya ta :)

    Codigo en C:

    #include

    void main(void)
    {
    int DC=0; //Digitos de control
    long int num_ss; //numero seguridad social

    printf("Introduzca el numero: ");
    scanf("%d", &num_ss);

    DC= num_ss % 97; //Calculo del modulo
    printf("\nResultado: %d", DC);
    }

     
    33.  Re: CALCULAR DIGITOS DE CONTROL DE LA SEGURIDAD SOCIAL (03/10/2002 02:57, #8850)
      Por: el ke puso el msj
    se ve ke no sale la libreria del include, es la tipica: stdio.h

    No me deja ponerla con mayor ke ni menor ke. Seria asi pero sustituyendo los corchetes por menor ke y mayor ke:

    #include [stdio.h]

     
    34.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (28/10/2003 13:00, #17706)
      Por: El cobarde anónimo
    Necesito la fórmula para calcular el número de la seguridad social, programo en visual Basic, ¿me podrías ayudar? Es que no sé, ni encuentro, como coño se calcula. Un saludo.

     
    35.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (09/07/2004 13:51, #22297)
      Por: Javier PDFNET (http://www.pdfnet.org)
    El problema que yo me he encontrado al hacerlo en vba y visual basic es que el operador mod me da overflow por mas que lo convierta todo a doble. De manera que he tenido que hacer el mod "a mano" formateando el resultado para que aparezca siempre con dos posiciones: Dim sDigControl as String Dim dNumSS as double dNumSS= aqui un numero de Seg. Social con provincia sDigControl = Format(dNumSS - (Int(dNumSS / 97) * 97),"00") Que es equivalente a: sDigControl = dNumSS mod 97 En la mayoria de las ocasiones funciona, pero tengo algun caso que no da bien el resultado, como ocurre con este: 4100646873 que deberia dar 89 y con este calculo da 03. ¿Alguien sabe como tratar estos casos?, he visto por ahi algun programa que valida el digito de control y lo hacen bien, pero este algoritmo no lo calcula bien en estos casos. Saludos.

     
    36.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (19/09/2004 12:01, #23335)
      Por: Javier PDFNET (http://www.pdfnet.org)
    Resuelto:
    '////////Calculo numero de seguridad social:
    '//El numero completo se divide en PPXNNNNNCC
    '//Donde:
    '//PP =Codigo de la provincia
    '//XNNNNN=Numero de orden de la seguridad social
    '// donde X =Sera 1 o 0. Si es 0, hay que quitarlo antes de hacer el calculo del digito de control
    '//CC =Digito de control, de longitud 2
    '//El digito de control sera el modulo 97 del codigo de la provincia y el numero de orden

    '//Si el tercer digito tiene un 0, lo quitamos y nos quedamos con un digito menos
    If Mid(argNumSS, 3, 1) = 0 Then
    argNumSS = Left(argNumSS, 2) & Right(argNumSS, Len(argNumSS) - 3)
    End If
    '//El resultado debe tener siempre dos digitos, para esto lo formateamos
    Retorno = Format(argNumSS - (Int(argNumSS / 97) * 97), "00")



    Espero que sea de utilidad.

     
    37.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (02/05/2003 13:46, #14112)
      Por: El cobarde anónimo
    Pues como yo lo he tenio que pasar javascript, asi el sigueinte se ahorra el esfuerzo (minimo, pero algo es algo).




    function comprobar_ccc(ccc)
    {
    var c1,c2,c3,c4;
    var parte1, parte2;

    c1 = ccc.substr(0,4);
    c2 = ccc.substr(4,4);
    c3 = ccc.substr(8,2);
    c4 = ccc.substr(10,10);


    parte1 = c1 + c2;
    parte2 = c4;

    Apesos = new Array(1,2,4,8,5,10,9,7,3,6);
    DC1=0;
    DC2=0

    x=8;
    while(x>0)
    {
    digito = parte1.substr(x-1,1);
    DC1=DC1+(Apesos[x+2-1]*digito)
    x = x -1;
    }


    Resto = DC1 % 11;
    // alert("DC1 = "+DC1+" Resto = "+Resto);
    DC1=11-Resto;

    x=10;
    while(x>0)
    {
    digito = parte2.substr(x-1,1);
    DC2=DC2+(Apesos[x-1]*digito)
    x = x -1;
    }


    Resto = DC2 % 11;
    // alert("DC1 = "+DC1+" Resto = "+Resto);
    DC2=11-Resto;

    if (DC2==10) {DC1=1}
    if (DC2==11) {DC1=0}

    DC = DC1+""+DC2;

    //alert(DC);

    return (DC==c3);


    }

     
    38.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en Visual Basic (16/10/2003 12:55, #17504)
      Por: Yo
    Pues por si os es útil a alguno, yo he convertido el código listado arriba a VB6.

    Public Function gfCalculoDC(pstrBanco As String, pstrOficina As String, pstrNCuenta As String) As String

    Dim arrPesos
    Dim intDC1 As Integer
    Dim intDC2 As Integer

    Dim intX As Integer
    Dim intDigito As Integer
    Dim intResto As Integer
    Dim strDigitoControl As String
    Dim strBancoOficina As String

    arrPesos = Array(1, 2, 4, 8, 5, 10, 9, 7, 3, 6) 'Array de "pesos"
    strBancoOficina = pstrBanco & pstrOficina

    intX = 8
    While intX > 0
    intDigito = Mid(strBancoOficina, intX, 1)
    intDC1 = intDC1 + (arrPesos(intX + 2 - 1) * intDigito)
    intX = intX - 1
    Wend

    intResto = intDC1 Mod 11
    intDC1 = 11 - intResto
    If intDC1 = 10 Then intDC1 = 1
    If intDC1 = 11 Then intDC1 = 0 'Dígito control Entidad-Oficina

    intX = 10
    While intX > 0
    intDigito = Mid(pstrNCuenta, intX, 1)
    intDC2 = intDC2 + (arrPesos(intX - 1) * intDigito)
    intX = intX - 1
    Wend

    intResto = intDC2 Mod 11
    intDC2 = 11 - intResto
    If intDC2 = 10 Then intDC1 = 1
    If intDC2 = 11 Then intDC1 = 0 'Dígito Control Cuenta Corriente

    strDigitoControl = intDC1 & intDC2 'Los 2 números del D.C.

    gfCalculoDC = strDigitoControl

    End Function

     
    39.  En WMLScript (WAP) (07/01/2006 13:42, #30393)
      Por: Urreta
    Aviso que es el primer script que hago en WMLScript, pero funciona :-)

    No sabia como poner lo del "array" de javascript, así que lo he hecho en plan chapu.

    Os pongo un enlace al archivo wml, que no se ve bien en la vista previa, lo podeis probar desde el movil:
    http://urrezabal.utilitas.org/wap/index.wml

    dc.wmls
    ======
    extern function comprobar(ccc)
    {
    var c1,c2,c3,c4;
    var parte1, parte2;
    var DC1,DC2,DC;
    var peso,digito,Resto,x,resultado;

    c1 = String.subString(ccc,0,4);
    c2 = String.subString(ccc,4,4);
    c3 = String.subString(ccc,8,2);
    c4 = String.subString(ccc,10,10);

    parte1 = c1 + c2;
    parte2 = c4;

    var Apeso1 = 1;
    var Apeso2 = 2;
    var Apeso3 = 4;
    var Apeso4 = 8;
    var Apeso5 = 5;
    var Apeso6 = 10;
    var Apeso7 = 9;
    var Apeso8 = 7;
    var Apeso9 = 3;
    var Apeso10 = 6;

    DC1=0;
    DC2=0;

    x=8;
    while(x>0)
    {
    digito = String.subString(parte1,x-1,1);
    if (x==8) {peso=Apeso10;}
    if (x==7) {peso=Apeso9;}
    if (x==6) {peso=Apeso8;}
    if (x==5) {peso=Apeso7;}
    if (x==4) {peso=Apeso6;}
    if (x==3) {peso=Apeso5;}
    if (x==2) {peso=Apeso4;}
    if (x==1) {peso=Apeso3;}
    DC1=DC1+(peso*digito);
    x = x -1;
    }

    Resto = DC1 % 11;
    DC1=11-Resto;

    x=10;
    while(x>0)
    {
    digito = String.subString(parte2,x-1,1);
    if (x==10) {peso=Apeso10;}
    if (x==9) {peso=Apeso9;}
    if (x==8) {peso=Apeso8;}
    if (x==7) {peso=Apeso7;}
    if (x==6) {peso=Apeso6;}

    if (x==5) {peso=Apeso5;}
    if (x==4) {peso=Apeso4;}
    if (x==3) {peso=Apeso3;}
    if (x==2) {peso=Apeso2;}
    if (x==1) {peso=Apeso1;}
    DC2=DC2+(peso*digito);
    x = x -1;
    }

    Resto = DC2 % 11;
    DC2=11-Resto;

    if (DC2==10) {DC1=1;}
    if (DC2==11) {DC1=0;}

    DC = DC1+""+DC2;

    if (DC==c3) {resultado="CORRECTO";}
    else {resultado="ERRONEO";}

    WMLBrowser.setVar("resultado", resultado);
    WMLBrowser.refresh();

    }

    Alguien se anima y hace un .jar para el movil, que me vendría de perlas.

     
    40.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (21/09/2006 10:12, #35156)
      Por: Anónimo
    El codigo javascript no funciona para todas las cuentas. Yo he probado con 4 y me han fallado 2.

     
    41.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (28/02/2007 18:59, #38766)
      Por: Nofre
    Pos vaya patinazo.
    Lo he intentado yo, y no funciona bien siempre.
    Creo que todas las implementaciones que veo aquí están mal ...

    Habéis probado a validar con cuentas como estas?
    0019.0020.90.4015469000
    2100.0206.06.1234567890
    Este algoritmo lo calcula mal y dice que el 90 y el 06 no son el DC correcto, cuando si lo son.

    El error está en la comprobación del valor de los DC1 y DC2. Falla si alguno de los dígitos del DC es 0 (p.ej. el 90 o 06 de los contratos anteriores).

    En el algoritmo original pone que tiene que ser
    if (DC2==10) {DC1=1}
    if (DC2==11) {DC1=0}

    pero en realidad debería ser
    if (DC1==10) {DC1=1}
    if (DC1==11) {DC1=0}
    if (DC2==10) {DC2=1}
    if (DC2==11) {DC2=0}


    Con este pequeño cambio funciona siempre.

    Me extraña que nadie se haya dado cuenta que el original no funciona en todos los casos ...

    :(

     
    42.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (30/09/2003 23:15, #17311)
      Por: la valiente anónima
    Par validar si los campos de un formulario están llenos o no necesariamente se necesita Javascript :P Por otra parte...muy bonito el que ha pegado el código Javascript para validar un NIF, pero me gustaría que además explicara cómo es el algoritmo. Un saludo desde Cartagena

     
    43.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (13/11/2003 11:15, #18023)
      Por: Cyberbask
    La ultima parte del script comentado en esta noticia contiene un error. No se si alguien se ha fijado.

    En la ultima parte en las lineas:

    if ($DC2==10) $DC1=1;
    if ($DC2==11) $DC1=0; // Dígito Control C/C

    deberia aparecer de este modo:

    if ($DC2==10) $DC2=1;
    if ($DC2==11) $DC2=0; // Dígito Control C/C

    Asi ya deberia funcionar correctamente. Nos vemos

     
    44.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (28/02/2007 19:03, #38768)
      Por: Nofre
    Y también falta arreglar el DC1!!! if (DC1==10) {DC1=1}
    if (DC1==11) {DC1=0}
    if (DC2==10) {DC2=1}
    if (DC2==11) {DC2=0}


    Con este pequeño cambio funciona siempre.
    ;)

     
    45.  Ahora en C# (13/09/2004 08:50, #23264)
      Por: bradbury9
    Esta es una versión en C#, empleando metodos estáticos. Aunque en caso de que se haga en ASP.NET la validación (desde mi punto de vista) deberia hacerse en JavaScript.
    public static string devolverCodigoControl(string ctaBanco, string ctaSucursal, string numCuenta)
    {
    string dc="";
    dc = calcularPeso11("48509736",ctaBanco + ctaSucursal);
    dc += calcularPeso11("1248509736",numCuenta);
    return dc;
    }
    private static string calcularPeso11(string strPeso,string strCuenta)
    {
    string dc="";
    double dblSuma=0;
    for (int i=0;i

     
    46.  Re: Ahora en C# - Se ha cortado una de las funciones... (13/09/2004 08:54, #23265)
      Por: Anónimo
    private static string calcularPeso11(string strPeso,string strCuenta)
    {
    string dc="";
    double dblSuma=0;
    for (int i=0;i&lt;strPeso.Length;i++)
    {
    int intPeso=Convert.ToInt32(strPeso.Substring(i,1));
    if(intPeso==0) intPeso=10;
    int intCuenta=Convert.ToInt32(strCuenta.Substring(i,1));
    dblSuma+=(intPeso*intCue nta);
    }
    double dblResto = dblSuma % 11;
    dblResto = 11 - dblResto;
    if(dblResto==10) dblResto=1;
    if(dblResto==11) dblResto=0;
    dc = dblResto.ToString();
    return dc;
    }

     
    47.  Re: Ahora en C# (20/06/2005 04:26, #27180)
      Por: Anónimo
    me gustaria que me enviaran el algoritmo en borland c, lo mas pronto posible .gracias

     
    48.  Re: Ahora en C# (04/02/2007 20:42, #38270)
      Por: Anónimo
    laaaaaaaaaaaaaaaaaaaa kkkkkkkkkkkkkkkkkkkk

     
    49.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (22/04/2005 18:05, #26343)
      Por: Xavi
    Faltaba la de Delphi, lo he intentado hacer lo más clarificador posible aunque para ello haya escrito más código del necesario:

    pe: pesos de entidad-sucursal
    pc: pesos de cuenta

    function CalculoDC(Oficina,Cuenta:String):String;
    const pe: array [1..8] of integer=(7,3,6,1,2,4,8,5);
    pc: array [1..10] of integer=(10,9,7,3,6,1,2,4,8,5);
    var dc1,dc2,x,digito:integer;
    begin
    dc1:=0;
    dc2:=0;
    x:=1;
    while x

     
    50.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (03/07/2005 13:22, #27341)
      Por: Maria
    Por favor alguien m podria facilitar el calculo del digito de la Seguridad Social en excel? GRacias

     
    51.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (14/12/2005 18:40, #30028)
      Por: O neno
    Me ha salvado la vida este artículo! Ahi va mi pequeña aportación: la solución para VB6. Private Function comprobar_cuenta() As Boolean Dim aPesos As Variant Dim DC1, DC2, x, digito, resto As Integer Dim cuenta, EntOfi, DC As String Dim result As Boolean result = False aPesos = Array(1, 2, 4, 8, 5, 10, 9, 7, 3, 6) DC1 = 0 DC2 = 0 x = 8 EntOfi = Left(NumCuenta.Text, 4) & Mid(NumCuenta.Text, 6, 4) DC = Mid(NumCuenta.Text, 11, 2) cuenta = Right(NumCuenta.Text, 10) Do While x > 0 digito = CInt(Mid(EntOfi, x, 1)) DC1 = DC1 + (CInt(aPesos(x + 2 - 1)) * digito) x = x - 1 Loop resto = DC1 Mod 11 DC1 = 11 - resto 'digito de control entidad-oficina If DC1 = 10 Then DC1 = 1 If DC1 = 11 Then DC1 = 0 x = 10 Do While x > 0 digito = CInt(Mid(cuenta, x, 1)) DC2 = DC2 + (CInt(aPesos(x - 1)) * digito) x = x - 1 Loop resto = DC2 Mod 11 DC2 = 11 - resto 'digito de control cuenta corriente If DC2 = 10 Then DC1 = 1 If DC2 = 11 Then DC1 = 0 If DC = DC1 & DC2 Then result = True End If comprobar_cuenta = result End Function Un saludo.

     
    52.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (24/02/2006 14:29, #31165)
      Por: Anònim
    El ejemplo de arriba tiene un error!!!!!!: Cuando calcula el DC2 en las dos ultimas lineas si vale 10 o 11 tiene que cambiar el valor de DC2 y no de DC1.

    Quedaria asi:

    if($DC2 == 10) $DC2 = 1;
    if($DC2 == 11) $DC2 = 0;

     
    53.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (28/02/2007 19:02, #38767)
      Por: Nofre
    No sólo de DC2, si no también hay que hacerlo para DC1!!
    if (DC1==10) {DC1=1}
    if (DC1==11) {DC1=0}
    if (DC2==10) {DC2=1}
    if (DC2==11) {DC2=0}


    Con este pequeño cambio funciona siempre.
    ;)

     
    54.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (03/03/2006 20:22, #31277)
      Por: ISRAEL
    a continuacion una funcion en delphi que comprueba si los digitos de control introducidos en un CCC son correctos


    //****** COMPRUEBA LOS DIGITOS DE CONTROL DEL CCC ******************************
    function ControlDigitosCCC(CCC:string):boolean;
    const
    Pesos:array [0..9] of byte =(1,2,4,8,5,10,9,7,3,6);
    var
    DC1,DC2,c,Resto:integer;
    st1,st2:string;
    begin
    Result:=False;
    st1:=Copy(CCC,1,8);
    st2:=Copy(CCC,11,10);
    DC1:=0;
    DC2:=0;

    for c:=0 to length(st1)-1 do
    begin
    try
    Dc1:=Dc1+strtoint(copy(st1,c+1,1))*Pesos[c+2];
    except
    exit;
    end;
    end;

    Resto:=DC1 mod 11;
    Dc1:=11-Resto;
    if DC1=10 then DC1:=1;
    if DC1=11 then DC1:=0;

    for c:=0 to length(st2)-1 do
    begin
    try
    Dc2:=Dc2+strtoint(copy(st2,c+1,1))*Pesos[c];
    except
    exit;
    end;
    end;

    Resto:=DC2 mod 11;
    Dc2:=11-Resto;
    if DC2=10 then DC2:=1;
    if DC2=11 then DC2:=0;

    try
    if (DC1=strtoint(Copy(CCC,9,1))) and (DC2=strtoint(Copy(CCC,10,1))) then Result:=True;
    except
    end;
    end;

     
    55.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (18/04/2006 13:02, #32033)
      Por: Jose (http://www.loteriadenavidadsevilla.com)
    existe una errata en el código para PHP.

    Donde pone:
    if ($DC2==10) $DC1=1;
    if ($DC2==11) $DC1=0; // Dígito Control C/C

    Debe poner
    if ($DC2==10) $DC2=1;
    if ($DC2==11) $DC2=0; // Dígito Control C/C

    Un saludo.

     
    56.  2ª Letra del CIF/NIF en C++ (30/06/2006 11:11, #33517)
      Por: Area10 (http://www.area10.es)
    Hola: En mi empresa estamos desarrollando una aplicacion empresarial y bueno, he leido por aqui que necesitáis saber como calcular la segunda letra del cif, es algo bastante sencillo, aquí os pego la función que utilizo en mi formulario de Empresas:

    string calcularLetra2(string Tcif) {

    int cif;

    int aux;

    cif=atoi(Tcif.c_str());

    aux=(cif-((cif/23)*23));

    string letra[24]={"T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q"," V","H","L","C","K","E","T"};

    if((aux>-1)&&(aux

    return letra[aux];

    else

    {

    createMessageBox().show( "Error,Nif o Cif incorrecto","Error");

    return "";

    }

    }

    Espero que os sea útil el codigo, por lo menos tan útil como me fue a mi vuestra versión php de los digitos de control ;)

    Saludos.

    Jesús Mª Villar Vazquez.

    Desarrollador Software.


     
    57.  Letra del CIF/NIF en JavaScript (10/10/2006 10:00, #35547)
      Por: gu
    Bueno, el calculo del NIF, DNI en JavaScript es sencillo.
    También valida el de los extrangeros, para lo que se sustituye la X por 0

    function calcula(dni) {
    /*
    Funcion de calculo de letra del NIF
    2006/10/10 - Gustavo Durán - mgduran AT gmail.com
    */
    dni=dni.toUpperCase()
    dni=dni.replace('X','0');
    var numero=parseInt(dni/23);
    var letra='TRWAGMYFPDXBNJZSQVHLCKE';
    dni-=(numero * 23 );
    document.forms.nif.letra.value=letra.charAt(dni);
    }

    Y el formulario en HTML tiene 2 campos, uno que llama a la funcion onKeyUp="calcula(this.value)" y otro al que se asigna el valor de la letra

     
    58.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (21/07/2006 14:08, #33865)
      Por: Anónimo (http://www.mencey.net)
    Ya se que programo muy a saco con php, pero aqui os paso mi código algo más corto:

    $multi=array(10,9,7,3,6,1,2,4,8,5);$CTA=substr(chop($_GET['cta']), 0, 20);
    $cod[]=substr($CTA, 0, 8);$DC=substr($CTA, 8, 2); $cod[]=substr($CTA, -10, 10);
    foreach($cod as $cl => $vl){
    $a=0;
    for ($i=0 ; $i $val){$valsum=($valsum+$val);}
    $DIGIT[]=substr(trim($valsum%11), 0, 1); unset($res,$valsum);
    }
    $digito=trim($DIGIT[0]) . trim($DIGIT[1]);
    if($digito != $DC){echo "NO VALIDA";}else{echo "parece correcta";}

     
    59.  CORRECCION (25/07/2006 11:08, #33939)
      Por: El de antes (http://www.mencey.net)
    <?php
    $multi=array(10,9,7,3,6,1,2,4,8,5);$CTA=substr(chop($_GET['cta']), 0, 20);
    $cod[]=substr($CTA, 0, 8);$DC=substr($CTA, 8, 2); $cod[]=substr($CTA, -10, 10);
    foreach($cod as $cl => $vl){
    $a=0;
    for ($i=0 ; $i<strlen($vl); $i++){
    if (($cl) === 0 && ($i === 0)){ $a=2;}
    $res[]=(substr($vl, $i, 1) * $multi[$a]);
    $a++;
    }
    foreach($res as $cla => $val){$valsum=($valsum+$val);}
    $DIGIT[]=substr(trim($valsum%11), 0, 1); unset($res,$valsum);
    }
    $digito=trim($DIGIT[0]) . trim($DIGIT[1]);
    if($digito != $DC){echo "NO VALIDA";}else{echo "parece correcta";}
    ?>

     
    60.  Re: Como Calcular el Digito de Control de una Cuenta Corriente en PHP (20/10/2006 12:29, #35821)
      Por: Anònim
    Una mica absurd....

    m'acabo de trobar en una pàgina de compra de una companyia telefonica, que volia mirar el procés de compra que utilitzaven...al pas final em comprovaven la meva compte bancaria.....he buscat al google, en 30 segons he trobat akesta pagina i posat la compte que vosaltres ja teniu posada al exemple...

    2100 0150 63 0200455826

    evidentment, a funcionat i podria aver comprat amb totes les dades falses.... o d'algun enemic.

    dewwwwwwwwww

    P.D.: No, no he finalitzat la compra, només volia saltarme els controls i arribar al final.

     
    61.  INTENTO DE VALIDAR CUENTA CORRIENTE EN PL/SQL (11/08/2010 14:16, #44159)
      Por: Anonimo
    /******************************************************************************* \
    /* VALidación de una CUEnta de BANco *\
    /* los pesos de cada dígito (1,2,4,8,5,10,9,7,3,6) *\
    /* para el ejemplo 1234-1234-**-1234567890

    *****************************************************************************/
    procedure val_cue_ban(v_cod_ent in number, v_cod_suc in number,
    v_cod_con in number, v_cod_cue in number,
    n_campo out number, retorno out varchar2) is
    e_salida0 exception;
    e_salida1 exception;
    e_salida9 exception;
    v_1 number; -- para el primer dígito
    v_2 number; -- para el segundo dígito
    cod_ent varchar2(4);
    cod_suc varchar2(4);
    cod_con varchar2(2);
    cod_cue varchar2(10);
    begin
    -- los pesos de cada dígito (1,2,4,8,5,10,9,7,3,6)
    -- el primero de los dos dígitos de control se corresponde a los 4 dígitos de cod_ent mas los 4 del cod_suc
    -- el segundo dígito de control se corresponde a los 10 dígitos de cod_cue
    -- v_1 := substr(v_cod_ent,1,1)* 4;
    cod_ent := lpad(v_cod_ent,4,0);
    cod_suc := lpad(v_cod_suc,4,0);
    cod_con := lpad(v_cod_con,2,0);
    cod_cue := lpad(v_cod_cue,10,0);
    v_1 := (substr(cod_ent,1,1)*4)
    + (substr(cod_ent,2,1)*8)
    + (substr(cod_ent,3,1)*5)
    + (substr(cod_ent,4,1)*10)
    + (substr(cod_suc,1,1)*9)
    + (substr(cod_suc,2,1)*7)
    + (substr(cod_suc,3,1)*3)
    + (substr(cod_suc,4,1)*6);
    v_1 := mod(v_1,11) ;
    v_1 := 11 - v_1 ;
    if v_1 = 10 then
    v_1 := 1;
    elsif v_1 = 11 then
    v_1 := 0;
    end if;
    v_1 := substr(v_1,-1);
    v_2 := (substr(cod_cue,1,1)*1)
    + (substr(cod_cue,2,1)*2)
    + (substr(cod_cue,3,1)*4)
    + (substr(cod_cue,4,1)*8)
    + (substr(cod_cue,5,1)*5)
    + (substr(cod_cue,6,1)*10)
    + (substr(cod_cue,7,1)*9)
    + (substr(cod_cue,8,1)*7)
    + (substr(cod_cue,9,1)*3)
    + (substr(cod_cue,10,1)*6);
    v_2 := mod(v_2,11) ;
    v_2 := 11 - v_2 ;
    if v_2 = 10 then
    v_2 := 1;
    elsif v_2 = 11 then
    v_2 := 0;
    end if;
    if v_1||v_2 cod_con then
    raise e_salida9;
    end if;
    exception
    when e_salida0 then
    n_campo := 0;
    retorno := '';
    when e_salida1 then
    n_campo := 1;
    retorno := 'Error en el procedimiento pkb_con_val_web.val_cue_ban ' ||
    sqlerrm;
    when e_salida9 then
    n_campo := 9;
    retorno := retorno || ' La cuenta del banco no es correcta. '|| v_1||v_2;
    when others then
    n_campo := 1;
    retorno := ' Error en el procedimiento pkb_con_val_web.val_cue_ban OTHERS ' ||
    sqlerrm;
    end;

     
    GRACIAS
    Distribuciones Universal
    Por el servidor
    Dpto. de Matematicas e Informatica
    Calificacion
    ***0
    Vots: 50
    Danos tu opinion:
    **** Excelente
    ***0 Muy Bueno
    **00 Bueno
    *000 Regular
    0000 Malo
    SECCIONES
    Noticia
    Breve
    Truco
    Enlace
    Participa
    Proyecto
    Articulo
    Webbulma
    Manoletada :-)
    Seguridad
    Modificado: 11/8/2010 14:16:50 | Tiempo Total: 0.066 segs | Kernel: Linux - i686 - 2.6.26-1-686 | Last boot: 02/09/2010 20:12 CEST
    Powered by Apache    MySQL    PHP    Gimp