FACTURA ELECTRONICA ARGENTINA: CODIGO DE BARRAS

HMG en Español

Moderator: Rathinagiri

Post Reply
User avatar
Roberto Lopez
HMG Founder
Posts: 4004
Joined: Wed Jul 30, 2008 6:43 pm

FACTURA ELECTRONICA ARGENTINA: CODIGO DE BARRAS

Post by Roberto Lopez »

Buenas...

Ya resuelto el tema de la generación de la factura electrónica, ahora nos queda el código de barras.

Esta vez, podemos resolverlo completamente desde HMG, gracias al gran trabajo de S. Rathinagiri y Claudio Soto.

Me estoy refiriendo a esto:

Code: Select all

   - New in HFCL: HMG_Zebra Barcode Creation Function using hbzebra harbour contrib library and HFCL BosTaurus library. (Contributed by Dr. Claudio Soto and S. Rathinagiri)
      - HMG_CreateBarCode( cCode, cType, [nBarwidth], [nBarHeight], [lDisplayCode], [cPNGFileName], [aBarColor], [aBackColor], [lCheckSum], [lWide2_5], [lWide3] )
         - HMG_CreateBarCode() function can be used to create barcode image in png file format if cPNGFileName parameter is included. If cPNGFileName is omitted, the function returns the hBitMap handle of barcode.      
         - Any one of the following Barcode types is allowed. { "EAN13","EAN8","UPCA","UPCE","CODE39","ITF","MSI","CODABAR","CODE93","CODE11","CODE128","PDF417","DATAMATRIX","QRCODE" }
         - Checkdigit will be generated by library if omitted.
      - See sample in hfcl\samples\hmg_zebra folder
La otra cosa que necesitamos, es la especificación de AFIP para el código:

Code: Select all

	* CUIT (11)
	* TIPO DE COMPROBANTE (3)
	* PUNTO DE VENTA (5)
	* CAE (14)
	* FECHA DE VENCIMIENTO (8) AAAAMMDD
	* DIGITO VERIFICADOR (1)
El código debe ser "Interleaved 2 of 5", también conocido como "ITF".

La otra cosa "problemática" podría ser obtener el dígito verificador, pero realmente es muy sencillo:

- Por un lado, sumamos los dígitos que ocupan posiciones pares.
- Por otro, sumamos los que ocupan posiciones impares.
- A la suma de los impares la multiplicamos por 3 y le agregamos la suma de los pares.
- Obtenemos el resto de dividir este resultado por 10. Si da 0, el dígito verificador es cero, de lo contrario se lo calcula como 10 - resto.

En este ejemplo, vamos a generar el código de barras como una imágen PNG.

Este es el código completo:

Code: Select all

FUNCTION GENERARCODIGO( nCuitEmisor , nTipoComp, nPdv, cCAE , cVencimiento )

	cCuitEmisor  := STRZERO(nCuitEmisor,11)
	cTipoComp    := STRZERO(nTipoComp,3)
	cPdv         := STRZERO(nPdv,5)

	cCode       := cCuitEmisor + cTipoComp + cPdv + cCAE + cVencimiento
	cCheck      := GetCheckDigit(cCode)

	HMG_CreateBarCode( cCode + cCheck  , "ITF" ,,,.t., "codigobarras.png",, , .f. , ,)

RETURN

FUNCTION GetCheckDigit(cCode)

	L := Len(cCode)

	nSumaImpares := 0
	nSumaPares := 0

	for i := 1 To l Step 2

		n := Val( SubStr( cCode , i , 1 ) )		

		nSumaImpares += n

	next i

	for i := 2 To l Step 2

		n := Val( SubStr( cCode , i , 1 ) )		

		nSumaPares += n

	next i

	s := ( nSumaImpares * 3 ) + nSumaPares

	m := s % 10

	if m == 0
		nCheckDigit := 0
	else
		nCheckDigit := 10 - m
	endif

	cCheckDigit := str(nCheckDigit,1,0) 

return cCheckDigit
Espero que les sea de utilidad.
Regards/Saludos,

Roberto


(Veritas Filia Temporis)
ASESORMIX
Posts: 192
Joined: Thu Oct 25, 2012 8:08 pm
Location: Bqto, Venezuela

Re: FACTURA ELECTRONICA ARGENTINA: CODIGO DE BARRAS

Post by ASESORMIX »

Gracias Sr. Roberto
User avatar
zolysoftsolutions
Posts: 139
Joined: Wed Feb 29, 2012 3:33 am
Location: Gyulakuta, Erdélyország
Contact:

Re: FACTURA ELECTRONICA ARGENTINA: CODIGO DE BARRAS

Post by zolysoftsolutions »

Hi. Thank for the nice and very usefoul solution.
My question is if in some way I can include a custom text above the codebar (textbox content by example) and save to png with the codebar?

Thank you.
_______________________________
Open eyes for you!
User avatar
danielmaximiliano
Posts: 2612
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Contact:

Re: FACTURA ELECTRONICA ARGENTINA: CODIGO DE BARRAS

Post by danielmaximiliano »

Gracias por compartir Roberto (se me paso esta publicacion)
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Post Reply