código de barras rapipago argentina

2,800 views
Skip to first unread message

Ariel

unread,
Jan 23, 2013, 7:34:30 AM1/23/13
to publice...@googlegroups.com
Hola compañeros, alguien tiene alguna función que genere el código de barras para rapipago, que me pueda facilitar?



Ariel 

Ricardo Peña

unread,
Jan 23, 2013, 7:43:40 AM1/23/13
to GRUPO-VFP GRUPO-VFP
Es el mismo de la AFIP ( Interleaved 2 of 5 )
 
Te paso el doc de Rapipago

Ricardo Luis Peña
Analista de Sistemas
BA - Argentina
011-15-4440-7378
 
 

Date: Wed, 23 Jan 2013 04:34:30 -0800
From: ariel...@gmail.com
To: publice...@googlegroups.com
Subject: [vfp] código de barras rapipago argentina


Hola compañeros, alguien tiene alguna función que genere el código de barras para rapipago, que me pueda facilitar?



Ariel 

--
 
 
doc.pdf

Ricardo Peña

unread,
Jan 23, 2013, 7:53:49 AM1/23/13
to GRUPO-VFP GRUPO-VFP
Perdón. Me olvidé de decirte que la función está en Portalfox


Ricardo Luis Peña
Analista de Sistemas
BA - Argentina
011-15-4440-7378
 


Date: Wed, 23 Jan 2013 04:34:30 -0800
From: ariel...@gmail.com
To: publice...@googlegroups.com
Subject: [vfp] código de barras rapipago argentina

Hola compañeros, alguien tiene alguna función que genere el código de barras para rapipago, que me pueda facilitar?



Ariel 

--
 
 

Jorge Carazzo

unread,
Jan 23, 2013, 8:39:03 AM1/23/13
to publice...@googlegroups.com
Te paso el codigo.
Este metodo recibe como parametro el numero de cuota y la fecha de vencimiento.



LPARAMETERS numero, vencimiento_time
LOCAL all

vencimiento=TTOD(vencimiento_time)


*se cargan las distintas partes del codigo de barras, para luego ser concatenadas
pre_importe1=IIF(v_abm_contratos.redondeo='S',CEILING(v_abm_contratos.importe/v_abm_contratos.cuotas),v_abm_contratos.importe/v_abm_contratos.cuotas)
pre_importe2=pre_importe1*2/100
pre_importe3=pre_importe1*4/100
año_cuota=YEAR(DATE())
dias_cuota=(DATE(YEAR(DATE()),MONTH(vencimiento),25))-DATE(YEAR(DATE()),1,1)
empresa='340'
adhesion=PADL(ALLTRIM(STR(a.idadhesion)),6,'0')
comprobante=PADL(ALLTRIM(STR(a.idadhesion)),6,'0')+PADL(ALLTRIM(STR(numero)),3,'0')

importe1=PADL(ALLTRIM(STRTRAN(STR(pre_importe1,6,2),'.','')),6,'0')
vencimiento1=RIGHT(STR(año_cuota,4),2)+PADL(ALLTRIM(STR(dias_cuota,3)),3,'0')
importe2=PADL(ALLTRIM(STRTRAN(STR(pre_importe2,5,2),'.','')),5,'0')
vencimiento2=ALLTRIM(STR(GOMONTH(vencimiento,1)-vencimiento))
importe3=PADL(ALLTRIM(STRTRAN(STR(pre_importe3,5,2),'.','')),5,'0')
vencimiento3=ALLTRIM(STR(GOMONTH(vencimiento,2)-GOMONTH(vencimiento,1)))
codigo_barra=empresa+adhesion+comprobante+importe1+vencimiento1+importe2+vencimiento2+importe3+vencimiento3
dig_ver=thisform.digito_verificador(codigo_barra)

codigo=ALLTRIM(codigo_barra+ALLTRIM(dig_ver))








Este es el metodo que extrae el digito verificador, el cual recibe como parametro, el codigo de barras generado en el metodo anterior.

LPARAMETERS codigo_barra

* Se realiza el producto de cada numero de la secuencia por el elemento correspondiente de la serie a verificar
* Se suman los productos
* Se divide la suma por 2
* La unidad de la parte entera del resultado de la division, es el digito verificador
* Secuencia de multiplicadores a aplicar:  1357935793579357935793579357935793579357935

secuencia='1357935793579357935793579357935793579357935'

producto=0

FOR f=1 TO LEN(codigo_barra)
*extraigo un digito del codigo recibido
digito=VAL(SUBSTR(codigo_barra,f,1))
multiplicador=VAL(SUBSTR(secuencia,f,1))
producto=producto + (digito*multiplicador)

ENDFOR

division=producto/2

unidad=RIGHT(STR(INT(division)),1)

RETURN unidad

 


Un abrazo.

Luis Maria Guayan

unread,
Jan 23, 2013, 8:35:47 AM1/23/13
to publice...@googlegroups.com
Te paso este mensaje que envié hace un tiempo:

Mira, esta función sirve para los servicios de RapiPago y/o Pago Fácil de Argentina.

Lo que no tengo muy en claro es cual o cuando se genera 1 ó 2 dígitos de verificación, esto se pasa en el segundo parámetro:

? GenerarDigitoVerificador("30540360002000800080581122160008058112234", 1) && 1 dígito de verificación

FUNCTION GenerarDigitoVerificador(tcCadena, tn)
  *---
  * Parámetros
  *   tcCadena = Cadena a generar el/los dígito/s de verificación
  *   tn = Cantidad de dígito/s de verificación (1 ó 2)
  * Retorno:
  *   Caracter: La cadena mas el/los dígito/s de verificación
  *---

  IF EMPTY(tn) OR NOT INLIST(tn, 1, 2)
    tn = 1
  ENDIF

  tcCadena = ALLTRIM(tcCadena)
 
  LOCAL lnLen, lnI, lnSuma, lcSeq
  lnLen = LEN(tcCadena)
  lcSeq = "1" + REPLICATE("3579", CEILING(lnLen/4))
  lnSuma = 0
  FOR lnI = 1 TO lnLen
    lnSuma = lnSuma + VAL(SUBSTR(tcCadena, lnI, 1)) * VAL(SUBSTR(lcSeq, lnI, 1))
  ENDFOR
  lcRet = tcCadena + TRANSFORM(MOD(INT(lnSuma / 2), 10))
  IF tn = 2
    tcCadena = ALLTRIM(lcRet)
    lnLen = LEN(tcCadena)
    lcSeq = "1" + REPLICATE("3579", CEILING(lnLen/4))
    lnSuma = 0
    FOR lnI = 1 TO lnLen
      lnSuma = lnSuma + VAL(SUBSTR(tcCadena, lnI, 1)) * VAL(SUBSTR(lcSeq, lnI, 1))
    ENDFOR
    lcRet = tcCadena + TRANSFORM(MOD(INT(lnSuma / 2), 10))
  ENDIF
  RETURN lcRet
ENDFUNC


Una vez con la cadena a codificar (incluído el dígito verificador de Rapipago) debes generar el código de barra, que para Rapipago y Pagofácil son el Entrelazado 2 de 5 (Interleaved 2 of 5 ó I2of5) o el Código 128 C.

Para ello lo mejor es utilizar la clase FoxBarcode. Si utilizas el I2of5 debes configurar la propiedad que no genere el dígito de control (.lAddCheckDigit = .F.)

-- FoxBarcode --
http://www.foxbarcode.com.ar

Si deseas implementar los códigos de barras con fuentes TrueType puedes ver el siguiente artículo de PortalFox en donde están las funciones y fuentes:

-- Códigos de barra en informes de Visual FoxPro --
http://www.portalfox.com/article.php?sid=117

En el caso de utilizar la función _StrToI2of5(tcString) para el código I2of5 con fuentes TrueType, y como Rapipago y Pagofácil no aceptan el dígito de control del código de barras I2of5, debes anular  la siguiente línea que lo calcula y añade:

*lcRet = lcRet + ALLTRIM(STR(IIF(lnAux = 0,0,10 - lnAux)))



Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

El 23/01/2013 09:34, Ariel escribió:
Hola compañeros, alguien tiene alguna función que genere el código de barras para rapipago, que me pueda facilitar?



Ariel 
--
 
 

Ariel D'Alfeo

unread,
Jan 23, 2013, 11:52:41 AM1/23/13
to publice...@googlegroups.com
Muchas gracias a todos por la ayuda, lo hice con la funcion _StrToI2of5(tcString) y GenerarDigitoVerificador. el problema es   que cuando abro el reporte con foxypreviewer, el codigo de barras no aparece. si lo abro con el reporte de fox me sale bien. que puede ser?
--
 
 


-- 
Ariel D'Alfeo
Córdoba, Argentina

Luis Maria Guayan

unread,
Jan 23, 2013, 12:45:44 PM1/23/13
to publice...@googlegroups.com
Vuelvo a insistir que la mejor opción es usar FoxBarcode que está probado y es compatible totalmente con FoxyPreviewer.


-- FoxBarcode --
http://www.foxbarcode.com.ar

FoxyPreviewer tiene la propiedad .cPDFSymbolFontsList para listar las fuentes TrueTypes no convencionales (como las de los códigos de barras) que usará, pero esto es por el tema de embeberlas y/o convertirlas como imagen en la generación de archivos PDF.



Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

--
 
 

Ariel D'Alfeo

unread,
Jan 23, 2013, 2:33:21 PM1/23/13
to publice...@googlegroups.com
te hice caso y use foxBarcode, la verdad que no lo había echo por vago, pensando que iba a ser tedioso. pero me puse las pilas y en una hora lo logre, es muy fácil de usar y muy potente. anda perfecto.

Muchas gracias

Ariel D'Alfeo

Luis Maria Guayan

unread,
Jan 23, 2013, 7:16:38 PM1/23/13
to publice...@googlegroups.com
Me alegra escuchar esto y seguramente a Guillermo también le alegrará desde allá arriba.


Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

--
 
 

Ariel D'Alfeo

unread,
Jan 24, 2013, 10:59:19 AM1/24/13
to publice...@googlegroups.com
les  agradezco por compartir el codigo y mis respetos a Guillermo Carrero Q.E.P.D.
abro otro tema para consultarte sobre Foxbarcode

 


-- 
Ariel D'Alfeo
Córdoba, Argentina

--
 

Silvano Julio

unread,
Aug 26, 2016, 10:32:34 AM8/26/16
to Comunidad de Visual Foxpro en Español

 

Características:

Tipo de código de barras: Interleaved 2 of 5.

Longitud máxima: 50 dígitos (cantidad par de dígitos)

Sugerencias para una correcta lectura:

Altura de la barra: no menos de 13 mm.

Ancho del código de barras: no mas de 10 cm

Densidad: no mas de 5 caracteres por cm.

Contenido: El código de barras debe contener todos los datos que la empresa necesite para la correcta imputación de los pagos, todos los datos que Rapipago necesite para efectuar la cobranza y un dígito verificador para control de la lectura.

 

 

Ejemplo de código de barras

 

Nro.

Nombre del campo

Long.

Formato

Descripción

1

Código de empresa

3

N

A definir por Gire

2

Número de cliente

8

N

Es el número interno con que la empresa identifica a sus clientes

3

Número de comprobante

11

N

Identificación de comprobante, factura, etc. con que la empresa identifica el pago

4

Importe hasta el 1er. vto

8

N

6e + 2 d

5

Fecha del 1er. vto

5

N

Fecha en formato juliano : Los dos primeros caracteres representan el año y los tres restantes representan el número de día contando a partir del primer día del año.

6

Importe de recargo

6

N

4e+2d: recargo si paga después del 1er. vto

7

Días al 2do. vto

2

N

Cantidad de días corridos entre el 1er. vto y el 2do.

8

Dígito verificador

1

N

 

 

 

Cálculo del dígito verificador : Empezando por la cifra mas significativa, y excluyendo el dígito verificador, se asigna una secuencia de números :

Para un cod. de barras de 44 dig. la secuencia a aplicar es:

                                       1357935793579357935793579357935793579357935

Se realiza el producto de cada elemento de la secuencia por el elemento correspondiente de la serie a verificar.

Se suman los productos.

Se divide la suma por dos.

La unidad de la parte entera del resultado de la división es el dígito verificador.

 

Si la empresa ya posee otro algoritmo de cálculo, consultar si el mismo esta habilitado en Rapipago.


Esta es la función del dígito verificador en C#

  public int ObtenerCodigoVerificador(string codigo)
        {
            var secuenciaFija = ("1357935793579357935793579357935793579357935").ToCharArray().Select(Convert.ToInt16).ToList();
            var secuenciaVariable = codigo.ToCharArray().Select(Convert.ToInt16).ToList();

            var sumatoria = 0;

            for (int i = 0; i < secuenciaVariable.Count; i++)
            {
                sumatoria += secuenciaFija[i]*secuenciaVariable[i];
            }

            var resultadoDivision = sumatoria/2;

            var caracterDecimal = CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator[0];
            var parteEntera = resultadoDivision.ToString().Split(caracterDecimal)[0];
            var digito = parteEntera.Substring(parteEntera.Length - 1, 1);

            return Convert.ToInt16(digito);
        }
Reply all
Reply to author
Forward
0 new messages